aboutsummaryrefslogtreecommitdiffstats
path: root/gowin/cells.cc
diff options
context:
space:
mode:
authorYRabbit <rabbit@yrabbit.cyou>2022-05-27 22:44:21 +1000
committerYRabbit <rabbit@yrabbit.cyou>2022-05-27 22:44:21 +1000
commitdb696af2fe53ab4dc341a09303bb6cd371d76519 (patch)
tree04c7ffcc0bdda09aec357f7d739e598b07252ad6 /gowin/cells.cc
parent4ecbf6c6e941699413e0d0bba660fc9dc18efcfe (diff)
downloadnextpnr-db696af2fe53ab4dc341a09303bb6cd371d76519.tar.gz
nextpnr-db696af2fe53ab4dc341a09303bb6cd371d76519.tar.bz2
nextpnr-db696af2fe53ab4dc341a09303bb6cd371d76519.zip
gowin: Add support for long wires
Gowin chips have a highly sophisticated system of long wires that are wired to each cell and allow the clock or logic to spread quickly. This commit implements some of the capabilities of the long wire system for quadrants, leaving out the fine-tuning of them for each column. To make use of the long wire system, the specified wire is cut at the driver and a special cell is placed between the driver and the rest of the wire. * VCC and GND can not use long wires because they are in every cell and there is no point in using a net * Long wire numbers can be specified manually or assigned automatically. * The route from the driver to the port of the new cell can be quite long, this will have to be solved somehow. * It might make sense to add a mechanism for automatically finding candidates for long wires. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
Diffstat (limited to 'gowin/cells.cc')
-rw-r--r--gowin/cells.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/gowin/cells.cc b/gowin/cells.cc
index c3b21782..6010164a 100644
--- a/gowin/cells.cc
+++ b/gowin/cells.cc
@@ -69,6 +69,9 @@ std::unique_ptr<CellInfo> create_generic_cell(Context *ctx, IdString type, std::
new_cell->addOutput(id_G);
} else if (type == id_VCC) {
new_cell->addOutput(id_V);
+ } else if (type == id_BUFS) {
+ new_cell->addInput(id_I);
+ new_cell->addOutput(id_O);
} else {
log_error("unable to create generic cell of type %s\n", type.c_str(ctx));
}