SV里program block的作用? 和module 有什么不同?
时间:10-02
整理:3721RD
点击:
SV里program block的作用? 和module 有什么不同? 为什么要提出program block ?
这里有讲一些http://blog.csdn.net/qin_lin_sb/article/details/7791102
program和module在不同的time region,还有一些其它区别。
《system Verilog for verification》书中有讲,"system Verilog 把 测试平台的事件和设计的时间分开调度",应该就是你说的时序区域(Timing Region)吧。我想请教一下不同的时序区域对应的是不同的仿真时间吗?我想知道这个时序区域(Timing Region)是怎么把设计、断言、测试平台结合起来的呢?
具体可以看下sv手册上的那个图。其实program block的存在主要是为了消除竞争冒险,同一时刻如何区分硬件和软件触发和采样先后的问题,这里的硬件指rtl代码,软件指testbench。
我最近在学sv,是这样理解的。program block的执行语句在re-active/re-inactive/re-NBA区域执行,采样值则是在preponed或postponed区域。module的话执行语句在active/inactive/NBA区域执行,re系列的区域都是SV新加的,在同一time slot中,是在active系列区域后的,这样就可以避免出现一些竞争。举个例子,可能不太好,比如我要在上升沿触发一个激励,如果在module中,我应该写非阻塞,如果写成阻塞的话这个时钟沿就生效了,会影响到DUT里的非阻塞的值。但在program中,无论激励写成阻塞或非阻塞都不会影响