Commit Graph

102 Commits

Author SHA1 Message Date
YRabbit 85e8570a73 gowin: handle the GW1N-9 feature.
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>
2022-04-03 10:05:27 +10:00
Tim Pambor 601b32948b gowin: Fix z-index of oscillator 2022-03-30 17:35:54 +02:00
Tim Pambor 12b38bab6d gowin: Add bels for oscillator 2022-03-27 22:15:12 +02:00
YRabbit be8d3fd74d gowin: Consider the peculiarity of GW1BR-9C
The GW1NR-9C chip ODDR implementation differs from all other supported
chips by two suspicious inputs.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-03-26 20:56:30 +10:00
YRabbit 69b4461f55
gowin: Name the constants (#958)
Place arbitrary constants side by side to avoid conflicts.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-03-21 20:15:29 +00:00
Pepijn de Vos bb923c7732
Gowin: use global VCC and VSS nets (#956)
* use global VCC and VSS nets

* derp

* remove init parameter
2022-03-19 18:44:08 +00:00
YRabbit c898587b87 gowin: don't crash if no arguments are set
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-03-16 15:47:13 +10:00
gatecat 2df9d3537b
Merge pull request #943 from yrabbit/locale
gowin: support for locales other than en_US and C
2022-03-15 20:44:03 +00:00
YRabbit 53ddbbaa85 Set the locale as early as possible
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-03-16 05:39:55 +10:00
YRabbit ad00f3fdeb gowin: test locale workaround
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-03-15 21:52:32 +10:00
YRabbit badef293eb gowin: add support for ODDR primitive
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>
2022-03-15 11:02:37 +10:00
YRabbit 25d7e3ae8b gowin: support for locales other than en_US and C
Specifically, those locales where the fractional part separator in
floating point numbers is not a dot.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-03-14 21:41:57 +10:00
YRabbit 4a2aa6deb4 gowin: Add the Global Set/Reset primitive
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>
2022-03-12 23:05:42 +10:00
gatecat 2c8062bdb3
Merge pull request #931 from yrabbit/bugfix-0
gowin: BUGFIX gui crash
2022-03-04 16:06:41 +00:00
YRabbit c93a3f35ac gowin: BUGFIX gui crash
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-03-04 16:19:16 +10:00
gatecat 86699b42f6 Switch to potentially-sparse net users array
This uses a new data structure for net.users that allows gaps, so
removing a port from a net is no longer an O(n) operation on the number
of users the net has.

Signed-off-by: gatecat <gatecat@ds0.me>
2022-02-27 13:47:05 +00:00
YRabbit 3894a36ddb gowin: recognize partnumbers of GW1NZ-1
The model should be recognized by the partnumber, --family is needed
only if the same partnumbers belong to different models.
This is done in order to automatically generate parameters for calling
nextpnr from Gowin files without problems: there also only partnumber is
used and only in some cases the model is specified with the -name
parameter and GW1NZ-1 is not such a case.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-02-24 13:35:22 +10:00
YRabbit ad49b7c78d gowin: Add support for true differential output
The new primitive appears as an amalgamation of two existing OBUF
primitives.  Compatible with older versions of apicula, although, of
course, using TLVDS_OBUF with old databases will not bring the desired
result, but no crash.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-02-23 15:53:04 +10:00
gatecat 4812f9707a
Merge pull request #913 from chiplet/gw1nz-1
gowin: Add GW1NZ-1 support
2022-02-20 18:27:36 +00:00
gatecat 6a32aca4ac refactor: New member functions to replace design_utils
Signed-off-by: gatecat <gatecat@ds0.me>
2022-02-18 11:13:18 +00:00
gatecat 76683a1e3c refactor: Use constids instead of id("..")
Signed-off-by: gatecat <gatecat@ds0.me>
2022-02-16 17:09:54 +00:00
gatecat 9ef0bc3d3a refactor: Use cell member functions to add ports
Signed-off-by: gatecat <gatecat@ds0.me>
2022-02-16 16:45:45 +00:00
gatecat 30fd86ce69 refactor: New NetInfo and CellInfo constructors 2022-02-16 15:10:57 +00:00
gatecat f3ee0d51a9 clangformat
Signed-off-by: gatecat <gatecat@ds0.me>
2022-02-16 13:32:53 +00:00
Verneri Hirvonen e90f5b72f7 gowin: Add GW1NZ-1 2022-02-15 14:12:16 +02:00
Pepijn de Vos cd97ef6536 add GW1N-9C db 2022-02-06 12:02:06 +01:00
Icenowy Zheng 230de1e68a gowin: add an option to manually specify family
In the vendor IDE, there's a device family named GW1N-9C (which seems to
mean C revision of GW1N-9), in which the model numbers are all the same
with GW1N-9.

Add an option to nextpnr-gowin to allow manually specified family for
this situation.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
2022-02-06 12:01:51 +01:00
gatecat 69625564ca
Merge pull request #906 from yrabbit/gowin-gui-noc
gowin: Speed up the GUI
2022-02-04 15:47:30 +00:00
YRabbit 0675b98437 gowin: Speed up the GUI
By mistake, an empty decal gets filled with graphical elements.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-02-04 14:24:22 +10:00
YRabbit 1152c9f2f8 gowin: Remove leftover debugging
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-02-04 09:18:08 +10:00
YRabbit eb5d3b3197 Merge branch 'master' into diff-locations 2022-02-04 09:03:36 +10:00
gatecat 84399caebe run clangformat
Signed-off-by: gatecat <gatecat@ds0.me>
2022-02-03 15:28:46 +00:00
YRabbit 604260a0d7 gowin: Add a DS location recognition
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>
2022-02-03 11:26:45 +10:00
YRabbit 368299d143 gowin: Rearrange the GUI constants
All internal constants for describing the graphics have been moved
to the .cc file.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-02-03 06:24:40 +10:00
YRabbit 22e4081c73 gowin: Add GUI.
* 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>
2022-01-29 14:45:17 +10:00
YRabbit 045ce3f148 gowin: Fix last MUX8
In fact, there is also an input/output column.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-01-03 17:48:31 +10:00
gatecat fdeb86809f
Merge pull request #877 from pepijndevos/patch-3
Add support for GW1NS-4 series devices
2021-12-26 19:14:05 +00:00
YRabbit e6b7879542 gowin: Initializing the grid dimensions
gridDimX and gridDimY are not initialized explicitly, which leads to
effects when the design is reloaded, say, from the GUI.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2021-12-26 12:05:35 +10:00
Pepijn de Vos b53a921e42 Add support for GW1NS-4 series devices 2021-12-24 17:17:25 +01:00
YRabbit 5a76b3cb4d gowin: Add simplified IO cells processing
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>
2021-12-20 15:48:38 +10:00
gatecat ddb084e9a8 archapi: Use arbitrary rather than actual placement in predictDelay
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>
2021-12-19 17:15:15 +00:00
uis 9b2d6c5a67 Clean gowin modification regex 2021-12-18 22:44:08 +03:00
YRabbit 120ed0c42d gowin: Recognize models correctly
For example, clearly distinguish between
    GW1N-4
    GW1NR-4
    GW1NS-4
    GW1NSR-4
    GW1NSR-4

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2021-12-15 07:56:34 +10:00
YRabbit fdf26e698f gowin: Fix spelling of messages
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2021-12-14 14:09:27 +10:00
gatecat a933f82845 clangformat
Signed-off-by: gatecat <gatecat@ds0.me>
2021-12-12 18:49:37 +00:00
YRabbit e0ab7bf6c1 gowin: BUGFIX. Place the ALU head in sliсe 0 only
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2021-12-11 19:10:02 +10:00
YRabbit deb14762aa gowin: Check the chipdb version
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2021-11-07 09:05:34 +10:00
YRabbit 74b4f69728 gowin: Use speed from chip base.
Another simplification of the input regular expression, now
the speed is taken from the base.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2021-11-05 17:02:45 +10:00
YRabbit 0e8a2999bd gowin: Add partnumbers and packages to the chipdb
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>
2021-11-04 18:55:00 +10:00
YRabbit e9f3946d58 gowin: Explicitly initialize the y in the cluster
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2021-10-22 23:27:36 +10:00