Commit Graph

186 Commits

Author SHA1 Message Date
AdvaySingh1 9646319098 Fixed source wire to be reset to nullptr so value isn't carried on 2026-02-02 10:10:01 -08:00
AdvaySingh1 15625f56ed Removed cmath arbitrary include 2026-02-02 10:08:41 -08:00
AdvaySingh1 fc61433faa Reducing verbosity for cell printing 2026-01-30 13:11:36 -08:00
AdvaySingh1 d7a3b4e312 Removed extraneous readblif knob from abc.cc 2026-01-30 12:42:55 -08:00
AdvaySingh1 3b4574b648 abc.cc node_retention pass cleanup 2026-01-30 12:00:12 -08:00
AdvaySingh1 d7aca59e27 Updated abc.cc and blifparse.cc 2026-01-30 11:22:00 -08:00
Akash Levy 26f5ff3d74 Merge from upstream 2026-01-26 22:16:11 -08:00
KrystalDelusion 125609105d
Merge pull request #5593 from RCoeurjoly/RCoeurjoly/5574_fix
abc: handle ABC script errors instead of hanging
2026-01-23 07:16:48 +13:00
Miodrag Milanovic b3b71df07c musllinux fix so wheels build can work 2026-01-12 15:38:45 +01:00
Miodrag Milanovic 2b12b74121 musllinux fix so wheels build can work 2026-01-11 15:23:38 +01:00
Roland Coeurjoly f1fc704c84 abc: handle ABC script errors instead of hanging 2026-01-07 23:46:33 +01:00
Akash Levy 8af276f106 Try again 2025-12-25 05:34:32 -05:00
Akash Levy a1c26a9da5 Yosys abc smallfix 2025-12-25 05:32:50 -05:00
Akash Levy 1941e8f042 Bump yosys and abc to latest 2025-12-25 03:46:16 -05:00
Robert O'Callahan 0e61f57458 Print errno to help diagnose failure to spawn ABC 2025-12-22 21:58:15 +00:00
Akash Levy abd485fa49 Bump Yosys to latest 2025-12-17 21:06:17 -08:00
Krystine Sherwin 9d3d8bf502
Switch posix_spawn to posix_spawnp 2025-12-15 09:40:04 +13:00
Akash Levy 16e4073225 Add configurable thread count in abc 2025-12-05 22:28:09 -08:00
Akash Levy 71ba176b50
Merge branch 'YosysHQ:main' into main 2025-11-24 14:04:13 -05:00
Robert O'Callahan e33ca17388 Force a newline to appear before YOSYS_ABC_DONE 2025-11-21 03:50:07 +00:00
Robert O'Callahan 8c2984dc5f Fix AbcModuleState::remap_name() to avoid calling IdString::c_str() 2025-11-12 11:52:04 +01:00
Akash Levy 3dc4cf3dd7 Fix non-thread-safe logging call 2025-11-09 15:45:33 -08:00
Akash Levy 0a9a6173f4 non-dff mode parallel 2025-11-07 01:06:05 -08:00
Akash Levy b5ea9991fe Undo removal of delete 2025-11-06 17:30:55 -08:00
Akash Levy 4758019cc7 Prepare dff_mode 2025-11-06 17:05:02 -08:00
Akash Levy 03c55e587e Reorder assign_map 2025-11-06 17:02:28 -08:00
Akash Levy 3ef4606d27 Add abc src annotation 2025-11-06 09:35:18 -08:00
Akash Levy 4a69969df4 Fixup parameters 2025-11-06 07:50:59 -08:00
Akash Levy 266854aa64 Fix up naming 2025-11-06 07:39:48 -08:00
Akash Levy cad296a3e5 Word mode 2025-11-06 07:27:51 -08:00
Akash Levy 2ebed571b5 Baseline 2025-11-06 06:44:35 -08:00
Robert O'Callahan 0f770285f3 Move global ABC configuration variables into AbcConfig and initialize them properly 2025-11-05 13:56:04 +00:00
Akash Levy d704eba595 Fix traceability by reverting to old abc 2025-09-25 10:16:22 -07:00
Jannis Harder 7a69dbb63d
Merge pull request #5372 from rocallahan/abc-done
Make ABC_DONE tracking more robust
2025-09-24 08:40:26 +02:00
Akash Levy cd37b064f9 Minor cleanup 2025-09-23 01:07:41 -07:00
Akash Levy a3542ae405 Fixup 2025-09-23 00:38:43 -07:00
Akash Levy 5f7361e66b Try fixing ThreadPool issue 2025-09-22 18:50:22 -07:00
Akash Levy d16ca47549
Merge branch 'YosysHQ:main' into main 2025-09-22 17:47:23 -07:00
Robert O'Callahan 7f6fae1f66 Extract ABC results in the order of `assigned_cells`.
Currently the order of extraction can vary based on which ABC runs finish first. That's
nondeterministic, therefore bad. Instead, force the processing to happen in the same order
as `assigned_cells`, i.e. the same order we use when not using parallelism. This should
make everything deterministic.

Note that we still allow ABC runs to complete out of order. Out-of-order results are
just not extracted until all the previous runs have completed and their results
extracted.
2025-09-22 05:07:03 +00:00
Robert O'Callahan 4fc782ef2b Make ABC_DONE detection more robust.
1) Change token from ABC_DONE to YOSYS_ABC_DONE to be a bit more robust against false matches.
2) Emit the token from the sourced script so that we don't have to worry about it showing up in the echoing
of the command as it executes. It will only appear in ABC stdout when it executes, i.e. when
our script has completed.
3) `set abcout` doesn't actually switch ABC to line buffering on stdout, since HAVE_SETVBUF is not actually
set in ABC builds in general. So stop using that. ABC does the necessary flushing when
`source` has finished.
2025-09-22 05:01:51 +00:00
Robert O'Callahan 2de641d051 Don't redirect spawned ABCs' stderr to our pipe.
popen() doesn't do this and we should emulate the behavior of popen() as much as possible.
2025-09-22 05:01:51 +00:00
Akash Levy 60d969530b Bump to latest 2025-09-21 01:10:04 -07:00
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 5ac6858f26 Remove .c_str() from log_cmd_error() and log_file_error() parameters 2025-09-16 22:59:08 +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
Akash Levy 045e7a83c8 Bump abc for multi-threading 2025-09-15 11:17:04 -07: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