About Competitive Adventures:
1.use +race Utility to locate race condition code * * * * *
2.use $vcdplusdeltacycleon to locate race condition code (not used)
3.use Vcddiff & VCAT t Locate race condition code (not used)
Causes of simulation mismatches
1.functional Simulation Mismatches:
1.1 Different simulator Vendors:
Race condition in Source code * *
Vendor implementation
1.2different version of simulator from same vendor
Race condition in Source code
2.rtl-gate mismatches: *********
2.1 Same simulator
Race condition in Source code*** (max)
Poor code style**
A competitive adventure emerges:
1. Code is not standardized for example, there are several correct results, code is too vague
2. Write/read the same data (using and setting a value at the same time)
3. Competitive adventures will not be expected when the outcome of the synthesis before the settlement out
Coding Rules of Thumb
1.synchronous blocks drive only with non-blocking assignments
2.combinatorial and initial blocks drive only with blocking assignment
3.don ' t drive regs from multiple blocks
4.be careful with the interaction of continous assignments and procedural blocks
Debugging Race Conditions:
1.enable with compile switch +race (mainly with this)
2. Other uses are not much, and the main knowledge of human experience is not a tool.
Fourth: Debugging simulation mismatches