class display;
int cc, ccmon;
task chkincr( int bbb, int bb);
for(int ii=0; ii<3; ii++) begin
#1ns;
cc = bb+ii; //increments but does not assign
ccmon= bb+1; //increments but does not assign
$display("\n=============================================================");
$display("At %0tns display\t: %0d",$time, cc);
$write("At %0tns No new line: write\t: %0d",$time, cc);
$monitor("At %0tns monitor\t: %0d",$time, cc);
$strobe("At %0tns strobe\t: %0d",$time, cc);
$monitor("At %0tns ccmon monitor\t: %0d",$time, ccmon);
end
$display("\n\n|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
$write("\n\tOutside for loop - new line: At %0tns write\t: %0d\n",$time, cc);
$strobe("\tOutside for loop - At %0tns strobe\t: %0d",$time, cc);
endtask
endclass
module top();
int a=10, bbbb=0;
initial begin
display inca_ii;
inca_ii = new();
inca_ii.chkincr(bbbb, a); // pass 10 and 0 respectively
end
endmodule
Result:
/*
=============================================================
At 1ns display : 10
At 1ns No new line: write : 10At 1ns strobe : 10
At 1ns ccmon monitor : 11
=============================================================
At 2ns display : 11
At 2ns No new line: write : 11At 2ns strobe : 11
At 2ns ccmon monitor : 11
=============================================================
At 3ns display : 12
At 3ns No new line: write : 12
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Outside for loop - new line: At 3ns write : 12
At 3ns strobe : 12
Outside for loop - At 3ns strobe : 12
At 3ns ccmon monitor : 11
*/
How come "$monitor("At %0tns monitor\t: %0d",$time, cc);" this $monitor statement never gets executed?
The result only shows the ccmon monitor statement from the program, not the other one.