@@ -16,67 +16,77 @@ module DFFRE (
1616 output reg Q = 1'b0 // Data Output
1717);
1818
19- always @(posedge C, negedge R)
20- if (! R)
21- Q <= 1'b0 ;
22- else if (E)
23- Q <= D;
2419
25- `ifndef SYNTHESIS
26- wire C_D_SDFCHK;
27- wire C_nD_SDFCHK;
28- wire nC_D_SDFCHK;
29- wire nC_nD_SDFCHK;
30- wire R_D_SDFCHK;
31- wire R_nD_SDFCHK;
32- wire R_SDFCHK;
33- wire D_SDFCHK;
20+ always @(posedge C, negedge R)
21+ if (! R)
22+ Q <= 1'b0 ;
23+ else if (E)
24+ Q <= D;
3425
35- assign C_D_SDFCHK = C & D;
36- assign C_nD_SDFCHK = C & ! D;
37- assign nC_D_SDFCHK = ! C & D;
38- assign nC_nD_SDFCHK = ! C & ! D;
39- assign R_D_SDFCHK = R & D;
40- assign R_nD_SDFCHK = R & ! D;
41- assign R_SDFCHK = R;
42- assign D_SDFCHK = D;
4326
27+ wire C_D_SDFCHK;
28+ wire C_nD_SDFCHK;
29+ wire nC_D_SDFCHK;
30+ wire nC_nD_SDFCHK;
31+ wire R_D_SDFCHK;
32+ wire R_nD_SDFCHK;
33+ wire R_SDFCHK;
34+ wire D_SDFCHK;
4435
45- specify
46- if (C == 1'b0 && D == 1'b1 && E == 1'b0 )
47- (negedge R => (Q+ :1'b0 )) = (0 , 0 );
48- if (C == 1'b0 && D == 1'b0 && E == 1'b0 )
49- (negedge R => (Q+ :1'b0 )) = (0 , 0 );
50- if (C == 1'b1 && D == 1'b1 && E == 1'b0 )
51- (negedge R => (Q+ :1'b0 )) = (0 , 0 );
52- if (C == 1'b1 && D == 1'b0 && E == 1'b0 )
53- (negedge R => (Q+ :1'b0 )) = (0 , 0 );
54- if (C == 1'b0 && D == 1'b1 && E == 1'b1 )
55- (negedge R => (Q+ :1'b0 )) = (0 , 0 );
56- if (C == 1'b0 && D == 1'b0 && E == 1'b1 )
57- (negedge R => (Q+ :1'b0 )) = (0 , 0 );
58- if (C == 1'b1 && D == 1'b1 && E == 1'b1 )
59- (negedge R => (Q+ :1'b0 )) = (0 , 0 );
60- if (C == 1'b1 && D == 1'b0 && E == 1'b1 )
61- (negedge R => (Q+ :1'b0 )) = (0 , 0 );
62- (posedge C => (Q+ :D)) = (0 , 0 );
36+ assign C_D_SDFCHK = C & D;
37+ assign C_nD_SDFCHK = C & ! D;
38+ assign nC_D_SDFCHK = ! C & D;
39+ assign nC_nD_SDFCHK = ! C & ! D;
40+ assign R_D_SDFCHK = R & D;
41+ assign R_nD_SDFCHK = R & ! D;
42+ assign R_SDFCHK = R;
43+ assign D_SDFCHK = D;
44+
45+
46+
47+ `ifndef SYNTHESIS
48+ `ifdef TIMED_SIM
49+ specparam T1 = 0 .3 ;
50+ specparam T2 = 0 .4 ;
51+
52+ specify
53+ if (C == 1'b0 && D == 1'b1 && E == 1'b0 )
54+ (negedge R => (Q+ :1'b0 )) = (T1, T2);
55+ if (C == 1'b0 && D == 1'b0 && E == 1'b0 )
56+ (negedge R => (Q+ :1'b0 )) = (T1, T2);
57+ if (C == 1'b1 && D == 1'b1 && E == 1'b0 )
58+ (negedge R => (Q+ :1'b0 )) = (T1, T2);
59+ if (C == 1'b1 && D == 1'b0 && E == 1'b0 )
60+ (negedge R => (Q+ :1'b0 )) = (T1, T2);
61+ if (C == 1'b0 && D == 1'b1 && E == 1'b1 )
62+ (negedge R => (Q+ :1'b0 )) = (T1, T2);
63+ if (C == 1'b0 && D == 1'b0 && E == 1'b1 )
64+ (negedge R => (Q+ :1'b0 )) = (T1, T2);
65+ if (C == 1'b1 && D == 1'b1 && E == 1'b1 )
66+ (negedge R => (Q+ :1'b0 )) = (T1, T2);
67+ if (C == 1'b1 && D == 1'b0 && E == 1'b1 )
68+ (negedge R => (Q+ :1'b0 )) = (T1, T2);
69+ (posedge C => (Q+ :D)) = (T1, T2);
70+
71+ $width (negedge R &&& C_D_SDFCHK, T1, T2, notifier);
72+ $width (negedge R &&& C_nD_SDFCHK, T1, T2, notifier);
73+ $width (negedge R &&& nC_D_SDFCHK, T1, T2, notifier);
74+ $width (negedge R &&& nC_nD_SDFCHK, T1, T2, notifier);
75+ $width (posedge C &&& R_D_SDFCHK, T1, T2, notifier);
76+ $width (negedge C &&& R_D_SDFCHK, T1, T2, notifier);
77+ $width (posedge C &&& R_nD_SDFCHK, T1, T2, notifier);
78+ $width (negedge C &&& R_nD_SDFCHK, T1, T2, notifier);
79+
80+ $setuphold (posedge C &&& R_SDFCHK, posedge D , T1, T2, notifier);
81+ $setuphold (posedge C &&& R_SDFCHK, negedge D , T1, T2, notifier);
82+ $recovery (posedge R &&& D_SDFCHK, posedge C &&& D_SDFCHK, 0 , notifier);
83+ $hold (posedge C &&& D_SDFCHK, posedge R , 0 , notifier);
84+ $hold (posedge C &&& D_SDFCHK, posedge R , 0 , notifier);
85+ endspecify
86+
87+ `endif // `ifdef TIMED_SIM
88+ `endif // `ifndef SYNTHESIS
6389
64- $width (negedge R &&& C_D_SDFCHK, 0 , 0 , notifier);
65- $width (negedge R &&& C_nD_SDFCHK, 0 , 0 , notifier);
66- $width (negedge R &&& nC_D_SDFCHK, 0 , 0 , notifier);
67- $width (negedge R &&& nC_nD_SDFCHK, 0 , 0 , notifier);
68- $width (posedge C &&& R_D_SDFCHK, 0 , 0 , notifier);
69- $width (negedge C &&& R_D_SDFCHK, 0 , 0 , notifier);
70- $width (posedge C &&& R_nD_SDFCHK, 0 , 0 , notifier);
71- $width (negedge C &&& R_nD_SDFCHK, 0 , 0 , notifier);
7290
73- $setuphold (posedge C &&& R_SDFCHK, posedge D , 0 , 0 , notifier);
74- $setuphold (posedge C &&& R_SDFCHK, negedge D , 0 , 0 , notifier);
75- $recovery (posedge R &&& D_SDFCHK, posedge C &&& D_SDFCHK, 0 , notifier);
76- $hold (posedge C &&& D_SDFCHK, posedge R , 0 , notifier);
77- $hold (posedge C &&& D_SDFCHK, posedge R , 0 , notifier);
78- endspecify
79- `endif // `ifndef SYNTHESIS
80-
8191endmodule
8292`endcelldefine
0 commit comments