目前我有一些tcl文件。在tcl文件中,特别是在一个tcl中,我在tcl中找到了一个proc函数。
proc ahb_write {addr data {str s}} {
set ahbm top.cpu_subsys
...
if {$::verbose > 0} {
}
silent {
...........
...........
delay 1
所以我想在运行模拟时调用并运行这个ahb_write proc函数。
当我用verilog运行模拟时,有没有办法运行proc函数?
答案 0 :(得分:0)
您需要SystemVerilog DPI才能在任何模拟器中执行此操作。在Modelsim中,您将调用函数mti_fli::mti_com("command")
可能在任何模拟器中工作的替代方法是在命中断点时执行命令。
答案 1 :(得分:0)
在我想要使用会在内存中注入位错误的verilog任务之前,我已经完成了这项工作。在NCSim中,我必须首先单独存储任务参数的值,然后自己调用任务。
deposit tinst.u_buffer.u_fifo.u_sram_0.injectSA.addr 1
deposit tinst.u_buffer.u_fifo.u_sram_0.injectSA.bitn 2
deposit tinst.u_buffer.u_fifo.u_sram_0.injectSA.typen 1
task tinst.u_buffer.u_fifo.u_sram_0.injectSA
run 0.1
我不确定'run 0.1'是否必要,但我知道这至少在我的例子中有效。
verilog任务在RAM模型中定义如下:
task injectSA;
input [numWordAddr-1:0] addr;
input integer bitn;
input typen;
...