Commit Graph

4276 Commits

Author SHA1 Message Date
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
myrtle
997af6d720
Merge pull request #992 from antmicro/mdudek/nexus_write_dcc
Change write_dcc to work with tilegroups from prjoxide
2022-05-27 10:13:15 +01:00
Maciej Dudek
8c4e3e91cc Change write_dcc to work with tilegroups from prjoxide
Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
2022-05-27 10:58:39 +02:00
myrtle
48f9daf867
Merge pull request #990 from YosysHQ/gatecat/fix-988
Don't assert on mixed domain paths in report
2022-05-22 14:31:55 +01:00
gatecat
447b5b905c Don't assert on mixed domain paths in report
Signed-off-by: gatecat <gatecat@ds0.me>
2022-05-22 13:56:36 +01:00
myrtle
e900494394
Merge pull request #989 from YosysHQ/lofty/cmake-bump
Bump minimum CMake to 3.13
2022-05-21 19:26:30 +01:00
Lofty
ae67c98f11 Bump minimum CMake to 3.13 2022-05-21 18:26:36 +01:00
myrtle
4ecbf6c6e9
Merge pull request #985 from antmicro/interchange-lut-constants
[interchange] Tying unused LUT inputs according to architecture
2022-05-13 09:09:50 +01:00
Maciej Kurc
d75c45c63f Added fallback to VCC as the preferred constant if the architecture does not specify one.
Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
2022-05-12 11:55:16 +02:00
Maciej Kurc
7c7a4f0959 Added tying unused LUT pins to preferred constant instead of Vcc
Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
2022-05-11 16:31:34 +02:00
Maciej Kurc
aafe1a176c Generalized representation of unused LUT pins connections
Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
2022-05-11 16:31:30 +02:00
myrtle
41936fefac
Merge pull request #984 from yrabbit/assert
common: Correct a minor typo in the message
2022-05-10 13:17:22 +01:00
YRabbit
1aa693732c common: Correct a minor typo in the message
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2022-05-10 21:19:02 +10:00
myrtle
769a1f263a
Merge pull request #982 from YosysHQ/gatecat/ice40-gb-constr-fix
ice40: Fix propagation of constraints through SB_GB
2022-05-08 13:37:53 +01:00
gatecat
27966f101f ice40: Fix propagation of constraints through SB_GB
Signed-off-by: gatecat <gatecat@ds0.me>
2022-05-08 12:44:03 +01:00
gatecat
a494982646
Merge pull request #981 from yrabbit/lw-cst-0
gowin: Add initial syntax support for long wires
2022-05-03 17:52:02 +01:00
YRabbit
15413de359 gowin: Add initial syntax support for long wires
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>
2022-05-02 20:40:33 +10:00
gatecat
f0d4e4fbc3 generic: Add some extra helpers for viaduct uarches
Signed-off-by: gatecat <gatecat@ds0.me>
2022-05-02 11:02:09 +01:00
gatecat
20cfafa109 generic: Add missing uarch guard
Signed-off-by: gatecat <gatecat@ds0.me>
2022-04-27 14:18:42 +01:00
gatecat
a35c80cc10 ecp5: Tweak delay prediction
Signed-off-by: gatecat <gatecat@ds0.me>
2022-04-20 11:29:08 +01:00
gatecat
b8f9f2daa2
Merge pull request #977 from YosysHQ/gatecat/prefine-tileswap
prefine: Do full-tile swaps, too
2022-04-19 19:09:29 +01:00
gatecat
19cade3b3b prefine: Do full-tile swaps, too
Signed-off-by: gatecat <gatecat@ds0.me>
2022-04-19 18:37:16 +01:00