1
0
mirror of https://github.com/YosysHQ/nextpnr.git synced 2026-04-20 01:33:19 +00:00

Merge pull request #822 from YosysHQ/gatecat/nexus-split-vcc

nexus: Support for split Vcc routing
This commit is contained in:
gatecat
2021-09-23 13:04:04 +01:00
committed by GitHub
3 changed files with 7 additions and 0 deletions

View File

@@ -591,6 +591,9 @@ delay_t Arch::getRipupDelayPenalty() const { return 250; }
delay_t Arch::estimateDelay(WireId src, WireId dst) const
{
const auto &dst_data = wire_data(dst);
if (src.tile == 0 && dst_data.name == ID_LOCAL_VCC)
return 0;
int src_x = src.tile % chip_info->width, src_y = src.tile / chip_info->width;
int dst_x = dst.tile % chip_info->width, dst_y = dst.tile / chip_info->width;
int dist_x = std::abs(src_x - dst_x);

View File

@@ -528,3 +528,5 @@ X(TOUT)
X(Q0)
X(Q1)
X(SCLK)
X(LOCAL_VCC)

View File

@@ -211,6 +211,8 @@ struct NexusFasmWriter
return;
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));
if (source_wire == "LOCAL_VCC")
source_wire = "G__VCC";
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;
}