As per LRM rules of system verilog this statement should be executed but it showing same behaviour as of verilog event(not running any pkt).
module event_l;
string testname;
event e;
initial begin
#2;
wait(e.triggered);
//@(e);
case(testname)
"gd_pkt":begin
$display("i am in good pkt");
end
"bd_pkt":begin
$display("i am in bd pkt");
end
"ill_pkt":begin
$display("i am in ill pkt");
end
endcase
end
initial begin
$value$plusargs("testname=%s",testname);
->e;
end
endmodule
Please use code tags making your code easier to read. I have added them for you.
The event triggered method only returns true in the timeslot where the event in triggered. It returns false once time advances. There is a non-blocking event trigger that you can avoid a race between the two initial blogs. It works very similar to a non-blocking assignment.
module event_l;
string testname;
event e;
initial begin
@(e);
case(testname)
"gd_pkt":begin
$display("i am in good pkt");
end
"bd_pkt":begin
$display("i am in bd pkt");
end
"ill_pkt":begin
$display("i am in ill pkt");
end
endcase
end
initial begin
$value$plusargs("testname=%s",testname);
->>e;
end
endmodule
yes @deve_59 the above thing you have mentioned is correct for verilog event(which is said to be non persistence),
But i want to check with system verilog events(which are persistence) i.e they are active throughout the simulation once event is triggered.
(please correct me if i am wrong)
so i want to use wait(e.triggered()) (i.e sv event triggering style and want to see the difference between verilog and sv events
In reply to dave_59:
sir,
can you give me one clear idea of difference between @e and wait(e.triggered())
I gone through above given document.but still confused.