iverilog/ivtest/ivltests/dffsynth7.v

61 lines
934 B
Verilog

module dff();
reg clk;
reg rst;
reg ce;
reg [3:0] d;
reg [3:0] q;
always @(negedge clk or posedge rst) begin
if (rst)
q <= 4'b1001;
else if (ce)
q <= d;
end
(* ivl_synthesis_off *)
reg failed = 0;
initial begin
$monitor("%b %b %b %b", rst, clk, d, q);
clk = 1'b0;
ce = 1'b0;
rst = 1'b0;
d = 4'b0110;
#1;
if (q !== 4'bxxxx) failed = 1;
rst = 1'b1;
#1;
if (q !== 4'b1001) failed = 1;
clk = 1'b1;
#1;
if (q !== 4'b1001) failed = 1;
clk = 1'b0;
#1;
if (q !== 4'b1001) failed = 1;
rst = 1'b0;
#1;
if (q !== 4'b1001) failed = 1;
clk = 1'b1;
#1;
if (q !== 4'b1001) failed = 1;
clk = 1'b0;
#1;
if (q !== 4'b1001) failed = 1;
ce = 1'b1;
#1;
if (q !== 4'b1001) failed = 1;
clk = 1'b1;
#1;
if (q !== 4'b1001) failed = 1;
clk = 1'b0;
#1;
if (q !== 4'b0110) failed = 1;
if (failed)
$display("FAILED");
else
$display("PASSED");
end
endmodule // dff