Commit Graph

945 Commits

Author SHA1 Message Date
David Shah
3503f4e907 router2: Make splitting of wires thread-safe
Signed-off-by: David Shah <dave@ds0.me>
2020-12-01 09:38:52 +00:00
David Shah
b6c91d1621 router2: Add per-thread rng
Signed-off-by: David Shah <dave@ds0.me>
2020-12-01 09:21:44 +00:00
David Shah
d8e748bc58 nexus: Refactor DSP macro splitting to make it more generic
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:28 +00:00
David Shah
30c65931b2 nexus: Add support for clocked MULT9X9s
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:28 +00:00
David Shah
9203181625 nexus: Support for unclocked 9x9 multiplies
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:28 +00:00
David Shah
094bf419d4 nexus: Miscellaneous DSP infrastructure
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:28 +00:00
David Shah
90608f2c89 nexus: Add some infrastructure for DSP packing
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:28 +00:00
David Shah
a69c595802 router1: Fix same-source-dest case
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:28 +00:00
David Shah
5e90086d4f router2: Fix case where src and dst are the same
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:28 +00:00
David Shah
cbf99d5e53 nexus: LUTRAM support
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:27 +00:00
David Shah
1bb509897c nexus: More pin styles and FASM pinmux gen
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:27 +00:00
David Shah
518ead2e2d nexus: IO pre-packing
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:27 +00:00
David Shah
84d5426242 nexus: Working on validity checking
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:27 +00:00
David Shah
b5d46a0235 nexus: Add Python bindings
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:27 +00:00
David Shah
44f98c545b nexus: Add global networks
Signed-off-by: David Shah <dave@ds0.me>
2020-11-30 08:45:27 +00:00
David Shah
1afa494e69 clangformat
Signed-off-by: David Shah <dave@ds0.me>
2020-11-26 18:08:19 +00:00
David Shah
70de8b3a03 nextpnr: Improve error reporting in Context::check
Signed-off-by: David Shah <dave@ds0.me>
2020-11-26 11:12:20 +00:00
Miodrag Milanovic
bb16fdb4bb Python code cleanup 2020-11-14 16:34:12 +01:00
David Shah
06555aa003 clangformat
Signed-off-by: David Shah <dave@ds0.me>
2020-11-14 09:07:34 +00:00
David Shah
b18ea204c2 Remove wire alias API
It has not actually been implemented in any router for over 2.5 years and causes nothing more than confusion. It can always be added back if it forms part of a future solution; possibly as part of a more general database structure rethink.

Signed-off-by: David Shah <dave@ds0.me>
2020-10-15 09:36:15 +01:00
Miodrag Milanović
f7da7c26aa
Merge pull request #500 from YosysHQ/dave/py-none-fix
python: Fix handling of None in pybind11
2020-09-14 15:57:29 +02:00
David Shah
b5e5f8d85f python: Fix handling of None in pybind11
Signed-off-by: David Shah <dave@ds0.me>
2020-09-14 14:17:07 +01:00
Miodrag Milanovic
717bcfa19e Preserve cmd parameters when loading json from GUI 2020-09-04 17:14:30 +02:00
Ross Schlaikjer
c30cadd19c
No longer need fstream include 2020-08-30 18:22:05 -04:00
Ross Schlaikjer
cba4753c22
Only print filenames for now, default on 2020-08-30 18:19:41 -04:00
Ross Schlaikjer
a8c110b045
Add option to print critical path source code
In order to make debugging the critical path easier, add an option that
will log the location each net was defined, if known.
If the file that contains the definition is known, and is readable, also
print the part of the source HDL responsible for the signal definition.
2020-08-30 17:43:29 -04:00
David Shah
109aa63474 clangformat
Signed-off-by: David Shah <dave@ds0.me>
2020-08-20 09:46:49 +01:00
David Shah
b0dedf1a22
Merge pull request #488 from YosysHQ/dave/port_fanin_fix
timing: Fix counting of fanin in out-of-context mode
2020-08-12 16:38:46 +01:00
David Shah
3611b7120c timing: Fix counting of fanin in out-of-context mode
Signed-off-by: David Shah <dave@ds0.me>
2020-08-12 10:42:26 +01:00
David Shah
e313d051a8 Add a warning when floorplan constraint doesn't match
Signed-off-by: David Shah <dave@ds0.me>
2020-08-12 10:11:52 +01:00
Miodrag Milanovic
1168d1ff90 Made proper exception translation 2020-08-07 09:46:02 +02:00
Miodrag Milanovic
fe398ab983 clangformat 2020-07-25 10:17:13 +02:00
David Shah
bb6e6a15f1 pycontainers: Fix kv-pair-iter type
Signed-off-by: David Shah <dave@ds0.me>
2020-07-24 16:27:47 +01:00
Miodrag Milanovic
597f4a1495 exception translation 2020-07-24 11:03:08 +02:00
Miodrag Milanovic
598ef014e6 Fixed named arguments 2020-07-24 10:59:11 +02:00
Miodrag Milanovic
770bb40eb3 proper argument propagation 2020-07-24 10:47:10 +02:00
Miodrag Milanovic
8a90328ab7 proper ctx export 2020-07-23 20:20:26 +02:00
Miodrag Milanovic
cca7d3aef7 possible fix 2020-07-23 19:55:25 +02:00
Miodrag Milanovic
8f2b707d02 Initial conversion to pybind11 2020-07-23 18:35:18 +02:00
David Shah
c7fbdc7877 Avoid low-value and slow pip name check for ECP5
Signed-off-by: David Shah <dave@ds0.me>
2020-06-29 19:52:31 +01:00
David Shah
32e655d0af placer1: Unlock even if placement fails
Prevents a hang during routing when using --force

