initial begin
@(go);
$display("Checking...");
assert(tb.dut.inst1.inst2.a == 'h42)
$display("PASS");
else
$fatal("FAIL");
end
When the go signal changes, I see “Checking…” printed to the log file, but neither “PASS” nor “FAIL”. The a signal deep in the DUT hierarchy is assigned a literal that should be 0x42.
Why did neither action block execute in this simpified and contrived example?
Upon further digging around the TB, I found an $assertkill on the module containing the assertions in question. I think this is the cause. Thanks for the feedback on the assertion control. It did help lead to this.