iverilog/ivtest/ivltests/recursive_task.v

41 lines
537 B
Coq
Raw Normal View History

module recursive_task();
task automatic factorial;
input integer n;
output integer f;
integer t;
fork
begin
if (n > 1)
factorial(n - 1, t);
else
t = 1;
#1 f = n * t;
end
begin
@f $display("intermediate value = %0d", f);
end
join
endtask
integer r1;
integer r2;
integer r3;
initial begin
fork
factorial(3, r1);
factorial(4, r2);
factorial(5, r3);
join
$display("factorial 3 = %0d", r1);
$display("factorial 4 = %0d", r2);
$display("factorial 5 = %0d", r3);
end
endmodule