diff options
author | D. Shah <dave@ds0.me> | 2021-02-03 10:33:06 +0000 |
---|---|---|
committer | D. Shah <dave@ds0.me> | 2021-02-03 10:53:08 +0000 |
commit | f05d024666ba4ece6d37d49d7168f47c3ae2b51f (patch) | |
tree | 17386ed301aa3c5083f2314bbe7d9789d2a46a31 /ecp5 | |
parent | a09a62bc4a03ca1c673a254d1fa4d6cb576e83c8 (diff) | |
download | nextpnr-f05d024666ba4ece6d37d49d7168f47c3ae2b51f.tar.gz nextpnr-f05d024666ba4ece6d37d49d7168f47c3ae2b51f.tar.bz2 nextpnr-f05d024666ba4ece6d37d49d7168f47c3ae2b51f.zip |
ecp5: Use snake case for arch-specific functions
This makes the difference clearer between the general arch API that
everyone must implement; and helper functions specific to one arch.
Signed-off-by: D. Shah <dave@ds0.me>
Diffstat (limited to 'ecp5')
-rw-r--r-- | ecp5/arch.cc | 95 | ||||
-rw-r--r-- | ecp5/arch.h | 124 | ||||
-rw-r--r-- | ecp5/arch_place.cc | 8 | ||||
-rw-r--r-- | ecp5/bitstream.cc | 324 | ||||
-rw-r--r-- | ecp5/globals.cc | 32 | ||||
-rw-r--r-- | ecp5/lpf.cc | 2 | ||||
-rw-r--r-- | ecp5/main.cc | 22 | ||||
-rw-r--r-- | ecp5/pack.cc | 13 |
8 files changed, 310 insertions, 310 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc index d86bad5d..dfe47032 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -70,9 +70,9 @@ static const ChipInfoPOD *get_chip_info(ArchArgs::ArchArgsTypes chip) return ptr->get(); } -bool Arch::isAvailable(ArchArgs::ArchArgsTypes chip) { return get_chip_info(chip) != nullptr; } +bool Arch::is_available(ArchArgs::ArchArgsTypes chip) { return get_chip_info(chip) != nullptr; } -std::vector<std::string> Arch::getSupportedPackages(ArchArgs::ArchArgsTypes chip) +std::vector<std::string> Arch::get_supported_packages(ArchArgs::ArchArgsTypes chip) { const ChipInfoPOD *chip_info = get_chip_info(chip); std::vector<std::string> packages; @@ -164,7 +164,7 @@ std::string Arch::getChipName() const } } -std::string Arch::getFullChipName() const +std::string Arch::get_full_chip_name() const { std::string name = getChipName(); name += "-"; @@ -222,7 +222,7 @@ BelId Arch::getBelByName(IdStringList name) const loc.x = id_to_x.at(name[0]); loc.y = id_to_y.at(name[1]); ret.location = loc; - const LocationTypePOD *loci = locInfo(ret); + const LocationTypePOD *loci = loc_info(ret); for (int i = 0; i < int(loci->bel_data.size()); i++) { if (std::strcmp(loci->bel_data[i].name.get(), name[2].c_str(this)) == 0) { ret.index = i; @@ -255,7 +255,7 @@ WireId Arch::getBelPinWire(BelId bel, IdString pin) const NPNR_ASSERT(bel != BelId()); - for (auto &bw : locInfo(bel)->bel_data[bel.index].bel_wires) + for (auto &bw : loc_info(bel)->bel_data[bel.index].bel_wires) if (bw.port == pin.index) { ret.location = bel.location + bw.rel_wire_loc; ret.index = bw.wire_index; @@ -269,7 +269,7 @@ PortType Arch::getBelPinType(BelId bel, IdString pin) const { NPNR_ASSERT(bel != BelId()); - for (auto &bw : locInfo(bel)->bel_data[bel.index].bel_wires) + for (auto &bw : loc_info(bel)->bel_data[bel.index].bel_wires) if (bw.port == pin.index) return PortType(bw.type); @@ -287,7 +287,7 @@ WireId Arch::getWireByName(IdStringList name) const loc.x = id_to_x.at(name[0]); loc.y = id_to_y.at(name[1]); ret.location = loc; - const LocationTypePOD *loci = locInfo(ret); + const LocationTypePOD *loci = loc_info(ret); for (int i = 0; i < int(loci->wire_data.size()); i++) { if (std::strcmp(loci->wire_data[i].name.get(), name[2].c_str(this)) == 0) { ret.index = i; @@ -313,7 +313,7 @@ PipId Arch::getPipByName(IdStringList name) const loc.x = id_to_x.at(name[0]); loc.y = id_to_y.at(name[1]); ret.location = loc; - const LocationTypePOD *loci = locInfo(ret); + const LocationTypePOD *loci = loc_info(ret); for (int i = 0; i < int(loci->pip_data.size()); i++) { PipId curr; curr.location = loc; @@ -330,11 +330,11 @@ IdStringList Arch::getPipName(PipId pip) const NPNR_ASSERT(pip != PipId()); // TODO: can we improve how pip names are stored/built? - auto &pip_data = locInfo(pip)->pip_data[pip.index]; + auto &pip_data = loc_info(pip)->pip_data[pip.index]; WireId src = getPipSrcWire(pip), dst = getPipDstWire(pip); std::string pip_name = stringf("%d_%d_%s->%d_%d_%s", pip_data.rel_src_loc.x, pip_data.rel_src_loc.y, - getWireBasename(src).c_str(this), pip_data.rel_dst_loc.x, pip_data.rel_dst_loc.y, - getWireBasename(dst).c_str(this)); + get_wire_basename(src).c_str(this), pip_data.rel_dst_loc.x, pip_data.rel_dst_loc.y, + get_wire_basename(dst).c_str(this)); std::array<IdString, 3> ids{x_ids.at(pip.location.x), y_ids.at(pip.location.y), id(pip_name)}; return IdStringList(ids); @@ -342,7 +342,7 @@ IdStringList Arch::getPipName(PipId pip) const // ----------------------------------------------------------------------- -BelId Arch::getPackagePinBel(const std::string &pin) const +BelId Arch::get_package_pin_bel(const std::string &pin) const { for (auto &ppin : package_info->pin_data) { if (ppin.name.get() == pin) { @@ -355,7 +355,7 @@ BelId Arch::getPackagePinBel(const std::string &pin) const return BelId(); } -std::string Arch::getBelPackagePin(BelId bel) const +std::string Arch::get_bel_package_pin(BelId bel) const { for (auto &ppin : package_info->pin_data) { if (Location(ppin.abs_loc) == bel.location && ppin.bel_index == bel.index) { @@ -365,7 +365,7 @@ std::string Arch::getBelPackagePin(BelId bel) const return ""; } -int Arch::getPioBelBank(BelId bel) const +int Arch::get_pio_bel_bank(BelId bel) const { for (auto &pio : chip_info->pio_info) { if (Location(pio.abs_loc) == bel.location && pio.bel_index == bel.index) { @@ -375,7 +375,7 @@ int Arch::getPioBelBank(BelId bel) const NPNR_ASSERT_FALSE("failed to find PIO"); } -std::string Arch::getPioFunctionName(BelId bel) const +std::string Arch::get_pio_function_name(BelId bel) const { for (auto &pio : chip_info->pio_info) { if (Location(pio.abs_loc) == bel.location && pio.bel_index == bel.index) { @@ -389,7 +389,7 @@ std::string Arch::getPioFunctionName(BelId bel) const NPNR_ASSERT_FALSE("failed to find PIO"); } -BelId Arch::getPioByFunctionName(const std::string &name) const +BelId Arch::get_pio_by_function_name(const std::string &name) const { for (auto &pio : chip_info->pio_info) { const char *func = pio.function_name.get(); @@ -408,7 +408,7 @@ std::vector<IdString> Arch::getBelPins(BelId bel) const std::vector<IdString> ret; NPNR_ASSERT(bel != BelId()); - for (auto &bw : locInfo(bel)->bel_data[bel.index].bel_wires) { + for (auto &bw : loc_info(bel)->bel_data[bel.index].bel_wires) { IdString id; id.index = bw.port; ret.push_back(id); @@ -438,7 +438,7 @@ BelId Arch::getBelByLocation(Loc loc) const delay_t Arch::estimateDelay(WireId src, WireId dst) const { - int num_uh = locInfo(dst)->wire_data[dst.index].pips_uphill.size(); + int num_uh = loc_info(dst)->wire_data[dst.index].pips_uphill.size(); if (num_uh < 6) { for (auto uh : getPipsUphill(dst)) { if (getPipSrcWire(uh) == src) @@ -447,7 +447,7 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const } auto est_location = [&](WireId w) -> std::pair<int, int> { - const auto &wire = locInfo(w)->wire_data[w.index]; + const auto &wire = loc_info(w)->wire_data[w.index]; if (w == gsrclk_wire) { auto phys_wire = getPipSrcWire(*(getPipsUphill(w).begin())); return std::make_pair(int(phys_wire.location.x), int(phys_wire.location.y)); @@ -496,7 +496,7 @@ ArcBounds Arch::getRouteBoundingBox(WireId src, WireId dst) const }; auto est_location = [&](WireId w) -> std::pair<int, int> { - const auto &wire = locInfo(w)->wire_data[w.index]; + const auto &wire = loc_info(w)->wire_data[w.index]; if (w == gsrclk_wire) { auto phys_wire = getPipSrcWire(*(getPipsUphill(w).begin())); return std::make_pair(int(phys_wire.location.x), int(phys_wire.location.y)); @@ -609,7 +609,7 @@ bool Arch::route() { std::string router = str_or_default(settings, id("router"), defaultRouter); - setupWireLocations(); + setup_wire_locations(); route_ecp5_globals(getCtx()); assignArchInfo(); assign_budget(getCtx(), true); @@ -659,7 +659,7 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const int x = decal.location.x; int y = decal.location.y; GraphicElement::style_t style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_INACTIVE; - GfxTileWireId tilewire = GfxTileWireId(locInfo(wire)->wire_data[wire.index].tile_wire); + GfxTileWireId tilewire = GfxTileWireId(loc_info(wire)->wire_data[wire.index].tile_wire); gfxTileWire(ret, x, y, chip_info->width, chip_info->height, wire_type, tilewire, style); } else if (decal.type == DecalId::TYPE_PIP) { PipId pip; @@ -669,8 +669,8 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const WireId dst_wire = getPipDstWire(pip); int x = decal.location.x; int y = decal.location.y; - GfxTileWireId src_id = GfxTileWireId(locInfo(src_wire)->wire_data[src_wire.index].tile_wire); - GfxTileWireId dst_id = GfxTileWireId(locInfo(dst_wire)->wire_data[dst_wire.index].tile_wire); + GfxTileWireId src_id = GfxTileWireId(loc_info(src_wire)->wire_data[src_wire.index].tile_wire); + GfxTileWireId dst_id = GfxTileWireId(loc_info(dst_wire)->wire_data[dst_wire.index].tile_wire); GraphicElement::style_t style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_HIDDEN; gfxTilePip(ret, x, y, chip_info->width, chip_info->height, src_wire, getWireType(src_wire), src_id, dst_wire, getWireType(dst_wire), dst_id, style); @@ -681,7 +681,7 @@ std::vector<GraphicElement> Arch::getDecalGraphics(DecalId decal) const auto bel_type = getBelType(bel); int x = decal.location.x; int y = decal.location.y; - int z = locInfo(bel)->bel_data[bel.index].z; + int z = loc_info(bel)->bel_data[bel.index].z; GraphicElement::style_t style = decal.active ? GraphicElement::STYLE_ACTIVE : GraphicElement::STYLE_INACTIVE; gfxTileBel(ret, x, y, z, chip_info->width, chip_info->height, bel_type, style); } @@ -695,7 +695,7 @@ DecalXY Arch::getBelDecal(BelId bel) const decalxy.decal.type = DecalId::TYPE_BEL; decalxy.decal.location = bel.location; decalxy.decal.z = bel.index; - decalxy.decal.active = (bel_to_cell.at(getBelFlatIndex(bel)) != nullptr); + decalxy.decal.active = (bel_to_cell.at(get_bel_flat_index(bel)) != nullptr); return decalxy; } @@ -731,7 +731,7 @@ DecalXY Arch::getGroupDecal(GroupId group) const // ----------------------------------------------------------------------- -bool Arch::getDelayFromTimingDatabase(IdString tctype, IdString from, IdString to, DelayInfo &delay) const +bool Arch::get_delay_from_tmg_db(IdString tctype, IdString from, IdString to, DelayInfo &delay) const { auto fnd_dk = celldelay_cache.find({tctype, from, to}); if (fnd_dk != celldelay_cache.end()) { @@ -755,8 +755,8 @@ bool Arch::getDelayFromTimingDatabase(IdString tctype, IdString from, IdString t NPNR_ASSERT_FALSE("failed to find timing cell in db"); } -void Arch::getSetupHoldFromTimingDatabase(IdString tctype, IdString clock, IdString port, DelayInfo &setup, - DelayInfo &hold) const +void Arch::get_setuphold_from_tmg_db(IdString tctype, IdString clock, IdString port, DelayInfo &setup, + DelayInfo &hold) const { for (auto &tc : speed_grade->cell_timings) { if (tc.cell_type == tctype.index) { @@ -782,7 +782,7 @@ bool Arch::getCellDelay(const CellInfo *cell, IdString fromPort, IdString toPort if (fromPort == id_A0 || fromPort == id_B0 || fromPort == id_C0 || fromPort == id_D0 || fromPort == id_A1 || fromPort == id_B1 || fromPort == id_C1 || fromPort == id_D1 || fromPort == id_M0 || fromPort == id_M1 || fromPort == id_FXA || fromPort == id_FXB || fromPort == id_FCI) { - return getDelayFromTimingDatabase(has_carry ? id_SCCU2C : id_SLOGICB, fromPort, toPort, delay); + return get_delay_from_tmg_db(has_carry ? id_SCCU2C : id_SLOGICB, fromPort, toPort, delay); } if ((fromPort == id_A0 && toPort == id_WADO3) || (fromPort == id_A1 && toPort == id_WDO1) || @@ -809,8 +809,7 @@ bool Arch::getCellDelay(const CellInfo *cell, IdString fromPort, IdString toPort std::string fn = fromPort.str(this), tn = toPort.str(this); if (fn.size() > 1 && (fn.front() == 'A' || fn.front() == 'B') && std::isdigit(fn.at(1))) { if (tn.size() > 1 && tn.front() == 'P' && std::isdigit(tn.at(1))) - return getDelayFromTimingDatabase(cell->multInfo.timing_id, id(std::string("") + fn.front()), id_P, - delay); + return get_delay_from_tmg_db(cell->multInfo.timing_id, id(std::string("") + fn.front()), id_P, delay); } return false; } else if (cell->type == id_IOLOGIC || cell->type == id_SIOLOGIC) { @@ -1007,17 +1006,17 @@ TimingClockingInfo Arch::getPortClockingInfo(const CellInfo *cell, IdString port port == id_WAD3 || port == id_WRE) { info.edge = RISING_EDGE; info.clock_port = id_WCK; - getSetupHoldFromTimingDatabase(id_SDPRAME, id_WCK, port, info.setup, info.hold); + get_setuphold_from_tmg_db(id_SDPRAME, id_WCK, port, info.setup, info.hold); } else if (port == id_DI0 || port == id_DI1 || port == id_CE || port == id_LSR || (sd0 == 0 && port == id_M0) || (sd1 == 0 && port == id_M1)) { info.edge = cell->sliceInfo.clkmux == id("INV") ? FALLING_EDGE : RISING_EDGE; info.clock_port = id_CLK; - getSetupHoldFromTimingDatabase(id_SLOGICB, id_CLK, port, info.setup, info.hold); + get_setuphold_from_tmg_db(id_SLOGICB, id_CLK, port, info.setup, info.hold); } else { info.edge = cell->sliceInfo.clkmux == id("INV") ? FALLING_EDGE : RISING_EDGE; info.clock_port = id_CLK; - bool is_path = getDelayFromTimingDatabase(id_SLOGICB, id_CLK, port, info.clockToQ); + bool is_path = get_delay_from_tmg_db(id_SLOGICB, id_CLK, port, info.clockToQ); NPNR_ASSERT(is_path); } } else if (cell->type == id_DP16KD) { @@ -1052,10 +1051,10 @@ TimingClockingInfo Arch::getPortClockingInfo(const CellInfo *cell, IdString port ? FALLING_EDGE : RISING_EDGE; if (cell->ports.at(port).type == PORT_OUT) { - bool is_path = getDelayFromTimingDatabase(cell->ramInfo.regmode_timing_id, half_clock, port, info.clockToQ); + bool is_path = get_delay_from_tmg_db(cell->ramInfo.regmode_timing_id, half_clock, port, info.clockToQ); NPNR_ASSERT(is_path); } else { - getSetupHoldFromTimingDatabase(cell->ramInfo.regmode_timing_id, half_clock, port, info.setup, info.hold); + get_setuphold_from_tmg_db(cell->ramInfo.regmode_timing_id, half_clock, port, info.setup, info.hold); } } else if (cell->type == id_DCUA) { std::string prefix = port.str(this).substr(0, 9); @@ -1123,16 +1122,16 @@ TimingClockingInfo Arch::getPortClockingInfo(const CellInfo *cell, IdString port info.clock_port = clock_id; info.edge = RISING_EDGE; if (cell->ports.at(port).type == PORT_OUT) { - bool is_path = getDelayFromTimingDatabase(cell->multInfo.timing_id, clock_id, port_group, info.clockToQ); + bool is_path = get_delay_from_tmg_db(cell->multInfo.timing_id, clock_id, port_group, info.clockToQ); NPNR_ASSERT(is_path); } else { - getSetupHoldFromTimingDatabase(cell->multInfo.timing_id, clock_id, port_group, info.setup, info.hold); + get_setuphold_from_tmg_db(cell->multInfo.timing_id, clock_id, port_group, info.setup, info.hold); } } return info; } -std::vector<std::pair<std::string, std::string>> Arch::getTilesAtLocation(int row, int col) +std::vector<std::pair<std::string, std::string>> Arch::get_tiles_at_loc(int row, int col) { std::vector<std::pair<std::string, std::string>> ret; auto &tileloc = chip_info->tile_info[row * chip_info->width + col]; @@ -1142,13 +1141,13 @@ std::vector<std::pair<std::string, std::string>> Arch::getTilesAtLocation(int ro return ret; } -GlobalInfoPOD Arch::globalInfoAtLoc(Location loc) +GlobalInfoPOD Arch::global_info_at_loc(Location loc) { int locidx = loc.y * chip_info->width + loc.x; return chip_info->location_glbinfo[locidx]; } -bool Arch::getPIODQSGroup(BelId pio, bool &dqsright, int &dqsrow) +bool Arch::get_pio_dqs_group(BelId pio, bool &dqsright, int &dqsrow) { for (auto &ppio : chip_info->pio_info) { if (Location(ppio.abs_loc) == pio.location && ppio.bel_index == pio.index) { @@ -1165,13 +1164,13 @@ bool Arch::getPIODQSGroup(BelId pio, bool &dqsright, int &dqsrow) NPNR_ASSERT_FALSE("failed to find PIO"); } -BelId Arch::getDQSBUF(bool dqsright, int dqsrow) +BelId Arch::get_dqsbuf(bool dqsright, int dqsrow) { BelId bel; bel.location.y = dqsrow; bel.location.x = (dqsright ? (chip_info->width - 1) : 0); - for (int i = 0; i < int(locInfo(bel)->bel_data.size()); i++) { - auto &bd = locInfo(bel)->bel_data[i]; + for (int i = 0; i < int(loc_info(bel)->bel_data.size()); i++) { + auto &bd = loc_info(bel)->bel_data[i]; if (bd.type == id_DQSBUFM.index) { bel.index = i; return bel; @@ -1180,9 +1179,9 @@ BelId Arch::getDQSBUF(bool dqsright, int dqsrow) NPNR_ASSERT_FALSE("failed to find DQSBUF"); } -WireId Arch::getBankECLK(int bank, int eclk) +WireId Arch::get_bank_eclk(int bank, int eclk) { - return getWireByLocAndBasename(Location(0, 0), "G_BANK" + std::to_string(bank) + "ECLK" + std::to_string(eclk)); + return get_wire_by_loc_basename(Location(0, 0), "G_BANK" + std::to_string(bank) + "ECLK" + std::to_string(eclk)); } #ifdef WITH_HEAP @@ -1271,7 +1270,7 @@ std::vector<GroupId> Arch::getGroupGroups(GroupId group) const std::vector<std::pair<IdString, std::string>> Arch::getWireAttrs(WireId wire) const { std::vector<std::pair<IdString, std::string>> ret; - auto &wi = locInfo(wire)->wire_data[wire.index]; + auto &wi = loc_info(wire)->wire_data[wire.index]; ret.push_back(std::make_pair(id("TILE_WIRE_ID"), stringf("%d", wi.tile_wire))); diff --git a/ecp5/arch.h b/ecp5/arch.h index 9997cd5c..600b20c0 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -456,11 +456,11 @@ struct Arch : BaseCtx ArchArgs args; Arch(ArchArgs args); - static bool isAvailable(ArchArgs::ArchArgsTypes chip); - static std::vector<std::string> getSupportedPackages(ArchArgs::ArchArgsTypes chip); + static bool is_available(ArchArgs::ArchArgsTypes chip); + static std::vector<std::string> get_supported_packages(ArchArgs::ArchArgsTypes chip); std::string getChipName() const; - std::string getFullChipName() const; + std::string get_full_chip_name() const; IdString archId() const { return id("ecp5"); } ArchArgs archArgs() const { return args; } @@ -480,7 +480,7 @@ struct Arch : BaseCtx BelId getBelByName(IdStringList name) const; - template <typename Id> const LocationTypePOD *locInfo(Id &id) const + template <typename Id> const LocationTypePOD *loc_info(Id &id) const { return &(chip_info->locations[chip_info->location_type[id.location.y * chip_info->width + id.location.x]]); } @@ -489,13 +489,13 @@ struct Arch : BaseCtx { NPNR_ASSERT(bel != BelId()); std::array<IdString, 3> ids{x_ids.at(bel.location.x), y_ids.at(bel.location.y), - id(locInfo(bel)->bel_data[bel.index].name.get())}; + id(loc_info(bel)->bel_data[bel.index].name.get())}; return IdStringList(ids); } uint32_t getBelChecksum(BelId bel) const { return bel.index; } - int getBelFlatIndex(BelId bel) const + int get_bel_flat_index(BelId bel) const { return (bel.location.y * chip_info->width + bel.location.x) * max_loc_bels + bel.index; } @@ -503,7 +503,7 @@ struct Arch : BaseCtx void bindBel(BelId bel, CellInfo *cell, PlaceStrength strength) { NPNR_ASSERT(bel != BelId()); - int idx = getBelFlatIndex(bel); + int idx = get_bel_flat_index(bel); NPNR_ASSERT(bel_to_cell.at(idx) == nullptr); bel_to_cell[idx] = cell; cell->bel = bel; @@ -514,7 +514,7 @@ struct Arch : BaseCtx void unbindBel(BelId bel) { NPNR_ASSERT(bel != BelId()); - int idx = getBelFlatIndex(bel); + int idx = get_bel_flat_index(bel); NPNR_ASSERT(bel_to_cell.at(idx) != nullptr); bel_to_cell[idx]->bel = BelId(); bel_to_cell[idx]->belStrength = STRENGTH_NONE; @@ -527,7 +527,7 @@ struct Arch : BaseCtx Loc loc; loc.x = bel.location.x; loc.y = bel.location.y; - loc.z = locInfo(bel)->bel_data[bel.index].z; + loc.z = loc_info(bel)->bel_data[bel.index].z; return loc; } @@ -539,19 +539,19 @@ struct Arch : BaseCtx bool checkBelAvail(BelId bel) const { NPNR_ASSERT(bel != BelId()); - return bel_to_cell[getBelFlatIndex(bel)] == nullptr; + return bel_to_cell[get_bel_flat_index(bel)] == nullptr; } CellInfo *getBoundBelCell(BelId bel) const { NPNR_ASSERT(bel != BelId()); - return bel_to_cell[getBelFlatIndex(bel)]; + return bel_to_cell[get_bel_flat_index(bel)]; } CellInfo *getConflictingBelCell(BelId bel) const { NPNR_ASSERT(bel != BelId()); - return bel_to_cell[getBelFlatIndex(bel)]; + return bel_to_cell[get_bel_flat_index(bel)]; } BelRange getBels() const @@ -571,7 +571,7 @@ struct Arch : BaseCtx { NPNR_ASSERT(bel != BelId()); IdString id; - id.index = locInfo(bel)->bel_data[bel.index].type; + id.index = loc_info(bel)->bel_data[bel.index].type; return id; } @@ -587,9 +587,9 @@ struct Arch : BaseCtx { BelPinRange range; NPNR_ASSERT(wire != WireId()); - range.b.ptr = locInfo(wire)->wire_data[wire.index].bel_pins.begin(); + range.b.ptr = loc_info(wire)->wire_data[wire.index].bel_pins.begin(); range.b.wire_loc = wire.location; - range.e.ptr = locInfo(wire)->wire_data[wire.index].bel_pins.end(); + range.e.ptr = loc_info(wire)->wire_data[wire.index].bel_pins.end(); range.e.wire_loc = wire.location; return range; } @@ -604,7 +604,7 @@ struct Arch : BaseCtx { NPNR_ASSERT(wire != WireId()); std::array<IdString, 3> ids{x_ids.at(wire.location.x), y_ids.at(wire.location.y), - id(locInfo(wire)->wire_data[wire.index].name.get())}; + id(loc_info(wire)->wire_data[wire.index].name.get())}; return IdStringList(ids); } @@ -612,7 +612,7 @@ struct Arch : BaseCtx { NPNR_ASSERT(wire != WireId()); IdString id; - id.index = locInfo(wire)->wire_data[wire.index].type; + id.index = loc_info(wire)->wire_data[wire.index].type; return id; } @@ -697,14 +697,14 @@ struct Arch : BaseCtx return range; } - IdString getWireBasename(WireId wire) const { return id(locInfo(wire)->wire_data[wire.index].name.get()); } + IdString get_wire_basename(WireId wire) const { return id(loc_info(wire)->wire_data[wire.index].name.get()); } - WireId getWireByLocAndBasename(Location loc, std::string basename) const + WireId get_wire_by_loc_basename(Location loc, std::string basename) const { WireId wireId; wireId.location = loc; - for (int i = 0; i < int(locInfo(wireId)->wire_data.size()); i++) { - if (locInfo(wireId)->wire_data[i].name.get() == basename) { + for (int i = 0; i < int(loc_info(wireId)->wire_data.size()); i++) { + if (loc_info(wireId)->wire_data[i].name.get() == basename) { wireId.index = i; return wireId; } @@ -736,8 +736,8 @@ struct Arch : BaseCtx wire_fanout[getPipSrcWire(pip)]++; WireId dst; - dst.index = locInfo(pip)->pip_data[pip.index].dst_idx; - dst.location = pip.location + locInfo(pip)->pip_data[pip.index].rel_dst_loc; + dst.index = loc_info(pip)->pip_data[pip.index].dst_idx; + dst.location = pip.location + loc_info(pip)->pip_data[pip.index].rel_dst_loc; NPNR_ASSERT(wire_to_net[dst] == nullptr); wire_to_net[dst] = net; net->wires[dst].pip = pip; @@ -751,8 +751,8 @@ struct Arch : BaseCtx wire_fanout[getPipSrcWire(pip)]--; WireId dst; - dst.index = locInfo(pip)->pip_data[pip.index].dst_idx; - dst.location = pip.location + locInfo(pip)->pip_data[pip.index].rel_dst_loc; + dst.index = loc_info(pip)->pip_data[pip.index].dst_idx; + dst.location = pip.location + loc_info(pip)->pip_data[pip.index].rel_dst_loc; NPNR_ASSERT(wire_to_net[dst] != nullptr); wire_to_net[dst] = nullptr; pip_to_net[pip]->wires.erase(dst); @@ -803,8 +803,8 @@ struct Arch : BaseCtx { WireId wire; NPNR_ASSERT(pip != PipId()); - wire.index = locInfo(pip)->pip_data[pip.index].src_idx; - wire.location = pip.location + locInfo(pip)->pip_data[pip.index].rel_src_loc; + wire.index = loc_info(pip)->pip_data[pip.index].src_idx; + wire.location = pip.location + loc_info(pip)->pip_data[pip.index].rel_src_loc; return wire; } @@ -812,8 +812,8 @@ struct Arch : BaseCtx { WireId wire; NPNR_ASSERT(pip != PipId()); - wire.index = locInfo(pip)->pip_data[pip.index].dst_idx; - wire.location = pip.location + locInfo(pip)->pip_data[pip.index].rel_dst_loc; + wire.index = loc_info(pip)->pip_data[pip.index].dst_idx; + wire.location = pip.location + loc_info(pip)->pip_data[pip.index].rel_dst_loc; return wire; } @@ -826,11 +826,11 @@ struct Arch : BaseCtx if (fnd_fanout != wire_fanout.end()) fanout = fnd_fanout->second; delay.min_delay = - speed_grade->pip_classes[locInfo(pip)->pip_data[pip.index].timing_class].min_base_delay + - fanout * speed_grade->pip_classes[locInfo(pip)->pip_data[pip.index].timing_class].min_fanout_adder; + speed_grade->pip_classes[loc_info(pip)->pip_data[pip.index].timing_class].min_base_delay + + fanout * speed_grade->pip_classes[loc_info(pip)->pip_data[pip.index].timing_class].min_fanout_adder; delay.max_delay = - speed_grade->pip_classes[locInfo(pip)->pip_data[pip.index].timing_class].max_base_delay + - fanout * speed_grade->pip_classes[locInfo(pip)->pip_data[pip.index].timing_class].max_fanout_adder; + speed_grade->pip_classes[loc_info(pip)->pip_data[pip.index].timing_class].max_base_delay + + fanout * speed_grade->pip_classes[loc_info(pip)->pip_data[pip.index].timing_class].max_fanout_adder; return delay; } @@ -838,9 +838,9 @@ struct Arch : BaseCtx { PipRange range; NPNR_ASSERT(wire != WireId()); - range.b.cursor = locInfo(wire)->wire_data[wire.index].pips_downhill.get(); + range.b.cursor = loc_info(wire)->wire_data[wire.index].pips_downhill.get(); range.b.wire_loc = wire.location; - range.e.cursor = range.b.cursor + locInfo(wire)->wire_data[wire.index].pips_downhill.size(); + range.e.cursor = range.b.cursor + loc_info(wire)->wire_data[wire.index].pips_downhill.size(); range.e.wire_loc = wire.location; return range; } @@ -849,26 +849,26 @@ struct Arch : BaseCtx { PipRange range; NPNR_ASSERT(wire != WireId()); - range.b.cursor = locInfo(wire)->wire_data[wire.index].pips_uphill.get(); + range.b.cursor = loc_info(wire)->wire_data[wire.index].pips_uphill.get(); range.b.wire_loc = wire.location; - range.e.cursor = range.b.cursor + locInfo(wire)->wire_data[wire.index].pips_uphill.size(); + range.e.cursor = range.b.cursor + loc_info(wire)->wire_data[wire.index].pips_uphill.size(); range.e.wire_loc = wire.location; return range; } - std::string getPipTilename(PipId pip) const + std::string get_pip_tilename(PipId pip) const { auto &tileloc = chip_info->tile_info[pip.location.y * chip_info->width + pip.location.x]; for (auto &tn : tileloc.tile_names) { - if (tn.type_idx == locInfo(pip)->pip_data[pip.index].tile_type) + if (tn.type_idx == loc_info(pip)->pip_data[pip.index].tile_type) return tn.name.get(); } NPNR_ASSERT_FALSE("failed to find Pip tile"); } - std::string getPipTiletype(PipId pip) const + std::string get_pip_tiletype(PipId pip) const { - return chip_info->tiletype_names[locInfo(pip)->pip_data[pip.index].tile_type].get(); + return chip_info->tiletype_names[loc_info(pip)->pip_data[pip.index].tile_type].get(); } Loc getPipLocation(PipId pip) const @@ -880,14 +880,14 @@ struct Arch : BaseCtx return loc; } - int8_t getPipClass(PipId pip) const { return locInfo(pip)->pip_data[pip.index].pip_type; } + int8_t get_pip_class(PipId pip) const { return loc_info(pip)->pip_data[pip.index].pip_type; } - BelId getPackagePinBel(const std::string &pin) const; - std::string getBelPackagePin(BelId bel) const; - int getPioBelBank(BelId bel) const; + BelId get_package_pin_bel(const std::string &pin) const; + std::string get_bel_package_pin(BelId bel) const; + int get_pio_bel_bank(BelId bel) const; // For getting GCLK, PLL, Vref, etc, pins - std::string getPioFunctionName(BelId bel) const; - BelId getPioByFunctionName(const std::string &name) const; + std::string get_pio_function_name(BelId bel) const; + BelId get_pio_by_function_name(const std::string &name) const; PortType getBelPinType(BelId bel, IdString pin) const; @@ -944,11 +944,11 @@ struct Arch : BaseCtx // Get the TimingClockingInfo of a port TimingClockingInfo getPortClockingInfo(const CellInfo *cell, IdString port, int index) const; // Return true if a port is a net - bool isGlobalNet(const NetInfo *net) const; + bool is_global_net(const NetInfo *net) const; - bool getDelayFromTimingDatabase(IdString tctype, IdString from, IdString to, DelayInfo &delay) const; - void getSetupHoldFromTimingDatabase(IdString tctype, IdString clock, IdString port, DelayInfo &setup, - DelayInfo &hold) const; + bool get_delay_from_tmg_db(IdString tctype, IdString from, IdString to, DelayInfo &delay) const; + void get_setuphold_from_tmg_db(IdString tctype, IdString clock, IdString port, DelayInfo &setup, + DelayInfo &hold) const; // ------------------------------------------------- // Placement validity checks @@ -996,14 +996,14 @@ struct Arch : BaseCtx bool isBelLocationValid(BelId bel) const; // Helper function for above - bool slicesCompatible(const std::vector<const CellInfo *> &cells) const; + bool slices_compatible(const std::vector<const CellInfo *> &cells) const; void assignArchInfo(); void permute_luts(); - std::vector<std::pair<std::string, std::string>> getTilesAtLocation(int row, int col); - std::string getTileByTypeAndLocation(int row, int col, std::string type) const + std::vector<std::pair<std::string, std::string>> get_tiles_at_loc(int row, int col); + std::string get_tile_by_type_loc(int row, int col, std::string type) const { auto &tileloc = chip_info->tile_info[row * chip_info->width + col]; for (auto &tn : tileloc.tile_names) { @@ -1014,7 +1014,7 @@ struct Arch : BaseCtx type); } - std::string getTileByTypeAndLocation(int row, int col, const std::set<std::string> &type) const + std::string get_tile_by_type_loc(int row, int col, const std::set<std::string> &type) const { auto &tileloc = chip_info->tile_info[row * chip_info->width + col]; for (auto &tn : tileloc.tile_names) { @@ -1024,7 +1024,7 @@ struct Arch : BaseCtx NPNR_ASSERT_FALSE_STR("no tile at (" + std::to_string(col) + ", " + std::to_string(row) + ") with type in set"); } - std::string getTileByType(std::string type) const + std::string get_tile_by_type(std::string type) const { for (int i = 0; i < chip_info->height * chip_info->width; i++) { auto &tileloc = chip_info->tile_info[i]; @@ -1035,14 +1035,14 @@ struct Arch : BaseCtx NPNR_ASSERT_FALSE_STR("no tile with type " + type); } - GlobalInfoPOD globalInfoAtLoc(Location loc); + GlobalInfoPOD global_info_at_loc(Location loc); - bool getPIODQSGroup(BelId pio, bool &dqsright, int &dqsrow); - BelId getDQSBUF(bool dqsright, int dqsrow); - WireId getBankECLK(int bank, int eclk); + bool get_pio_dqs_group(BelId pio, bool &dqsright, int &dqsrow); + BelId get_dqsbuf(bool dqsright, int dqsrow); + WireId get_bank_eclk(int bank, int eclk); // Apply LPF constraints to the context - bool applyLPF(std::string filename, std::istream &in); + bool apply_lpf(std::string filename, std::istream &in); IdString id_trellis_slice; IdString id_clk, id_lsr; @@ -1056,7 +1056,7 @@ struct Arch : BaseCtx // with different routes to the same physical reset wire causing // conflicts and slow routing std::unordered_map<WireId, std::pair<int, int>> wire_loc_overrides; - void setupWireLocations(); + void setup_wire_locations(); mutable std::unordered_map<DelayKey, std::pair<bool, DelayInfo>> celldelay_cache; diff --git a/ecp5/arch_place.cc b/ecp5/arch_place.cc index c5330694..668b3141 100644 --- a/ecp5/arch_place.cc +++ b/ecp5/arch_place.cc @@ -33,7 +33,7 @@ inline NetInfo *port_or_nullptr(const CellInfo *cell, IdString name) return found->second.net; } -bool Arch::slicesCompatible(const std::vector<const CellInfo *> &cells) const +bool Arch::slices_compatible(const std::vector<const CellInfo *> &cells) const { // TODO: allow different LSR/CLK and MUX/SRMODE settings once // routing details are worked out @@ -79,7 +79,7 @@ bool Arch::isBelLocationValid(BelId bel) const } if (getBoundBelCell(bel) != nullptr && getBoundBelCell(bel)->sliceInfo.has_l6mux && ((bel_loc.z % 2) == 1)) return false; - return slicesCompatible(bel_cells); + return slices_compatible(bel_cells); } else { CellInfo *cell = getBoundBelCell(bel); if (cell == nullptr) @@ -108,7 +108,7 @@ bool Arch::isValidBelForCell(CellInfo *cell, BelId bel) const } bel_cells.push_back(cell); - return slicesCompatible(bel_cells); + return slices_compatible(bel_cells); } else if (cell->type == id_DCUA || cell->type == id_EXTREFB || cell->type == id_PCSCLKDIV) { return args.type != ArchArgs::LFE5U_25F && args.type != ArchArgs::LFE5U_45F && args.type != ArchArgs::LFE5U_85F; } else { @@ -196,7 +196,7 @@ void Arch::permute_luts() } } -void Arch::setupWireLocations() +void Arch::setup_wire_locations() { wire_loc_overrides.clear(); for (auto cell : sorted(cells)) { diff --git a/ecp5/bitstream.cc b/ecp5/bitstream.cc index 4a43bfca..af7c63f8 100644 --- a/ecp5/bitstream.cc +++ b/ecp5/bitstream.cc @@ -49,7 +49,7 @@ void config_empty_lfe5um5g_85f(ChipConfig &cc); // Convert an absolute wire name to a relative Trellis one static std::string get_trellis_wirename(Context *ctx, Location loc, WireId wire) { - std::string basename = ctx->locInfo(wire)->wire_data[wire.index].name.get(); + std::string basename = ctx->loc_info(wire)->wire_data[wire.index].name.get(); std::string prefix2 = basename.substr(0, 2); if (prefix2 == "G_" || prefix2 == "L_" || prefix2 == "R_") return basename; @@ -102,7 +102,7 @@ static void tie_cib_signal(Context *ctx, ChipConfig &cc, WireId wire, bool value NPNR_ASSERT(!signals.empty()); NPNR_ASSERT(signals.size() < 100); cibsig = signals.front(); - basename = ctx->getWireBasename(cibsig).str(ctx); + basename = ctx->get_wire_basename(cibsig).str(ctx); signals.pop(); if (std::regex_match(basename, cib_re)) break; @@ -118,7 +118,7 @@ static void tie_cib_signal(Context *ctx, ChipConfig &cc, WireId wire, bool value out_value = 0; } - for (const auto &tile : ctx->getTilesAtLocation(cibsig.location.y, cibsig.location.x)) { + for (const auto &tile : ctx->get_tiles_at_loc(cibsig.location.y, cibsig.location.x)) { if (tile.second.substr(0, 3) == "CIB" || tile.second.substr(0, 4) == "VCIB") { cc.tiles[tile.first].add_enum("CIB." + basename + "MUX", out_value ? "1" : "0"); @@ -181,27 +181,27 @@ static std::string get_pio_tile(Context *ctx, BelId bel) static const std::set<std::string> pioa_b = {"PICB0", "EFB0_PICB0", "EFB2_PICB0", "SPICB0"}; static const std::set<std::string> piob_b = {"PICB1", "EFB1_PICB1", "EFB3_PICB1"}; - std::string pio_name = ctx->locInfo(bel)->bel_data[bel.index].name.get(); + std::string pio_name = ctx->loc_info(bel)->bel_data[bel.index].name.get(); if (bel.location.y == 0) { if (pio_name == "PIOA") { - return ctx->getTileByTypeAndLocation(0, bel.location.x, "PIOT0"); + return ctx->get_tile_by_type_loc(0, bel.location.x, "PIOT0"); } else if (pio_name == "PIOB") { - return ctx->getTileByTypeAndLocation(0, bel.location.x + 1, "PIOT1"); + return ctx->get_tile_by_type_loc(0, bel.location.x + 1, "PIOT1"); } else { NPNR_ASSERT_FALSE("bad PIO location"); } } else if (bel.location.y == ctx->chip_info->height - 1) { if (pio_name == "PIOA") { - return ctx->getTileByTypeAndLocation(bel.location.y, bel.location.x, pioa_b); + return ctx->get_tile_by_type_loc(bel.location.y, bel.location.x, pioa_b); } else if (pio_name == "PIOB") { - return ctx->getTileByTypeAndLocation(bel.location.y, bel.location.x + 1, piob_b); + return ctx->get_tile_by_type_loc(bel.location.y, bel.location.x + 1, piob_b); } else { NPNR_ASSERT_FALSE("bad PIO location"); } } else if (bel.location.x == 0) { - return ctx->getTileByTypeAndLocation(bel.location.y + 1, bel.location.x, pioabcd_l); + return ctx->get_tile_by_type_loc(bel.location.y + 1, bel.location.x, pioabcd_l); } else if (bel.location.x == ctx->chip_info->width - 1) { - return ctx->getTileByTypeAndLocation(bel.location.y + 1, bel.location.x, pioabcd_r); + return ctx->get_tile_by_type_loc(bel.location.y + 1, bel.location.x, pioabcd_r); } else { NPNR_ASSERT_FALSE("bad PIO location"); } @@ -218,36 +218,36 @@ static std::string get_pic_tile(Context *ctx, BelId bel) static const std::set<std::string> pica_b = {"PICB0", "EFB0_PICB0", "EFB2_PICB0", "SPICB0"}; static const std::set<std::string> picb_b = {"PICB1", "EFB1_PICB1", "EFB3_PICB1"}; - std::string pio_name = ctx->locInfo(bel)->bel_data[bel.index].name.get(); + std::string pio_name = ctx->loc_info(bel)->bel_data[bel.index].name.get(); if (bel.location.y == 0) { if (pio_name == "PIOA") { - return ctx->getTileByTypeAndLocation(1, bel.location.x, "PICT0"); + return ctx->get_tile_by_type_loc(1, bel.location.x, "PICT0"); } else if (pio_name == "PIOB") { - return ctx->getTileByTypeAndLocation(1, bel.location.x + 1, "PICT1"); + return ctx->get_tile_by_type_loc(1, bel.location.x + 1, "PICT1"); } else { NPNR_ASSERT_FALSE("bad PIO location"); } } else if (bel.location.y == ctx->chip_info->height - 1) { if (pio_name == "PIOA") { - return ctx->getTileByTypeAndLocation(bel.location.y, bel.location.x, pica_b); + return ctx->get_tile_by_type_loc(bel.location.y, bel.location.x, pica_b); } else if (pio_name == "PIOB") { - return ctx->getTileByTypeAndLocation(bel.location.y, bel.location.x + 1, picb_b); + return ctx->get_tile_by_type_loc(bel.location.y, bel.location.x + 1, picb_b); } else { NPNR_ASSERT_FALSE("bad PIO location"); } } else if (bel.location.x == 0) { if (pio_name == "PIOA" || pio_name == "PIOB") { - return ctx->getTileByTypeAndLocation(bel.location.y, bel.location.x, picab_l); + return ctx->get_tile_by_type_loc(bel.location.y, bel.location.x, picab_l); } else if (pio_name == "PIOC" || pio_name == "PIOD") { - return ctx->getTileByTypeAndLocation(bel.location.y + 2, bel.location.x, piccd_l); + return ctx->get_tile_by_type_loc(bel.location.y + 2, bel.location.x, piccd_l); } else { NPNR_ASSERT_FALSE("bad PIO location"); } } else if (bel.location.x == ctx->chip_info->width - 1) { if (pio_name == "PIOA" || pio_name == "PIOB") { - return ctx->getTileByTypeAndLocation(bel.location.y, bel.location.x, picab_r); + return ctx->get_tile_by_type_loc(bel.location.y, bel.location.x, picab_r); } else if (pio_name == "PIOC" || pio_name == "PIOD") { - return ctx->getTileByTypeAndLocation(bel.location.y + 2, bel.location.x, piccd_r); + return ctx->get_tile_by_type_loc(bel.location.y + 2, bel.location.x, piccd_r); } else { NPNR_ASSERT_FALSE("bad PIO location"); } @@ -260,12 +260,12 @@ static std::string get_pic_tile(Context *ctx, BelId bel) static std::string get_comp_pio_tile(Context *ctx, BelId bel) { NPNR_ASSERT(bel.location.y == 0); - return ctx->getTileByTypeAndLocation(0, bel.location.x + 1, "PIOT1"); + return ctx->get_tile_by_type_loc(0, bel.location.x + 1, "PIOT1"); } static std::string get_comp_pic_tile(Context *ctx, BelId bel) { NPNR_ASSERT(bel.location.y == 0); - return ctx->getTileByTypeAndLocation(1, bel.location.x + 1, "PICT1"); + return ctx->get_tile_by_type_loc(1, bel.location.x + 1, "PICT1"); } // Get the list of tiles corresponding to a blockram @@ -282,23 +282,23 @@ std::vector<std::string> get_bram_tiles(Context *ctx, BelId bel) switch (loc.z) { case 0: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, ebr0)); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_EBR1")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, ebr0)); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_EBR1")); break; case 1: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_EBR2")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_EBR3")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB_EBR4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_EBR2")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_EBR3")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB_EBR4")); break; case 2: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_EBR4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_EBR5")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB_EBR6")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_EBR4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_EBR5")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB_EBR6")); break; case 3: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_EBR6")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_EBR7")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, ebr8)); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_EBR6")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_EBR7")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, ebr8)); break; default: NPNR_ASSERT_FALSE("bad EBR z loc"); @@ -316,52 +316,52 @@ std::vector<std::string> get_dsp_tiles(Context *ctx, BelId bel) if (ctx->getBelType(bel) == id_MULT18X18D) { switch (loc.z) { case 0: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_DSP0")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB2_DSP0")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_DSP1")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB2_DSP1")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB_DSP2")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB2_DSP2")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 3, "MIB_DSP3")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 3, "MIB2_DSP3")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 4, "MIB_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 4, "MIB2_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_DSP0")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB2_DSP0")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_DSP1")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB2_DSP1")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB_DSP2")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB2_DSP2")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 3, "MIB_DSP3")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 3, "MIB2_DSP3")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 4, "MIB_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 4, "MIB2_DSP4")); break; case 1: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "MIB_DSP0")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "MIB2_DSP0")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_DSP1")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB2_DSP1")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_DSP2")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB2_DSP2")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB_DSP3")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB2_DSP3")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 3, "MIB_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 3, "MIB2_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "MIB_DSP0")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "MIB2_DSP0")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_DSP1")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB2_DSP1")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_DSP2")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB2_DSP2")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB_DSP3")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB2_DSP3")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 3, "MIB_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 3, "MIB2_DSP4")); break; case 4: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB2_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_DSP5")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB2_DSP5")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB_DSP6")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB2_DSP6")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 3, "MIB_DSP7")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 3, "MIB2_DSP7")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 4, dsp8)); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 4, "MIB2_DSP8")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB2_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_DSP5")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB2_DSP5")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB_DSP6")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB2_DSP6")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 3, "MIB_DSP7")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 3, "MIB2_DSP7")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 4, dsp8)); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 4, "MIB2_DSP8")); break; case 5: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "MIB_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "MIB2_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_DSP5")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB2_DSP5")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_DSP6")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB2_DSP6")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB_DSP7")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 2, "MIB2_DSP7")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 3, dsp8)); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 3, "MIB2_DSP8")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "MIB_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "MIB2_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_DSP5")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB2_DSP5")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_DSP6")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB2_DSP6")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB_DSP7")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 2, "MIB2_DSP7")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 3, dsp8)); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 3, "MIB2_DSP8")); break; default: NPNR_ASSERT_FALSE("bad MULT z loc"); @@ -369,28 +369,28 @@ std::vector<std::string> get_dsp_tiles(Context *ctx, BelId bel) } else if (ctx->getBelType(bel) == id_ALU54B) { switch (loc.z) { case 3: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 3, "MIB_DSP0")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 3, "MIB2_DSP0")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 2, "MIB_DSP1")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 2, "MIB2_DSP1")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "MIB_DSP2")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "MIB2_DSP2")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_DSP3")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB2_DSP3")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB2_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 3, "MIB_DSP0")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 3, "MIB2_DSP0")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 2, "MIB_DSP1")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 2, "MIB2_DSP1")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "MIB_DSP2")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "MIB2_DSP2")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_DSP3")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB2_DSP3")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB2_DSP4")); break; case 7: - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 3, "MIB_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 3, "MIB2_DSP4")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 2, "MIB_DSP5")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 2, "MIB2_DSP5")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "MIB_DSP6")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "MIB2_DSP6")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB_DSP7")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "MIB2_DSP7")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, dsp8)); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "MIB2_DSP8")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 3, "MIB_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 3, "MIB2_DSP4")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 2, "MIB_DSP5")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 2, "MIB2_DSP5")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "MIB_DSP6")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "MIB2_DSP6")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB_DSP7")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "MIB2_DSP7")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, dsp8)); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "MIB2_DSP8")); break; default: NPNR_ASSERT_FALSE("bad ALU z loc"); @@ -405,30 +405,30 @@ std::vector<std::string> get_dcu_tiles(Context *ctx, BelId bel) std::vector<std::string> tiles; Loc loc = ctx->getBelLocation(bel); for (int i = 0; i < 9; i++) - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + i, "DCU" + std::to_string(i))); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + i, "DCU" + std::to_string(i))); return tiles; } // Get the list of tiles corresponding to a PLL std::vector<std::string> get_pll_tiles(Context *ctx, BelId bel) { - std::string name = ctx->locInfo(bel)->bel_data[bel.index].name.get(); + std::string name = ctx->loc_info(bel)->bel_data[bel.index].name.get(); std::vector<std::string> tiles; Loc loc = ctx->getBelLocation(bel); static const std::set<std::string> pll1_lr = {"PLL1_LR", "BANKREF4"}; if (name == "EHXPLL_UL") { - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x - 1, "PLL0_UL")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y + 1, loc.x - 1, "PLL1_UL")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x - 1, "PLL0_UL")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y + 1, loc.x - 1, "PLL1_UL")); } else if (name == "EHXPLL_LL") { - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y + 1, loc.x, "PLL0_LL")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y + 1, loc.x + 1, "BANKREF8")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y + 1, loc.x, "PLL0_LL")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y + 1, loc.x + 1, "BANKREF8")); } else if (name == "EHXPLL_LR") { - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y + 1, loc.x, "PLL0_LR")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y + 1, loc.x - 1, pll1_lr)); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y + 1, loc.x, "PLL0_LR")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y + 1, loc.x - 1, pll1_lr)); } else if (name == "EHXPLL_UR") { - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "PLL0_UR")); - tiles.push_back(ctx->getTileByTypeAndLocation(loc.y + 1, loc.x + 1, "PLL1_UR")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "PLL0_UR")); + tiles.push_back(ctx->get_tile_by_type_loc(loc.y + 1, loc.x + 1, "PLL1_UR")); } else { NPNR_ASSERT_FALSE_STR("bad PLL loc " + name); } @@ -516,7 +516,7 @@ void tieoff_dcu_ports(Context *ctx, ChipConfig &cc, CellInfo *ci) static void set_pip(Context *ctx, ChipConfig &cc, PipId pip) { - std::string tile = ctx->getPipTilename(pip); + std::string tile = ctx->get_pip_tilename(pip); std::string source = get_trellis_wirename(ctx, pip.location, ctx->getPipSrcWire(pip)); std::string sink = get_trellis_wirename(ctx, pip.location, ctx->getPipDstWire(pip)); cc.tiles[tile].add_arc(sink, source); @@ -633,7 +633,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex } } - cc.metadata.push_back("Part: " + ctx->getFullChipName()); + cc.metadata.push_back("Part: " + ctx->get_full_chip_name()); // Clear out DCU tieoffs in base config if DCU used for (auto &cell : ctx->cells) { @@ -641,7 +641,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex if (ci->type == id_DCUA) { Loc loc = ctx->getBelLocation(ci->bel); for (int i = 0; i < 12; i++) { - auto tiles = ctx->getTilesAtLocation(loc.y - 1, loc.x + i); + auto tiles = ctx->get_tiles_at_loc(loc.y - 1, loc.x + i); for (const auto &tile : tiles) { auto cc_tile = cc.tiles.find(tile.first); if (cc_tile != cc.tiles.end()) { @@ -655,7 +655,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex // Add all set, configurable pips to the config for (auto pip : ctx->getPips()) { if (ctx->getBoundPipNet(pip) != nullptr) { - if (ctx->getPipClass(pip) == 0) { // ignore fixed pips + if (ctx->get_pip_class(pip) == 0) { // ignore fixed pips std::string source = get_trellis_wirename(ctx, pip.location, ctx->getPipSrcWire(pip)); if (source.find("CLKI_PLL") != std::string::npos) { // Special case - must set pip in all relevant tiles @@ -676,7 +676,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex for (auto &cell : ctx->cells) { CellInfo *ci = cell.second.get(); if (ci->bel != BelId() && ci->type == ctx->id("TRELLIS_IO")) { - int bank = ctx->getPioBelBank(ci->bel); + int bank = ctx->get_pio_bel_bank(ci->bel); std::string dir = str_or_default(ci->params, ctx->id("DIR"), "INPUT"); std::string iotype = str_or_default(ci->attrs, ctx->id("IO_TYPE"), "LVCMOS33"); @@ -706,7 +706,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex // Set all bankref tiles to appropriate VccIO for (int y = 0; y < ctx->getGridDimY(); y++) { for (int x = 0; x < ctx->getGridDimX(); x++) { - auto tiles = ctx->getTilesAtLocation(y, x); + auto tiles = ctx->get_tiles_at_loc(y, x); for (auto tile : tiles) { std::string type = tile.second; if (type.find("BANKREF") != std::string::npos) { @@ -741,18 +741,19 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex for (auto bv : bankVref) { if (!bv.second) continue; - BelId vrefIO = ctx->getPioByFunctionName(fmt_str("VREF1_" << bv.first)); + BelId vrefIO = ctx->get_pio_by_function_name(fmt_str("VREF1_" << bv.first)); if (vrefIO == BelId()) log_error("unable to find VREF input for bank %d\n", bv.first); if (!ctx->checkBelAvail(vrefIO)) { CellInfo *bound = ctx->getBoundBelCell(vrefIO); if (bound != nullptr) - log_error("VREF pin %s of bank %d is occupied by IO '%s'\n", ctx->getBelPackagePin(vrefIO).c_str(), + log_error("VREF pin %s of bank %d is occupied by IO '%s'\n", ctx->get_bel_package_pin(vrefIO).c_str(), bv.first, bound->name.c_str(ctx)); else - log_error("VREF pin %s of bank %d is unavailable\n", ctx->getBelPackagePin(vrefIO).c_str(), bv.first); + log_error("VREF pin %s of bank %d is unavailable\n", ctx->get_bel_package_pin(vrefIO).c_str(), + bv.first); } - log_info("Using pin %s as VREF for bank %d\n", ctx->getBelPackagePin(vrefIO).c_str(), bv.first); + log_info("Using pin %s as VREF for bank %d\n", ctx->get_bel_package_pin(vrefIO).c_str(), bv.first); std::string pio_tile = get_pio_tile(ctx, vrefIO); std::string iotype; @@ -774,7 +775,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex iovoltage_to_str(bankVcc[bv.first]).c_str()); } - std::string pio = ctx->locInfo(vrefIO)->bel_data[vrefIO.index].name.get(); + std::string pio = ctx->loc_info(vrefIO)->bel_data[vrefIO.index].name.get(); cc.tiles[pio_tile].add_enum(pio + ".BASE_TYPE", "OUTPUT_" + iotype); cc.tiles[pio_tile].add_enum(pio + ".PULLMODE", "NONE"); } @@ -787,8 +788,8 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex } BelId bel = ci->bel; if (ci->type == ctx->id("TRELLIS_SLICE")) { - std::string tname = ctx->getTileByTypeAndLocation(bel.location.y, bel.location.x, "PLC2"); - std::string slice = ctx->locInfo(bel)->bel_data[bel.index].name.get(); + std::string tname = ctx->get_tile_by_type_loc(bel.location.y, bel.location.x, "PLC2"); + std::string slice = ctx->loc_info(bel)->bel_data[bel.index].name.get(); int lut0_init = int_or_default(ci->params, ctx->id("LUT0_INITVAL")); int lut1_init = int_or_default(ci->params, ctx->id("LUT1_INITVAL")); cc.tiles[tname].add_word(slice + ".K0.INIT", int_to_bitvector(lut0_init, 16)); @@ -811,12 +812,12 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex NetInfo *lsrnet = nullptr; 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; - if (ctx->getBoundWireNet(ctx->getWireByLocAndBasename(bel.location, "LSR0")) == lsrnet) { + if (ctx->getBoundWireNet(ctx->get_wire_by_loc_basename(bel.location, "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")); } - if (ctx->getBoundWireNet(ctx->getWireByLocAndBasename(bel.location, "LSR1")) == lsrnet) { + if (ctx->getBoundWireNet(ctx->get_wire_by_loc_basename(bel.location, "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")); @@ -825,10 +826,10 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex NetInfo *clknet = nullptr; if (ci->ports.find(ctx->id("CLK")) != ci->ports.end() && ci->ports.at(ctx->id("CLK")).net != nullptr) clknet = ci->ports.at(ctx->id("CLK")).net; - if (ctx->getBoundWireNet(ctx->getWireByLocAndBasename(bel.location, "CLK0")) == clknet) { + if (ctx->getBoundWireNet(ctx->get_wire_by_loc_basename(bel.location, "CLK0")) == clknet) { cc.tiles[tname].add_enum("CLK0.CLKMUX", str_or_default(ci->params, ctx->id("CLKMUX"), "CLK")); } - if (ctx->getBoundWireNet(ctx->getWireByLocAndBasename(bel.location, "CLK1")) == clknet) { + if (ctx->getBoundWireNet(ctx->get_wire_by_loc_basename(bel.location, "CLK1")) == clknet) { cc.tiles[tname].add_enum("CLK1.CLKMUX", str_or_default(ci->params, ctx->id("CLKMUX"), "CLK")); } } @@ -861,7 +862,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex // TODO: CLKMUX } else if (ci->type == ctx->id("TRELLIS_IO")) { - std::string pio = ctx->locInfo(bel)->bel_data[bel.index].name.get(); + std::string pio = ctx->loc_info(bel)->bel_data[bel.index].name.get(); std::string iotype = str_or_default(ci->attrs, ctx->id("IO_TYPE"), "LVCMOS33"); std::string dir = str_or_default(ci->params, ctx->id("DIR"), "INPUT"); std::string pio_tile = get_pio_tile(ctx, bel); @@ -903,12 +904,11 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex (ci->ports.find(ctx->id("IOLTO")) == ci->ports.end() || ci->ports.at(ctx->id("IOLTO")).net == nullptr)) { // Tie tristate low if unconnected for outputs or bidir - WireId jpt_wire = ctx->getWireByLocAndBasename(bel.location, fmt_str("JPADDT" << pio.back())); + WireId jpt_wire = ctx->get_wire_by_loc_basename(bel.location, fmt_str("JPADDT" << pio.back())); PipId jpt_pip = *ctx->getPipsUphill(jpt_wire).begin(); WireId cib_wire = ctx->getPipSrcWire(jpt_pip); - std::string cib_tile = - ctx->getTileByTypeAndLocation(cib_wire.location.y, cib_wire.location.x, cib_tiles); - std::string cib_wirename = ctx->locInfo(cib_wire)->wire_data[cib_wire.index].name.get(); + std::string cib_tile = ctx->get_tile_by_type_loc(cib_wire.location.y, cib_wire.location.x, cib_tiles); + std::string cib_wirename = ctx->loc_info(cib_wire)->wire_data[cib_wire.index].name.get(); cc.tiles[cib_tile].add_enum("CIB." + cib_wirename + "MUX", "0"); } if ((dir == "INPUT" || dir == "BIDIR") && !is_differential(ioType_from_str(iotype)) && @@ -993,25 +993,25 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex } else if (ci->type == ctx->id("DCCA")) { const NetInfo *cen = get_net_or_empty(ci, ctx->id("CE")); if (cen != nullptr) { - std::string belname = ctx->locInfo(bel)->bel_data[bel.index].name.get(); + std::string belname = ctx->loc_info(bel)->bel_data[bel.index].name.get(); Loc loc = ctx->getBelLocation(bel); TileGroup tg; switch (belname[0]) { case 'B': tg.tiles.push_back( - ctx->getTileByTypeAndLocation(loc.y, loc.x, std::set<std::string>{"BMID_0H", "BMID_0V"})); - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, - std::set<std::string>{"BMID_2", "BMID_2V"})); + ctx->get_tile_by_type_loc(loc.y, loc.x, std::set<std::string>{"BMID_0H", "BMID_0V"})); + tg.tiles.push_back( + ctx->get_tile_by_type_loc(loc.y, loc.x + 1, std::set<std::string>{"BMID_2", "BMID_2V"})); break; case 'T': - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "TMID_0")); - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x + 1, "TMID_1")); + tg.tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "TMID_0")); + tg.tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x + 1, "TMID_1")); break; case 'L': - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "LMID_0")); + tg.tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "LMID_0")); break; case 'R': - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, "RMID_0")); + tg.tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, "RMID_0")); break; default: NPNR_ASSERT_FALSE("bad DCC for gating"); @@ -1405,38 +1405,38 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex cc.tilegroups.push_back(tg); } else if (ci->type == id_PCSCLKDIV) { Loc loc = ctx->getBelLocation(ci->bel); - std::string tname = ctx->getTileByTypeAndLocation(loc.y + 1, loc.x, "BMID_0H"); + std::string tname = ctx->get_tile_by_type_loc(loc.y + 1, loc.x, "BMID_0H"); cc.tiles[tname].add_enum("PCSCLKDIV" + std::to_string(loc.z), str_or_default(ci->params, ctx->id("GSR"), "ENABLED")); } else if (ci->type == id_DTR) { - cc.tiles[ctx->getTileByType("DTR")].add_enum("DTR.MODE", "DTR"); + cc.tiles[ctx->get_tile_by_type("DTR")].add_enum("DTR.MODE", "DTR"); } else if (ci->type == id_OSCG) { int div = int_or_default(ci->params, ctx->id("DIV"), 128); if (div == 128) div = 127; - cc.tiles[ctx->getTileByType("EFB0_PICB0")].add_enum("OSC.DIV", std::to_string(div)); - cc.tiles[ctx->getTileByType("EFB1_PICB1")].add_enum("OSC.DIV", std::to_string(div)); - cc.tiles[ctx->getTileByType("EFB1_PICB1")].add_enum("OSC.MODE", "OSCG"); - cc.tiles[ctx->getTileByType("EFB1_PICB1")].add_enum("CCLK.MODE", "_NONE_"); + cc.tiles[ctx->get_tile_by_type("EFB0_PICB0")].add_enum("OSC.DIV", std::to_string(div)); + cc.tiles[ctx->get_tile_by_type("EFB1_PICB1")].add_enum("OSC.DIV", std::to_string(div)); + cc.tiles[ctx->get_tile_by_type("EFB1_PICB1")].add_enum("OSC.MODE", "OSCG"); + cc.tiles[ctx->get_tile_by_type("EFB1_PICB1")].add_enum("CCLK.MODE", "_NONE_"); } else if (ci->type == id_USRMCLK) { if (str_or_default(ctx->settings, ctx->id("arch.sysconfig.MASTER_SPI_PORT"), "") == "ENABLE") log_warning("USRMCLK will not function correctly when MASTER_SPI_PORT is set to ENABLE.\n"); - cc.tiles[ctx->getTileByType("EFB3_PICB1")].add_enum("CCLK.MODE", "USRMCLK"); + cc.tiles[ctx->get_tile_by_type("EFB3_PICB1")].add_enum("CCLK.MODE", "USRMCLK"); } else if (ci->type == id_GSR) { - cc.tiles[ctx->getTileByType("EFB0_PICB0")].add_enum( + cc.tiles[ctx->get_tile_by_type("EFB0_PICB0")].add_enum( "GSR.GSRMODE", str_or_default(ci->params, ctx->id("MODE"), "ACTIVE_LOW")); - cc.tiles[ctx->getTileByType("VIQ_BUF")].add_enum("GSR.SYNCMODE", - str_or_default(ci->params, ctx->id("SYNCMODE"), "ASYNC")); + cc.tiles[ctx->get_tile_by_type("VIQ_BUF")].add_enum( + "GSR.SYNCMODE", str_or_default(ci->params, ctx->id("SYNCMODE"), "ASYNC")); } else if (ci->type == id_JTAGG) { - cc.tiles[ctx->getTileByType("EFB0_PICB0")].add_enum("JTAG.ER1", - str_or_default(ci->params, ctx->id("ER1"), "ENABLED")); - cc.tiles[ctx->getTileByType("EFB0_PICB0")].add_enum("JTAG.ER2", - str_or_default(ci->params, ctx->id("ER2"), "ENABLED")); + cc.tiles[ctx->get_tile_by_type("EFB0_PICB0")].add_enum( + "JTAG.ER1", str_or_default(ci->params, ctx->id("ER1"), "ENABLED")); + cc.tiles[ctx->get_tile_by_type("EFB0_PICB0")].add_enum( + "JTAG.ER2", str_or_default(ci->params, ctx->id("ER2"), "ENABLED")); } else if (ci->type == id_CLKDIVF) { Loc loc = ctx->getBelLocation(ci->bel); bool r = loc.x > 5; std::string clkdiv = std::string("CLKDIV_") + (r ? "R" : "L") + std::to_string(loc.z); - std::string tile = ctx->getTileByType(std::string("ECLK_") + (r ? "R" : "L")); + std::string tile = ctx->get_tile_by_type(std::string("ECLK_") + (r ? "R" : "L")); cc.tiles[tile].add_enum(clkdiv + ".DIV", str_or_default(ci->params, ctx->id("DIV"), "2.0")); cc.tiles[tile].add_enum(clkdiv + ".GSR", str_or_default(ci->params, ctx->id("GSR"), "DISABLED")); } else if (ci->type == id_TRELLIS_ECLKBUF) { @@ -1445,10 +1445,10 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex bool l = loc.x < 10; std::string pic = l ? "PICL" : "PICR"; TileGroup tg; - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y - 2, loc.x, pic + "1_DQS0")); - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y - 1, loc.x, pic + "2_DQS1")); - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y, loc.x, pic + "0_DQS2")); - tg.tiles.push_back(ctx->getTileByTypeAndLocation(loc.y + 1, loc.x, pic + "1_DQS3")); + tg.tiles.push_back(ctx->get_tile_by_type_loc(loc.y - 2, loc.x, pic + "1_DQS0")); + tg.tiles.push_back(ctx->get_tile_by_type_loc(loc.y - 1, loc.x, pic + "2_DQS1")); + tg.tiles.push_back(ctx->get_tile_by_type_loc(loc.y, loc.x, pic + "0_DQS2")); + tg.tiles.push_back(ctx->get_tile_by_type_loc(loc.y + 1, loc.x, pic + "1_DQS3")); tg.config.add_enum("DQS.MODE", "DQSBUFM"); tg.config.add_enum("DQS.DQS_LI_DEL_ADJ", str_or_default(ci->params, ctx->id("DQS_LI_DEL_ADJ"), "PLUS")); tg.config.add_enum("DQS.DQS_LO_DEL_ADJ", str_or_default(ci->params, ctx->id("DQS_LO_DEL_ADJ"), "PLUS")); @@ -1473,15 +1473,15 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex } else if (ci->type == id_ECLKSYNCB) { Loc loc = ctx->getBelLocation(ci->bel); bool r = loc.x > 5; - std::string eclksync = ctx->locInfo(bel)->bel_data[bel.index].name.get(); - std::string tile = ctx->getTileByType(std::string("ECLK_") + (r ? "R" : "L")); + std::string eclksync = ctx->loc_info(bel)->bel_data[bel.index].name.get(); + std::string tile = ctx->get_tile_by_type(std::string("ECLK_") + (r ? "R" : "L")); if (get_net_or_empty(ci, id_STOP) != nullptr) cc.tiles[tile].add_enum(eclksync + ".MODE", "ECLKSYNCB"); } else if (ci->type == id_ECLKBRIDGECS) { Loc loc = ctx->getBelLocation(ci->bel); bool r = loc.x > 5; - std::string eclkb = ctx->locInfo(bel)->bel_data[bel.index].name.get(); - std::string tile = ctx->getTileByType(std::string("ECLK_") + (r ? "R" : "L")); + std::string eclkb = ctx->loc_info(bel)->bel_data[bel.index].name.get(); + std::string tile = ctx->get_tile_by_type(std::string("ECLK_") + (r ? "R" : "L")); if (get_net_or_empty(ci, id_STOP) != nullptr) cc.tiles[tile].add_enum(eclkb + ".MODE", "ECLKBRIDGECS"); } else if (ci->type == id_DDRDLL) { @@ -1492,7 +1492,7 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex ctx->args.type == ArchArgs::LFE5UM_25F || ctx->args.type == ArchArgs::LFE5UM5G_25F) && u) tiletype += "A"; - std::string tile = ctx->getTileByType(tiletype); + std::string tile = ctx->get_tile_by_type(tiletype); cc.tiles[tile].add_enum("DDRDLL.MODE", "DDRDLLA"); cc.tiles[tile].add_enum("DDRDLL.GSR", str_or_default(ci->params, ctx->id("GSR"), "DISABLED")); cc.tiles[tile].add_enum("DDRDLL.FORCE_MAX_DELAY", @@ -1511,15 +1511,15 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex key = key.substr(prefix.length()); std::string value = setting.second.as_string(); if (key == "SLAVE_SPI_PORT" || key == "DONE_EX") { - cc.tiles[ctx->getTileByType("EFB0_PICB0")].add_enum("SYSCONFIG." + key, value); - cc.tiles[ctx->getTileByType("EFB2_PICB0")].add_enum("SYSCONFIG." + key, value); + cc.tiles[ctx->get_tile_by_type("EFB0_PICB0")].add_enum("SYSCONFIG." + key, value); + cc.tiles[ctx->get_tile_by_type("EFB2_PICB0")].add_enum("SYSCONFIG." + key, value); } else if (key == "SLAVE_PARALLEL_PORT" || key == "BACKGROUND_RECONFIG" || key == "WAKE_UP") { - cc.tiles[ctx->getTileByType("EFB0_PICB0")].add_enum("SYSCONFIG." + key, value); + cc.tiles[ctx->get_tile_by_type("EFB0_PICB0")].add_enum("SYSCONFIG." + key, value); } else if (key == "MASTER_SPI_PORT") { - cc.tiles[ctx->getTileByType("EFB1_PICB1")].add_enum("SYSCONFIG." + key, value); + cc.tiles[ctx->get_tile_by_type("EFB1_PICB1")].add_enum("SYSCONFIG." + key, value); } else if (key == "TRANSFR") { - cc.tiles[ctx->getTileByType("EFB0_PICB0")].add_enum("SYSCONFIG." + key, value); - cc.tiles[ctx->getTileByType("EFB1_PICB1")].add_enum("SYSCONFIG." + key, value); + cc.tiles[ctx->get_tile_by_type("EFB0_PICB0")].add_enum("SYSCONFIG." + key, value); + cc.tiles[ctx->get_tile_by_type("EFB1_PICB1")].add_enum("SYSCONFIG." + key, value); } else { cc.sysconfig[key] = value; } diff --git a/ecp5/globals.cc b/ecp5/globals.cc index 478e5fac..1a0b7f2f 100644 --- a/ecp5/globals.cc +++ b/ecp5/globals.cc @@ -115,17 +115,17 @@ class Ecp5GlobalRouter PipId find_tap_pip(WireId tile_glb) { - std::string wireName = ctx->getWireBasename(tile_glb).str(ctx); + std::string wireName = ctx->get_wire_basename(tile_glb).str(ctx); std::string glbName = wireName.substr(2); - TapDirection td = ctx->globalInfoAtLoc(tile_glb.location).tap_dir; + TapDirection td = ctx->global_info_at_loc(tile_glb.location).tap_dir; WireId tap_wire; Location tap_loc; - tap_loc.x = ctx->globalInfoAtLoc(tile_glb.location).tap_col; + tap_loc.x = ctx->global_info_at_loc(tile_glb.location).tap_col; tap_loc.y = tile_glb.location.y; if (td == TAP_DIR_LEFT) { - tap_wire = ctx->getWireByLocAndBasename(tap_loc, "L_" + glbName); + tap_wire = ctx->get_wire_by_loc_basename(tap_loc, "L_" + glbName); } else { - tap_wire = ctx->getWireByLocAndBasename(tap_loc, "R_" + glbName); + tap_wire = ctx->get_wire_by_loc_basename(tap_loc, "R_" + glbName); } NPNR_ASSERT(tap_wire != WireId()); return *(ctx->getPipsUphill(tap_wire).begin()); @@ -133,11 +133,11 @@ class Ecp5GlobalRouter PipId find_spine_pip(WireId tap_wire) { - std::string wireName = ctx->getWireBasename(tap_wire).str(ctx); + std::string wireName = ctx->get_wire_basename(tap_wire).str(ctx); Location spine_loc; - spine_loc.x = ctx->globalInfoAtLoc(tap_wire.location).spine_col; - spine_loc.y = ctx->globalInfoAtLoc(tap_wire.location).spine_row; - WireId spine_wire = ctx->getWireByLocAndBasename(spine_loc, wireName); + spine_loc.x = ctx->global_info_at_loc(tap_wire.location).spine_col; + spine_loc.y = ctx->global_info_at_loc(tap_wire.location).spine_row; + WireId spine_wire = ctx->get_wire_by_loc_basename(spine_loc, wireName); return *(ctx->getPipsUphill(spine_wire).begin()); } @@ -162,7 +162,7 @@ class Ecp5GlobalRouter break; } - if (ctx->getWireBasename(next) == global_name) { + if (ctx->get_wire_basename(next) == global_name) { globalWire = next; break; } @@ -212,7 +212,7 @@ class Ecp5GlobalRouter bool is_global_io(CellInfo *io, std::string &glb_name) { - std::string func_name = ctx->getPioFunctionName(io->bel); + std::string func_name = ctx->get_pio_function_name(io->bel); if (func_name.substr(0, 5) == "PCLKT") { func_name.erase(func_name.find('_'), 1); glb_name = "G_" + func_name; @@ -223,8 +223,8 @@ class Ecp5GlobalRouter WireId get_global_wire(GlobalQuadrant quad, int network) { - return ctx->getWireByLocAndBasename(Location(0, 0), - "G_" + get_quad_name(quad) + "PCLK" + std::to_string(network)); + return ctx->get_wire_by_loc_basename(Location(0, 0), + "G_" + get_quad_name(quad) + "PCLK" + std::to_string(network)); } bool simple_router(NetInfo *net, WireId src, WireId dst, bool allow_fail = false) @@ -385,7 +385,7 @@ class Ecp5GlobalRouter WireId dcc_mux = ctx->getPipSrcWire(*(ctx->getPipsUphill(dcc_i).begin())); for (auto pip : ctx->getPipsUphill(dcc_mux)) { WireId src = ctx->getPipSrcWire(pip); - std::string basename = ctx->nameOf(ctx->getWireBasename(src)); + std::string basename = ctx->nameOf(ctx->get_wire_basename(src)); if (basename.find("QPCLKCIB") == std::string::npos) continue; candidates.insert(src); @@ -404,7 +404,7 @@ class Ecp5GlobalRouter for (auto bel : ctx->getBels()) { if (ctx->getBelType(bel) == id_DCCA && ctx->checkBelAvail(bel)) { if (ctx->isValidBelForCell(dcc, bel)) { - std::string belname = ctx->locInfo(bel)->bel_data[bel.index].name.get(); + std::string belname = ctx->loc_info(bel)->bel_data[bel.index].name.get(); if (belname.at(0) == 'D' && using_ce) continue; // don't allow DCCs with CE at center ctx->bindBel(bel, dcc, STRENGTH_LOCKED); @@ -624,7 +624,7 @@ class Ecp5GlobalRouter WireId src = ctx->getPipSrcWire(uh); if (backtrace.count(src)) continue; - IdString basename = ctx->getWireBasename(src); + IdString basename = ctx->get_wire_basename(src); // "ECLKCIB" wires are the junction with general routing if (basename.str(ctx).find("ECLKCIB") != std::string::npos) continue; diff --git a/ecp5/lpf.cc b/ecp5/lpf.cc index 8b972380..c12b65c4 100644 --- a/ecp5/lpf.cc +++ b/ecp5/lpf.cc @@ -36,7 +36,7 @@ static const std::unordered_set<std::string> iobuf_keys = { "CLAMP", "OPENDRAIN", "DIFFRESISTOR", "DIFFDRIVE", "HYSTERESIS", "TERMINATION", }; -bool Arch::applyLPF(std::string filename, std::istream &in) +bool Arch::apply_lpf(std::string filename, std::istream &in) { auto isempty = [](const std::string &str) { return std::all_of(str.begin(), str.end(), [](char c) { return isblank(c) || c == '\r' || c == '\n'; }); diff --git a/ecp5/main.cc b/ecp5/main.cc index 311f5401..5d9fc965 100644 --- a/ecp5/main.cc +++ b/ecp5/main.cc @@ -49,25 +49,25 @@ ECP5CommandHandler::ECP5CommandHandler(int argc, char **argv) : CommandHandler(a po::options_description ECP5CommandHandler::getArchOptions() { po::options_description specific("Architecture specific options"); - if (Arch::isAvailable(ArchArgs::LFE5U_12F)) + if (Arch::is_available(ArchArgs::LFE5U_12F)) specific.add_options()("12k", "set device type to LFE5U-12F"); - if (Arch::isAvailable(ArchArgs::LFE5U_25F)) + if (Arch::is_available(ArchArgs::LFE5U_25F)) specific.add_options()("25k", "set device type to LFE5U-25F"); - if (Arch::isAvailable(ArchArgs::LFE5U_45F)) + if (Arch::is_available(ArchArgs::LFE5U_45F)) specific.add_options()("45k", "set device type to LFE5U-45F"); - if (Arch::isAvailable(ArchArgs::LFE5U_85F)) + if (Arch::is_available(ArchArgs::LFE5U_85F)) specific.add_options()("85k", "set device type to LFE5U-85F"); - if (Arch::isAvailable(ArchArgs::LFE5UM_25F)) + if (Arch::is_available(ArchArgs::LFE5UM_25F)) specific.add_options()("um-25k", "set device type to LFE5UM-25F"); - if (Arch::isAvailable(ArchArgs::LFE5UM_45F)) + if (Arch::is_available(ArchArgs::LFE5UM_45F)) specific.add_options()("um-45k", "set device type to LFE5UM-45F"); - if (Arch::isAvailable(ArchArgs::LFE5UM_85F)) + if (Arch::is_available(ArchArgs::LFE5UM_85F)) specific.add_options()("um-85k", "set device type to LFE5UM-85F"); - if (Arch::isAvailable(ArchArgs::LFE5UM5G_25F)) + if (Arch::is_available(ArchArgs::LFE5UM5G_25F)) specific.add_options()("um5g-25k", "set device type to LFE5UM5G-25F"); - if (Arch::isAvailable(ArchArgs::LFE5UM5G_45F)) + if (Arch::is_available(ArchArgs::LFE5UM5G_45F)) specific.add_options()("um5g-45k", "set device type to LFE5UM5G-45F"); - if (Arch::isAvailable(ArchArgs::LFE5UM5G_85F)) + if (Arch::is_available(ArchArgs::LFE5UM5G_85F)) specific.add_options()("um5g-85k", "set device type to LFE5UM5G-85F"); specific.add_options()("package", po::value<std::string>(), "select device package (defaults to CABGA381)"); @@ -266,7 +266,7 @@ void ECP5CommandHandler::customAfterLoad(Context *ctx) std::ifstream in(filename); if (!in) log_error("failed to open LPF file '%s'\n", filename.c_str()); - if (!ctx->applyLPF(filename, in)) + if (!ctx->apply_lpf(filename, in)) log_error("failed to parse LPF file '%s'\n", filename.c_str()); } diff --git a/ecp5/pack.cc b/ecp5/pack.cc index ed2dfc29..60038473 100644 --- a/ecp5/pack.cc +++ b/ecp5/pack.cc @@ -516,7 +516,7 @@ class Ecp5Packer auto loc_attr = trio->attrs.find(ctx->id("LOC")); if (loc_attr != trio->attrs.end()) { std::string pin = loc_attr->second.as_string(); - BelId pinBel = ctx->getPackagePinBel(pin); + BelId pinBel = ctx->get_package_pin_bel(pin); if (pinBel == BelId()) { log_error("IO pin '%s' constrained to pin '%s', which does not exist for package '%s'.\n", trio->name.c_str(ctx), pin.c_str(), ctx->args.package.c_str()); @@ -1815,7 +1815,7 @@ class Ecp5Packer for (auto bel : ctx->getBels()) { if (ctx->getBelType(bel) != id_TRELLIS_ECLKBUF) continue; - if (ctx->getWireBasename(ctx->getBelPinWire(bel, id_ECLKO)) != eclkname) + if (ctx->get_wire_basename(ctx->getBelPinWire(bel, id_ECLKO)) != eclkname) continue; target_bel = bel; break; @@ -1854,7 +1854,7 @@ class Ecp5Packer upstream.pop(); if (ctx->debug) log_info(" visited %s\n", ctx->nameOfWire(next)); - IdString basename = ctx->getWireBasename(next); + IdString basename = ctx->get_wire_basename(next); if (basename == bnke_name || basename == global_name) { break; } @@ -1925,7 +1925,8 @@ class Ecp5Packer log_error("PIO '%s' does not appear to be a DQS site (didn't find a DQSBUFM).\n", ctx->nameOfBel(pio_bel)); ci->attrs[ctx->id("BEL")] = ctx->getBelName(dqsbuf).str(ctx); - bool got_dqsg = ctx->getPIODQSGroup(pio_bel, dqsbuf_dqsg[ci->name].first, dqsbuf_dqsg[ci->name].second); + bool got_dqsg = + ctx->get_pio_dqs_group(pio_bel, dqsbuf_dqsg[ci->name].first, dqsbuf_dqsg[ci->name].second); NPNR_ASSERT(got_dqsg); log_info("Constrained DQSBUFM '%s' to %cDQS%d\n", ci->name.c_str(ctx), dqsbuf_dqsg[ci->name].first ? 'R' : 'L', dqsbuf_dqsg[ci->name].second); @@ -2118,7 +2119,7 @@ class Ecp5Packer } else { bool dqsr; int dqsgroup; - bool has_dqs = ctx->getPIODQSGroup(get_pio_bel(pio, prim), dqsr, dqsgroup); + bool has_dqs = ctx->get_pio_dqs_group(get_pio_bel(pio, prim), dqsr, dqsgroup); if (!has_dqs) log_error("Primitive '%s' cannot be connected to top level port '%s' as the associated pin is not " "in any DQS group", @@ -2645,7 +2646,7 @@ class Ecp5Packer pioLoc.z -= 4; BelId pioBel = ctx->getBelByLocation(pioLoc); NPNR_ASSERT(pioBel != BelId()); - int bank = ctx->getPioBelBank(pioBel); + int bank = ctx->get_pio_bel_bank(pioBel); make_eclk(ci->ports.at(id_ECLK), ci, bel, bank); } } |