Commit Graph

2072 Commits

Author SHA1 Message Date
Emil J. Tywoniak 3d5ee37d9a mem: fix signorm cell type morph 2026-05-05 21:35:13 +02:00
Jannis Harder 7a6c111375 WIP half broken snapshot 2026-05-05 21:35:13 +02:00
Jannis Harder ec796ad0b8 WIP remove dead code 2026-05-05 21:35:13 +02:00
Emil J 627b691578
Merge pull request #5831 from stashcroft/main
Make sure co-simulation only uses integer arithmetic
2026-04-27 14:03:58 +00:00
Emil J ec0a102302
Merge pull request #5832 from YosysHQ/emil/simple-extract
rtlil: rewrite SigSpec::extract for perf and packing
2026-04-24 19:03:53 +00:00
Emil J. Tywoniak 10bbda93f7 rtlil: extend SigSpec::extract test 2026-04-24 11:04:19 +02:00
Emil J. Tywoniak 25b9b796c4 rtlil: complicate extract again for packing 2026-04-24 11:04:19 +02:00
Scott Ashcroft 23a05fcf35 Add comments to make sure it is clear scale is an exponent of 10 2026-04-23 17:22:14 +01:00
Scott Ashcroft e69341cd5f Make sure co-simulation only uses integer arithmetic 2026-04-23 17:22:14 +01:00
Emil J. Tywoniak 14b0efeced rtlil: simplify extract for performance 2026-04-23 13:58:20 +02:00
Emil J 64e7ce2f57
Merge pull request #5803 from YosysHQ/emil/specrule-port-sanity
Fix $specrule port naming inconsistency
2026-04-22 10:46:36 +00:00
Petter Reinholdtsen 89d360aa4a Rewrote Linux edition of proc_self_dirname() to handle any symlink length.
This make sure the method work also when the program is located in
deep or long file paths, longer than both PATH_MAX and "getconf
PATH_MAX .".  Use the same code on GNU Hurd, where it now work.

I am not sure how to test this in a platform independent way.
2026-04-19 20:56:05 +02:00
Emil J. Tywoniak 0b3d03e69c newcelltypes: fix $specrule port naming 2026-04-13 22:34:46 +02:00
Emil J. Tywoniak 3e45f9729e fix $specrule port naming 2026-04-13 22:34:46 +02:00
nella a02c238874 Consolidate Wallace from booth and CSA. 2026-04-13 12:48:05 +02:00
Lofty d51a5535c7
Merge pull request #5798 from rocallahan/hashtable-destruction-race
Avoid racing accesses to shards[0] in ShardedHashtable parallel destruction
2026-04-11 10:25:58 +00:00
nella a54bca5493
Merge pull request #5794 from rocallahan/dispatch-pool-destruction
Fix data race in ParallelDispatchThreadPool destruction
2026-04-09 09:57:25 +00:00
Robert O'Callahan 1f6559a5cf Avoid racing accesses to shards[0] in ShardedHashtable parallel destruction 2026-04-08 21:56:36 +00:00
Emil J b485173428
Merge pull request #5792 from YosysHQ/emil/toposort-stability
toposort: avoid run to run variance caused by pointer sensitivity
2026-04-08 08:51:47 +00:00
Robert O'Callahan d586af0074 Fix data race in ParallelDispatchThreadPool destruction 2026-04-07 23:21:17 +00:00
Emil J. Tywoniak 41b41fefb3 utils: forbid the use of std::less on pointers in TopoSort 2026-04-06 15:09:52 +02:00
Emil J. Tywoniak 2033df5958 utils: refactor TopoSort 2026-04-06 15:09:52 +02:00
Lofty 162eeea29a cellaigs: remove some dead code 2026-03-31 09:37:18 +01:00
Robert O'Callahan 290fb0556d Prevent race on `num_active_worker_threads_`.
The core issue here is that we need to ensure `num_active_worker_threads_`
is read before incrementing `done_workers`. See the comments
added in this PR to explain why, and why the resulting code is
race-free.
2026-03-24 22:20:18 +00:00
Emil J 7b2ab9b245
Merge pull request #5763 from YosysHQ/emil/c-slow-init
genrtlil: fast memory initialization
2026-03-23 10:21:21 +00:00
nella ee0461eb00 Change time log format. 2026-03-19 14:38:22 +01:00
nella d6ab610622 Implement wall clock time meas. 2026-03-19 14:38:22 +01:00
Emil J. Tywoniak ea11453cef rtlil: faster remove2 2026-03-18 23:33:35 +01:00
Emil J c8f715fed8
Merge pull request #5664 from rocallahan/parallel-opt-clean
Parallelize `opt_clean` pass
2026-03-16 09:52:34 +00:00
Drew Lewis 4251cd69ed Fix missing return in NDEBUG case
Signed-off-by: Drew Lewis <cannada@google.com>
2026-03-13 19:51:49 +00:00
Emil J 2f1cdc2df9
Merge pull request #5728 from povik/tcl-set-result
Replace deprecated Tcl API to fix use-after-free
2026-03-06 13:36:48 +00:00
Martin Povišer 167c6c4585 Replace deprecated Tcl API to fix use-after-free
Under Tcl 9.0 the Tcl_SetResult utility is a macro:

	#define Tcl_SetResult(interp, result, freeProc) \
		do { \
		    const char *__result = result; \
		    Tcl_FreeProc *__freeProc = freeProc; \
		    Tcl_SetObjResult(interp, Tcl_NewStringObj(__result, -1)); \
		    if (__result != NULL && __freeProc != NULL && __freeProc != TCL_VOLATILE) { \
			if (__freeProc == TCL_DYNAMIC) { \
			    Tcl_Free((char *)__result); \
			} else { \
			    (*__freeProc)((char *)__result); \
			} \
		    } \
		} while(0)

