V0.9: 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:
parent
8e1c507984
commit
68c6e578ae
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2010 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2001-2011 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
@ -533,7 +533,7 @@ char* draw_net_input_x(ivl_nexus_t nex,
|
||||||
int level;
|
int level;
|
||||||
unsigned ndrivers = 0;
|
unsigned ndrivers = 0;
|
||||||
|
|
||||||
const char*resolv_type;
|
const char*resolv_type, *branch_type;
|
||||||
|
|
||||||
char*nex_private = 0;
|
char*nex_private = 0;
|
||||||
|
|
||||||
|
|
@ -544,25 +544,31 @@ char* draw_net_input_x(ivl_nexus_t nex,
|
||||||
switch (res) {
|
switch (res) {
|
||||||
case IVL_SIT_TRI:
|
case IVL_SIT_TRI:
|
||||||
resolv_type = "tri";
|
resolv_type = "tri";
|
||||||
|
branch_type = "tri";
|
||||||
break;
|
break;
|
||||||
case IVL_SIT_TRI0:
|
case IVL_SIT_TRI0:
|
||||||
resolv_type = "tri0";
|
resolv_type = "tri0";
|
||||||
|
branch_type = "tri";
|
||||||
nex_flags |= VVP_NEXUS_DATA_STR;
|
nex_flags |= VVP_NEXUS_DATA_STR;
|
||||||
break;
|
break;
|
||||||
case IVL_SIT_TRI1:
|
case IVL_SIT_TRI1:
|
||||||
resolv_type = "tri1";
|
resolv_type = "tri1";
|
||||||
|
branch_type = "tri";
|
||||||
nex_flags |= VVP_NEXUS_DATA_STR;
|
nex_flags |= VVP_NEXUS_DATA_STR;
|
||||||
break;
|
break;
|
||||||
case IVL_SIT_TRIAND:
|
case IVL_SIT_TRIAND:
|
||||||
resolv_type = "triand";
|
resolv_type = "triand";
|
||||||
|
branch_type = "triand";
|
||||||
break;
|
break;
|
||||||
case IVL_SIT_TRIOR:
|
case IVL_SIT_TRIOR:
|
||||||
resolv_type = "trior";
|
resolv_type = "trior";
|
||||||
|
branch_type = "trior";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "vvp.tgt: Unsupported signal type: %u\n", res);
|
fprintf(stderr, "vvp.tgt: Unsupported signal type: %u\n", res);
|
||||||
assert(0);
|
assert(0);
|
||||||
resolv_type = "tri";
|
resolv_type = "tri";
|
||||||
|
branch_type = "tri";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -688,8 +694,8 @@ char* draw_net_input_x(ivl_nexus_t nex,
|
||||||
unsigned int inst;
|
unsigned int inst;
|
||||||
for (inst = 0; inst < ndrivers; inst += 4) {
|
for (inst = 0; inst < ndrivers; inst += 4) {
|
||||||
if (ndrivers > 4)
|
if (ndrivers > 4)
|
||||||
fprintf(vvp_out, "RS_%p/%d/%d .resolv tri",
|
fprintf(vvp_out, "RS_%p/%d/%d .resolv %s",
|
||||||
nex, level, inst);
|
nex, level, inst, branch_type);
|
||||||
else
|
else
|
||||||
fprintf(vvp_out, "RS_%p .resolv %s",
|
fprintf(vvp_out, "RS_%p .resolv %s",
|
||||||
nex, resolv_type);
|
nex, resolv_type);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue