Commit Graph

4497 Commits

Author SHA1 Message Date
myrtle
5c93d71c2a
Merge pull request #1014 from LAK132/master
Replace deprecated method of finding Python 3
2022-08-18 14:33:26 +02:00
LAK132
ae8966040b Replace deprecated method of finding Python 3 2022-08-17 01:07:14 +09:30
myrtle
b9b16eaa53
Merge pull request #1013 from YosysHQ/gatecat/viaduct-args
viaduct: Allow passing command line options to uarch with -o
2022-08-15 12:41:09 +02:00
gatecat
47da562600 viaduct: Allow passing command line options to uarch with -o
Signed-off-by: gatecat <gatecat@ds0.me>
2022-08-15 12:15:00 +02:00
myrtle
b653e39991
Merge pull request #1012 from YosysHQ/gatecat/refactor-id-in
refactor: Use IdString::in instead of || chains
2022-08-11 07:26:20 +01:00
gatecat
c60fb94b6c refactor: Use IdString::in instead of || chains
Signed-off-by: gatecat <gatecat@ds0.me>
2022-08-10 18:58:22 +01:00
myrtle
a20d21bd13
Merge pull request #1011 from YosysHQ/gatecat/nexus-lram-tmg
nexus: Add timing data for LRAM
2022-08-10 18:26:56 +01:00
gatecat
f7354d092d nexus: Add timing data for LRAM
Signed-off-by: gatecat <gatecat@ds0.me>
2022-08-10 15:47:22 +01:00
myrtle
66722096ed
Merge pull request #1010 from YosysHQ/gatecat/idf
refactor: id(stringf(...)) to new idf(...) helper
2022-08-10 11:25:34 +01:00
gatecat
77c82b0fbf refactor: id(stringf(...)) to new idf(...) helper
Signed-off-by: gatecat <gatecat@ds0.me>
2022-08-10 10:57:46 +01:00
myrtle
06ce27ed38
Merge pull request #1008 from YosysHQ/gatecat/generic-addbelpin
generic: addBelPin with direction as an arg
2022-08-04 11:48:46 +02:00
gatecat
37f0886cb9 generic: addBelPin with direction as an arg
Signed-off-by: gatecat <gatecat@ds0.me>
2022-08-04 10:55:19 +02:00
myrtle
1b54fa2a1c
Merge pull request #1004 from yrabbit/fix-muxes
gowin: Remove incomprehensible names of the muxes
2022-07-21 11:34:51 +01:00
YRabbit
0285d47138 Merge branch 'master' into fix-muxes 2022-07-20 21:14:20 +10:00
YRabbit
ce2335bc00 gowin: fix compilation
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-07-19 20:20:26 +10:00
myrtle
dfea954754
Merge pull request #1005 from YosysHQ/gatecat/nexus-ram-fixes
nexus: Fix CSDECODE parsing
2022-07-19 10:33:15 +01:00
gatecat
ad502bf64b nexus: Fix CSDECODE parsing
Signed-off-by: gatecat <gatecat@ds0.me>
2022-07-19 09:58:00 +01:00
YRabbit
6969782a4b gowin: Remove incomprehensible names of the muxes
There is no need to multiply item names, it is a rudiment of my very
first addition to nextpnr.

Fully compatible with older versions of Apicula.

Note: the cosmetic changes in lines with RAM are not my initiative, but
the result of applying clang-format.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-07-19 18:51:25 +10:00
myrtle
5667113f8a
Merge pull request #998 from yrabbit/clock-wip
gowin: add a separate router for the clocks
2022-07-18 08:39:05 +01:00
YRabbit
ecddac7b18 Merge branch 'master' into clock-wip 2022-07-10 08:05:25 +10:00
myrtle
664cec54b9
Merge pull request #999 from YosysHQ/gatecat/pseudocell-api
netlist: Add PseudoCell API
2022-07-08 15:03:07 +02:00
gatecat
09e388f453 netlist: Add PseudoCell API
When implementing concepts such as partition pins or deliberately split
nets, there's a need for something that looks like a cell (starts/ends
routing with pins on nets, has timing data) but isn't mapped to a fixed
bel in the architecture, but instead can have pin mappings defined at
runtime.

The PseudoCell allows this by providing an alternate, virtual-function
based API for such cells. When a cell has `pseudo_cell` used, instead of
calling functions such as getBelPinWire, getBelLocation or getCellDelay
in the Arch API; such data is provided by the cell itself, fully
flexible at runtime regardless of arch, via methods on the PseudoCell
implementation.
2022-07-08 14:30:57 +02:00
YRabbit
1ebfe67daf gowin: Remove unnecessary functions
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-07-05 20:02:12 +10:00
YRabbit
3364a3b674 Merge branch 'master' into clock-wip 2022-07-05 19:43:24 +10:00
myrtle
86396c41d6
Merge pull request #995 from pepijndevos/shadowram
Gowin: WIP shadowram
2022-07-05 09:29:04 +02:00
myrtle
cc1d78a3d4
Merge pull request #1001 from YosysHQ/gatecat/generic-shared-pyb
generic: Use arch_pybindings_shared
2022-07-05 09:25:11 +02:00
myrtle
7e64c326e0
Merge pull request #1002 from gsomlo/gls-pybind11-unbundle
Enable building against unbundled pybind11
2022-07-05 09:25:03 +02:00
Gabriel Somlo
9914f56137 Enable building against unbundled pybind11
Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
2022-07-04 14:54:59 -04:00
gatecat
e1ba379fb7 generic: Use arch_pybindings_shared
Signed-off-by: gatecat <gatecat@ds0.me>
2022-07-04 18:39:00 +02:00
YRabbit
5d915a550b gowin: fix compilation
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-07-04 11:23:21 +10:00
YRabbit
3172a38dae 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>
2022-07-04 10:32:39 +10:00
YRabbit
6d85de43ee Merge branch 'master' into clock-wip 2022-07-04 08:15:21 +10:00
Pepijn de Vos
6f56ad298c use DFF RAM mode 2022-07-02 20:44:59 +02:00
Pepijn de Vos
0641ff47d9 Merge branch 'master' into shadowram 2022-07-02 13:29:44 +02:00
myrtle
b4337d99fd
Merge pull request #1000 from YosysHQ/gatecat/fix-empty-ports
ice40: Fix accidental creation of empty ports
2022-06-26 08:50:49 +01:00
gatecat
6122f172e3 ice40: Fix accidental creation of empty ports
Signed-off-by: gatecat <gatecat@ds0.me>
2022-06-25 15:56:16 +01:00
YRabbit
63f2acd42a gowin: process the CLK ports of the ODDR[C] primitives
Also removed the useless references.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-06-24 08:20:06 +10:00
myrtle
f11225360b
Merge pull request #997 from Chandler-Kluser/master
Update README.md
2022-06-23 07:16:28 +01:00
YRabbit
590b9050ff gowin: add a separate router for the clocks
A simple router that takes advantage of the fact that in each cell with
DFFs their CLK inputs can directly connect to the global clock network.

Networks with a large number of such sinks are sought and then each
network is assigned to the available independent global clock networks.

There are limited possibilities for routing mixed networks, that is,
when the sinks are not only CLKs: in this case an attempt is made to use
wires such as SN10/20 and EW10/20, that is, one short transition can be
added between the global clock network and the sink.

* At this time, networks with a source other than the I/O pin are not
  supported. This is typical for Tangnano4k and runber boards.

* Router is disabled by default, you need to specify option
  --enable-globals to activate

* No new chip bases are required. This may change in the distant future.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-06-23 11:42:58 +10:00
Chandler Klüser
b502499a1e Update README.md 2022-06-22 21:03:04 -03:00
gatecat
b950f5cb6d Disable broken and failing interchange CI
Signed-off-by: gatecat <gatecat@ds0.me>
2022-06-21 12:35:13 +01:00
Pepijn de Vos
b7992ec772 hook up CE maybe 2022-06-16 11:38:23 +02:00
gatecat
8d063d38b1 clangformat
Signed-off-by: gatecat <gatecat@ds0.me>
2022-06-12 07:59:36 +01:00
gatecat
eac864ebdc ecp5: Bind write_bitstream to Python
Signed-off-by: gatecat <gatecat@ds0.me>
2022-06-09 20:05:20 +01:00
myrtle
aeece7d278
Merge pull request #996 from yrabbit/sn
gowin: Use local aliases
2022-06-09 06:51:45 +01:00
YRabbit
bd0af4052c gowin: Use local aliases
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>
2022-06-09 08:20:29 +10:00
myrtle
2da7caf657
Merge pull request #993 from yrabbit/lw-wip-1
gowin: Add support for long wires
2022-06-07 13:09:09 +01:00
Pepijn de Vos
de1bee9352 lutram actually PnRs 2022-06-06 14:35:33 +02:00
Pepijn de Vos
490dddf636 WIP shadowram 2022-06-05 16:59:06 +02:00
YRabbit
db696af2fe 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>
2022-05-27 22:44:21 +10:00