第四讲:debugging simulation mismatches

关于竞争冒险:

1.use +race utility to locate race condition code ****

2.use $vcdplusdeltacycleon to locate race condition code(不常用)

3.use vcddiff & vcat t locate race condition code (不常用)

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***(最多)

      poor code style**

   出现竞争冒险:

     1.代码不规范比如有若干正确结果,code过于模糊

      2.同时write/read同一个data(using and setting a value at the same time)

     3.竞争冒险会到时不期望的结果,综合之前解决掉

 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 (主要用这个)

2.其他的用的不多,主要靠人的知识经验不是工具。

原文地址:https://www.cnblogs.com/chip/p/4781789.html