从 Specman 中的虚拟序列调用 write/read_reg vr_ad 宏
Invoking write/read_reg vr_ad macro from a virtual sequence in Specman
有没有一种方法可以让虚拟序列直接调用 vr_ad
write_reg
或 read_reg
宏,而无需我创建一个 vr_ad_sequence
来做同样的事情?
为了更清楚地说明,这是我当前的实现:
<'
extend vr_ad_sequence_kind : [WR_DMA_POLL];
extend WR_DMA_POLL vr_ad_sequence {
!dma_poll : DMA_POLL vr_ad_reg;
body() @driver.clock is only {
write_reg dma_poll val 0xdeadbeef;
};
};
extend MAIN soc_tb_virtual_sequence {
!write_dma_poll : WR_DMA_POLL vr_ad_sequence;
body() @driver.clock is only {
message(LOW, "TEST START");
do write_dma_poll on driver.reg_driver;
};
};
'>
为什么不能,或者可以这样实现?
extend MAIN soc_tb_virtual_sequence {
!dma_poll : DMA_POLL vr_ad_reg;
body() @driver.clock is only {
message(LOW, "TEST START");
write_reg {.dest_driver == driver.reg_driver} dma_poll;
read_reg {.dest_driver == driver.reg_driver} dma_poll;
};
};
提前感谢您的任何解释。
这可能从 vr_ad 13.20(或者可能稍旧)开始。你几乎把它放在你的问题中了。正确的语法是:
extend MAIN soc_tb_virtual_sequence {
!dma_poll : DMA_POLL vr_ad_reg;
body() @driver.clock is only {
message(LOW, "TEST START");
write_reg {.driver == driver.reg_driver} dma_poll;
read_reg {.driver == driver.reg_driver} dma_poll;
};
};
第一组{...}
划定操作生成块,这里可以限制如何访问寄存器。这些约束将传递给作为访问的一部分生成的 vr_ad_operation
。
有没有一种方法可以让虚拟序列直接调用 vr_ad
write_reg
或 read_reg
宏,而无需我创建一个 vr_ad_sequence
来做同样的事情?
为了更清楚地说明,这是我当前的实现:
<'
extend vr_ad_sequence_kind : [WR_DMA_POLL];
extend WR_DMA_POLL vr_ad_sequence {
!dma_poll : DMA_POLL vr_ad_reg;
body() @driver.clock is only {
write_reg dma_poll val 0xdeadbeef;
};
};
extend MAIN soc_tb_virtual_sequence {
!write_dma_poll : WR_DMA_POLL vr_ad_sequence;
body() @driver.clock is only {
message(LOW, "TEST START");
do write_dma_poll on driver.reg_driver;
};
};
'>
为什么不能,或者可以这样实现?
extend MAIN soc_tb_virtual_sequence {
!dma_poll : DMA_POLL vr_ad_reg;
body() @driver.clock is only {
message(LOW, "TEST START");
write_reg {.dest_driver == driver.reg_driver} dma_poll;
read_reg {.dest_driver == driver.reg_driver} dma_poll;
};
};
提前感谢您的任何解释。
这可能从 vr_ad 13.20(或者可能稍旧)开始。你几乎把它放在你的问题中了。正确的语法是:
extend MAIN soc_tb_virtual_sequence {
!dma_poll : DMA_POLL vr_ad_reg;
body() @driver.clock is only {
message(LOW, "TEST START");
write_reg {.driver == driver.reg_driver} dma_poll;
read_reg {.driver == driver.reg_driver} dma_poll;
};
};
第一组{...}
划定操作生成块,这里可以限制如何访问寄存器。这些约束将传递给作为访问的一部分生成的 vr_ad_operation
。