| module test; |
| |
| reg cp; |
| reg d; |
| wire q; |
| |
| dff ff(q, cp, d); |
| |
| always begin #5 cp=0; #5 cp=1; end |
| |
| always |
| begin |
| @(negedge cp) |
| d <= ~d; |
| |
| @(posedge cp) |
| if (q !== 'bx && d === q) |
| begin |
| $display("FAILED, d=%b, q=%b", d, q); |
| #1 $finish; |
| end |
| end |
| |
| initial |
| begin |
| #1 d <= 1; |
| #22; |
| $display("PASSED"); |
| $finish; |
| end |
| |
| initial $monitor($time,,cp,,d,,q); |
| |
| endmodule |
| |
| primitive dff(q, cp, d); |
| output q; |
| input cp, d; |
| reg q; |
| |
| table |
| // (cp) d : q : q ; |
| ? * : ? : - ; |
| (?0) ? : ? : - ; |
| (1x) ? : ? : - ; |
| (x1) 0 : 0 : 0 ; |
| (x1) 1 : 1 : 1 ; |
| (0x) 0 : 0 : 0 ; |
| (0x) 1 : 1 : 1 ; |
| (01) 0 : ? : 0 ; |
| (01) 1 : ? : 1 ; |
| endtable |
| |
| endprimitive |
| |