Add archArgs and archArgsToId to Arch API

Signed-off-by: D. Shah <dave@ds0.me>
This commit is contained in:
D. Shah 2021-02-05 18:41:35 +00:00
parent 6575bfac3e
commit 3e631fe2f4
7 changed files with 27 additions and 11 deletions

View File

@ -1070,6 +1070,8 @@ template <typename R> struct ArchAPI : BaseCtx
// Basic config
virtual IdString archId() const = 0;
virtual std::string getChipName() const = 0;
virtual typename R::ArchArgsType archArgs() const = 0;
virtual IdString archArgsToId(typename R::ArchArgsType args) const = 0;
virtual int getGridDimX() const = 0;
virtual int getGridDimY() const = 0;
virtual int getTileBelDimZ(int x, int y) const = 0;
@ -1181,6 +1183,7 @@ template <typename R> struct BaseArch : ArchAPI<R>
// Basic config
virtual IdString archId() const override { return this->id(STRINGIFY(ARCHNAME)); }
virtual IdString archArgsToId(typename R::ArchArgsType args) const { return IdString(); }
virtual int getTilePipDimZ(int x, int y) const override { return 1; }
virtual char getNameDelimiter() const override { return ' '; }

View File

@ -74,7 +74,15 @@ Constructor. ArchArgs is a architecture-specific type (usually a struct also def
### std::string getChipName() const
Return a string representation of the ArchArgs that was used to construct this object.
Return a user-friendly string representation of the ArchArgs that was used to construct this object.
### ArchArgs archArgs() const
Return the `ArchArgs` used to construct this object.
### IdString archArgsToId(ArchArgs args) const
Return an internal IdString representation of the ArchArgs that was used to construct this object.
### int getGridDimX() const

View File

@ -437,6 +437,7 @@ NEXTPNR_NAMESPACE_BEGIN
struct ArchRanges
{
using ArchArgsType = ArchArgs;
// Bels
using AllBelsRange = BelRange;
using TileBelsRange = BelRange;
@ -490,8 +491,8 @@ struct Arch : BaseArch<ArchRanges>
std::string getChipName() const override;
std::string get_full_chip_name() const;
ArchArgs archArgs() const { return args; }
IdString archArgsToId(ArchArgs args) const;
ArchArgs archArgs() const override { return args; }
IdString archArgsToId(ArchArgs args) const override;
// -------------------------------------------------

View File

@ -118,6 +118,7 @@ struct CellTiming
struct ArchRanges
{
using ArchArgsType = ArchArgs;
// Bels
using AllBelsRange = const std::vector<BelId> &;
using TileBelsRange = const std::vector<BelId> &;
@ -213,8 +214,8 @@ struct Arch : ArchAPI<ArchRanges>
std::string getChipName() const override { return chipName; }
IdString archId() const override { return id("generic"); }
ArchArgs archArgs() const { return args; }
IdString archArgsToId(ArchArgs args) const { return id("none"); }
ArchArgs archArgs() const override { return args; }
IdString archArgsToId(ArchArgs args) const override { return id("none"); }
int getGridDimX() const override { return gridDimX; }
int getGridDimY() const override { return gridDimY; }

View File

@ -245,6 +245,7 @@ struct CellTiming
struct ArchRanges
{
using ArchArgsType = ArchArgs;
// Bels
using AllBelsRange = const std::vector<BelId> &;
using TileBelsRange = const std::vector<BelId> &;
@ -345,8 +346,8 @@ struct Arch : BaseArch<ArchRanges>
std::string getChipName() const override { return device; }
ArchArgs archArgs() const { return args; }
IdString archArgsToId(ArchArgs args) const { return id("none"); }
ArchArgs archArgs() const override { return args; }
IdString archArgsToId(ArchArgs args) const override { return id("none"); }
int getGridDimX() const override { return gridDimX; }
int getGridDimY() const override { return gridDimY; }

View File

@ -376,6 +376,7 @@ struct ArchArgs
struct ArchRanges
{
using ArchArgsType = ArchArgs;
// Bels
using AllBelsRange = BelRange;
using TileBelsRange = BelRange;
@ -434,8 +435,8 @@ struct Arch : BaseArch<ArchRanges>
std::string getChipName() const override;
ArchArgs archArgs() const { return args; }
IdString archArgsToId(ArchArgs args) const;
ArchArgs archArgs() const override { return args; }
IdString archArgsToId(ArchArgs args) const override;
// -------------------------------------------------

View File

@ -857,6 +857,7 @@ struct ArchArgs
struct ArchRanges
{
using ArchArgsType = ArchArgs;
// Bels
using AllBelsRange = BelRange;
using TileBelsRange = std::vector<BelId>;
@ -934,8 +935,8 @@ struct Arch : BaseArch<ArchRanges>
std::string getChipName() const override;
ArchArgs archArgs() const { return args; }
IdString archArgsToId(ArchArgs args) const;
ArchArgs archArgs() const override { return args; }
IdString archArgsToId(ArchArgs args) const override;
int getGridDimX() const override { return chip_info->width; }
int getGridDimY() const override { return chip_info->height; }