This commit is contained in:
2026-06-12 07:53:32 +02:00
commit 59e71f3297
259 changed files with 29010 additions and 0 deletions

75
code/v3_fork_examples.sv Normal file
View File

@@ -0,0 +1,75 @@
module fork_examples;
bit a, b;
initial begin
a = 1'b0;
b = 1'b0;
repeat(5) begin
#50 a = 1'b1;
#50 b = 1'b1;
#50 a = 1'b0;
#50 a = 1'b1;
#100 b = 1'b0;
end
end
initial begin
// example 1
fork
forever begin
@(a);
$display("Example 1: Observed a change in a, new value = %b at %0t", a, $time);
end
@(negedge b);
join_any
disable fork;
$display("Exiting example 1 at %0t", $time);
// example 2
fork
begin
fork
forever begin
@(a);
$display("Example 2: Observed a change in a, new value = %b at %0t", a, $time);
end
forever begin
@(b);
$display("Example 2: Observed a change in b, new value = %b at %0t", b, $time);
end
join_none
end
begin
#300;
$display("Example 2: After 300 at %0t", $time);
end
join
$display("Exiting example 2 at %0t", $time);
// example 3
fork
begin
#100;
$display("Example 3: After 100 at %0t", $time);
end
wait(a == b);
join
$display("Exiting example 3 at %0t", $time);
// example 4 - which values of i will be displayed?
for (int i = 0; i < 3; i++) begin
fork
$display("Example 4: i = %0d at %0t", i, $time);
join_none
end
$display("Exiting example 4 at %0t", $time);
#200; // some delay
// example 5 - which threads will be killed?
disable fork;
$display("Exiting example 5 at %0t", $time);
end
endmodule : fork_examples