// Opensource ALF test file LIBRARY myLib { CELL myCombinational { CELLTYPE = combinational ; RESTRICT_CLASS { synthesis layout } PIN A { DIRECTION = input ; } PIN B { DIRECTION = input ; } PIN C { DIRECTION = input ; } PIN X { DIRECTION = output ; } PIN Y { DIRECTION = output ; } FUNCTION { BEHAVIOR { X = A && B ; Y = ! A || ! B ; } } } // end CELL myCombinational CELL myLatch { CELLTYPE = latch ; RESTRICT_CLASS { synthesis layout } PIN EN { DIRECTION = input ; } PIN S { DIRECTION = input ; SIGNALTYPE = set ; POLARITY = high ; ACTION = asynchronous ; } PIN R { DIRECTION = input ; SIGNALTYPE = clear ; POLARITY = high ; ACTION = asynchronous ; } PIN CN { DIRECTION = input ; SIGNALTYPE = clock ; POLARITY = low ; } PIN D { DIRECTION = input ; } PIN QI { DIRECTION = none ; ATTRIBUTE { non_inverted } } PIN Q { DIRECTION = output ; } FUNCTION { BEHAVIOR { @ ( S && R ) { QI = 1 ; } : ( R ) { QI = 0 ; } : ( S ) { QI = 1 ; } : ( ! CN ) { QI = D ; } Q = QI && ! EN ; } } } // end CELL myLatch CELL myFlipflop { CELLTYPE = flipflop ; RESTRICT_CLASS { synthesis layout } PIN C { DIRECTION = input ; SIGNALTYPE = clock ; POLARITY = falling_edge ; } PIN SN { DIRECTION = input ; SIGNALTYPE = set ; POLARITY = low ; ACTION = asynchronous ; } PIN RN { DIRECTION = input ; SIGNALTYPE = clear ; POLARITY = low ; ACTION = asynchronous ; } PIN D { DIRECTION = input ; } PIN Q { DIRECTION = output ; ATTRIBUTE { non_inverted } } PIN QN { DIRECTION = output ; ATTRIBUTE { inverted } } FUNCTION { BEHAVIOR { @ ( ! SN && ! RN ) { QN = x ; Q = x ; } : ( ! RN ) { QN = 1 ; Q = 0 ; } : ( ! SN ) { QN = 0 ; Q = 1 ; } : ( 10 C ) { QN = ! D ; Q = D ; } } } } // end CELL myFlipflop CELL myFlipflop2 { CELLTYPE = flipflop ; PIN C { DIRECTION = input ; SIGNALTYPE = clock ; POLARITY = falling_edge ; } PIN SN { DIRECTION = input ; SIGNALTYPE = set ; POLARITY = low ; ACTION = asynchronous ; } PIN RN { DIRECTION = input ; SIGNALTYPE = clear ; POLARITY = low ; ACTION = asynchronous ; } PIN D { DIRECTION = input ; } PIN QN { DIRECTION = output ; ATTRIBUTE { inverted } } FUNCTION { BEHAVIOR { @ ( ! SN && ! RN ) { QN = 1 ; } : ( ! RN ) { QN = 1 ; } : ( ! SN ) { QN = 0 ; } : ( 10 C ) { QN = ! D ; } } } } // end CELL myFlipflop2 CELL myScanFlipflop { CELLTYPE = flipflop ; RESTRICT_CLASS { synthesis layout } PIN C { DIRECTION = input ; SIGNALTYPE = clock ; POLARITY = rising_edge ; } PIN D { DIRECTION = input ; } PIN SI { DIRECTION = input ; } PIN SE { DIRECTION = input ; } PIN Q { DIRECTION = output ; ATTRIBUTE { non_inverted } } FUNCTION { BEHAVIOR { @ ( 01 C ) { Q = SE && SI || ! SE && D ; } } } } // end CELL myScanFlipflop CELL myMasterSlaveFlipflop { CELLTYPE = flipflop ; RESTRICT_CLASS { synthesis layout } PIN MC { DIRECTION = input ; SIGNALTYPE = master_clock ; POLARITY = rising_edge ; } PIN SC { DIRECTION = input ; SIGNALTYPE = slave_clock ; POLARITY = falling_edge ; } PIN D { DIRECTION = input ; } PIN QI { DIRECTION = none ; ATTRIBUTE { non_inverted } } PIN QN { DIRECTION = output ; ATTRIBUTE { inverted } } FUNCTION { BEHAVIOR { @ ( 01 MC ) { QI = D ; } : ( 10 SC ) { QN = ! QI ; } } } } // end CELL myMasterSlaveFlipflop CELL myMasterSlaveFlipflop2 { CELLTYPE = flipflop ; PIN C { DIRECTION = input ; SIGNALTYPE = clock ; POLARITY = double_edge ; } PIN D { DIRECTION = input ; } PIN QI { DIRECTION = none ; ATTRIBUTE { non_inverted } } PIN QN { DIRECTION = output ; ATTRIBUTE { inverted } } FUNCTION { BEHAVIOR { @ ( 01 C ) { QI = D ; } : ( 10 C ) { QN = ! QI ; } } } } // end CELL myMasterSlaveFlipflop2 } // end LIBRARY myLib