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
commit 24f13ec942
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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;
}