blob: 094770bd65d532b33e2231ef8fd619ddbe862a93 [file] [log] [blame]
primitive U_DF_P_S_pg (Q, D, CP, S, VPWR, VGND);
output Q;
input D, CP, S, VPWR, VGND;
reg Q;
// FUNCTION : POSITIVE EDGE TRIGGERED D FLIP-FLOP WITH ACTIVE HIGH
// ASYNCHRONOUS SET ( Q OUTPUT UDP ).
table
// D CP S VPWR VGND : Qt : Qt+1
* b 0 1 0 : ? : - ; // data event, hold unless CP==x
? (?0) 0 1 0 : ? : - ; // CP => 0, hold
? b (?0) 1 0 : ? : - ; // S => 0, hold unless CP==x
? ? 1 1 0 : ? : 1 ; // async set
0 r 0 1 0 : ? : 0 ; // clock data on CP
1 r ? 1 0 : ? : 1 ; // clock data on CP
0 (x1) 0 1 0 : 0 : 0 ; // possible CP, hold when D==Q==0
1 (x1) ? 1 0 : 1 : 1 ; // possible CP, hold when D==Q==1
0 x 0 1 0 : 0 : 0 ; // unkown CP, hold when D==Q==0
1 x ? 1 0 : 1 : 1 ; // unkown CP, hold when D==Q==1
? b (?x) 1 0 : 1 : 1 ; // S=>x, hold when Q==1 unless CP==x
? ? ? * ? : ? : x ; // Q => X on any change on vpwr
? ? ? ? * : ? : x ; // Q => X on any change on vgnd
endtable
endprimitive