diff options
author | David Shah <davey1576@gmail.com> | 2018-07-17 16:45:39 +0200 |
---|---|---|
committer | David Shah <davey1576@gmail.com> | 2018-07-17 16:45:39 +0200 |
commit | 2eb783d626a9a17baf70d2f7750be3c11623d5bc (patch) | |
tree | 2e653dc4ab26d7d2dd95add96e382c3ea59e1477 /ecp5/bitstream.cc | |
parent | f62f04e376f83d650ab1067cdf0f058151828b8a (diff) | |
download | nextpnr-2eb783d626a9a17baf70d2f7750be3c11623d5bc.tar.gz nextpnr-2eb783d626a9a17baf70d2f7750be3c11623d5bc.tar.bz2 nextpnr-2eb783d626a9a17baf70d2f7750be3c11623d5bc.zip |
ecp5: Fixing packer bugs
Signed-off-by: David Shah <davey1576@gmail.com>
Diffstat (limited to 'ecp5/bitstream.cc')
-rw-r--r-- | ecp5/bitstream.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/ecp5/bitstream.cc b/ecp5/bitstream.cc index e70d6bb2..19ddb9f9 100644 --- a/ecp5/bitstream.cc +++ b/ecp5/bitstream.cc @@ -214,6 +214,18 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex cc.tiles[tname].add_enum(slice + ".REG1.REGSET", str_or_default(ci->params, ctx->id("REG1_REGSET"), "RESET")); cc.tiles[tname].add_enum(slice + ".CEMUX", str_or_default(ci->params, ctx->id("CEMUX"), "1")); + IdString lsrnet; + if (ci->ports.find(ctx->id("LSR")) != ci->ports.end() && ci->ports.at(ctx->id("LSR")).net != nullptr) + lsrnet = ci->ports.at(ctx->id("LSR")).net->name; + if (ctx->getBoundWireNet(ctx->getWireByName( + ctx->id(fmt_str("X" << bel.location.x << "/Y" << bel.location.y << "/LSR0")))) == lsrnet) { + cc.tiles[tname].add_enum("LSR0.SRMODE", str_or_default(ci->params, ctx->id("SRMODE"), "LSR_OVER_CE")); + cc.tiles[tname].add_enum("LSR0.LSRMUX", str_or_default(ci->params, ctx->id("LSRMUX"), "LSR")); + } else if (ctx->getBoundWireNet(ctx->getWireByName(ctx->id( + fmt_str("X" << bel.location.x << "/Y" << bel.location.y << "/LSR1")))) == lsrnet) { + cc.tiles[tname].add_enum("LSR1.SRMODE", str_or_default(ci->params, ctx->id("SRMODE"), "LSR_OVER_CE")); + cc.tiles[tname].add_enum("LSR1.LSRMUX", str_or_default(ci->params, ctx->id("LSRMUX"), "LSR")); + } // TODO: CLKMUX, CEMUX, carry } else if (ci->type == ctx->id("TRELLIS_IO")) { std::string pio = ctx->locInfo(bel)->bel_data[bel.index].name.get(); |