| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the Gowin chips, the tiles are connected to each other by a one-hop
wire, among others. There are 4 one-hop wires, of which 2 are shared
between north/south and east/west, have three names: e.g. SN10 and N110
and S110.
But only one of them, the first, occurs as a sink for PIP, that is, you
can not get a route that would pass through the S110 for example.
This commit corrects the names to SN?0 and EW?0 at the wire creation
stage to avoid dead wires.
In addition, the SN?0 and EW?0 are among the few sinks for global clock
wires and now there is the possibility of a more optimal clock routing.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Only the recognition of the directive in the .CST file and elementary
checks are added, but not the long-wire mechanism itself.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
| |
This chip has a different default state for one type of I/O buffer ---
you have to explicitly switch it to the normal state by feeding VCC/VSS
to certain inputs.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
| |
|
| |
|
|
|
|
|
|
|
| |
The GW1NR-9C chip ODDR implementation differs from all other supported
chips by two suspicious inputs.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
| |
Place arbitrary constants side by side to avoid conflicts.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
| |
* use global VCC and VSS nets
* derp
* remove init parameter
|
|
|
|
|
|
|
|
|
| |
Compatible with older versions of apicula bases.
Also small fixes and as the number of virtual Bels grows it is necessary
to assign them Z coordinate in a centralized way to avoid conflicts and
for this purpose introduced the BelZ enum.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
| |
GSR is added automatically if it was not instantiated by the user explicitly.
Compatible with old apicula bases, the functionality does not work, but
the crash does not happen --- just a warning.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Items such as LUT, DFF, MUX, ALU, IOB are displayed;
* Local wires, 1-2-4-8 wires are displayed;
* The clock spines, taps and branches are displayed with some caveats.
For now, you can not create a project in the GUI because of possible
conflict with another PR (about GW1NR-9C support), but you can specify
the board in the command line and load .JSON and .CST in the GUI.
Although ALUs are displayed, but the CIN and COUT wires are not. This is
still an unsolved problem.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|/
|
|
|
|
|
|
|
| |
For differential signals it is necessary to set the position of two pins
at once: P and N.
This commit adds that capability and also adds another style of location
setting --- with the pin letter in square brackets used in vendor tools.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
| |
In fact, there is also an input/output column.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some models have I/O cells that are IOBUFs, and other types (IBUFs and
OBUFs) are obtained by feeding 1 or 0 to the OEN input. This is done
with general-purpose routing so it's best to do it here to avoid
conflicts.
For this purpose, in the new bases, these special cells are of type IOBS
(IOB Simplified).
The proposed changes are compatible with bases of previous versions of
Apycula and do not require changing .CST constraint files.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes predictDelay be based on an arbitrary belpin pair rather
than a arc of a net based on cell placement. This way 'what-if'
decisions can be evaluated without actually changing placement;
potentially useful for parallel placement.
A new helper predictArcDelay behaves like the old predictDelay to
minimise the impact on existing passes; only arches need be updated.
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
| |
Another simplification of the input regular expression, now
the speed is taken from the base.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
|
| |
Instead of parsing the partnumber with a regular expression,
a simple table is used. This is done because the structure
of the partnumber changes as new features appear (e.g., ES instead of C6/I5)
This commit does not yet disable the very first regular expression check.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
| |
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
| |
* A hardwired MUX within each logical cell is used.
* The delay is equal 0.
* No user placement constraints.
* The output route contains dummy PIPs. They are ignored by gowin_pack, but it may be worth removing them.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow the registers of the same type or pairs shown below to be
placed in the same slide:
|--------|--------|
| DFFS | DFFR |
| DFFSE | DFFRE |
| DFFP | DFFC |
| DFFPE | DFFCE |
| DFFNS | DFFNR |
| DFFNSE | DFFNRE |
| DFFNP | DFFNC |
| DFFNPE | DFFNCE |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
|
| |
Added support for the INS_LOC instruction in the constraints file
(.CST), which is used to specify object placement.
Expanded treatment of IO_LOC/IO_PORT constraints, which now can
be applied to both ports and IO buffers.
Port constraints have priority.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
|
|
|
| |
Specifying pin placement with this notation (e.g. IOR4B) allows
to use the same constraint file without changes for different
packages and even different families.
The vendor router also understands this notation.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
|
|
| |
Add support for IOBUF and TBUF I/O modes.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
| |
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This replaces the arch-specific DelayInfo structure with new DelayPair
(min/max only) and DelayQuad (min/max for both rise and fall) structures
that form part of common code.
This further reduces the amount of arch-specific code; and also provides
useful data structures for timing analysis which will need to delay
with pairs/quads of delays as it is improved.
While there may be a small performance cost to arches that didn't
separate the rise/fall cases (arches that aren't currently separating
the min/max cases just need to be fixed...) in DelayInfo, my expectation
is that inlining will mean this doesn't make much difference.
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This Arch API dates from when we were first working out how to
implement placement validity checking, and in practice is little used by
the core parts of placer1/HeAP and the Arch implementation involves a
lot of duplication with isBelLocationValid.
In the short term; placement validity checking is better served by the
combination of checkBelAvail and isValidBelForCellType before placement;
followed by isBelLocationValid after placement (potentially after
moving/swapping multiple cells).
Longer term, removing this API makes things a bit cleaner for a new
validity checking API.
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|