Emil J. Tywoniak
0d8c21129f
rtlil: remove textual RTLIL reference tests for ease of maintenance
2025-09-19 16:23:26 +02:00
Emil J. Tywoniak
85bcdee232
rtlil: fix roundtrip test on macOS due to sed non-POSIX non-sense
2025-09-16 15:47:38 +02:00
Emil J. Tywoniak
7e6126f753
rtlil: fix roundtrip test by eliminating absolute paths from src attributes with -relativeshare
2025-09-16 15:47:38 +02:00
Emil J. Tywoniak
73747f6928
read_verilog: add -relativeshare for synthesis reproducibility testing
2025-09-16 15:47:35 +02:00
Emil J. Tywoniak
175e024033
functional: in test, rely less on wreduce doing a perfect job
2025-09-16 15:47:16 +02:00
Emil J. Tywoniak
70e681ba7d
rtlil: move test temporary files to temp directory
2025-09-16 15:47:16 +02:00
Emil J. Tywoniak
fdbdd193c1
rtlil: add roundtrip test for design -stash and design -save, fix #5321
2025-09-16 15:47:16 +02:00
Emil J. Tywoniak
4215f3c134
rtlil: add textual roundtrip test
2025-09-16 15:47:16 +02:00
Emil J. Tywoniak
bcc69d5f6e
write_rtlil: add -sort to match old behavior
2025-09-16 15:47:16 +02:00
Emil J. Tywoniak
118c1890b1
raise_error: don't rely on module ordering in test
2025-09-16 15:47:16 +02:00
Emil J. Tywoniak
1328a33e82
write_rtlil: dump in insertion order
2025-09-16 15:47:14 +02:00
Emil J. Tywoniak
68ad52c6ae
bugpoint: don't sort
2025-09-16 15:39:13 +02:00
Emil J. Tywoniak
e11ea42af0
raise_error: whitespace
2025-09-16 15:39:13 +02:00
Emil J. Tywoniak
d6d1f16c43
hashlib: add insertion order const iterator
2025-09-16 15:39:13 +02:00
Emil J. Tywoniak
430adb3b59
write_rtlil: don't sort
2025-09-16 15:39:12 +02:00
Emil J
c0577890f0
Merge pull request #5316 from rocallahan/cleanup-Const
...
Cleanup `RTLIL::Const`
2025-09-16 10:47:29 +02:00
Robert O'Callahan
fee2b8992c
Stop using mutable
in Const
.
...
Now that we only call `bitvectorize()` in non-const methods, we can move the casting-away-const to only happen
in `bitvectorize()`, which is deprecated so only some plugins (maybe) are using it.
This means `const` `Const` methods don't change the underlying data, which means
they'll be safe to use from multiple threads if/when we want to do that.
2025-09-16 03:17:24 +00:00
Robert O'Callahan
29810f1e7c
Make Const::is_*() functions work on packed bits without decaying to vector<State>
2025-09-16 03:17:24 +00:00
Robert O'Callahan
caaf9a4400
Const::decode_string() doesn't need to call bitvectorize
2025-09-16 03:17:24 +00:00
Robert O'Callahan
cb1186aac5
Make Const::as_string work without reducing packed bits to vector<State>
2025-09-16 03:17:24 +00:00
Robert O'Callahan
f61e3377a9
Hash strings 8 bytes at a time
2025-09-16 03:17:24 +00:00
Robert O'Callahan
67a274ed1f
Optimize Const::hash_into to hash packed bits efficiently
2025-09-16 03:17:24 +00:00
Robert O'Callahan
1a367b907c
Use fast path for 32-bit Const integer constructor in more places
2025-09-16 03:17:24 +00:00
Robert O'Callahan
9ad83cc67b
Fast path for Const::operator==
2025-09-16 03:17:24 +00:00
Robert O'Callahan
b597ad777e
Make Const::as_bool and Const::as_int work with packed bits without decaying to vector<State>
2025-09-16 03:17:24 +00:00
Robert O'Callahan
b06085ab6c
Make Const::Const(long long) constructor use packed bits internally if possible
2025-09-16 03:17:24 +00:00
Robert O'Callahan
61caa5e042
Deprecate Const::bitvectorize()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
1e244cd78a
Deprecate Const::bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
9493292690
Update tests to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
09b493cfcd
Update techlibs to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
6dc9a8bacf
Update kernel to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
7f247fb125
Update passes/hierarchy to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
159ca3ba56
Update passes/tests to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
8cc86b2643
Update passes/techmap to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
d1642bf510
Update passes/sat to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
2d5ce8c363
Update passes/proc to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
5600eb2e5b
Update passes/opt to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
23f196a3b8
Update passes/memory to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
e1d0c010ef
Update passes/fsm to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
1b589b065d
Update passes/cmds to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
f65ca488ec
Update frontends to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
34df6569a6
Update backends to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
662a3df987
Update Const API with alternatives to direct use of bits()
...
In particular, `Const::resize()`, `Const::set()`, and `Const::iterator`.
2025-09-16 03:17:22 +00:00
Robert O'Callahan
514fb8f901
Fix Const::const_iterator tag to be bidirectional_iterator_tag
2025-09-16 03:17:22 +00:00
Robert O'Callahan
03127173c6
Fix const_iterator postincrement behavior
2025-09-16 03:17:22 +00:00
github-actions[bot]
fe9eed0498
Bump version
2025-09-16 00:22:09 +00:00
Jannis Harder
09742e27f7
Merge pull request #5266 from rocallahan/abc-parallel
...
Run ABC passes in parallel
2025-09-15 18:49:27 +02:00
Emil J
475d455698
Merge pull request #5346 from YosysHQ/emil/verilog-codeowner
...
CODEOWNERS: add myself for read_verilog and AST
2025-09-15 17:38:00 +02:00
Robert O'Callahan
ae0ca7578a
Use a pool of ABC processes.
...
Doing ABC runs in parallel can actually make things slower when every ABC run requires
spawning an ABC subprocess --- especially when using popen(), which on glibc does not
use vfork(). What seems to happen is that constant fork()ing keeps making the main
process data pages copy-on-write, so the main process code that is setting up each ABC
call takes a lot of minor page-faults, slowing it down.
The solution is pretty straightforward although a little tricky to implement.
We just reuse ABC subprocesses. Instead of passing the ABC script name on the command
line, we spawn an ABC REPL and pipe a command into it to source the script. When that's
done we echo an `ABC_DONE` token instead of exiting. Yosys then puts the ABC process
onto a stack which we can pull from the next time we do an ABC run.
For one of our large designs, this is an additional 5x speedup of the primary AbcPass.
It does 5155 ABC runs, all very small; runtime of the AbcPass goes from 760s to 149s
(not very scientific benchmarking but the effect size is large).
2025-09-15 17:22:15 +02:00
Robert O'Callahan
27462da208
Run ABCs in parallel.
...
Large circuits can run hundreds or thousands of ABCs in a single AbcPass.
For some circuits, some of those ABC runs can run for hundreds of seconds.
Running ABCs in parallel with each other and in parallel with main-thread
processing (reading and writing BLIF files, copying ABC BLIF output into
the design) can give large speedups.
2025-09-15 17:18:42 +02:00