Stefan Birman

How To Protect FIFOs Against Overflow – Part 2

This post is a follow-up of the How To Protect FIFOs Against Overflow – Part 1 and it details the second proposed solution. The complete implementation presented in this post can be downloaded from GitHub. That being said, let’s go through the implementation, step-by-step. Step 1. Define enumeration items that identify the two FIFOs typedef […]

Stefan Birman

How To Protect FIFOs Against Overflow – Part 1

Systems containing FIFOs face verification engineers with a “classic” black-box verification problem: how to protect FIFOs against overflow in order to avoid unpredictable loss of packets. The difficulty in solving this problem comes from the lack of visibility into DUT’s internal states, which means the solution should count only on the events/packets driven/monitored on the […]

AMIQ Consulting

SystemVerilog and VHDL Grammars in HTML format

We share with the verification community the SystemVerilog and VHDL language grammars in browsable HTML format. The HTML grammars are based on SystemVerilog LRM 2012 (IEEE Std 1800TM-2012) and VHDL LRM 2008 (IEEE Std 1076TM-2008). You can browse these online on their dedicated page Resource > Grammars. You can also download them for off-line use […]

Recommended Articles

Recommended Articles – March 2018

Team Specman casts a new light on how to make the verification environment sensitive to reset. You can read about that in Temporals, Reset, and Test Phases Cadence has compiled some short guidelines which can optimize your SystemVerilog code. Take a look at them and check which one is already on your list and which […]

Horia-Răzvan Enescu

How To: Alternative Ways to Implement Bitwise Coverage

In a previous post, Stefan provided implementations for several bitwise coverage patterns. In this post I will show an alternative way of implementing a couple of them, avoiding the usage of loops to iterate through all bits. Walking 1 and Walking 0 Coverage covergroup walking1_cg with function sample(bit [WIDTH-1:0] x); walking1_cp: coverpoint ($clog2(x) iff ($onehot(x)) […]

Horia-Răzvan Enescu

How to Avoid Parameter Creep for Parameterizable Agents and Interfaces

For configurable protocols, it is useful to have a single agent which can adapt to any protocol configuration. If the agent and the interface are parameterized, having a large number of configuration options will require using many parameters. This can quickly lead to parameter creep: explicitly specifying and propagating all the parameters throughout the environment. […]