Fixes #462

Signed-off-by: David Shah <dave@ds0.me>
2020-06-29 16:39:31 +01:00
Miodrag Milanovic
7a95629aff Fix clangformat and execute it 2020-06-27 13:20:16 +02:00
David Shah
4f4aa53120
Merge pull request #460 from whitequark/better-embed
Simplify and improve chipdb embedding/loading
2020-06-26 11:32:13 +01:00
whitequark
89e0cc8078 Simplify and improve chipdb embedding/loading. 2020-06-26 08:36:07 +00:00
David Shah
1df8ac805a HeAP: Add timeout to IO placement
Signed-off-by: David Shah <dave@ds0.me>
2020-06-25 19:42:53 +01:00
David Shah
c9e7d1448e clangformat
Signed-off-by: David Shah <dave@ds0.me>
2020-06-12 16:19:14 +01:00
David Shah
f44498a530
Merge pull request #447 from whitequark/wasi
Port nextpnr-{ice40,ecp5} to WASI
2020-05-24 14:23:35 +01:00
whitequark
e7bb04769d Port nextpnr-{ice40,ecp5} to WASI.
This involves very few changes, all typical to WASM ports:
  * WASM doesn't currently support threads or atomics so those are
    disabled.
  * WASM doesn't currently support exceptions so the exception
    machinery is stubbed out.
  * WASM doesn't (and can't) have mmap(), so an emulation library is
    used. That library currently doesn't support MAP_SHARED flags,
    so MAP_PRIVATE is used instead.

There is also an update to bring ECP5 bbasm CMake rules to parity
with iCE40 ones, since although it is possible to embed chipdb into
nextpnr on WASM, a 200 MB WASM file has very few practical uses.

The README is not updated and there is no included toolchain file
because at the moment it's not possible to build nextpnr with
upstream boost and wasi-libc. Boost requires a patch (merged, will
be available in boost 1.74.0), wasi-libc requires a few unmerged
patches.
2020-05-23 20:57:26 +00:00
David Shah
ddf546c2cc clangformat
Signed-off-by: David Shah <dave@ds0.me>
2020-05-16 12:57:24 +01:00
Eddie Hung
e6b85f1bc0 Fix embarassing use of topographical when meaning topological 2020-05-14 08:55:28 -07:00
David Shah
e431d1a33f Add missing --top option
Signed-off-by: David Shah <dave@ds0.me>
2020-05-09 19:47:03 +01:00
David Shah
25938500d6 python: Also convert regular map keys to string
Signed-off-by: David Shah <dave@ds0.me>
2020-04-24 18:23:03 +01:00
David Shah
fd099cef52 python: Wrap map IdString key when accessed by index
Signed-off-by: David Shah <dave@ds0.me>
2020-04-24 16:31:08 +01:00
Sylvain Munaut
3573fcca80 design_utils: Set port.net to null when disconnecting
Without this the python bindings can't actually connect anything else
to a disconnected port since the assert in connect_ports will think
it's still connected

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2020-04-24 16:13:07 +02:00
Rangel Ivanov
ef4a699b72 command.cc: Use correct constant for default router
Otherwise --help reports that the default router is heap

