diff options
author | William D. Jones <thor0505@comcast.net> | 2020-12-06 22:06:24 -0500 |
---|---|---|
committer | gatecat <gatecat@ds0.me> | 2021-02-12 10:36:59 +0000 |
commit | 3e6be4bbfd3be2bb57075d8b76ba239ff6a0ee54 (patch) | |
tree | d1454dffb085fccb026636d8e05d1e90c51857b1 | |
parent | 094233a4ab49245d8fbdbae83f3241ff3c6585b0 (diff) | |
download | nextpnr-3e6be4bbfd3be2bb57075d8b76ba239ff6a0ee54.tar.gz nextpnr-3e6be4bbfd3be2bb57075d8b76ba239ff6a0ee54.tar.bz2 nextpnr-3e6be4bbfd3be2bb57075d8b76ba239ff6a0ee54.zip |
machxo2: Implement General Methods.
-rw-r--r-- | machxo2/arch.cc | 19 | ||||
-rw-r--r-- | machxo2/arch.h | 14 |
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; |