ice40: Support for undriven / unconnected output ports
If a port specified as output (and thus had a $nextpnr_obuf inserted) is undriven (const `z` or const `x`), we make sure to not enable the output driver. Also enable pull-ups if it was requested by the user. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
parent
0cf5006e3b
commit
f50d4c1ed1
@ -411,7 +411,12 @@ void nxio_to_sb(Context *ctx, CellInfo *nxio, CellInfo *sbio, pool<IdString> &to
|
|||||||
nxio->movePortTo(id_O, sbio, id_D_IN_0);
|
nxio->movePortTo(id_O, sbio, id_D_IN_0);
|
||||||
pull_up_attr = true;
|
pull_up_attr = true;
|
||||||
} else if (nxio->type == ctx->id("$nextpnr_obuf")) {
|
} else if (nxio->type == ctx->id("$nextpnr_obuf")) {
|
||||||
sbio->params[id_PIN_TYPE] = 25;
|
NetInfo *i = nxio->getPort(id_I);
|
||||||
|
if (i == nullptr || i->driver.cell == nullptr) {
|
||||||
|
sbio->params[id_PIN_TYPE] = 1;
|
||||||
|
pull_up_attr = true;
|
||||||
|
} else
|
||||||
|
sbio->params[id_PIN_TYPE] = 25;
|
||||||
nxio->movePortTo(id_I, sbio, id_D_OUT_0);
|
nxio->movePortTo(id_I, sbio, id_D_OUT_0);
|
||||||
} else if (nxio->type == ctx->id("$nextpnr_iobuf")) {
|
} else if (nxio->type == ctx->id("$nextpnr_iobuf")) {
|
||||||
// N.B. tristate will be dealt with below
|
// N.B. tristate will be dealt with below
|
||||||
|
Loading…
Reference in New Issue
Block a user