aboutsummaryrefslogtreecommitdiffstats
path: root/common/nextpnr.h
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-06-18 14:18:56 +0200
committerClifford Wolf <clifford@clifford.at>2018-06-18 14:18:56 +0200
commitce2a9f2af12bd06b9a50e48b05dad1eadbad149e (patch)
tree0a78d6cbc9db6964cddcccdfba69c3dcf94ce0fa /common/nextpnr.h
parentf30d477c8129c3c189866a4bc862724d4e8d4398 (diff)
downloadnextpnr-ce2a9f2af12bd06b9a50e48b05dad1eadbad149e.tar.gz
nextpnr-ce2a9f2af12bd06b9a50e48b05dad1eadbad149e.tar.bz2
nextpnr-ce2a9f2af12bd06b9a50e48b05dad1eadbad149e.zip
Move contents of design.h to nextpnr.h
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'common/nextpnr.h')
-rw-r--r--common/nextpnr.h60
1 files changed, 59 insertions, 1 deletions
diff --git a/common/nextpnr.h b/common/nextpnr.h
index 3d505844..8986ba13 100644
--- a/common/nextpnr.h
+++ b/common/nextpnr.h
@@ -142,6 +142,64 @@ struct GraphicElement
NEXTPNR_NAMESPACE_END
#include "arch.h"
-#include "design.h"
+
+NEXTPNR_NAMESPACE_BEGIN
+
+struct CellInfo;
+
+struct PortRef
+{
+ CellInfo *cell = nullptr;
+ IdString port;
+};
+
+struct NetInfo
+{
+ IdString name;
+ PortRef driver;
+ std::vector<PortRef> users;
+ std::unordered_map<IdString, std::string> attrs;
+
+ // wire -> uphill_pip
+ std::unordered_map<WireId, PipId> wires;
+};
+
+enum PortType
+{
+ PORT_IN = 0,
+ PORT_OUT = 1,
+ PORT_INOUT = 2
+};
+
+struct PortInfo
+{
+ IdString name;
+ NetInfo *net;
+ PortType type;
+};
+
+struct CellInfo
+{
+ IdString name, type;
+ std::unordered_map<IdString, PortInfo> ports;
+ std::unordered_map<IdString, std::string> attrs, params;
+
+ BelId bel;
+ // cell_port -> bel_pin
+ std::unordered_map<IdString, IdString> pins;
+};
+
+struct Context : Arch
+{
+ std::unordered_map<IdString, NetInfo *> nets;
+ std::unordered_map<IdString, CellInfo *> cells;
+
+ Context(ArchArgs args) : Arch(args)
+ {
+ // ...
+ }
+};
+
+NEXTPNR_NAMESPACE_END
#endif