41 lines
537 B
Coq
41 lines
537 B
Coq
|
|
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
|