aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch.cc
diff options
context:
space:
mode:
authorRoss Schlaikjer <ross@schlaikjer.net>2020-04-29 11:08:53 -0400
committerRoss Schlaikjer <ross@schlaikjer.net>2020-04-29 11:08:53 -0400
commita4fa95374057d700a873be7687ed26a3dceae9ef (patch)
tree174dc81eb19c69802fb1773e16b5d539adbe1969 /ecp5/arch.cc
parent5e763b1afc2f966d794bc3fc6579ee1233f53a2c (diff)
downloadnextpnr-a4fa95374057d700a873be7687ed26a3dceae9ef.tar.gz
nextpnr-a4fa95374057d700a873be7687ed26a3dceae9ef.tar.bz2
nextpnr-a4fa95374057d700a873be7687ed26a3dceae9ef.zip
Use registered port class on mult18x18
Diffstat (limited to 'ecp5/arch.cc')
-rw-r--r--ecp5/arch.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index fa8dc242..a6ac9f84 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -940,10 +940,12 @@ TimingPortClass Arch::getPortTimingClass(const CellInfo *cell, IdString port, in
return TMG_CLOCK_INPUT;
std::string pname = port.str(this);
if (pname.size() > 1) {
- if ((pname.front() == 'A' || pname.front() == 'B') && std::isdigit(pname.at(1)))
- return TMG_COMB_INPUT;
+ if (pname.front() == 'A' && std::isdigit(pname.at(1)))
+ return cell->multInfo.is_in_a_registered ? TMG_REGISTER_INPUT : TMG_COMB_INPUT;
+ if (pname.front() == 'B' && std::isdigit(pname.at(1)))
+ return cell->multInfo.is_in_b_registered ? TMG_REGISTER_INPUT : TMG_COMB_INPUT;
if (pname.front() == 'P' && std::isdigit(pname.at(1)))
- return TMG_COMB_OUTPUT;
+ return cell->multInfo.is_output_registered ? TMG_REGISTER_OUTPUT : TMG_COMB_OUTPUT;
}
return TMG_IGNORE;
} else if (cell->type == id_ALU54B) {