113 #define MAX_PORTS 256
115 #define PROP_ACTION 1
116 #define PROP_COMPONENT 0
117 #define PROP_SUBSTRATE 1
118 #define PROP_NO_SUBSTRATE 0
119 #define PROP_NONLINEAR 1
120 #define PROP_LINEAR 0
121 #define PROP_NODES -1
122 #define PROP_NO_PROP { NULL, PROP_REAL, { PROP_NO_VAL, PROP_NO_STR }, \
124 #define PROP_NO_VAL 0.0
125 #define PROP_NO_STR ((char *) -1)
126 #define PROP_NO_RANGE { '.', 0, 0, '.', { NULL } }
127 #define PROP_VAL_MAX NR_MAX
128 #define PROP_VAL_MIN NR_MIN
129 #define PROP_POS_RANGE { '[', 0, 0, '.', { NULL } }
130 #define PROP_NEG_RANGE { '.', 0, 0, ']', { NULL } }
131 #define PROP_POS_RANGEX { ']', 0, 0, '.', { NULL } }
132 #define PROP_NEG_RANGEX { '.', 0, 0, '[', { NULL } }
133 #define PROP_MIN_VAL(k) { '[', k, 0, '.', { NULL } }
134 #define PROP_MAX_VAL(k) { '.', 0, k, ']', { NULL } }
135 #define PROP_MIN_VALX(k) { ']', k, 0, '.', { NULL } }
136 #define PROP_MAX_VALX(k) { '.', 0, k, '[', { NULL } }
137 #define PROP_RNG_X01I { ']', 0, 1, ']', { NULL } }
138 #define PROP_RNGII(f,t) { '[', f, t, ']', { NULL } }
139 #define PROP_RNGXI(f,t) { ']', f, t, ']', { NULL } }
140 #define PROP_RNGIX(f,t) { '[', f, t, '[', { NULL } }
141 #define PROP_RNGXX(f,t) { ']', f, t, '[', { NULL } }
143 #define PROP_RNG_STR1(s) \
144 { '.', 0, 0, '.', { s, NULL } }
145 #define PROP_RNG_STR2(s1,s2) \
146 { '.', 0, 0, '.', { s1, s2, NULL } }
147 #define PROP_RNG_STR3(s1,s2,s3) \
148 { '.', 0, 0, '.', { s1, s2, s3, NULL } }
149 #define PROP_RNG_STR4(s1,s2,s3,s4) \
150 { '.', 0, 0, '.', { s1, s2, s3, s4, NULL } }
151 #define PROP_RNG_STR5(s1,s2,s3,s4,s5) \
152 { '.', 0, 0, '.', { s1, s2, s3, s4, s5, NULL } }
153 #define PROP_RNG_STR6(s1,s2,s3,s4,s5,s6) \
154 { '.', 0, 0, '.', { s1, s2, s3, s4, s5, s6, NULL } }
155 #define PROP_RNG_STR7(s1,s2,s3,s4,s5,s6,s7) \
156 { '.', 0, 0, '.', { s1, s2, s3, s4, s5, s6, s7, NULL } }
158 #define PROP_RNG_YESNO PROP_RNG_STR2 ("yes", "no")
159 #define PROP_RNG_BJT PROP_RNG_STR2 ("npn", "pnp")
160 #define PROP_RNG_FET PROP_RNG_STR2 ("nfet", "pfet")
161 #define PROP_RNG_MOS PROP_RNG_STR2 ("nmos", "pmos")
162 #define PROP_RNG_TYP PROP_RNG_STR4 ("lin", "log", "list", "const")
163 #define PROP_RNG_SOL \
164 PROP_RNG_STR5 ("CroutLU", "DoolittleLU", "HouseholderQR", \
165 "HouseholderLQ", "GolubSVD")
166 #define PROP_RNG_DIS \
167 PROP_RNG_STR7 ("Kirschning", "Kobayashi", "Yamashita", "Getsinger", \
168 "Schneider", "Pramanick", "Hammerstad")
169 #define PROP_RNG_MOD \
170 PROP_RNG_STR3 ("Wheeler", "Schneider", "Hammerstad")
178 #define PROP_IS_PROP(prop) ((prop).key != NULL)
179 #define PROP_IS_VAL(prop) ((prop).type != PROP_STR)
180 #define PROP_IS_INT(prop) ((prop).type == PROP_INT)
181 #define PROP_IS_STR(prop) (!PROP_IS_VAL (prop))
182 #define PROP_IS_LST(prop) ((prop).type == PROP_LIST)
183 #define PROP_HAS_RANGE(prop) ((prop).range.l != 0 || (prop).range.h != 0 || \
184 (prop).range.il != '.' || (prop).range.ih != '.')
185 #define PROP_HAS_STR(prop) ((prop).range.str[0] != NULL)
187 #define PROP_REQ static struct property_t required
188 #define PROP_OPT static struct property_t optional
189 #define PROP_DEF required, optional
191 #define create_definition() \
192 ((struct definition_t *) calloc (sizeof (struct definition_t), 1))
193 #define create_value() \
194 ((struct value_t *) calloc (sizeof (struct value_t), 1))
195 #define create_node() \
196 ((struct node_t *) calloc (sizeof (struct node_t), 1))
197 #define create_pair() \
198 ((struct pair_t *) calloc (sizeof (struct pair_t), 1))
Houses the settings for netlist evaluation.
struct definition_t * sub
struct property_t * required
struct property_t::@6 defaultval
struct property_t::@7 range
struct property_t * optional
struct definition_t * next