diff options
author | Keith Rothman <537074+litghost@users.noreply.github.com> | 2021-02-04 14:47:45 -0800 |
---|---|---|
committer | Keith Rothman <537074+litghost@users.noreply.github.com> | 2021-02-04 16:38:07 -0800 |
commit | c99fbde0eb0b1b9b725ba2fead13d3210ce961a7 (patch) | |
tree | 35a86b414b97eab928a84da677628dd8cb1832dc /nexus/fasm.cc | |
parent | 40d026e6fc5ab94c732682c62a6803bd3140953e (diff) | |
download | nextpnr-c99fbde0eb0b1b9b725ba2fead13d3210ce961a7.tar.gz nextpnr-c99fbde0eb0b1b9b725ba2fead13d3210ce961a7.tar.bz2 nextpnr-c99fbde0eb0b1b9b725ba2fead13d3210ce961a7.zip |
Mark IdString and IdStringList single argument constructors explicit.
Single argument constructors will silently convert to that type. This
is typically not the right thing to do. For example, the nexus and
ice40 arch_pybindings.h files were incorrectly parsing bel name strings,
etc.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
Diffstat (limited to 'nexus/fasm.cc')
-rw-r--r-- | nexus/fasm.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/nexus/fasm.cc b/nexus/fasm.cc index 9e43972b..0b8b6377 100644 --- a/nexus/fasm.cc +++ b/nexus/fasm.cc @@ -144,7 +144,7 @@ struct NexusFasmWriter { int r = loc / ctx->chip_info->width; int c = loc % ctx->chip_info->width; - return stringf("%sR%dC%d__%s", ctx->nameOf(tile.prefix), r, c, ctx->nameOf(tile.tiletype)); + return stringf("%sR%dC%d__%s", ctx->nameOf(IdString(tile.prefix)), r, c, ctx->nameOf(IdString(tile.tiletype))); } // Look up a tile by location index and tile type const PhysicalTileInfoPOD &tile_by_type_and_loc(int loc, IdString type) @@ -180,7 +180,7 @@ struct NexusFasmWriter void push_tile(int loc, IdString tile_type) { push(tile_name(loc, tile_by_type_and_loc(loc, tile_type))); } void push_tile(int loc) { push(tile_name(loc, tile_at_loc(loc))); } // Push a bel name onto the prefix stack - void push_belname(BelId bel) { push(ctx->nameOf(ctx->bel_data(bel).name)); } + void push_belname(BelId bel) { push(ctx->nameOf(IdString(ctx->bel_data(bel).name))); } // Push the tile group name corresponding to a bel onto the prefix stack void push_belgroup(BelId bel) { @@ -189,14 +189,14 @@ struct NexusFasmWriter auto &bel_data = ctx->bel_data(bel); r += bel_data.rel_y; c += bel_data.rel_x; - std::string s = stringf("R%dC%d_%s", r, c, ctx->nameOf(ctx->bel_data(bel).name)); + std::string s = stringf("R%dC%d_%s", r, c, ctx->nameOf(IdString(ctx->bel_data(bel).name))); push(s); } // Push a bel's group and name void push_bel(BelId bel) { push_belgroup(bel); - fasm_ctx.back() += stringf(".%s", ctx->nameOf(ctx->bel_data(bel).name)); + fasm_ctx.back() += stringf(".%s", ctx->nameOf(IdString(ctx->bel_data(bel).name))); } // Write out a pip in tile.dst.src format void write_pip(PipId pip) @@ -204,7 +204,7 @@ struct NexusFasmWriter auto &pd = ctx->pip_data(pip); if (pd.flags & PIP_FIXED_CONN) return; - std::string tile = tile_name(pip.tile, tile_by_type_and_loc(pip.tile, pd.tile_type)); + std::string tile = tile_name(pip.tile, tile_by_type_and_loc(pip.tile, IdString(pd.tile_type))); std::string source_wire = escape_name(ctx->pip_src_wire_name(pip).str(ctx)); std::string dest_wire = escape_name(ctx->pip_dst_wire_name(pip).str(ctx)); out << stringf("%s.PIP.%s.%s", tile.c_str(), dest_wire.c_str(), source_wire.c_str()) << std::endl; @@ -580,7 +580,7 @@ struct NexusFasmWriter write_enum(cell, "CLKMUX_FB"); write_cell_muxes(cell); pop(); - push(stringf("IP_%s", ctx->nameOf(ctx->bel_data(bel).name))); + push(stringf("IP_%s", ctx->nameOf(IdString(ctx->bel_data(bel).name)))); for (auto param : sorted_cref(cell->params)) { const std::string &name = param.first.str(ctx); if (is_mux_param(name) || name == "CLKMUX_FB" || name == "SEL_FBK") |