// Opensource ALF test file LIBRARY sampleLibrary { CELL sampleDFlipFlop { CELLTYPE = flipflop ; PIN D { DIRECTION = input ; CAPACITANCE = 0.01 ; SIGNALTYPE = data ; } PIN C { DIRECTION = input ; CAPACITANCE { DEFAULT = 0.01 ; RISE = 0.01 ; FALL = 0.01 ; } LIMIT { SLEWRATE { MIN = 0.0 ; MAX = 0.3 ; } } SIGNALTYPE = clock ; POLARITY = rising_edge ; } PIN RN { DIRECTION = input ; CAPACITANCE = 0.01 ; LIMIT { SLEWRATE { MIN = 0.0 ; MAX = 0.3 ; } } SIGNALTYPE = clear ; POLARITY = low ; ACTION = asynchronous ; } PIN Q { DIRECTION = output ; LIMIT { CAPACITANCE { MIN = 0.0 ; MAX = 1.0 ; } } ATTRIBUTE { non_inverted } } PIN QN { DIRECTION = output ; LIMIT { CAPACITANCE { MIN = 0.0 ; MAX = 1.0 ; } } ATTRIBUTE { inverted } } FUNCTION { BEHAVIOR { @ ( ! RN ) { QN = 1 ; Q = 0 ; } : ( 01 C ) { QN = ! D ; Q = D ; } } } VECTOR ( 01 D -> 01 C ) { SETUP { FROM { PIN = D ; } TO { PIN = C ; } HEADER { SLEWRATE s1 { PIN = D ; TABLE { 0.1 1 } } SLEWRATE s2 { PIN = C ; TABLE { 0.1 0.2 0.3 } } CAPACITANCE { PIN = Q ; TABLE { 0 1 } } } TABLE { 1 1 1 1 1 1 1 1 1 1 1 1 } } } VECTOR ( 10 D -> 01 C ) { SETUP { FROM { PIN = D ; } TO { PIN = C ; } HEADER { SLEWRATE s1 { PIN = D ; TABLE { 0.1 1 } } SLEWRATE s2 { PIN = C ; TABLE { 0.1 0.2 0.3 } } CAPACITANCE { PIN = Q ; TABLE { 0 1 } } } TABLE { 1 1 1 1 1 1 1 1 1 1 1 1 } } } VECTOR ( 01 C -> 01 D ) { HOLD { FROM { PIN = C ; } TO { PIN = D ; } HEADER { SLEWRATE s1 { PIN = D ; TABLE { 0.1 1 } } SLEWRATE s2 { PIN = C ; TABLE { 0.1 0.2 0.3 } } CAPACITANCE { PIN = Q ; TABLE { 0 1 } } } TABLE { 0 0 0 0 0 0 0 0 0 0 0 0 } } } VECTOR ( 01 C -> 10 D ) { HOLD { FROM { PIN = C ; } TO { PIN = D ; } HEADER { SLEWRATE s1 { PIN = D ; TABLE { 0.1 1 } } SLEWRATE s2 { PIN = C ; TABLE { 0.1 0.2 0.3 } } CAPACITANCE { PIN = Q ; TABLE { 0 1 } } } TABLE { 0 0 0 0 0 0 0 0 0 0 0 0 } } } VECTOR ( 01 D && C && RN ) { ENERGY = 0.1 ; } VECTOR ( 10 D && C && RN ) { ENERGY = 0.1 ; } VECTOR ( 01 D && ! C && RN ) { ENERGY = 0.2 ; } VECTOR ( 10 D && ! C && RN ) { ENERGY = 0.2 ; } VECTOR ( 01 D && C && ! RN ) { ENERGY = 0.1 ; } VECTOR ( 10 D && C && ! RN ) { ENERGY = 0.1 ; } VECTOR ( 01 D && ! C && ! RN ) { ENERGY = 0.2 ; } VECTOR ( 10 D && ! C && ! RN ) { ENERGY = 0.2 ; } VECTOR ( 01 C ) { ENERGY = 1 ; } VECTOR ( 10 C ) { ENERGY = 1 ; } VECTOR ( 01 RN -> 01 C ) { RECOVERY { FROM { PIN = RN ; } TO { PIN = C ; } HEADER { SLEWRATE s1 { PIN = RN ; TABLE { 0.1 1 } } SLEWRATE s2 { PIN = C ; TABLE { 0.1 0.2 0.3 } } } TABLE { 1 1 1 1 1 1 } } } VECTOR ( 01 C -> 01 RN ) { REMOVAL { FROM { PIN = C ; } TO { PIN = RN ; } HEADER { SLEWRATE s1 { PIN = RN ; TABLE { 0.1 1 } } SLEWRATE s2 { PIN = C ; TABLE { 0.1 0.2 0.3 } } } TABLE { 0 0 0 0 0 0 } } } VECTOR ( 01 RN ) { ENERGY = 0.5 ; } VECTOR ( 10 RN ) { ENERGY = 0.5 ; } VECTOR ( 01 C -> 01 Q ) { DELAY { FROM { PIN = C ; } TO { PIN = Q ; } HEADER { CAPACITANCE { PIN = Q ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } } TABLE { 0 0.5 1 0 0.5 1 } } SLEWRATE { PIN = Q ; HEADER { CAPACITANCE { PIN = Q ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } } TABLE { 0 0.5 1 0 0.5 1 } } ENERGY { HEADER { CAPACITANCE { PIN = Q ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } } TABLE { 1 1 1 1 1 1 } } } VECTOR ( 01 C -> 10 Q ) { DELAY { FROM { PIN = C ; } TO { PIN = Q ; } HEADER { CAPACITANCE { PIN = Q ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } } TABLE { 0 0.5 1 0 0.5 1 } } SLEWRATE { PIN = Q ; HEADER { CAPACITANCE { PIN = Q ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } } TABLE { 0 0.5 1 0 0.5 1 } } ENERGY { HEADER { CAPACITANCE { PIN = Q ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } } TABLE { 1 1 1 1 1 1 } } } VECTOR ( 10 RN -> 10 Q ) { DELAY = 1 { FROM { PIN = RN ; } TO { PIN = Q ; } } SLEWRATE = 1 { PIN = Q ; } ENERGY = 1 ; } VECTOR ( 01 C -> 01 QN ) { DELAY { FROM { PIN = C ; } TO { PIN = QN ; } HEADER { CAPACITANCE c1 { PIN = QN ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } CAPACITANCE c2 { PIN = Q ; TABLE { 0 1 } } } TABLE { 0 0.5 1 0 0.5 1 0 0.5 1 0 0.5 1 } } SLEWRATE { PIN = QN ; HEADER { CAPACITANCE c1 { PIN = QN ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } CAPACITANCE c2 { PIN = Q ; TABLE { 0 1 } } } TABLE { 0 0.5 1 0 0.5 1 0 0.5 1 0 0.5 1 } } ENERGY { HEADER { CAPACITANCE c1 { PIN = QN ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } CAPACITANCE c2 { PIN = Q ; TABLE { 0 1 } } } TABLE { 1 1 1 1 1 1 1 1 1 1 1 1 } } } VECTOR ( 01 C -> 10 QN ) { DELAY { FROM { PIN = C ; } TO { PIN = QN ; } HEADER { CAPACITANCE c1 { PIN = QN ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } CAPACITANCE c2 { PIN = Q ; TABLE { 0 1 } } } TABLE { 0 0.5 1 0 0.5 1 0 0.5 1 0 0.5 1 } } SLEWRATE { PIN = QN ; HEADER { CAPACITANCE c1 { PIN = QN ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } CAPACITANCE c2 { PIN = Q ; TABLE { 0 1 } } } TABLE { 0 0.5 1 0 0.5 1 0 0.5 1 0 0.5 1 } } ENERGY { HEADER { CAPACITANCE c1 { PIN = QN ; TABLE { 0 0.5 1 } } SLEWRATE { PIN = C ; TABLE { 0.1 1 } } CAPACITANCE c2 { PIN = Q ; TABLE { 0 1 } } } TABLE { 1 1 1 1 1 1 1 1 1 1 1 1 } } } VECTOR ( 10 RN -> 01 QN ) { DELAY = 1 { FROM { PIN = RN ; } TO { PIN = QN ; } } SLEWRATE = 1 { PIN = QN ; } ENERGY = 1 ; } } // end CELL sampleDFlipFlop } // end LIBRARY sampleLibrary