diff options
author | gatecat <gatecat@ds0.me> | 2021-02-10 11:54:54 +0000 |
---|---|---|
committer | gatecat <gatecat@ds0.me> | 2021-02-10 11:54:54 +0000 |
commit | 85bb108ba40f9573571de0a785f9fbc91c4e1dd0 (patch) | |
tree | 8f198b13a648057d21c8e839afea5c4463c6189b /gowin/arch.h | |
parent | 6bd3dba1e39780e52097533f7e89f823d7e72956 (diff) | |
download | nextpnr-85bb108ba40f9573571de0a785f9fbc91c4e1dd0.tar.gz nextpnr-85bb108ba40f9573571de0a785f9fbc91c4e1dd0.tar.bz2 nextpnr-85bb108ba40f9573571de0a785f9fbc91c4e1dd0.zip |
Add getBelPinsForCellPin to Arch API
This is a basic implementation, without considering "M of N"
arrangements (e.g. for LUT permuation where you only want to route to 1
out of 4/6 sinks) or using a type other than IdString to identify bel
pins.
But this is also enough to start working out where in nextpnr will break
due to removing the 1:1 cell:bel pin cardinality, as a next step.
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'gowin/arch.h')
-rw-r--r-- | gowin/arch.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gowin/arch.h b/gowin/arch.h index c5ef0a2e..eab75899 100644 --- a/gowin/arch.h +++ b/gowin/arch.h @@ -251,6 +251,7 @@ struct ArchRanges using TileBelsRangeT = const std::vector<BelId> &; using BelAttrsRangeT = const std::map<IdString, std::string> &; using BelPinsRangeT = std::vector<IdString>; + using CellBelPinRangeT = std::array<IdString, 1>; // Wires using AllWiresRangeT = const std::vector<WireId> &; using DownhillPipRangeT = const std::vector<PipId> &; @@ -375,6 +376,7 @@ struct Arch : BaseArch<ArchRanges> WireId getBelPinWire(BelId bel, IdString pin) const override; PortType getBelPinType(BelId bel, IdString pin) const override; std::vector<IdString> getBelPins(BelId bel) const override; + std::array<IdString, 1> getBelPinsForCellPin(CellInfo *cell_info, IdString pin) const override; WireId getWireByName(IdStringList name) const override; IdStringList getWireName(WireId wire) const override; |