For wire and/or nets we need all the net resolution to be and/or.

If a wired and/or net has more than four connections all the other
resolution branches must also be wired and/or. All other nets can
just be tri since tri0/tri1 only needs the final resolution to be
an active pull up/down.
This commit is contained in:
Cary R 2011-11-17 21:28:29 -08:00 committed by Stephen Williams
parent 36d298a2b6
commit f880b78b2b
1 changed files with 9 additions and 3 deletions

View File

@ -651,7 +651,7 @@ static void draw_net_input_x(ivl_nexus_t nex,
int level;
unsigned ndrivers = 0;
const char*resolv_type;
const char*resolv_type, *branch_type;
char*nex_private = 0;
@ -663,25 +663,31 @@ static void draw_net_input_x(ivl_nexus_t nex,
case IVL_SIT_TRI:
case IVL_SIT_UWIRE:
resolv_type = "tri";
branch_type = "tri";
break;
case IVL_SIT_TRI0:
resolv_type = "tri0";
branch_type = "tri";
nex_flags |= VVP_NEXUS_DATA_STR;
break;
case IVL_SIT_TRI1:
resolv_type = "tri1";
branch_type = "tri";
nex_flags |= VVP_NEXUS_DATA_STR;
break;
case IVL_SIT_TRIAND:
resolv_type = "triand";
branch_type = "triand";
break;
case IVL_SIT_TRIOR:
resolv_type = "trior";
branch_type = "trior";
break;
default:
fprintf(stderr, "vvp.tgt: Unsupported signal type: %u\n", res);
assert(0);
resolv_type = "tri";
branch_type = "tri";
break;
}
@ -839,8 +845,8 @@ static void draw_net_input_x(ivl_nexus_t nex,
}
if (ndrivers > 4)
fprintf(vvp_out, "RS_%p/%d/%d .resolv tri",
nex, level, inst);
fprintf(vvp_out, "RS_%p/%d/%d .resolv %s",
nex, level, inst, branch_type);
else
fprintf(vvp_out, "RS_%p .resolv %s",
nex, resolv_type);