Signed-off-by: Rangel Ivanov <rangelivanov88@gmail.com>
2020-04-04 10:39:29 +03:00
David Shah
4b54253c24 router2: Prevent overflow
Signed-off-by: David Shah <dave@ds0.me>
2020-03-22 21:17:59 +00:00
David Shah
d20ce45c1b Merge branch 'master' of ssh.github.com:YosysHQ/nextpnr 2020-03-17 10:07:29 +00:00
David Shah
564f40f6db timing: Improve robustness to dangling/undriven logic
Signed-off-by: David Shah <dave@ds0.me>
2020-03-17 10:07:21 +00:00
David Shah
54b15ed201 Replace assertion failure with error
Signed-off-by: David Shah <dave@ds0.me>
2020-03-13 11:35:09 +00:00
Sylvain Munaut
4a9981ee77 pycontainers: Properly handle KeyErrors
We raise a C++ exception to abort the rest of the execution of
the function.

At the same time we standardize on using a throw runtime error as the
method to avoid warning when not returning values. (some places
used this throw and some other used std::terminate)

Fixes #403

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2020-03-04 00:12:45 +01:00
David Shah
b6158f94f6 svg: Basic SVG graphics rendering
Signed-off-by: David Shah <dave@ds0.me>
2020-02-15 11:35:51 +00:00
David Shah
2c7d2f9e0c placer1: Add routeability optimisation (off by default)
Signed-off-by: David Shah <dave@ds0.me>
2020-02-12 10:41:27 +00:00
David Shah
9125698cb0 HeAP: backport out-of-range fix
Signed-off-by: David Shah <dave@ds0.me>
2020-02-12 10:41:27 +00:00
David Shah
1cb0e3af03 HeAP: Add X and Y scaling factors for asymmetric arches
Signed-off-by: David Shah <dave@ds0.me>
2020-02-12 10:41:27 +00:00
David Shah
7db1484c75 HeAP: Make beta configurable
Signed-off-by: David Shah <dave@ds0.me>
2020-02-12 10:41:27 +00:00
David Shah
d1f5cdcb93 HeAP: Improve handling of heterogeneous slice arches
Signed-off-by: David Shah <dave@ds0.me>
2020-02-12 10:41:27 +00:00
David Shah
1ff060c5ad HeAP: Make solver tolerance arch-configurable
Signed-off-by: David Shah <dave@ds0.me>
2020-02-12 10:41:27 +00:00
David Shah
7bda6f15a9 placer1: Allow scaling HPWL differently in each direction
Signed-off-by: David Shah <dave@ds0.me>
2020-02-12 10:41:27 +00:00
David Shah
1ceffbe0bc
Merge pull request #391 from YosysHQ/router2-upstream
Upstreaming router2
2020-02-04 16:08:08 +00:00
David Shah
b4d029a55c
Merge pull request #385 from YosysHQ/router1-arc-fixes
Fixes for partial reconfig demo
2020-02-03 13:55:07 +00:00
David Shah
2248e07b66 router2: Improve flow and log output
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 13:46:05 +00:00
David Shah
a8206ed170 router2: Add a simple timing heuristic
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 13:33:20 +00:00
David Shah
7123209324 Allow selection of router algorithm
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:54:38 +00:00
David Shah
ad1cc12df1 router2: Make magic numbers configurable
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
f82e133c7c router2: Fix case of undriven unsunk arcs
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
c27e7780d1 router2: Multi-thread in more cases
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
3b043432f5 router2: Flatten wire structure
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
2de98386a7 router2: Experiment with data structures
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
7ac43e5f00 router2: Profile nets by route time
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
72367e6cfd router2: Improvements
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
900fe98f0d router2: reduce bias cost factor
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
3b6d9c952a router2: special case improvement
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
a1c703729c router2: reduce memory footprint
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
37543ad003 router2: debugging
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
17256c680a router2: debugging
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
3d739b5916 router2: first pass at reserved wires
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
50b120528a router2: debugging some edge cases
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
bbc9c9b0ba router2: speedup
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
59c554b50a router2: Improve backwards routing of some cases
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
363d664f27 router2: tweaks
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
ffd679cd36 router2: Attempt to fix some stuck routing cases
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
3b28ba2f76 router2: Debugging
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
39b75244da router2: Working on multithreading
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
72f4721167 router2: Some simple partitioning
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:31 +00:00
David Shah
c21db8a0c1 router2: Congestion map generation
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:30 +00:00
David Shah
010e7ba8cb router2: Add IPIN cost to model
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:30 +00:00
David Shah
a8351b265f router2: Changes for ECP5
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:30 +00:00
David Shah
abdaa9c8a1 ecp5: Router2 test integration
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:30 +00:00
David Shah
385380401a router2: Deal with some special cases
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:30 +00:00
David Shah
fa217a50a5 router2: Binding nextpnr wires/pips
Signed-off-by: David Shah <dave@ds0.me>
2020-02-03 11:38:30 +00:00