Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / yagle / yagle / yag_latch.h
1 /****************************************************************************/
2 /* */
3 /* Chaine de CAO & VLSI Alliance */
4 /* */
5 /* Produit : YAGLE v3.50 */
6 /* Fichier : yag_latch.h */
7 /* */
8 /* (c) copyright 1994 Laboratoire MASI equipe CAO & VLSI */
9 /* Tous droits reserves */
10 /* Support : e-mail alliance-support@asim.lip6.fr */
11 /* */
12 /* */
13 /****************************************************************************/
14
15 /* latch feedback types */
16
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)
28
29 /* latch forward cone types */
30
31 #define FW_UNKNOWN (long)0
32 #define FW_INV ((long) 0x00000100)
33 #define FW_NAND ((long) 0x00000200)
34 #define FW_NOR ((long) 0x00000300)
35
36 /* Miscellaneous latch types */
37
38 #define DIFF ((long) 0x00100000)
39 #define DLATCH ((long) 0x00200000)
40
41 /* bistable types */
42
43 #define BISTABLE_NAND ((long) 0x00010000)
44 #define BISTABLE_NOR ((long) 0x00020000)
45
46 /* pattern matching return types */
47
48 #define PM_UNKNOWN 0
49 #define PM_INV 1
50 #define PM_NAND 2
51 #define PM_NOR 3
52 #define PM_TRISTATE 4
53 #define PM_PASSINV 5
54 #define PM_SWITCHINV 6
55 #define PM_PASSNAND 7
56 #define PM_SWITCHNAND 8
57 #define PM_PASSNOR 9
58 #define PM_SWITCHNOR 10
59
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);
79