aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith Rothman <537074+litghost@users.noreply.github.com>2021-01-28 09:28:40 -0800
committerKeith Rothman <537074+litghost@users.noreply.github.com>2021-02-04 16:38:33 -0800
commit67dc19bb579a1edcd1145f910e54c5baf2fa3cb6 (patch)
treef4e69c79d66e5376a8864605fe19369090b31779
parent5a89dc58e16a39c42133c28ac6359018ae5ba70d (diff)
downloadnextpnr-67dc19bb579a1edcd1145f910e54c5baf2fa3cb6.tar.gz
nextpnr-67dc19bb579a1edcd1145f910e54c5baf2fa3cb6.tar.bz2
nextpnr-67dc19bb579a1edcd1145f910e54c5baf2fa3cb6.zip
Address review comments.
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
-rw-r--r--fpga_interchange/arch.cc13
-rw-r--r--fpga_interchange/arch.h1
-rw-r--r--fpga_interchange/fpga_interchange_archdefs.h87
3 files changed, 6 insertions, 95 deletions
diff --git a/fpga_interchange/arch.cc b/fpga_interchange/arch.cc
index acbe205f..8fb5ffdb 100644
--- a/fpga_interchange/arch.cc
+++ b/fpga_interchange/arch.cc
@@ -177,13 +177,10 @@ PortType Arch::getBelPinType(BelId bel, IdString pin) const
NPNR_ASSERT(bel != BelId());
int pin_index = getBelPinIndex(bel, pin);
- if(pin_index < 0) {
- // Port could not be found!
- return PORT_INOUT;
- } else {
- const int32_t *types = locInfo(bel).bel_data[bel.index].types.get();
- return PortType(types[pin_index]);
- }
+ auto &bel_data = locInfo(bel).bel_data[bel.index];
+ NPNR_ASSERT(pin_index >= 0 && pin_index < bel_data.num_bel_wires);
+ const int32_t *types = bel_data.types.get();
+ return PortType(types[pin_index]);
}
// -----------------------------------------------------------------------
@@ -464,7 +461,7 @@ std::vector<std::pair<IdString, std::string>> Arch::getBelAttrs(BelId bel) const
delay_t Arch::estimateDelay(WireId src, WireId dst, bool debug) const
{
- // FIXME: Implement when adding timing-driven place and route.
+ // FIXME: Implement something to push the A* router in the right direction.
return 0;
}
diff --git a/fpga_interchange/arch.h b/fpga_interchange/arch.h
index f00ae04f..d29e8651 100644
--- a/fpga_interchange/arch.h
+++ b/fpga_interchange/arch.h
@@ -1028,6 +1028,7 @@ struct Arch : BaseCtx
// -------------------------------------------------
+ // TODO: Use groups to get access to sites.
GroupId getGroupByName(IdString name) const { return GroupId(); }
IdString getGroupName(GroupId group) const { return IdString(); }
std::vector<GroupId> getGroups() const { return {}; }
diff --git a/fpga_interchange/fpga_interchange_archdefs.h b/fpga_interchange/fpga_interchange_archdefs.h
deleted file mode 100644
index 5495505b..00000000
--- a/fpga_interchange/fpga_interchange_archdefs.h
+++ /dev/null
@@ -1,87 +0,0 @@
-#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
-{
-};