mirror of https://github.com/YosysHQ/nextpnr.git
resource bugfix
This commit is contained in:
parent
430325f7db
commit
0a763dd799
|
|
@ -265,17 +265,27 @@ struct Router2
|
||||||
// should we have a getResources()???
|
// should we have a getResources()???
|
||||||
for (auto pip : ctx->getPips()) {
|
for (auto pip : ctx->getPips()) {
|
||||||
auto resource_key = ctx->getResourceKeyForPip(pip);
|
auto resource_key = ctx->getResourceKeyForPip(pip);
|
||||||
if (resource_key == IdStringList() || resource_to_idx.count(resource_key) != 0)
|
if (resource_key == IdStringList())
|
||||||
continue;
|
continue;
|
||||||
auto data = PerResourceData{};
|
|
||||||
data.key = resource_key;
|
auto entry = resource_to_idx.find(resource_key);
|
||||||
resource_to_idx.insert({resource_key, flat_resources.size()});
|
|
||||||
|
if (entry == resource_to_idx.end()) {
|
||||||
|
auto data = PerResourceData{};
|
||||||
|
data.key = resource_key;
|
||||||
|
resource_to_idx.insert({resource_key, flat_resources.size()});
|
||||||
|
flat_resources.push_back(data);
|
||||||
|
|
||||||
|
entry = resource_to_idx.find(resource_key);
|
||||||
|
}
|
||||||
|
|
||||||
auto dest_wire = ctx->getPipDstWire(pip);
|
auto dest_wire = ctx->getPipDstWire(pip);
|
||||||
if (wire_to_resource.count(dest_wire) == 0)
|
if (wire_to_resource.count(dest_wire) == 0)
|
||||||
wire_to_resource.insert({dest_wire, flat_resources.size()});
|
wire_to_resource.insert({dest_wire, entry->second});
|
||||||
|
|
||||||
flat_resources.push_back(data);
|
/*auto src_wire = ctx->getPipSrcWire(pip);
|
||||||
|
if (wire_to_resource.count(src_wire) == 0)
|
||||||
|
wire_to_resource.insert({src_wire, entry->second});*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -481,8 +491,9 @@ struct Router2
|
||||||
resource_hist_cost = 1.0f + crit_weight * (rd.hist_cong_cost - 1.0f);
|
resource_hist_cost = 1.0f + crit_weight * (rd.hist_cong_cost - 1.0f);
|
||||||
resource_present_cost = 1.0f + rd.value_count.size() * curr_cong_weight * crit_weight;
|
resource_present_cost = 1.0f + rd.value_count.size() * curr_cong_weight * crit_weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
return base_cost * hist_cost * present_cost / (1 + (source_uses * crit_weight)) + bias_cost +
|
return base_cost * hist_cost * present_cost / (1 + (source_uses * crit_weight)) + bias_cost +
|
||||||
resource_hist_cost * resource_present_cost;
|
base_cost * resource_hist_cost * resource_present_cost / (1 + crit_weight);
|
||||||
}
|
}
|
||||||
|
|
||||||
float get_togo_cost(NetInfo *net, store_index<PortRef> user, int wire, WireId src_sink, bool bwd, float crit_weight)
|
float get_togo_cost(NetInfo *net, store_index<PortRef> user, int wire, WireId src_sink, bool bwd, float crit_weight)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue