0

Any ideas on how to get modelsim/questa to include all "Objects" so that they will be in the WLF? I tried -novopt and +acc without any success??

my questasim/modelsim "do script" is exiting early because I tried to log all signals into a wlf file using the command:

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

The error message generated by the log file is as follows:

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

Is there a way to keep questa/modelsim from exiting the do script on a no object found error on "log -r */"? I would like to reuse the same "do script" for every design even designs where the optimizer deletes all the objects.

All I'm doing is something simple like this and I get no objects found matching "*/" error when I compile this source in 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

Here's my simulation script:

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"


toolic
  • 57,801
  • 17
  • 75
  • 117
pico
  • 1,660
  • 4
  • 22
  • 52

1 Answers1

0

Found the solution using TCL to keep the "log -r *" from stopping the do file:

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

But no idea how to resolve the problem with no objects being included in the wlf.

Update, I don't know why, but if you dump a VCD file instead of WLF file, it works without failing and you don't even need a catch block:

vcd file simout.width.vcd
vcd add -r /*
pico
  • 1,660
  • 4
  • 22
  • 52