如何使用verilog运行tcl proc函数?

时间:2017-02-15 06:25:07

标签: tcl verilog

目前我有一些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函数?

2 个答案:

答案 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;
...