Hi,
I'm tying to model a follow FF as an object. But it fails to produce the right output.
Tried with three different test pattern, still no hope. Could you help me out.
class follow_ff;
function void delay_ff1 (input bit done, ref bit done_d);
if (done)
done_d = 1'b1;
else
done_d = 1'b0;
endfunction
function void delay_ff2 (input bit done_d, ref bit done_dd);
if (done_d)
done_dd = 1'b1;
else
done_dd = 1'b0;
endfunction
endclass
module test;
bit done, done_d, clk, done_dd;
initial clk = 1'b1;
always #10 clk = !clk;
initial
begin
repeat (2) @ (posedge clk);
done = 1'b0; done_d = 1'b0;
repeat (10) @ (posedge clk);
#1;
done = 1'b1;
repeat (1) @ (posedge clk);
#1;
done = 1'b0;
repeat (5) @ (posedge clk);
$stop; $finish;
end
initial
begin
follow_ff ff;
ff = new();
//*************** *************
//*************** Case1 *************
//*************** *************
fork
forever
begin
@ (posedge clk);
ff.delay_ff1(done, done_d);
end
forever
begin
@ (posedge clk);
ff.delay_ff2(done_d, done_dd);
end
join
//*************** *************
//*************** Case2 *************
//*************** *************
/*
forever
begin
@ (posedge clk);
ff.delay_ff1(done, done_d);
end
forever
begin
@ (posedge clk);
ff.delay_ff2(done_d, done_dd);
end
*/
//*************** *************
//*************** Case3 *************
//*************** *************
/*
forever
begin
@ (posedge clk);
ff.delay_ff1(done, done_d);
ff.delay_ff2(done_d, done_dd);
end
*/
end
endmodule
Thanks