aboutsummaryrefslogtreecommitdiffstats
path: root/generic/arch.h
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-06-30 08:58:48 +0200
committerClifford Wolf <clifford@clifford.at>2018-06-30 08:58:48 +0200
commitea5e79f0d6afb599f4ba2d71f174c4a37b7def27 (patch)
tree7d9bdccda0997bdc12f4fa54fc5d2c544a28f201 /generic/arch.h
parent172ceef3775d60388f4ce151d0fbda60fd9c9a42 (diff)
downloadnextpnr-ea5e79f0d6afb599f4ba2d71f174c4a37b7def27.tar.gz
nextpnr-ea5e79f0d6afb599f4ba2d71f174c4a37b7def27.tar.bz2
nextpnr-ea5e79f0d6afb599f4ba2d71f174c4a37b7def27.zip
Add stub generator API to generic arch
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'generic/arch.h')
-rw-r--r--generic/arch.h56
1 files changed, 52 insertions, 4 deletions
diff --git a/generic/arch.h b/generic/arch.h
index ae68b974..4280951c 100644
--- a/generic/arch.h
+++ b/generic/arch.h
@@ -27,14 +27,62 @@ struct ArchArgs
{
};
+struct WireInfo;
+
+struct PipInfo
+{
+ IdString name, bound_net;
+ WireInfo *srcWire, *dstWire;
+ DelayInfo delay;
+ std::vector<GraphicElement> graphics;
+};
+
+struct WireInfo
+{
+ IdString name, bound_net;
+ std::vector<GraphicElement> graphics;
+ std::vector<PipInfo*> downhill, uphill, aliases;
+};
+
+struct PinInfo
+{
+ IdString name;
+ WireInfo *wire;
+ PortType type;
+};
+
+struct BelInfo
+{
+ IdString name, type, bound_cell;
+ std::unordered_map<IdString, PinInfo> pins;
+ std::vector<GraphicElement> graphics;
+};
+
struct Arch : BaseCtx
{
- Arch(ArchArgs args);
+ std::string chipName;
+
+ std::unordered_map<IdString, WireInfo> wires;
+ std::unordered_map<IdString, PipInfo> pips;
+ std::unordered_map<IdString, BelInfo> bels;
- std::string getChipName();
+ std::vector<IdString> bel_ids, wire_ids, pip_ids;
+ std::unordered_map<IdString, std::vector<IdString>> bel_ids_by_type;
+
+ void addWire(IdString name);
+ void addPip(IdString name, IdString srcWire, IdString dstWire, DelayInfo delay);
+ void addAias(IdString name, IdString srcWire, IdString dstWire, DelayInfo delay);
+
+ void addBel(IdString name, IdString type);
+ void addBelInput(IdString cell, IdString name, IdString wire);
+ void addBwlOutput(IdString cell, IdString name, IdString wire);
+ void addBelInout(IdString cell, IdString name, IdString wire);
+
+ // ---------------------------------------------------------------
+
+ Arch(ArchArgs args);
- virtual IdString id(const std::string &s) const { abort(); }
- virtual IdString id(const char *s) const { abort(); }
+ std::string getChipName() { return chipName; }
IdString archId() const { return id("generic"); }
IdString archArgsToId(ArchArgs args) const { return id("none"); }