Temporaries constructed as part of the 'result' expression will be
dropped before the 'result' pointer is used. What was safe when
Tcl_SetResult was a function isn't safe with the macro definition.
Transition away from deprecated SetResult to calling
SetObjResult/MewStringObj directly.
2026-03-06 11:52:17 +01:00
Robert O'Callahan ac55935a68 Add unit-tests for `ParallelDispatchThread` and friends 2026-03-06 02:20:08 +00:00
Robert O'Callahan b42bb05b63 Parallelize `Design::check()` 2026-03-06 02:03:21 +00:00
Robert O'Callahan e2166c4684 Parallelize `collect_garbage()` 2026-03-06 02:03:21 +00:00
Robert O'Callahan 5ff7d344c9 Add `FfInitVals::set_parallel()` method
We'll use this later in the PR.
2026-03-06 02:03:21 +00:00
Robert O'Callahan fe329a0e14 Add `MonotonicFlag`
We'll use this later in the PR.
2026-03-06 02:03:21 +00:00
Robert O'Callahan e71da96314 Add `ConcurrentWorkQueue`
We'll use this later in the PR.
2026-03-06 02:03:21 +00:00
Robert O'Callahan ab238c3145 Add `ShardedHashSet`
We'll use this later in the PR.
2026-03-06 02:03:21 +00:00
Robert O'Callahan 87521df534 Add `ShardedVector`
We'll use this later in the PR.
2026-03-06 02:03:21 +00:00
Robert O'Callahan b079e5721c Add `ParallelDispatchThreadPool`
We'll use this later in the PR.
2026-03-06 02:03:21 +00:00
Robert O'Callahan 898a288a99 Add `work_pool_size`, `IntRange`, `item_range_for_worker`, and `ThreadIndex`
We'll use these later in this PR.
2026-03-06 02:03:21 +00:00
Robert O'Callahan bd7f2d9ba4 Make `log_error()` work in a `Multithreaded` context.
`log_error()` causes an exit so we don't have to try too hard here. The main
thing is to ensure that we normally are able to exit without causing a stack
overflow due to recursive asserts about not being in a `Multithreaded` context.
2026-03-06 02:03:21 +00:00
Robert O'Callahan 7af5dbae35 Add `IdString::unescape()` method
We've already talked about adding this as an alternative to `log_id()`, and we'll
need it later in this PR.
2026-03-06 02:03:21 +00:00
Emil J. Tywoniak 23eb38fe3f celltypes: include newcelltypes to allow legacy code access to migrated yosys_celltypes 2026-03-05 11:59:20 +01:00
Emil J. Tywoniak 6485a13809 newcelltypes: mark header unstable 2026-03-04 15:17:26 +01:00
nella 04822c6660 Readd builtin_ff_cell_types for plugin parity. 2026-03-04 12:39:45 +01:00
nella 66bd4716cf rtlil use newcelltypes. 2026-03-04 12:39:45 +01:00
Emil J. Tywoniak 0284595e9c celltypes: fix absurd eval declarations 2026-03-04 12:39:45 +01:00
Emil J. Tywoniak 793a3513c6 newcelltypes: use unordered_map 2026-03-04 12:39:45 +01:00