diff options
Diffstat (limited to 'fpga_interchange/fpga_interchange_archdefs.h')
-rw-r--r-- | fpga_interchange/fpga_interchange_archdefs.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/fpga_interchange/fpga_interchange_archdefs.h b/fpga_interchange/fpga_interchange_archdefs.h new file mode 100644 index 00000000..5495505b --- /dev/null +++ b/fpga_interchange/fpga_interchange_archdefs.h @@ -0,0 +1,87 @@ +#include <cstdint> + +typedef int delay_t; + +struct DelayInfo +{ + delay_t delay = 0; + + delay_t minRaiseDelay() const { return delay; } + delay_t maxRaiseDelay() const { return delay; } + + delay_t minFallDelay() const { return delay; } + delay_t maxFallDelay() const { return delay; } + + delay_t minDelay() const { return delay; } + delay_t maxDelay() const { return delay; } + + DelayInfo operator+(const DelayInfo &other) const + { + DelayInfo ret; + ret.delay = this->delay + other.delay; + return ret; + } +}; + +struct BelId +{ + // Tile that contains this BEL. + int32_t tile = -1; + // Index into tile type BEL array. + // BEL indicies are the same for all tiles of the same type. + int32_t index = -1; + + bool operator==(const BelId &other) const { return tile == other.tile && index == other.index; } + bool operator!=(const BelId &other) const { return tile != other.tile || index != other.index; } + bool operator<(const BelId &other) const + { + return tile < other.tile || (tile == other.tile && index < other.index); + } +}; + +struct WireId +{ + // Tile that contains this wire. + int32_t tile = -1; + int32_t index = -1; + + bool operator==(const WireId &other) const { return tile == other.tile && index == other.index; } + bool operator!=(const WireId &other) const { return tile != other.tile || index != other.index; } + bool operator<(const WireId &other) const + { + return tile < other.tile || (tile == other.tile && index < other.index); + } +}; + +struct PipId +{ + int32_t tile = -1; + int32_t index = -1; + + bool operator==(const PipId &other) const { return tile == other.tile && index == other.index; } + bool operator!=(const PipId &other) const { return tile != other.tile || index != other.index; } + bool operator<(const PipId &other) const + { + return tile < other.tile || (tile == other.tile && index < other.index); + } +}; + +struct GroupId +{ +}; + +struct DecalId +{ +}; + +struct ArchNetInfo +{ +}; + +struct NetInfo +{ +}; + +struct ArchCellInfo +{ +}; |