aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-07-24 12:39:33 +0200
committerClifford Wolf <clifford@clifford.at>2018-07-24 12:39:33 +0200
commit1538d26073911e6969bca8cbcff3da09891a846b (patch)
tree063b681cb6584da8bf832fb6b3124b892d76209d
parentc06bca07134b8b52733b025d19fd26910cd9a4e3 (diff)
downloadnextpnr-1538d26073911e6969bca8cbcff3da09891a846b.tar.gz
nextpnr-1538d26073911e6969bca8cbcff3da09891a846b.tar.bz2
nextpnr-1538d26073911e6969bca8cbcff3da09891a846b.zip
Add CellInfo data for placement constraints
Signed-off-by: Clifford Wolf <clifford@clifford.at>
-rw-r--r--common/nextpnr.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/common/nextpnr.h b/common/nextpnr.h
index 3ba4f3b3..ca0854e5 100644
--- a/common/nextpnr.h
+++ b/common/nextpnr.h
@@ -273,6 +273,16 @@ struct CellInfo : ArchCellInfo
// cell_port -> bel_pin
std::unordered_map<IdString, IdString> pins;
+
+ // placement constraints
+ CellInfo *constr_parent;
+ stdL::vector<CellInfo*> constr_children;
+ const int UNCONSTR = INT_MIN;
+ int constr_x = UNCONSTR; // this.x - parent.x
+ int constr_y = UNCONSTR; // this.y - parent.y
+ int constr_z = UNCONSTR; // this.z - parent.z
+ bool constr_abs_z = false; // parent.z := 0
+ // parent.[xyz] := 0 when (constr_parent == nullptr)
};
struct DeterministicRNG