1 /****************************************************************************/
3 /* Chaine de CAO & VLSI Alliance */
5 /* Produit : YAGLE v3.50 */
6 /* Fichier : yag_latch.h */
8 /* (c) copyright 1994 Laboratoire MASI equipe CAO & VLSI */
9 /* Tous droits reserves */
10 /* Support : e-mail alliance-support@asim.lip6.fr */
13 /****************************************************************************/
15 /* latch feedback types */
17 #define FB_UNKNOWN (long)0
18 #define FB_INV ((long) 0x00000001)
19 #define FB_NAND ((long) 0x00000002)
20 #define FB_NOR ((long) 0x00000003)
21 #define FB_TRISTATE ((long) 0x00000004)
22 #define FB_PASSINV ((long) 0x00000005)
23 #define FB_SWITCHINV ((long) 0x00000006)
24 #define FB_PASSNAND ((long) 0x00000007)
25 #define FB_SWITCHNAND ((long) 0x00000008)
26 #define FB_PASSNOR ((long) 0x00000009)
27 #define FB_SWITCHNOR ((long) 0x0000000a)
29 /* latch forward cone types */
31 #define FW_UNKNOWN (long)0
32 #define FW_INV ((long) 0x00000100)
33 #define FW_NAND ((long) 0x00000200)
34 #define FW_NOR ((long) 0x00000300)
36 /* Miscellaneous latch types */
38 #define DIFF ((long) 0x00100000)
39 #define DLATCH ((long) 0x00200000)
43 #define BISTABLE_NAND ((long) 0x00010000)
44 #define BISTABLE_NOR ((long) 0x00020000)
46 /* pattern matching return types */
54 #define PM_SWITCHINV 6
56 #define PM_SWITCHNAND 8
58 #define PM_SWITCHNOR 10
60 void yagMarkLevelHold (cone_list
*ptbleedcone
, cone_list
*ptcone
, chain_list
*transchain
);
61 int yagCountConnections(chain_list
*loconchain
, int only_source_drain
);
62 chain_list
*yagCheckLoop (cone_list
*ptcone
, int fIgnoreFalse
);
63 void yagExtractBleeder (inffig_list
*ifl
, cone_list
*ptcone
);
64 void yagDetectBleeder (cone_list
*ptcone
);
65 void yagRmvThruBleed (cone_list
*ptcone
);
66 void yagMarkLoopConf (cone_list
*ptcone
);
67 void yagMatchLatch (cone_list
*ptcone
);
68 void yagMatchSimpleLatch (cone_list
*ptcone
);
69 void yagPairMemsym (inffig_list
*ifl
, cone_list
*ptcone
);
70 int yagMatchNAND (cone_list
*ptcone
, cone_list
*ptincone
);
71 int yagMatchNOR (cone_list
*ptcone
, cone_list
*ptincone
);
72 void yagSelectRSLatch (cone_list
*ptcone0
, cone_list
*ptcone1
);
73 int yagMatchNOT (cone_list
*ptcone
, cone_list
*ptincone
);
74 float yagInverterStrength (cone_list
*ptcone0
, cone_list
*ptcone1
);
75 int yagMatchInversion (cone_list
*ptcone
, cone_list
*ptincone
, float *ptstrength
, chain_list
**pttranslist
);
76 int yagMatchSwitchedInversion (cone_list
*ptcone
, cone_list
*ptincone
, chain_list
**pttranslist
);
77 int yagIsInverse(cone_list
*ptcone
, cone_list
*ptincone
);
78 void yagRmvThruLatch (cone_list
*ptcone
);