HeAP: Legaliser fixes
Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
parent
352f15e96b
commit
6cf001d355
@ -807,7 +807,7 @@ class HeAPPlacer
|
|||||||
|
|
||||||
if (ci->constr_children.empty() && !ci->constr_abs_z) {
|
if (ci->constr_children.empty() && !ci->constr_abs_z) {
|
||||||
for (auto sz : fb.at(nx).at(ny)) {
|
for (auto sz : fb.at(nx).at(ny)) {
|
||||||
if (ctx->checkBelAvail(sz) || radius > ripup_radius) {
|
if (ctx->checkBelAvail(sz) || (radius > ripup_radius || ctx->rng(20000) < 10)) {
|
||||||
CellInfo *bound = ctx->getBoundBelCell(sz);
|
CellInfo *bound = ctx->getBoundBelCell(sz);
|
||||||
if (bound != nullptr) {
|
if (bound != nullptr) {
|
||||||
if (bound->constr_parent != nullptr || !bound->constr_children.empty() ||
|
if (bound->constr_parent != nullptr || !bound->constr_children.empty() ||
|
||||||
@ -869,7 +869,7 @@ class HeAPPlacer
|
|||||||
visit.pop();
|
visit.pop();
|
||||||
BelId target = ctx->getBelByLocation(ploc);
|
BelId target = ctx->getBelByLocation(ploc);
|
||||||
CellInfo *bound;
|
CellInfo *bound;
|
||||||
if (target == BelId())
|
if (target == BelId() || ctx->getBelType(target) != vc->type)
|
||||||
goto fail;
|
goto fail;
|
||||||
bound = ctx->getBoundBelCell(target);
|
bound = ctx->getBoundBelCell(target);
|
||||||
// Chains cannot overlap
|
// Chains cannot overlap
|
||||||
|
Loading…
Reference in New Issue
Block a user