Emil J
73e47ac3fe
Merge pull request #5357 from rocallahan/builtin-ff
...
Instead of using `builtin_ff_cell_types()` directly, go through a method `Cell::is_builtin_ff()`
2025-09-17 11:37:16 +02:00
Robert O'Callahan
d24488d3a5
Instead of using builtin_ff_cell_types() directly, go through a method Cell::is_builtin_ff()
2025-09-17 03:24:19 +00:00
Robert O'Callahan
a7c46f7b4a
Remove .c_str() calls from parameters to log_warning()/log_warning_noprefix()
2025-09-16 23:02:16 +00:00
Robert O'Callahan
5ac6858f26
Remove .c_str() from log_cmd_error() and log_file_error() parameters
2025-09-16 22:59:08 +00:00
Jannis Harder
b95549b469
Merge pull request #5348 from rocallahan/remove-string_buf
...
Remove `string_buf` by making `log_signal()` and `log_const()` return `std::string`
2025-09-16 20:20:56 +02:00
Robert O'Callahan
8cc86b2643
Update passes/techmap to avoid bits()
2025-09-16 03:17:23 +00:00
Robert O'Callahan
8492c49f6c
Remove string_buf
by making log_signal()
and log_const()
return std::string
...
We only have to fix one caller in-tree so this probably has very low impact on out-of-tree plugins.
Resolves #5215
2025-09-16 03:06:17 +00: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
Robert O'Callahan
38f8165c80
Remove direct RTLIL access from gate_t
2025-09-15 17:10:20 +02:00
Robert O'Callahan
222f457a04
Only write out stdcells/lutcosts once for all ABC runs
2025-09-15 17:10:07 +02:00
Robert O'Callahan
13b3418a7f
Split abc_module()
into prepare_module()
and run_abc()
...
`prepare_module()` will have to run on the main thread.
2025-09-15 17:01:25 +02:00
Robert O'Callahan
e0ae7b7af4
Remove .c_str() calls from log()/log_error()
...
There are some leftovers, but this is an easy regex-based approach that removes most of them.
2025-09-11 20:59:37 +00:00
Robert O'Callahan
d34ac0c87d
Make log()
use the FmtString
infrastructure.
...
Now `log()` supports `std::string`.
We have to fix a few places where the format parameter was not a compile time constant.
This is mostly trivial.
2025-09-09 15:41:03 +02:00
Jannis Harder
c468ee7add
Merge pull request #5304 from rocallahan/idstring-stringf
...
Support `IdString` parameters in `stringf()` and remove `.c_str()` in a lot of places
2025-09-08 20:29:20 +02:00
Mohamed Gaber
ae8c4e2ea6
libparse/filterlib: mark LibertyParser::error() as weak
...
When FILTERLIB is defined (attempts to compile libparse more or less standalone,) mark the `LibertyParser::error()` as weak so utilities using libparse as a library can override its behavior (the default behavior being exit(1)). As the code is quite performance-critical, I've elected to not modify it to raise an exception or have a callback or similar and simply allow for a link-time replacement.
2025-09-05 00:13:45 +02:00
Robert O'Callahan
c7df6954b9
Remove .c_str() from stringf parameters
2025-09-01 23:34:42 +00:00
Robert O'Callahan
62c441107d
Build FfInitVals for the entire module once and use it for every ABC run.
2025-08-14 22:29:51 +00:00
Robert O'Callahan
2654bd5355
Compute is_port
in AbcPass without iterating through all cells and wires in the module every time we run ABC.
...
This does not scale when we run ABC thousands of times in a single AbcPass.
2025-08-14 22:29:45 +00:00
Robert O'Callahan
ac8259b02e
Preserve assign_map
across ABC invocations.
...
Currently `assign_map` is rebuilt from the module from scratch every time we invoke ABC.
That doesn't scale when we do thousands of ABC runs over large modules. Instead,
create it once and then maintain incrementally it as we update the module.
2025-08-14 22:27:04 +00:00
Robert O'Callahan
4de3ee093e
Mark kept FF output wires as ports directly instead of via the 'keep' attribute
2025-08-14 22:26:38 +00:00
Robert O'Callahan
ccb23ffc1a
Fix indentation
2025-08-13 05:44:52 +00:00
Robert O'Callahan
885bb744e3
Make module
a parameter of the function so we can change its constness in context
2025-08-13 05:44:52 +00:00
Robert O'Callahan
53c72c0d39
Move code in abc_module()
that modifies the design into a new function extract()
...
Splits up the big `abc_module()` function and isolates the code that modifies the design
after running ABC.
2025-08-13 05:44:52 +00:00
Robert O'Callahan
ceedcecfae
Move the input parameters to abc_module
that are identical across modules to an AbcConfig
struct.
2025-08-13 05:44:52 +00:00
Robert O'Callahan
4ba42c4752
Move ABC pass state to a struct instead of storing it in global variables.
2025-08-13 05:44:52 +00:00
Krystine Sherwin
3959d19291
Reapply "Add groups to command reference"
...
This reverts commit 81f87ce6ed
.
2025-08-06 13:52:12 +12:00
Drew Lewis
d9b3a3f7bb
Improve the performance of concat_name
in the flattening pass
...
- Make IdString parameter pass by const ref to avoid IdString ref counting in the constructor
- Remove extra std::string allocation to remove prefix
- Avoid using `stringf` for concatenation
2025-07-29 10:52:32 +02:00
N. Engelhardt
81f87ce6ed
Revert "Add groups to command reference"
2025-07-23 14:41:49 +00:00
Krystine Sherwin
3eb7b35c29
flatten: Move to hierarchy folder
2025-07-21 10:36:19 +12:00
Emil J. Tywoniak
21e68ec9be
libparse: fix space ANDs
2025-07-15 12:53:13 +02:00
Emil J. Tywoniak
bf1f236998
dfflibmap: add back tab and quote filters for good vibes
2025-07-11 23:12:58 +02:00
Emil J. Tywoniak
c6e1d461fa
libparse: support space ANDs
2025-07-11 23:09:30 +02:00
Emil J. Tywoniak
4b1a8a3b66
libparse: add LibertyExpression::str for testing
2025-07-11 18:27:19 +02:00
Emil J
14aad097f0
Merge pull request #5190 from YosysHQ/emil/dfflibmap-fix-negated-next_state
...
dfflibmap: propagate negated next_state to output correctly
2025-07-10 19:50:02 +02:00
Emil J. Tywoniak
ad80e2bd39
libparse: install headers for use in plugins
2025-07-08 13:39:03 +02:00
Miodrag Milanović
54013c6da7
Merge pull request #5162 from YosysHQ/micko/attrmap
...
Make attrmap able to alter memory attributes as well
2025-06-30 15:24:04 +02:00
Emil J. Tywoniak
778079b058
dfflibmap: propagate negated next_state to output correctly
2025-06-24 12:01:12 +02:00
Krystine Sherwin
beaca05b40
Include boxes in attrmap
...
Rename `selected_members` iterator to memb.
Add comment on `selected_processes` loop for clarity.
2025-06-21 09:49:56 +12:00
Miodrag Milanovic
784de0f6e3
Make attrmap able to alter memory attributes as well
2025-06-04 08:01:21 +02:00
Krystine Sherwin
785cabcb0f
abc9_ops: Skip opt_expr in proc
2025-05-31 12:16:37 +12:00
Lofty
e4ab6acb46
Add genlib support to abc_new
2025-05-27 09:47:29 +01:00
Emil J. Tywoniak
2ca2ecaa1c
libcache: fix help
2025-05-09 12:40:45 +02:00
Emil J. Tywoniak
0d621ecc11
libcache: add -quiet and -verbose
2025-05-09 11:36:39 +02:00
Emil J. Tywoniak
adb1986dc1
gzip: refactor file open failure errors
2025-04-29 10:37:35 +02:00
Mike Inouye
b7d7b377fd
Detect FF functions that use parentheses.
...
Signed-off-by: Mike Inouye <mikeinouye@google.com>
2025-04-22 23:26:55 +00:00
N. Engelhardt
5db1765bee
add flatten -nocleanup option
2025-04-17 18:17:42 +02:00
Jannis Harder
7f7ad87b7b
Merge pull request #5033 from jix/liberty-fixes
...
liberty: More robust parsing
2025-04-17 09:24:42 +02:00
KrystalDelusion
026d161f91
Merge pull request #4923 from KelvinChung2000/const-wrap
...
feat: Allow full constant wrapping for hilomap
2025-04-17 10:16:59 +12:00
Jannis Harder
ce74404890
liberty: Error on unclosed curly braces
...
This is an indication that the liberty file was truncated, which
shouldn't be silently ignored.
2025-04-16 19:12:01 +02:00