aboutsummaryrefslogtreecommitdiffstats
path: root/json
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2019-06-03 21:01:05 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2019-06-03 21:01:05 +0200
commit44d6f16b66e5f7b89e8cf5711744d6e5f6a40b4a (patch)
tree1cf8d31f6e9b59a2535e1bae8d1d5f45996b9572 /json
parent82ed1803c726e912730c3053179f179b90c9b694 (diff)
downloadnextpnr-44d6f16b66e5f7b89e8cf5711744d6e5f6a40b4a.tar.gz
nextpnr-44d6f16b66e5f7b89e8cf5711744d6e5f6a40b4a.tar.bz2
nextpnr-44d6f16b66e5f7b89e8cf5711744d6e5f6a40b4a.zip
Support ecp5 read write additional cell info
Diffstat (limited to 'json')
-rw-r--r--json/jsonwrite.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/json/jsonwrite.cc b/json/jsonwrite.cc
index e62a7d2a..9f29d510 100644
--- a/json/jsonwrite.cc
+++ b/json/jsonwrite.cc
@@ -89,6 +89,19 @@ void write_constraints(std::ostream &f, Context *ctx, CellInfo *cell, bool first
constr += std::to_string(cell->constr_z) + ";";
constr += std::to_string(cell->constr_abs_z ? 1:0) + ";";
constr += cell->constr_parent!=nullptr ? cell->constr_parent->name.c_str(ctx) : "";
+#ifdef ARCH_ECP5
+ constr += ";";
+ constr += std::to_string(cell->sliceInfo.using_dff ? 1:0) + ";";
+ constr += std::to_string(cell->sliceInfo.has_l6mux ? 1:0) + ";";
+ constr += std::to_string(cell->sliceInfo.is_carry ? 1:0) + ";";
+ constr += std::string(cell->sliceInfo.clk_sig.c_str(ctx)) + ";";
+ constr += std::string(cell->sliceInfo.lsr_sig.c_str(ctx)) + ";";
+ constr += std::string(cell->sliceInfo.clkmux.c_str(ctx)) + ";";
+ constr += std::string(cell->sliceInfo.lsrmux.c_str(ctx)) + ";";
+ constr += std::string(cell->sliceInfo.srmode.c_str(ctx)) + ";";
+ constr += std::to_string(cell->sliceInfo.sd0) + ";";
+ constr += std::to_string(cell->sliceInfo.sd1) + ";";
+#endif
f << stringf("%s\n", first ? "" : ",");
f << stringf(" \"NEXTPNR_CONSTRAINT\": ");
f << get_string(constr);