diff --git a/nexus/constids.inc b/nexus/constids.inc index 596d064cb5..19f34523c8 100644 --- a/nexus/constids.inc +++ b/nexus/constids.inc @@ -510,6 +510,9 @@ X(U2END2) X(U3END3) X(UED0THEN) X(URXCKINE) +X(UCENCK) +X(U3TDE5CK) +X(UTXCKE) X(GENERAL) diff --git a/nexus/global.cc b/nexus/global.cc index 0792715dbd..ec6f66a280 100644 --- a/nexus/global.cc +++ b/nexus/global.cc @@ -166,8 +166,8 @@ struct NexusGlobalRouter bool is_relaxed_sink(const PortRef &sink) const { - // This DPHY clock port can't be routed without going through some general routing - if (sink.cell->type == id_DPHY_CORE && sink.port == id_URXCKINE) + // These DPHY clock ports can't be routed without going through some general routing + if (sink.cell->type == id_DPHY_CORE && sink.port.in(id_URXCKINE, id_UCENCK, id_UTXCKE, id_U3TDE5CK)) return true; // Cases where global clocks are driving fabric if ((sink.cell->type == id_OXIDE_COMB && sink.port != id_WCK) || diff --git a/nexus/pack.cc b/nexus/pack.cc index 4ebe68d1f1..d41766dc51 100644 --- a/nexus/pack.cc +++ b/nexus/pack.cc @@ -82,19 +82,22 @@ Property Arch::parse_lattice_param(const Property &val, IdString prop, int width } temp = Property(ival); } - - for (auto b : temp.str.substr(width)) { - if (b == Property::S1) - log_error("Found value for property %s.%s with width greater than %d\n", ci, nameOf(prop), width); + if (int(temp.size()) > width) { + for (auto b : temp.str.substr(width)) { + if (b == Property::S1) + log_error("Found value for property %s.%s with width greater than %d\n", ci, nameOf(prop), width); + } } temp.update_intval(); return temp.extract(0, width); } else { - for (auto b : val.str.substr(width)) { - if (b == Property::S1) - log_error("Found bitvector value for property %s.%s with width greater than %d - perhaps a string was " - "converted to bits?\n", - ci, nameOf(prop), width); + if (int(val.str.size()) > width) { + for (auto b : val.str.substr(width)) { + if (b == Property::S1) + log_error("Found bitvector value for property %s.%s with width greater than %d - perhaps a string was " + "converted to bits?\n", + ci, nameOf(prop), width); + } } return val.extract(0, width); }