SystemVerilog Stimulus Timing Regions

program 就是爲了解決module和tb的race violation問題. 因爲program作用在reactive 區域,這時賦值的更新已經穩定.

因此,我們一般推薦在Testbench中使用program,在設計dut中使用module,在頂層module中例化dut的module和 testbench的program。

program中的注意點:

  • program中不能例化其他program和module
  • 不能出現interface和always,可以使用initial forever替代always
  • program內部可以發起多個initial塊
  • program中內部定義的變量最好採用阻塞賦值=,當然採用非阻塞仿真器也不會產生error,驅動外部信號則應該採用非阻塞賦值<=
  • program中的initial塊和module中的initial塊執行位置不同,前者在reactive,後者在active塊中執行。
  • program中存在的多個initial塊中,如果有一個initial採用了退出系統函數$exit(),則會結束該program,而不僅僅是該initial塊。

 

 

具體例子可以看https://zhuanlan.zhihu.com/p/98773154  如果只想瞭解四個區域的作用特性沒必要看這個.遵守推薦tb建法就是。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章