iverilog/ivtest/ivltests/sdf6.v

42 lines
793 B
Coq
Raw Normal View History

module dff (q, d, cp, sdn, cdn);
output q;
input cp;
input d;
input sdn;
input cdn;
reg q;
always @(posedge cp or negedge sdn or negedge cdn) begin
if (~sdn) q <= 1;
else if (~cdn) q <= 0;
else q <= d;
end
specify
if (sdn && cdn) (posedge cp => (q +: d)) = (1, 1);
(negedge cdn => (q +: 1'b0)) = (1, 1);
(negedge sdn => (q -: 1'b1)) = (1, 1);
endspecify
endmodule
module test;
reg d, clk, set, clr;
dff dut(q, d, clk, ~set, ~clr);
initial begin
d=0; clk=0; set=0; clr=0;
$monitor($time,, "d=%b, clk=%b, set=%b, clr=%b, q=%b",
d, clk, set, clr, q);
$sdf_annotate("ivltests/sdf6.sdf");
#10 d = 1;
#10 set = 1;
#10 set = 0;
#10 clr = 1;
#10 clr = 0;
#10 clk = 1;
#10 d = 0;
end
endmodule