0

关于如何让 modelsim/questa 包含所有“对象”以便它们出现在 WLF 中的任何想法?我试过 -novopt 和 +acc 没有任何成功?

我的 questasim/modelsim “do script” 提前退出,因为我尝试使用以下命令将所有信号记录到 wlf 文件中:

#Log all objects in the design.
log -r /*
run -all

日志文件生成的错误信息如下:

W ** UI-Msg: (vish-4014) No objects found matching '/*'.
# Error in macro ./simout.width.sim.do line 3

有没有办法让 questa/modelsim 在“log -r */”上找不到对象错误时退出 do 脚本?我想为每个设计重用相同的“do script”,即使是优化器删除所有对象的设计。

我所做的只是像这样简单,当我在 questa 中编译此源时,我没有找到匹配“*/”错误的对象:


module test_width;
    reg  [3:0] addr;
    wire [3:0] addr2 = addr;
    reg ntfy_reg_p;
    reg ntfy_reg_n;

    specify
            //$width(reference_event, limit, width_threshold, notifier);
        $width(posedge addr2, 50, 30, ntfy_reg_p);
        $width(negedge addr2, 50, 30, ntfy_reg_n);
    endspecify

    always @(ntfy_reg_p or ntfy_reg_n) begin
        $display("Error: width violation at %0t", $time);
    end

    initial begin
        $monitor("addr2 = %b, %0t", addr2, $time);
        #100 addr = 4'b0000;
        #40  addr = 4'b0100;    // get violation here
        #100 addr = 4'b0000;
        #100 addr = 4'b1111;
        #10 $finish;
    end
endmodule

这是我的模拟脚本:

C:/questasim64_2020.4/win64/vlib.exe work
C:/questasim64_2020.4/win64/vlog.exe  -work work  +acc  ./vlog/test_setup.v || exit 1
C:/questasim64_2020.4/win64/vsimk.exe -c test_setup -wlf simout.setup.wlf -l simout.setup.log  -voptargs=+acc -t 1fs -debugdb  -do "do simout.setup.sim.do"


4

1 回答 1

0

找到了使用 TCL 来阻止“log -r *”停止执行文件的解决方案:

#Record Modelsim/Questasim WLF waveform file
if {[catch {log -r /*} e]} {
    puts "WLF-ERROR: $e"
}

但是不知道如何在 wlf 中不包含任何对象的情况下解决该问题。

更新,我不知道为什么,但是如果您转储 VCD 文件而不是 WLF 文件,它可以正常工作,而且您甚至不需要 catch 块:

vcd file simout.width.vcd
vcd add -r /*
于 2021-10-07T18:31:25.050 回答