diff --git a/xc7/arch.cc b/xc7/arch.cc index b3c302a3..bb569d16 100644 --- a/xc7/arch.cc +++ b/xc7/arch.cc @@ -138,6 +138,7 @@ TorcInfo::TorcInfo(BaseCtx *ctx, const std::string &inDeviceName, const std::str const boost::regex re_CLB_I1_6("CLBL[LM]_(L|LL|M)_[A-D]([1-6])"); const boost::regex bufg_i("CLK_BUFG_BUFGCTRL\\d+_I0"); const boost::regex bufg_o("CLK_BUFG_BUFGCTRL\\d+_O"); + const boost::regex hrow("CLK_HROW_CLK[01]_[34]"); std::unordered_map> delay_lookup; std::unordered_map segment_to_anchor; Tilewire currentTilewire; @@ -322,6 +323,13 @@ TorcInfo::TorcInfo(BaseCtx *ctx, const std::string &inDeviceName, const std::str } } + // Disable entering HROW from INT_[LR].CLK[01] + if (boost::starts_with(tileTypeName, "CLK_HROW")) { + ewi.set(a.getSourceTilewire()); + if (boost::regex_match(ewi.mWireName, hrow)) + continue; + } + pips.emplace_back(p); pip_to_arc.emplace_back(a); // arc_to_pip.emplace(a, p.index);