aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam D. Jones <thor0505@comcast.net>2020-12-06 22:06:24 -0500
committergatecat <gatecat@ds0.me>2021-02-12 10:36:59 +0000
commit3e6be4bbfd3be2bb57075d8b76ba239ff6a0ee54 (patch)
treed1454dffb085fccb026636d8e05d1e90c51857b1
parent094233a4ab49245d8fbdbae83f3241ff3c6585b0 (diff)
downloadnextpnr-3e6be4bbfd3be2bb57075d8b76ba239ff6a0ee54.tar.gz
nextpnr-3e6be4bbfd3be2bb57075d8b76ba239ff6a0ee54.tar.bz2
nextpnr-3e6be4bbfd3be2bb57075d8b76ba239ff6a0ee54.zip
machxo2: Implement General Methods.
-rw-r--r--machxo2/arch.cc19
-rw-r--r--machxo2/arch.h14
2 files changed, 28 insertions, 5 deletions
diff --git a/machxo2/arch.cc b/machxo2/arch.cc
index dccbcb87..821fb7e7 100644
--- a/machxo2/arch.cc
+++ b/machxo2/arch.cc
@@ -109,6 +109,25 @@ std::string Arch::getChipName() const
}
}
+IdString Arch::archArgsToId(ArchArgs args) const
+{
+ if (args.type == ArchArgs::LCMXO2_256HC) {
+ return id("lcmxo2_256hc");
+ } else if (args.type == ArchArgs::LCMXO2_640HC) {
+ return id("lcmxo2_640hc");
+ } else if (args.type == ArchArgs::LCMXO2_1200HC) {
+ return id("lcmxo2_1200hc");
+ } else if (args.type == ArchArgs::LCMXO2_2000HC) {
+ return id("lcmxo2_2000hc");
+ } else if (args.type == ArchArgs::LCMXO2_4000HC) {
+ return id("lcmxo2_4000hc");
+ } else if (args.type == ArchArgs::LCMXO2_7000HC) {
+ return id("lcmxo2_7000hc");
+ }
+
+ return IdString();
+}
+
// ---------------------------------------------------------------
BelId Arch::getBelByName(IdString name) const
diff --git a/machxo2/arch.h b/machxo2/arch.h
index 527c6572..c6aae931 100644
--- a/machxo2/arch.h
+++ b/machxo2/arch.h
@@ -339,12 +339,16 @@ struct Arch : BaseCtx
IdString archId() const { return id("machxo2"); }
ArchArgs archArgs() const { return args; }
- IdString archArgsToId(ArchArgs args) const { return id("none"); }
+ IdString archArgsToId(ArchArgs args) const;
- int getGridDimX() const { return 0; }
- int getGridDimY() const { return 0; }
- int getTileBelDimZ(int x, int y) const { return 0; }
- int getTilePipDimZ(int x, int y) const { return 0; }
+ static const int max_loc_bels = 20;
+
+ int getGridDimX() const { return chip_info->width; }
+ int getGridDimY() const { return chip_info->height; }
+ int getTileBelDimZ(int x, int y) const { return max_loc_bels; }
+ // TODO: Make more precise? The CENTER MUX having config bits across
+ // tiles can complicate this?
+ int getTilePipDimZ(int x, int y) const { return 2; }
BelId getBelByName(IdString name) const;
IdString getBelName(BelId bel) const;