Merge pull request #220 from YosysHQ/coi3

ice40: Add budget override for CO->I3 path
This commit is contained in:
Eddie Hung 2019-01-29 11:22:31 -08:00 committed by GitHub
commit 6d664046d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -594,26 +594,29 @@ std::vector<GroupId> Arch::getGroupGroups(GroupId group) const
bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay_t &budget) const bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay_t &budget) const
{ {
const auto &driver = net_info->driver; const auto &driver = net_info->driver;
if (driver.port == id_COUT && sink.port == id_CIN) { if (driver.port == id_COUT) {
if (driver.cell->constr_abs_z && driver.cell->constr_z < 7) NPNR_ASSERT(sink.port == id_CIN || sink.port == id_I3);
NPNR_ASSERT(driver.cell->constr_abs_z);
bool cin = sink.port == id_CIN;
bool same_y = driver.cell->constr_z < 7;
if (cin && same_y)
budget = 0; budget = 0;
else { else {
NPNR_ASSERT(driver.cell->constr_z == 7);
switch (args.type) { switch (args.type) {
#ifndef ICE40_HX1K_ONLY #ifndef ICE40_HX1K_ONLY
case ArchArgs::HX8K: case ArchArgs::HX8K:
#endif #endif
case ArchArgs::HX1K: case ArchArgs::HX1K:
budget = 190; budget = cin ? 190 : (same_y ? 260 : 560);
break; break;
#ifndef ICE40_HX1K_ONLY #ifndef ICE40_HX1K_ONLY
case ArchArgs::LP384: case ArchArgs::LP384:
case ArchArgs::LP1K: case ArchArgs::LP1K:
case ArchArgs::LP8K: case ArchArgs::LP8K:
budget = 290; budget = cin ? 290 : (same_y ? 380 : 670);
break; break;
case ArchArgs::UP5K: case ArchArgs::UP5K:
budget = 560; budget = cin ? 560 : (same_y ? 660 : 1220);
break; break;
#endif #endif
default: default: