System verilog 向UVM后门访问添加自定义延迟
我有两个在lockstep中运行的DUT实例,一个比另一个晚运行T个周期。我知道我可以使用System verilog 向UVM后门访问添加自定义延迟,system-verilog,uvm,System Verilog,Uvm,我有两个在lockstep中运行的DUT实例,一个比另一个晚运行T个周期。我知道我可以使用reg\u块添加多个路径。为两个实例的后门访问添加\u hdl\u path。但是,我想反映执行后门写入时的实际周期延迟行为,即第二个实例在第一个实例获得新值T cycles之后获得新值T cycles。有办法吗?我能找到的唯一提示是uvm\u reg\u backdoor,但我不确定这对我有什么帮助。整个后门访问点零延迟。您需要将发出后门写入命令的时间延迟到所需的周期数 谢谢你回复戴夫。我特别想问的是,是
reg\u块添加多个路径。为两个实例的后门访问添加\u hdl\u path
。但是,我想反映执行后门写入时的实际周期延迟行为,即第二个实例在第一个实例获得新值T cycles之后获得新值T cycles。有办法吗?我能找到的唯一提示是uvm\u reg\u backdoor
,但我不确定这对我有什么帮助。整个后门访问点零延迟。您需要将发出后门写入命令的时间延迟到所需的周期数 谢谢你回复戴夫。我特别想问的是,是否有一种方法可以定制uvm_reg
的write
函数,通过回调等方式,通过后门访问来完成我想做的事情。当我写这篇文章的时候,我想我可能已经找到了答案。我可以使用post\u write
触发对相应寄存器T周期的后门访问,对吗?@ArunD'souza你的意思是pre\u write()
@TudorTimi我想我的意思是post\u write()
。如果我进行了预写并且任务被阻塞,那么回调将在写入之前执行。回调将消耗T个周期,然后写入DUT的第二个实例。在那之后,写入将开始,这基本上意味着我们同时写入了这两个文件,尽管在用户调用write之后是T个周期。@ArunD'souza关于延迟的最常见习惯用法是在执行事务之前总是延迟。例如,如果您想发出总线传输,您需要等待delay
周期,然后开始驱动事务。在您的情况下,后门写入是您的事务。这不是为通过序列器/驱动程序的基于事务的延迟建模。这是一个锁步网络模型,其中寄存器通过DUT接口编程,但阴影网络在T周期后看到。当在0周期重新编程期间有事务正在进行,并且两个子DUT实例都看到不同的寄存器值,从而导致发散行为时,问题就出现了。为什么会有交易我不想谈:(