Follow convention, use eq() macro. Show replacement cards when ngdebug=TRUE.
This commit is contained in:
parent
e38e1099b5
commit
9361e9ae6c
|
|
@ -8287,8 +8287,6 @@ static void rem_double_braces(struct card* newcard)
|
|||
}
|
||||
|
||||
#ifdef INTEGRATE_UDEVICES
|
||||
/* #define TRACE */
|
||||
#ifdef TRACE
|
||||
static void list_the_cards(struct card *startcard, char *prefix)
|
||||
{
|
||||
struct card *card;
|
||||
|
|
@ -8298,7 +8296,6 @@ static void list_the_cards(struct card *startcard, char *prefix)
|
|||
printf("%s %s\n", prefix, cut_line);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct card *the_last_card(struct card *startcard)
|
||||
{
|
||||
|
|
@ -8393,7 +8390,10 @@ static struct card *u_instances(struct card *startcard)
|
|||
subcktcard->nextcard = newcard;
|
||||
tfree(subcktcard->line);
|
||||
subcktcard->line = new_str;
|
||||
//list_the_cards(newcard, "Replacement:");
|
||||
if (ft_ngdebug) {
|
||||
printf("%s\n", new_str);
|
||||
list_the_cards(newcard, "Replacement:");
|
||||
}
|
||||
last_newcard = the_last_card(newcard);
|
||||
if (last_newcard) {
|
||||
last_newcard->nextcard = card; // the .ends card
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
#include "ngspice/stringutil.h"
|
||||
#include "ngspice/inpdefs.h"
|
||||
#include "ngspice/cpextern.h"
|
||||
#include "ngspice/macros.h"
|
||||
#include "ngspice/udevices.h"
|
||||
|
||||
extern struct card* insert_new_line(
|
||||
|
|
@ -251,7 +252,7 @@ static struct pin_entry *add_pin(char *name, int pin_type, BOOL is_port)
|
|||
}
|
||||
for (x = *plist; x; x = x->next) {
|
||||
/* No duplicates */
|
||||
if (strcmp(x->name, name) == 0) {
|
||||
if (eq(x->name, name)) {
|
||||
return *plist;
|
||||
}
|
||||
last = x;
|
||||
|
|
@ -292,7 +293,7 @@ static struct pin_entry *find_pin(char *name, int pin_type, BOOL is_port)
|
|||
}
|
||||
for (x = plist; x; x = x->next) {
|
||||
/* No duplicates */
|
||||
if (strcmp(x->name, name) == 0) {
|
||||
if (eq(x->name, name)) {
|
||||
return x;
|
||||
}
|
||||
}
|
||||
|
|
@ -507,88 +508,88 @@ static char *find_xspice_for_delay(char *itype)
|
|||
switch (itype[0]) {
|
||||
case 'a': {
|
||||
/* and anda and3 and3a */
|
||||
if (strcmp(itype, "and") == 0) { return xspice_tab[D_AND]; }
|
||||
if (strcmp(itype, "anda") == 0) { return xspice_tab[D_AND]; }
|
||||
if (strcmp(itype, "and3") == 0) { return xspice_tab[D_AND]; }
|
||||
if (strcmp(itype, "and3a") == 0) { return xspice_tab[D_AND]; }
|
||||
if (eq(itype, "and")) { return xspice_tab[D_AND]; }
|
||||
if (eq(itype, "anda")) { return xspice_tab[D_AND]; }
|
||||
if (eq(itype, "and3")) { return xspice_tab[D_AND]; }
|
||||
if (eq(itype, "and3a")) { return xspice_tab[D_AND]; }
|
||||
|
||||
if (strcmp(itype, "ao") == 0) { return xspice_tab[D_AO]; }
|
||||
if (strcmp(itype, "aoi") == 0) { return xspice_tab[D_AOI]; }
|
||||
if (eq(itype, "ao")) { return xspice_tab[D_AO]; }
|
||||
if (eq(itype, "aoi")) { return xspice_tab[D_AOI]; }
|
||||
break;
|
||||
}
|
||||
case 'b': {
|
||||
/* buf3 buf3a */
|
||||
if (strcmp(itype, "buf3a") == 0) { return xspice_tab[D_TRI]; }
|
||||
if (strcmp(itype, "buf") == 0) { return xspice_tab[D_BUF]; }
|
||||
if (strcmp(itype, "bufa") == 0) { return xspice_tab[D_BUF]; }
|
||||
if (strcmp(itype, "buf3") == 0) { return xspice_tab[D_TRI]; }
|
||||
if (eq(itype, "buf3a")) { return xspice_tab[D_TRI]; }
|
||||
if (eq(itype, "buf")) { return xspice_tab[D_BUF]; }
|
||||
if (eq(itype, "bufa")) { return xspice_tab[D_BUF]; }
|
||||
if (eq(itype, "buf3")) { return xspice_tab[D_TRI]; }
|
||||
break;
|
||||
}
|
||||
case 'd': {
|
||||
if (strcmp(itype, "dff") == 0) { return xspice_tab[D_DFF]; }
|
||||
if (strcmp(itype, "dltch") == 0) { return xspice_tab[D_DLTCH]; }
|
||||
if (eq(itype, "dff")) { return xspice_tab[D_DFF]; }
|
||||
if (eq(itype, "dltch")) { return xspice_tab[D_DLTCH]; }
|
||||
break;
|
||||
}
|
||||
case 'i': {
|
||||
/* inv inva inv3 inv3a */
|
||||
if (strcmp(itype, "inv") == 0) { return xspice_tab[D_INV]; }
|
||||
if (strcmp(itype, "inv3a") == 0) { return xspice_tab[D_INV]; }
|
||||
if (strcmp(itype, "inva") == 0) { return xspice_tab[D_INV]; }
|
||||
if (strcmp(itype, "inv3") == 0) { return xspice_tab[D_INV]; }
|
||||
if (eq(itype, "inv")) { return xspice_tab[D_INV]; }
|
||||
if (eq(itype, "inv3a")) { return xspice_tab[D_INV]; }
|
||||
if (eq(itype, "inva")) { return xspice_tab[D_INV]; }
|
||||
if (eq(itype, "inv3")) { return xspice_tab[D_INV]; }
|
||||
break;
|
||||
}
|
||||
case 'j': {
|
||||
if (strcmp(itype, "jkff") == 0) { return xspice_tab[D_JKFF]; }
|
||||
if (eq(itype, "jkff")) { return xspice_tab[D_JKFF]; }
|
||||
break;
|
||||
}
|
||||
case 'n': {
|
||||
/* nand nanda nand3 nand3a */
|
||||
if (strcmp(itype, "nand") == 0) { return xspice_tab[D_NAND]; }
|
||||
if (strcmp(itype, "nanda") == 0) { return xspice_tab[D_NAND]; }
|
||||
if (strcmp(itype, "nand3") == 0) { return xspice_tab[D_NAND]; }
|
||||
if (strcmp(itype, "nand3a") == 0) { return xspice_tab[D_NAND]; }
|
||||
if (eq(itype, "nand")) { return xspice_tab[D_NAND]; }
|
||||
if (eq(itype, "nanda")) { return xspice_tab[D_NAND]; }
|
||||
if (eq(itype, "nand3")) { return xspice_tab[D_NAND]; }
|
||||
if (eq(itype, "nand3a")) { return xspice_tab[D_NAND]; }
|
||||
|
||||
/* nor nora nor3 nor3a */
|
||||
if (strcmp(itype, "nor") == 0) { return xspice_tab[D_NOR]; }
|
||||
if (strcmp(itype, "nora") == 0) { return xspice_tab[D_NOR]; }
|
||||
if (strcmp(itype, "nor3") == 0) { return xspice_tab[D_NOR]; }
|
||||
if (strcmp(itype, "nor3a") == 0) { return xspice_tab[D_NOR]; }
|
||||
if (eq(itype, "nor")) { return xspice_tab[D_NOR]; }
|
||||
if (eq(itype, "nora")) { return xspice_tab[D_NOR]; }
|
||||
if (eq(itype, "nor3")) { return xspice_tab[D_NOR]; }
|
||||
if (eq(itype, "nor3a")) { return xspice_tab[D_NOR]; }
|
||||
|
||||
/* nxor nxora nxor3 nxor3a */
|
||||
if (strcmp(itype, "nxor") == 0) { return xspice_tab[D_NXOR]; }
|
||||
if (strcmp(itype, "nxora") == 0) { return xspice_tab[D_NXOR]; }
|
||||
if (strcmp(itype, "nxor3") == 0) { return xspice_tab[D_NXOR]; }
|
||||
if (strcmp(itype, "nxor3a") == 0) { return xspice_tab[D_NXOR]; }
|
||||
if (eq(itype, "nxor")) { return xspice_tab[D_NXOR]; }
|
||||
if (eq(itype, "nxora")) { return xspice_tab[D_NXOR]; }
|
||||
if (eq(itype, "nxor3")) { return xspice_tab[D_NXOR]; }
|
||||
if (eq(itype, "nxor3a")) { return xspice_tab[D_NXOR]; }
|
||||
break;
|
||||
}
|
||||
case 'o': {
|
||||
/* or ora or3 or3a */
|
||||
if (strcmp(itype, "or") == 0) { return xspice_tab[D_OR]; }
|
||||
if (strcmp(itype, "ora") == 0) { return xspice_tab[D_OR]; }
|
||||
if (strcmp(itype, "or3") == 0) { return xspice_tab[D_OR]; }
|
||||
if (strcmp(itype, "or3a") == 0) { return xspice_tab[D_OR]; }
|
||||
if (eq(itype, "or")) { return xspice_tab[D_OR]; }
|
||||
if (eq(itype, "ora")) { return xspice_tab[D_OR]; }
|
||||
if (eq(itype, "or3")) { return xspice_tab[D_OR]; }
|
||||
if (eq(itype, "or3a")) { return xspice_tab[D_OR]; }
|
||||
|
||||
if (strcmp(itype, "oa") == 0) { return xspice_tab[D_OA]; }
|
||||
if (strcmp(itype, "oai") == 0) { return xspice_tab[D_OAI]; }
|
||||
if (eq(itype, "oa")) { return xspice_tab[D_OA]; }
|
||||
if (eq(itype, "oai")) { return xspice_tab[D_OAI]; }
|
||||
break;
|
||||
}
|
||||
case 'p': {
|
||||
if (strcmp(itype, "pulldn") == 0) { return xspice_tab[D_DOWN]; }
|
||||
if (strcmp(itype, "pullup") == 0) { return xspice_tab[D_UP]; }
|
||||
if (eq(itype, "pulldn")) { return xspice_tab[D_DOWN]; }
|
||||
if (eq(itype, "pullup")) { return xspice_tab[D_UP]; }
|
||||
break;
|
||||
}
|
||||
case 's': {
|
||||
/* Not implemented
|
||||
if (strcmp(itype, "srff") == 0) { return xspice_tab[D_SRFF]; }
|
||||
if (eq(itype, "srff")) { return xspice_tab[D_SRFF]; }
|
||||
*/
|
||||
break;
|
||||
}
|
||||
case 'x': {
|
||||
/* xor xora xor3 xor3a */
|
||||
if (strcmp(itype, "xor") == 0) { return xspice_tab[D_XOR]; }
|
||||
if (strcmp(itype, "xora") == 0) { return xspice_tab[D_XOR]; }
|
||||
if (strcmp(itype, "xor3") == 0) { return xspice_tab[D_XOR]; }
|
||||
if (strcmp(itype, "xor3a") == 0) { return xspice_tab[D_XOR]; }
|
||||
if (eq(itype, "xor")) { return xspice_tab[D_XOR]; }
|
||||
if (eq(itype, "xora")) { return xspice_tab[D_XOR]; }
|
||||
if (eq(itype, "xor3")) { return xspice_tab[D_XOR]; }
|
||||
if (eq(itype, "xor3a")) { return xspice_tab[D_XOR]; }
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -902,9 +903,8 @@ static Xlatep find_in_xlator(Xlatep x, Xlatorp xlp)
|
|||
if (!x) { return NULL; }
|
||||
if (!xlp) { return NULL; }
|
||||
for (x1 = first_xlator(xlp); x1; x1 = next_xlator(xlp)) {
|
||||
if (strcmp(x1->tmodel, x->tmodel) == 0 &&
|
||||
strcmp(x1->utype, x->utype) == 0) {
|
||||
if (strcmp(x1->xspice, x->xspice) == 0) {
|
||||
if (eq(x1->tmodel, x->tmodel) && eq(x1->utype, x->utype)) {
|
||||
if (eq(x1->xspice, x->xspice)) {
|
||||
return x1;
|
||||
}
|
||||
}
|
||||
|
|
@ -948,25 +948,25 @@ static void add_delays_to_model_xlator(char *delays,
|
|||
/* classify gate variants */
|
||||
static BOOL is_tristate_buf_array(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "buf3a") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "inv3a") == 0) { return TRUE; }
|
||||
if (eq(itype, "buf3a")) { return TRUE; }
|
||||
if (eq(itype, "inv3a")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL is_tristate_xor_array(char *itype)
|
||||
{
|
||||
/* xor/nxor have vector inputs */
|
||||
if (strcmp(itype, "xor3a") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nxor3a") == 0) { return TRUE; }
|
||||
if (eq(itype, "xor3a")) { return TRUE; }
|
||||
if (eq(itype, "nxor3a")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL is_tristate_vector_array(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "and3a") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nand3a") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "or3a") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nor3a") == 0) { return TRUE; }
|
||||
if (eq(itype, "and3a")) { return TRUE; }
|
||||
if (eq(itype, "nand3a")) { return TRUE; }
|
||||
if (eq(itype, "or3a")) { return TRUE; }
|
||||
if (eq(itype, "nor3a")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -980,25 +980,25 @@ static BOOL is_tristate_array(char *itype)
|
|||
|
||||
static BOOL is_buf_tristate(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "buf3") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "inv3") == 0) { return TRUE; }
|
||||
if (eq(itype, "buf3")) { return TRUE; }
|
||||
if (eq(itype, "inv3")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL is_xor_tristate(char *itype)
|
||||
{
|
||||
/* xor/nxor have vector inputs */
|
||||
if (strcmp(itype, "xor3") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nxor3") == 0) { return TRUE; }
|
||||
if (eq(itype, "xor3")) { return TRUE; }
|
||||
if (eq(itype, "nxor3")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL is_vector_tristate(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "and3") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nand3") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "or3") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nor3") == 0) { return TRUE; }
|
||||
if (eq(itype, "and3")) { return TRUE; }
|
||||
if (eq(itype, "nand3")) { return TRUE; }
|
||||
if (eq(itype, "or3")) { return TRUE; }
|
||||
if (eq(itype, "nor3")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -1012,25 +1012,25 @@ static BOOL is_tristate(char *itype)
|
|||
|
||||
static BOOL is_vector_gate_array(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "anda") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nanda") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "ora") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nora") == 0) { return TRUE; }
|
||||
if (eq(itype, "anda")) { return TRUE; }
|
||||
if (eq(itype, "nanda")) { return TRUE; }
|
||||
if (eq(itype, "ora")) { return TRUE; }
|
||||
if (eq(itype, "nora")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL is_buf_gate_array(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "bufa") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "inva") == 0) { return TRUE; }
|
||||
if (eq(itype, "bufa")) { return TRUE; }
|
||||
if (eq(itype, "inva")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL is_xor_gate_array(char *itype)
|
||||
{
|
||||
/* xor/nxor have vector inputs */
|
||||
if (strcmp(itype, "xora") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nxora") == 0) { return TRUE; }
|
||||
if (eq(itype, "xora")) { return TRUE; }
|
||||
if (eq(itype, "nxora")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -1044,25 +1044,25 @@ static BOOL is_gate_array(char *itype)
|
|||
|
||||
static BOOL is_vector_gate(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "nand") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "and") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nor") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "or") == 0) { return TRUE; }
|
||||
if (eq(itype, "nand")) { return TRUE; }
|
||||
if (eq(itype, "and")) { return TRUE; }
|
||||
if (eq(itype, "nor")) { return TRUE; }
|
||||
if (eq(itype, "or")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL is_buf_gate(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "inv") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "buf") == 0) { return TRUE; }
|
||||
if (eq(itype, "inv")) { return TRUE; }
|
||||
if (eq(itype, "buf")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL is_xor_gate(char *itype)
|
||||
{
|
||||
/* xor/nxor have vector inputs */
|
||||
if (strcmp(itype, "xor") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "nxor") == 0) { return TRUE; }
|
||||
if (eq(itype, "xor")) { return TRUE; }
|
||||
if (eq(itype, "nxor")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -1076,10 +1076,10 @@ static BOOL is_gate(char *itype)
|
|||
|
||||
static BOOL is_compound_gate(char *itype)
|
||||
{
|
||||
if (strcmp(itype, "aoi") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "ao") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "oa") == 0) { return TRUE; }
|
||||
if (strcmp(itype, "oai") == 0) { return TRUE; }
|
||||
if (eq(itype, "aoi")) { return TRUE; }
|
||||
if (eq(itype, "ao")) { return TRUE; }
|
||||
if (eq(itype, "oa")) { return TRUE; }
|
||||
if (eq(itype, "oai")) { return TRUE; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -1461,7 +1461,7 @@ static BOOL gen_timing_model(
|
|||
char *s1;
|
||||
BOOL retval;
|
||||
|
||||
if (strcmp(utype, "ugff") == 0) {
|
||||
if (eq(utype, "ugff")) {
|
||||
xin = create_xlate_model("", utype, xspice, tmodel);
|
||||
} else {
|
||||
xin = create_xlate_model("", utype, "", tmodel);
|
||||
|
|
@ -1509,7 +1509,7 @@ static Xlatorp gen_dff_instance(struct dff_instance *ip)
|
|||
|
||||
xxp = create_xlator();
|
||||
add_input_pin(preb);
|
||||
if (strcmp(preb, "$d_hi") == 0) {
|
||||
if (eq(preb, "$d_hi")) {
|
||||
preb = "NULL";
|
||||
} else {
|
||||
need_preb_inv = TRUE;
|
||||
|
|
@ -1517,7 +1517,7 @@ static Xlatorp gen_dff_instance(struct dff_instance *ip)
|
|||
}
|
||||
|
||||
add_input_pin(clrb);
|
||||
if (strcmp(clrb, "$d_hi") == 0) {
|
||||
if (eq(clrb, "$d_hi")) {
|
||||
clrb = "NULL";
|
||||
} else {
|
||||
need_clrb_inv = TRUE;
|
||||
|
|
@ -1532,12 +1532,12 @@ static Xlatorp gen_dff_instance(struct dff_instance *ip)
|
|||
for (i = 0; i < num_gates; i++) {
|
||||
qout = qarr[i];
|
||||
add_output_pin(qout);
|
||||
if (strcmp(qout, "$d_nc") == 0) {
|
||||
if (eq(qout, "$d_nc")) {
|
||||
qout = "NULL";
|
||||
}
|
||||
qbout = qbarr[i];
|
||||
add_output_pin(qbout);
|
||||
if (strcmp(qbout, "$d_nc") == 0) {
|
||||
if (eq(qbout, "$d_nc")) {
|
||||
qbout = "NULL";
|
||||
}
|
||||
add_input_pin(darr[i]);
|
||||
|
|
@ -1586,7 +1586,7 @@ static Xlatorp gen_jkff_instance(struct jkff_instance *ip)
|
|||
|
||||
xxp = create_xlator();
|
||||
add_input_pin(preb);
|
||||
if (strcmp(preb, "$d_hi") == 0) {
|
||||
if (eq(preb, "$d_hi")) {
|
||||
preb = "NULL";
|
||||
} else {
|
||||
need_preb_inv = TRUE;
|
||||
|
|
@ -1594,7 +1594,7 @@ static Xlatorp gen_jkff_instance(struct jkff_instance *ip)
|
|||
}
|
||||
|
||||
add_input_pin(clrb);
|
||||
if (strcmp(clrb, "$d_hi") == 0) {
|
||||
if (eq(clrb, "$d_hi")) {
|
||||
clrb = "NULL";
|
||||
} else {
|
||||
need_clrb_inv = TRUE;
|
||||
|
|
@ -1612,12 +1612,12 @@ static Xlatorp gen_jkff_instance(struct jkff_instance *ip)
|
|||
for (i = 0; i < num_gates; i++) {
|
||||
qout = qarr[i];
|
||||
add_output_pin(qout);
|
||||
if (strcmp(qout, "$d_nc") == 0) {
|
||||
if (eq(qout, "$d_nc")) {
|
||||
qout = "NULL";
|
||||
}
|
||||
qbout = qbarr[i];
|
||||
add_output_pin(qbout);
|
||||
if (strcmp(qbout, "$d_nc") == 0) {
|
||||
if (eq(qbout, "$d_nc")) {
|
||||
qbout = "NULL";
|
||||
}
|
||||
add_input_pin(jarr[i]);
|
||||
|
|
@ -1665,7 +1665,7 @@ static Xlatorp gen_dltch_instance(struct dltch_instance *ip)
|
|||
|
||||
xxp = create_xlator();
|
||||
add_input_pin(preb);
|
||||
if (strcmp(preb, "$d_hi") == 0) {
|
||||
if (eq(preb, "$d_hi")) {
|
||||
preb = "NULL";
|
||||
} else {
|
||||
need_preb_inv = TRUE;
|
||||
|
|
@ -1673,7 +1673,7 @@ static Xlatorp gen_dltch_instance(struct dltch_instance *ip)
|
|||
}
|
||||
|
||||
add_input_pin(clrb);
|
||||
if (strcmp(clrb, "$d_hi") == 0) {
|
||||
if (eq(clrb, "$d_hi")) {
|
||||
clrb = "NULL";
|
||||
} else {
|
||||
need_clrb_inv = TRUE;
|
||||
|
|
@ -1687,7 +1687,7 @@ static Xlatorp gen_dltch_instance(struct dltch_instance *ip)
|
|||
for (i = 0; i < num_gates; i++) {
|
||||
qout = qarr[i];
|
||||
add_output_pin(qout);
|
||||
if (strcmp(qout, "$d_nc") == 0) {
|
||||
if (eq(qout, "$d_nc")) {
|
||||
/* NULL not allowed??? */
|
||||
s1 = tprintf("a%s_%d %s %s %s %s nco%s_%d",
|
||||
iname, i, darr[i], gate, preb, clrb, iname, i);
|
||||
|
|
@ -1698,7 +1698,7 @@ static Xlatorp gen_dltch_instance(struct dltch_instance *ip)
|
|||
add_input_pin(darr[i]);
|
||||
qbout = qbarr[i];
|
||||
add_output_pin(qbout);
|
||||
if (strcmp(qbout, "$d_nc") == 0) {
|
||||
if (eq(qbout, "$d_nc")) {
|
||||
/* NULL not allowed??? */
|
||||
s2 = tprintf(" ncn%s_%d %s", iname, i, modelnm);
|
||||
} else {
|
||||
|
|
@ -1743,19 +1743,19 @@ static Xlatorp gen_compound_instance(struct compound_instance *compi)
|
|||
if (!compi) { return NULL; }
|
||||
itype = compi->hdrp->instance_type;
|
||||
inst = compi->hdrp->instance_name;
|
||||
if (strcmp(itype, "aoi") == 0) {
|
||||
if (eq(itype, "aoi")) {
|
||||
outgate = "d_nor";
|
||||
ingates = "d_and";
|
||||
logic_val = "$d_hi";
|
||||
} else if (strcmp(itype, "ao") == 0) {
|
||||
} else if (eq(itype, "ao")) {
|
||||
outgate = "d_or";
|
||||
ingates = "d_and";
|
||||
logic_val = "$d_hi";
|
||||
} else if (strcmp(itype, "oai") == 0) {
|
||||
} else if (eq(itype, "oai")) {
|
||||
outgate = "d_nand";
|
||||
ingates = "d_or";
|
||||
logic_val = "$d_lo";
|
||||
} else if (strcmp(itype, "oa") == 0) {
|
||||
} else if (eq(itype, "oa")) {
|
||||
outgate = "d_and";
|
||||
ingates = "d_or";
|
||||
logic_val = "$d_lo";
|
||||
|
|
@ -1787,7 +1787,7 @@ static Xlatorp gen_compound_instance(struct compound_instance *compi)
|
|||
/* $d_hi AND gate inputs are ignored */
|
||||
/* $d_lo OR gate inputs are ignored */
|
||||
for (j = 0; j < width; j++) {
|
||||
if (strcmp(inarr[k], logic_val) != 0) {
|
||||
if (!eq(inarr[k], logic_val)) {
|
||||
num_ins_kept++;
|
||||
sprintf(tmp + strlen(tmp), " %s", inarr[k]);
|
||||
add_input_pin(inarr[k]);
|
||||
|
|
@ -1903,7 +1903,7 @@ static Xlatorp gen_gate_instance(struct gate_instance *gip)
|
|||
xspice = find_xspice_for_delay(itype);
|
||||
} else if (tristate_gate) {
|
||||
xspice = find_xspice_for_delay(itype);
|
||||
if (strcmp(itype, "buf3") != 0) {
|
||||
if (!eq(itype, "buf3")) {
|
||||
add_tristate = TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -2026,9 +2026,9 @@ static Xlatorp gen_gate_instance(struct gate_instance *gip)
|
|||
xspice = find_xspice_for_delay(itype);
|
||||
} else if (tristate_array) {
|
||||
xspice = find_xspice_for_delay(itype);
|
||||
if (strcmp("inv3a", itype) == 0) {
|
||||
if (eq("inv3a", itype)) {
|
||||
add_tristate = TRUE;
|
||||
} else if (strcmp(itype, "buf3a") != 0) {
|
||||
} else if (!eq(itype, "buf3a")) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -2263,7 +2263,7 @@ static void estimate_typ(struct timing_data *tdp)
|
|||
valmax = strtof(tmpmax, &units2);
|
||||
average = (valmin + valmax) / 2.0;
|
||||
tdp->ave = tprintf("%.2f%s", average, units2);
|
||||
if (strcmp(units1, units2) != 0) {
|
||||
if (!eq(units1, units2)) {
|
||||
printf("WARNING units do not match\n");
|
||||
}
|
||||
tdp->estimate = EST_AVE;
|
||||
|
|
@ -2414,9 +2414,9 @@ static char *get_delays_ugff(char *rem, char *d_name)
|
|||
char *s1, *s2;
|
||||
struct timing_data *tdp1, *tdp2, *tdp3, *tdp4, *tdp5, *tdp6;
|
||||
|
||||
if (strcmp(d_name, "d_dlatch") == 0) {
|
||||
if (eq(d_name, "d_dlatch")) {
|
||||
dname = "data_delay";
|
||||
} else if (strcmp(d_name, "d_srlatch") == 0) {
|
||||
} else if (eq(d_name, "d_srlatch")) {
|
||||
dname = "sr_delay";
|
||||
} else {
|
||||
return NULL;
|
||||
|
|
@ -2514,22 +2514,22 @@ static BOOL u_process_model(char *nline, char *original,
|
|||
/* delay info */
|
||||
remainder = strchr(original, '(');
|
||||
if (remainder) {
|
||||
if (strcmp(utype, "ugate") == 0) {
|
||||
if (eq(utype, "ugate")) {
|
||||
delays = get_delays_ugate(remainder, xspice);
|
||||
add_delays_to_model_xlator((delays ? delays : ""),
|
||||
utype, "", tmodel);
|
||||
if (delays) { tfree(delays); }
|
||||
} else if (strcmp(utype, "utgate") == 0) {
|
||||
} else if (eq(utype, "utgate")) {
|
||||
delays = get_delays_utgate(remainder, xspice);
|
||||
add_delays_to_model_xlator((delays ? delays : ""),
|
||||
utype, "", tmodel);
|
||||
if (delays) { tfree(delays); }
|
||||
} else if (strcmp(utype, "ueff") == 0) {
|
||||
} else if (eq(utype, "ueff")) {
|
||||
delays = get_delays_ueff(remainder, xspice);
|
||||
add_delays_to_model_xlator((delays ? delays : ""),
|
||||
utype, "", tmodel);
|
||||
if (delays) { tfree(delays); }
|
||||
} else if (strcmp(utype, "ugff") == 0) {
|
||||
} else if (eq(utype, "ugff")) {
|
||||
delays = get_delays_ugff(remainder, "d_dlatch");
|
||||
add_delays_to_model_xlator((delays ? delays : ""),
|
||||
utype, "d_dlatch", tmodel);
|
||||
|
|
@ -2613,13 +2613,11 @@ static struct dff_instance *add_dff_inout_timing_model(
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
if (strcmp(dffip->prebar, "$d_lo") == 0 ||
|
||||
strcmp(dffip->prebar, "$d_nc") == 0) {
|
||||
if (eq(dffip->prebar, "$d_lo") || eq(dffip->prebar, "$d_nc")) {
|
||||
tfree(dffip);
|
||||
return NULL;
|
||||
}
|
||||
if (strcmp(dffip->clrbar, "$d_lo") == 0 ||
|
||||
strcmp(dffip->clrbar, "$d_nc") == 0) {
|
||||
if (eq(dffip->clrbar, "$d_lo") || eq(dffip->clrbar, "$d_nc")) {
|
||||
tfree(dffip);
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -2690,13 +2688,11 @@ static struct dltch_instance *add_dltch_inout_timing_model(
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
if (strcmp(dlp->prebar, "$d_lo") == 0 ||
|
||||
strcmp(dlp->prebar, "$d_nc") == 0) {
|
||||
if (eq(dlp->prebar, "$d_lo") || eq(dlp->prebar, "$d_nc")) {
|
||||
tfree(dlp);
|
||||
return NULL;
|
||||
}
|
||||
if (strcmp(dlp->clrbar, "$d_lo") == 0 ||
|
||||
strcmp(dlp->clrbar, "$d_nc") == 0) {
|
||||
if (eq(dlp->clrbar, "$d_lo") || eq(dlp->clrbar, "$d_nc")) {
|
||||
tfree(dlp);
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -2777,13 +2773,11 @@ static struct jkff_instance *add_jkff_inout_timing_model(
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
if (strcmp(jkffip->prebar, "$d_lo") == 0 ||
|
||||
strcmp(jkffip->prebar, "$d_nc") == 0) {
|
||||
if (eq(jkffip->prebar, "$d_lo") || eq(jkffip->prebar, "$d_nc")) {
|
||||
tfree(jkffip);
|
||||
return NULL;
|
||||
}
|
||||
if (strcmp(jkffip->clrbar, "$d_lo") == 0 ||
|
||||
strcmp(jkffip->clrbar, "$d_nc") == 0) {
|
||||
if (eq(jkffip->clrbar, "$d_lo") || eq(jkffip->clrbar, "$d_nc")) {
|
||||
tfree(jkffip);
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -3063,21 +3057,21 @@ static Xlatorp translate_ff_latch(struct instance_hdr *hdr, char *start)
|
|||
Xlatorp xp;
|
||||
|
||||
itype = hdr->instance_type;
|
||||
if (strcmp(itype, "dff") == 0) {
|
||||
if (eq(itype, "dff")) {
|
||||
dffp = add_dff_inout_timing_model(hdr, start);
|
||||
if (dffp) {
|
||||
xp = gen_dff_instance(dffp);
|
||||
delete_dff_instance(dffp);
|
||||
return xp;
|
||||
}
|
||||
} else if (strcmp(itype, "jkff") == 0) {
|
||||
} else if (eq(itype, "jkff")) {
|
||||
jkffp = add_jkff_inout_timing_model(hdr, start);
|
||||
if (jkffp) {
|
||||
xp = gen_jkff_instance(jkffp);
|
||||
delete_jkff_instance(jkffp);
|
||||
return xp;
|
||||
}
|
||||
} else if (strcmp(itype, "dltch") == 0) {
|
||||
} else if (eq(itype, "dltch")) {
|
||||
dltchp = add_dltch_inout_timing_model(hdr, start);
|
||||
if (dltchp) {
|
||||
xp = gen_dltch_instance(dltchp);
|
||||
|
|
@ -3172,10 +3166,9 @@ BOOL u_process_instance(char *nline)
|
|||
xp = translate_gate(hdr, p1);
|
||||
} else if (is_compound_gate(itype)) {
|
||||
xp = translate_gate(hdr, p1);
|
||||
} else if (strcmp(itype, "dff") == 0 || strcmp(itype, "jkff") == 0 ||
|
||||
strcmp(itype, "dltch") == 0) {
|
||||
} else if (eq(itype, "dff") || eq(itype, "jkff") || eq(itype, "dltch")) {
|
||||
xp = translate_ff_latch(hdr, p1);
|
||||
} else if (strcmp(itype, "pullup") == 0 || strcmp(itype, "pulldn") == 0) {
|
||||
} else if (eq(itype, "pullup") || eq(itype, "pulldn")) {
|
||||
xp = translate_pull(hdr, p1);
|
||||
} else {
|
||||
delete_instance_hdr(hdr);
|
||||
|
|
|
|||
Loading…
Reference in New Issue