1
0
mirror of https://github.com/YosysHQ/nextpnr.git synced 2026-02-16 12:53:25 +00:00
Commit Graph

4892 Commits

Author SHA1 Message Date
Miodrag Milanovic
e1cc5d06cb Start using FFs 2025-06-30 11:22:44 +02:00
Miodrag Milanovic
bee4aa0e55 CPE mapping improvements 2025-06-30 11:22:44 +02:00
Miodrag Milanovic
bf7eb65dea Add lut tree tests for future improvements 2025-06-30 11:22:44 +02:00
YRabbit
39f020b033 Gowin. Unbreak the segment routing. (#1508)
Use loop enumeration of PIPs instead of direct name construction for the
upper and lower ends of the segment wire.

Also do not allow clock wires for segments.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-06-30 10:14:21 +02:00
Lofty
e642e21f9b himbaechel: output normalised wire in getWireByName (#1506) 2025-06-25 18:46:19 +02:00
gatecat
9ade2d1877 himbaechel: Add Python binding for get_tile_wire_range
Signed-off-by: gatecat <gatecat@ds0.me>
2025-06-25 18:37:17 +02:00
gatecat
1cd1e4a8d9 xilinx: Fix packing of weird mux trees
Signed-off-by: gatecat <gatecat@ds0.me>
2025-06-25 12:38:11 +02:00
gatecat
23cf1d3b92 docs: Fix outdated content in generic.md
Fixes #1263

Signed-off-by: gatecat <gatecat@ds0.me>
2025-06-25 12:02:27 +02:00
gatecat
ff695f26d5 sdc: Fix EOF handling during string parse
Fixes #1490

Signed-off-by: gatecat <gatecat@ds0.me>
2025-06-25 11:58:11 +02:00
gatecat
f74aee7047 gowin: Remove logspam during build
Signed-off-by: gatecat <gatecat@ds0.me>
2025-06-25 11:49:45 +02:00
gatecat
a77eb9e941 ice40: Fix accidental division by DIVR in 2_PAD mode
Fixes #1500

Signed-off-by: gatecat <gatecat@ds0.me>
2025-06-25 11:44:16 +02:00
Frans Skarman
0c86a218fd Add sources to detailed timing report (#1502) 2025-06-25 11:39:25 +02:00
YRabbit
66f051d853 Gowin. BUGFIX. Stupid == vs = (#1504)
he good thing is that these cases are very few.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-06-24 13:24:10 +02:00
Miodrag Milanovic
311a1a711d gatemate: do not use special serdes pins for auto placement 2025-06-18 09:56:54 +02:00
Miodrag Milanovic
f58dd2d719 clangformat 2025-06-18 09:12:14 +02:00
Miodrag Milanović
7318d6a8ba gatemate: Multi die support and primitives model improvement (#1501)
* SER_CLK support

* Update constids

* wip

* CLK_FEEDBACK

* Handle SER_CLK and SER_CLK_N

* clangformat

* Cleanup

* Use _ as separator for PLL CFGs

* Remove unused clocking cells

* Do not use same name for IO models

* Fix IDDR merge

* Cleanup

* Properly handle user global signals

* Move signal inversion in bitstream creation

* Start adding multi die support

* Display die location for pins used

* Do not use constant s as locations

* Cleanup SB_DRIVE handling

* Use DDR locations from chip database

* Place only in prefered die for now

* Set D2D

* Fixed typos
2025-06-18 08:32:57 +02:00
Lofty
5275c14ac0 gatemate: include DDR route-throughs in clock router (#1499)
* route_clock: small cleanup

* gatemate: include DDR route-throughs for clock router
2025-06-10 18:00:15 +02:00
YRabbit
000faab213 Gowin. BUGFIX. Fix routing of the FF inputs. (#1498)
A segment router replaces the source-to-sink connection by
general-purpose PIPs with bus-branch segment network connections.

The problem arises when the source is connected to the sinks directly
without switching as in the case of LUT->DFF, such wires should be left
as is, which is what this PR does.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-06-10 07:54:20 +02:00
Miodrag Milanovic
fd3b4d36e7 gatemate: fix CLK inversion 2025-06-04 18:53:58 +02:00
Miodrag Milanovic
bac5a9145f gatemate: memory clock signal handling 2025-05-29 13:26:35 +02:00
Miodrag Milanovic
9994fdb393 gatemate: make sure to use latest chipdb 2025-05-27 15:37:25 +02:00
Miodrag Milanović
12f597dcd1 gatemate: propagate clock constraints on input ports (#1497) 2025-05-26 11:16:45 +02:00
Miodrag Milanovic
e7f52d1b6b gatemate: enable only used banks, including CFG one 2025-05-24 14:56:07 +02:00
Lofty
9cfc7ee263 gatemate: improve estimateDelay (#1494) 2025-05-22 09:15:12 +02:00
Lofty
06d3408ba4 Use clock router even for non-global clocks (#1493) 2025-05-21 16:17:20 +02:00
gatecat
226a2dfdb4 clangformat
Signed-off-by: gatecat <gatecat@ds0.me>
2025-05-20 13:19:52 +02:00
Miodrag Milanovic
77a6df131c gatemate: use BUFG input in case it is routed to PLL 2025-05-20 09:30:27 +02:00
Lofty
520616248e Reserve all CPE control signals in clock router (#1492) 2025-05-19 14:55:12 +02:00
Lofty
2b33800d77 Reserve EN and SR wires in GateMate clock router (#1491) 2025-05-19 12:36:16 +02:00
Miodrag Milanović
b0c29aa634 gatemate: PLL priority for BUFG (#1488) 2025-05-19 09:55:39 +02:00
Miodrag Milanović
6c3956c3b9 gatemate: BRAM cascade mode support (#1487)
* BRAM cascade mode support

* Removed unused connections

* Exclusive connection
2025-05-19 09:55:11 +02:00
Miodrag Milanovic
23a99989d1 gatemate: invert output enable for io buffer 2025-05-19 09:47:17 +02:00
Lofty
27594f904f Reserve sinks in GateMate clock router (#1486) 2025-05-15 16:53:06 +02:00
Miodrag Milanović
0bbe031a4b set CXX standard for bba and remove boost lib (#1485) 2025-05-14 13:42:47 +02:00
William D. Jones
b127fa9c11 bba: fix #embed on Windows. 2025-05-14 05:38:30 +01:00
Catherine
7a821623f0 bba: use std::filesystem instead of boost::filesystem.
Also, convert paths to UTF-8 for Windows builds. See #1479.
2025-05-14 05:38:30 +01:00
Lofty
46fbe7c6d7 GateMate clock router (#1483)
* gatemate: clock router

Co-authored-by: Miodrag Milanovic <mmicko@gmail.com>

* Re-add clock router pip binding

* Refactoring

* Require globals to use a BUFG

* Fix misunderstanding of GPIO/RAM clocking

* Add plane info to chipdb

* Force clock routing along a specific plane

* Remove overly-limiting condition

* Move clock router into its own file

* Clock router based on delay

* Refine clock router conditions

* More detailed clock routing output

* Clean up debug messages

* clangformat

---------

Co-authored-by: Miodrag Milanovic <mmicko@gmail.com>
2025-05-13 16:07:47 +02:00
YRabbit
b1c147083d Gowin. Fill in delay values in HCLK.
Fill in the delays for PIP classes related to HCLK and IODELAY.  Also:

 - if clock routing fails, we try to use the next fastest mechanism - segment networks;

 - fixing harmless typos.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-05-13 12:11:36 +01:00
Miodrag Milanović
764b5402e8 gatemate: Initial SERDES support (#1476)
* Initial SERDES support

* use static array for default values

* Split pack into multiple files

* Pre-place BUFG and related cells
2025-05-06 15:56:26 +02:00
Dave Anderson
182b77a2e8 ecp5: fix frequency constraint on bypassed PLL outputs (#1475)
Each PLL output in ECP5 can be bypassed, which turns it into a wire
that passes through ICLK unmodified. When an outputs mux is set to
REFCLK, disregard other PLL configuration and copy the input constraint
over unchanged.
2025-05-06 15:55:38 +02:00
Benjamins Stürz
18c7b4070a Only add subdirectory tests, if BUILD_TESTS=ON 2025-05-03 04:56:32 +01:00
Miodrag Milanovic
900249033f gatemate: fix ccf default values and handling 2025-04-24 11:08:04 +02:00
Miodrag Milanović
bc25b042e9 gatemate: implemented remaining PLL features (#1474)
* gatemate: implemented remaining PLL features

* gatemate: allow longer carry chains
2025-04-24 09:51:00 +02:00
Miodrag Milanovic
c84f20934f gatemate: make build work as for other uarch 2025-04-22 19:28:58 +02:00
Miodrag Milanović
d6483adb4d Gatemate FPGA initial support (#1473)
* Initial code for GateMate

* Initial work on forming bitstream

* Add CCF parsing

* Use CCF to set IO location

* Propagate errors

* Restructure code

* Add support for reading from config

* Start adding infrastructure for reading bitstream

* Fix script

* GPIO initial work

* Add IN1->RAM_O2 propagation

* Fixed typo

* Cleanup

* More parameter checks

* Add LVDS support

* Cleanup

* Keep just used connections for now

* Naive lut tree CPE pack

* Naive pack CC_DFF

* pack DFF fixes

* Handle MUX flags

* Fix DFF pack

* Prevent pass trough issues

* Cleanup

* Use device wrapper class

* Update due to API changes

* Use pin  connection aliases

* Start work on BUFG support

* Fix CC_L2T5 pack

* Add CPE input inverters

* Constrain routes to have correct inversion state

* Add clock inversion pip

* Added MX2 and MX4 support

* Fix script

* BUFG support

* debug print if route found with wrong polarity

* Some CC_DFF improvements

* Create reproducible chip database

* Simplify inversion of special signals

* Few more DFF features

* Add forgotten virtual port renames

* Handle muxes with constant inputs

* Allow inversion for muxes

* cleanup

* DFF input can be constant

* init DFF only when needed

* cleanup

* Add basic PLL support

* Add some timings

* Add USR_RSTN support

* Display few more primitives

* Use pass trough signals to validate architecture data

* Use extra tile information from chip database

* Updates needed for a build system changes

* Implement SB_DRIVE support

* Properly named configuration bits

* autogenerated constids.inc

* small fix

* Initial code for CPE halfs

* Some cleanup

* make sure FFs are compatible

* reverted due to db change

* Merge DFF where applicable

* memory allocation issue

* fix

* better MX2

* ram_i handling

* Cleanup MX4

* Support latches

* compare L_D flag as well

* Move virtual pips

* Naive addf pack

* carry chains grouping

* Keep chip database reproducible

* split addf vectors

* Block CPEs when GPIO is used

* Prepare placement code

* RAM_I/RAM_O rewrite

* fix ram_i/o index

* Display RAM and add new primitives

* PLL wip code

* CC_PLL_ADV packing

* PLL handling cleanup

* Add PLL comments

* Keep only high fan-out BUFG

* Add skeleton for tests

* Utilize move_ram_o

* GPIO wip

* GPIO wip

* PLL fixes

* cleanup

* FF_OBF support

* Handle FF_IBF

* Make SLEW FAST if not defined as in latest p_r

* Make sure FF_OBF only driving GPIO

* Moved pll calc into separate file

* IDDR handling and started ODDR

* Route DDR input for CC_ODDR

* Notify error in case ODDR or IDDR are used but not with I/O pin

* cleanup for CC_USR_RSTN

* Extract proper RAM location  for bitstream

* Code cleanup

* Allow auto place of pads

* Use clock source flag

* Configure GPIO clock signals

* Handle conflicting clk

* Use BUGF in proper order

* Connected CLK, works without but good for debugging

* CC_CFG_CTRL placement

* Group RAM data 40 bytes per row

* Write BRAM content

* RAM wip

* Use relative constraints from chipdb

* fix broken build

* Memory wip

* Handle custom clock for memories

* Support FIFO

* optimize move_ram_io

* Fix SR signal handling acorrding to findings

* set placer beta

* Pre place what we can

* Revert "debug print if route found with wrong polarity"

This reverts commit cf9ded2f18.

* Revert "Constrain routes to have correct inversion state"

This reverts commit 795c284d48.

* Remove virtual pips

* Implement post processing inversion

* ADDF add ability to route additional CO

* Merge two ADDFs in one CPE

* Added TODO

* clangformat

* Cleanup

* Add serdes handling in config file

* Cleanup

* Cleanup

* Cleanup

* Fix in PLL handling

* Fixed ADDF edge case

* No need for this

* Fix latch

* Sanity checks

* Support CC_BRAM_20K merge

* Start creating testing environment

* LVDS fixes

* Add connection helper

* Cleanup

* Fix tabs

* Formatting fix

* Remove optimization tests for now

* remove read_bitstream

* removed .c_str()

* Removed config parsing

* using snake_case

* Use bool_or_default where applicable

* refactored bitstream write code

* Add allow-unconstrained option

* Update DFF related messages

* Add clock constraint propagation

---------

Co-authored-by: Lofty <dan.ravensloft@gmail.com>
2025-04-22 16:41:01 +02:00
Miodrag Milanović
7a3a43e150 placer1: add sanity check for try_swap_chain (#1472) 2025-04-13 19:11:11 +02:00
YRabbit
a5cff55520 Gowin. BUGFIX Use a separate net for segment gates (#1470)
* Gowin. BUGFIX Use a separate net for segment gates

We use a temporary separate small network (typically 2 - 3 sinks) for
routing from the segment network source to the segment gate. This fixes
the rare but unpleasant case of self-intersection when a route to a gate
is routed using PIPs after the gate, this is no longer allowed when
using a separate small network.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

* Gowin. Fix style.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>

---------

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-03-31 11:36:48 +02:00
YRabbit
0c01cb9e41 Gowin. Fix non-DCS networks. (#1467)
Prohibits the use of Dynamic Clock Selection PIPs for networks where no
DCS is present.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
nextpnr-0.8
2025-03-20 09:07:37 +01:00
Lofty
06992bda0a rust: add getBels() binding (#1460) 2025-03-19 10:02:34 +01:00
YRabbit
c84879e4d5 Gowin. Implement the DLLDLY primitive. (#1464)
DLLDLY is the clock delay primitive that adjust the input clock
according to the DLLSTEP signal and outputs the delayed clock.

These primitives are associated with clock pins and are "tapped" between
the output of this IBUF and the clock networks, leaving the possibility
to connect to the original unshifted signal as well, although the latter
is not very practical because it is no longer possible to use fast
wires.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-03-19 08:41:35 +01:00