chipressian
-
How to write efficient DV constraints?
Split Bigger Problem into Smaller Ones Instead of mixing everything together, splitting bigger problems into smaller steps offers better performance. One may consider using “Solve-Before” for user defined solving order. In addition, it is also recommended to sequence constraint solving in “pre_randomize()” and “post_randomize()” whenever…
-
What can cause a simulation hang?
Simulation hang is a condition where simulator functionalities cannot advance. We can only observe that nothing meaningful has happened for a long time. Simulation hang can be caused by RTL bugs, testbench (TB) issues, or C-model errors. RTL Bugs A combinational loop in RTL can…
-
How to spot toxic managers before accepting an offer?
Most people only realize the manager is toxic after on-boarding, when the switching costs are too high. They did not realize, toxic managers often reveal themselves during the interview process, if they know what to ask and what to look for. Patterns of Toxic Managers…
-
What are LEC abort points? How to debug aborts?
It is not uncommon to see abort points during LEC. They are the key points that have not been proven either equivalent or non-equivalent based on the current tool settings, such as compare effort or compare algorithms. There are several possible causes of abort points:…
-
How to improve re-build time during test case development?
During test case development, the trial and error process often causes re-compilation and re-elaboration of the entire database, including testbench (TB), DUT, C-model, and sometimes even UPF if it is for power-aware verification. When the database is large, rebuilding everything is time consuming. There are…
-
How to resolve SVA false failure with gated clocks?
In FPV, if an SVA uses a gated clock, it could have false failures. Take the following SVA for example: “config_regs” can legally be changed when “block_busy” is low, during which the gated clock does not toggle and the SVA does not check its consequent…
-
What is a valid-ready slice staller? How does a staller work?
In simulations, testbench may intentionally inject bubbles to a valid-ready interface, to check that the valid-ready interface can still functionally work. Such technique is called valid-ready slice staller, and it improves the coverage of valid-ready interface backpressure scenarios. One possible staller implementation is shown below:…
-
How to optimize coherence conflict / false sharing?
Coherence conflict happens when two cores compete for the read & write access for the cache line. False sharing, in particular, is a special type of coherence conflict, where two cores read and write different data that happen to reside in the same cache line.…
-
How to handle coherent DMA?
A coherent DMA operation that reads memory should get the most recent version of data, even if the data resides in a cache in state M or O. Similarly, a coherent DMA operation that writes memory must invalidate stale copies in all caches. Though it…
-
What are the advantages and disadvantages of using write-through cache in cache coherence protocol?
We assumed using write-back caches in cache coherence protocols. It is possible to use write-through caches as well. Advantages of using write-through caches: Disadvantage of using write-through cache: Reference A Primer on Memory Consistency and Cache Coherence (Second Edition), by Vijay Nagarajan, Daniel J. Sorin,…
Read Our Books for Free with Kindle Unlimited
Our books are available on Kindle Unlimited for free. Plus, you get unlimited access to hundreds of other books for preparing hardware interviews, including our recommended reading list
* Chipress participates in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Amazon.com
Subscribe
Enter your email to get updates from us. You might need to check the spam folder for the confirmation email.











