DESFQ.v 2.55 KB
// VERSION:3.01 DATE:1999/09/24 UDP
`timescale 1ps / 1ps
`celldefine
`ifdef verifault
    `suppress_faults
`endif

primitive DESFQ ( Q, D, CP, RB, SB, notifier );
    output Q;
    input  D,CP,RB,SB,notifier;
    reg    Q;    
    // Positive edge triggered D flip-flop with active low
    // asynchronous set and clear.Equivalent to ACOS DESF.

    table

    //  D    CP      RB    SB   notifier:   Qt  :   Qt+1

        1   (01)     1     ?        ?   :   ?   :   1; // clocked data
        0   (01)     ?     1        ?   :   ?   :   0;
        *    b       1     1        ?   :   ?   :   -; // edges on data
        *    b       x     1        ?   :   ?   :   -;
        *    b       1     x        ?   :   ?   :   -;  
        ?   (10)     x     b        ?   :   ?   :   -; // negative edge on clock
        ?   (10)     b     x        ?   :   ?   :   -;
        ?   (10)     b     b        ?   :   ?   :   -;

//        ?    ?       ?     0        ?   :   ?   :   1; // set and reset
        ?    ?       1     0        ?   :   ?   :   1; // set and reset
        ?    ?       0     0        ?   :   ?   :   x; // set and reset
        ?    ?       x     0        ?   :   ?   :   x; // set and reset

        ?    ?       0     1        ?   :   ?   :   0;
        0   (?x)     ?     1        ?   :   0   :   -; // x-edges on clock
        1   (?x)     1     ?        ?   :   1   :   -;
        0   (x1)     ?     1        ?   :   0   :   -;
        1   (x1)     1     ?        ?   :   1   :   -;
        1   (x0)     1     ?        ?   :   1   :   -;
        0   (x0)     ?     1        ?   :   0   :   -; 
        1    ?       1     x        ?   :   1   :   1; // level sensitive description
        0    ?       x     1        ?   :   0   :   0;  
        ?    b      (?1)   b        ?   :   ?   :   -;  // ignore the edges on
        ?    b       b    (?1)      ?   :   ?   :   -;  //       set and clear
        ?    b       1    (1x)      ?   :   1   :   -; 
        ?    b      (1x)   1        ?   :   0   :   -;
        ?    b      (0x)   1        ?   :   0   :   -;
        ?    b       1    (0x)      ?   :   1   :   -;
        0    x      (x1)   1        ?   :   0   :   -;
        1    x       1    (01)      ?   :   1   :   -;
        1    x       1    (x1)      ?   :   1   :   -;
        0    x      (01)   1        ?   :   0   :   -;     
        ?    ?       ?     ?        *   :   ?   :   x; // At any notifier event
                                                       //output an x
        
    endtable
endprimitive

`ifdef verifault
        `nosuppress_faults
`endif
`endcelldefine