Horia-Răzvan Enescu

How to Implement Flexible Coverage Definitions (Part 3)

In the final part of this 3-post series (Part 1, Part 2), I will show a way of covering enum transitions and conditionally ignoring transitions to and from certain enum values. For example, in the case of a CPU’s instruction set, you want to make sure that all possible combinations of two consecutive instructions are […]

Horia-Răzvan Enescu

How to Implement Flexible Coverage Definitions (Part 2)

In part 1 of this 3-post series, I presented a way of defining flexible coverage definitions in SystemVerilog using the with clause. In this second post, I will show a way of achieving the same flexibility for transition coverage. As SystemVerilog’s grammar doesn’t allow us to use the with clause for defining transition bins, we […]

Horia-Răzvan Enescu

How to Implement Flexible Coverage Definitions (Part 1)

In the first part of this 3-post series, I would like to show a compact way of defining flexible coverage in SystemVerilog that adapts to a variable parameter. Let’s consider the case where you need to cover the size of a burst, which can range between 1..max, with max being configurable within 1..N. The bins […]

Stefan Birman

How To Graphically Represent DUT’s Data Flows

In this post I will explain how to analyse the DUT’s data flows and represent them graphically in an intuitive way. I use data flow analysis to create meaningful diagrams to be included in the verification specifications(e.g. see How To Read a Specification, section Read the spec with a meaningful goal). You won’t need more […]

Stefan Birman

How to Check Out-Of-Order Transactions

This article presents a general solution to the classic problem of checking out-of-order transactions. The main goal is to present the solution as a verification pattern that can be easily grasped and adapted to your verification project requirements (e.g. verification language, reference implementation language, design under test – DUT specifics etc.). The article’s sections are: […]

Stefan Birman

How To Accelerate Issue Reporting and Replication

This article presents a way to speed-up reporting and replication of issues. Every time you report an issue you need to include a description of the failing scenario, source code version information, simulation setup and steps required to reproduce the failure, the test and seed to run. The engineer assigned to fix the issue will […]