aboutsummaryrefslogtreecommitdiffstats
path: root/gowin/arch.h
diff options
context:
space:
mode:
authorYRabbit <rabbit@yrabbit.cyou>2022-07-04 10:32:39 +1000
committerYRabbit <rabbit@yrabbit.cyou>2022-07-04 10:32:39 +1000
commit3172a38daeb4588d3aaa686816c09d64ccf08587 (patch)
tree7dd071befb4f13acf4a135984856867fed881531 /gowin/arch.h
parent6d85de43ee1f9585e3c3a170f52513755ed924b5 (diff)
downloadnextpnr-3172a38daeb4588d3aaa686816c09d64ccf08587.tar.gz
nextpnr-3172a38daeb4588d3aaa686816c09d64ccf08587.tar.bz2
nextpnr-3172a38daeb4588d3aaa686816c09d64ccf08587.zip
gowin: Let the placer know about global networks
Refactor in order to detect networks that will be routed in a special mode earlier. This makes it possible to mark the source of such networks as a global buffer, thereby removing their influence on element placement. In addition, timing classes are set for some cells. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
Diffstat (limited to 'gowin/arch.h')
-rw-r--r--gowin/arch.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/gowin/arch.h b/gowin/arch.h
index c59f8eb3..cd43aa7a 100644
--- a/gowin/arch.h
+++ b/gowin/arch.h
@@ -31,6 +31,8 @@
#include "nextpnr_namespaces.h"
#include "nextpnr_types.h"
+#include "globals.h"
+
NEXTPNR_NAMESPACE_BEGIN
template <typename T> struct RelPtr
@@ -337,6 +339,11 @@ struct Arch : BaseArch<ArchRanges>
void setDelayScaling(double scale, double offset);
void addCellTimingClock(IdString cell, IdString port);
+ void addCellTimingIO(IdString cell, IdString port);
+ void addCellTimingCombIn(IdString cell, IdString port);
+ void addCellTimingCombOut(IdString cell, IdString port);
+ void addCellTimingRegIn(IdString cell, IdString port);
+ void addCellTimingRegOut(IdString cell, IdString port);
void addCellTimingDelay(IdString cell, IdString fromPort, IdString toPort, DelayQuad delay);
void addCellTimingSetupHold(IdString cell, IdString port, IdString clock, DelayPair setup, DelayPair hold);
void addCellTimingClockToOut(IdString cell, IdString port, IdString clock, DelayQuad clktoq);
@@ -462,6 +469,13 @@ struct Arch : BaseArch<ArchRanges>
bool haveBelType(int x, int y, IdString bel_type);
bool allocate_longwire(NetInfo *ni, int lw_idx = -1);
void fix_longwire_bels();
+ void pre_pack(Context *ctx);
+ void post_pack(Context *ctx);
+ void auto_longwires();
+
+ GowinGlobalRouter globals_router;
+ void mark_gowin_globals(Context *ctx);
+ void route_gowin_globals(Context *ctx);
// chip db version
unsigned int const chipdb_version = 1;