AlexOrr’s first 100 days in formal-land

This weekend, I caught up with a presentation from @AlexOrr of Broadcom in which he talks about his “first 100 days in formal-land”.

I wanted to read it for a very long time. After reading the slides offline, I felt that this presentation was worth attending in person.

Within those slides, one can feel his experience and his desire to share it with the Design And Verification Engineer (DAVE) community.

@AlexOrr’s presentation is from #JUG2015. Blog posts related to Jasper User Group 2015 can be found here.

There are two items from his presentation I was repeating for a long time to my peers: Assertions and Jenkins. It is good to hear someone else is emphasizing on them as well.


Below are some key takeaways from Alex’s presentation. They are not new. However, they should be reminded over and over again.

Assumptions become assertions in simulation.

Do I have to retest all the reset values over and over again ?

I assume he was hinting at UVM built-in sequence uvm_reg_hw_reset_seq.

Assertions more portable than dynamic tests.

Use assertions, path spoilers, monitors, and/or illegal_bins statements. As well as $past.

Leverage “SuperLint” apps such as X-Prop.

database access with dbGet / dbSet

Found this old blog post “A dbGet Code Example” on the Cadence Digital Implementation useful. She described how to place power switch cells using dbGet and dbSet.

It appears that dbGet and dbSet will be my go-to commands on EDI.

I found out that using dbGet.selected.?? could list out not only the values but also the attributes of the selected objects. Thus, making easier to script dbGet one-liners.

reg_hw_reset_seq] Response queue overflow

Encountered the following error message today, while using the pre-defined UVM sequence uvm_reg_hw_reset_seq :

UVM_ERROR @ 84050000:[uvm_test_top.m_env.m_core_agent.m_core_sequencer.reg_hw_reset_seq] Response queue overflow, response was dropped

This occurred because the driver was sending a sequence response to the sequencer via the seq_item_port. The default size of the response queue between the sequence and driver is 8. When the queue is full, it loses the response and generates an error.

The latter can be masked with: