yosys/kernel
Robert O'Callahan 3a5742ffd2 Improve commutative hashing.
The simple XOR `commutative_eat()` implementation produces a lot of collisions.
https://www.preprints.org/manuscript/201710.0192/v1/download is a useful reference on this topic.

Running the included `hashTest.cc` without the hashlib changes, I get 49,580,349 collisions.
The 49,995,000 (i,j) pairs (0 <= i < 10000, i < j < 10000) hash into only 414,651 unique hash values.
We get simple collisions like (0,1) colliding with (2,3).

With the hashlib changes, we get only 707,099 collisions and 49,287,901 unique hash values.
Much better! The `commutative_hash` implementation corresponds to `Sum(4)` in the paper
mentioned above.
2025-08-19 21:45:52 +00:00
..
binding.cc
binding.h
bitpattern.h mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
calc.cc Reduce comparisons of size_t and int 2024-11-29 12:53:29 +13:00
cellaigs.cc hashlib: hash_eat -> hash_into 2024-12-18 15:09:25 +01:00
cellaigs.h mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
celledges.cc celledges: use capped shift width 2025-04-26 18:34:21 +02:00
celledges.h
celltypes.h celltypes: Comment pointing to ConstEval 2025-08-12 10:57:59 +12:00
compute_graph.h
consteval.h consteval: Fix $bwmux handling 2025-08-12 10:57:58 +12:00
constids.inc Add raise_error pass 2025-07-29 11:39:50 +12:00
cost.cc cost: Add `$mem_v2`, `$macc_v2` estimates 2025-03-18 13:51:09 +01:00
cost.h
driver.cc driver.cc: Don't split options on commas 2025-06-13 10:31:53 +12:00
drivertools.cc rtlil: represent Const strings as std::string 2024-10-14 06:28:12 +02:00
drivertools.h mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
ff.cc rtlil: represent Const strings as std::string 2024-10-14 06:28:12 +02:00
ff.h
ffinit.h Compute `is_port` in AbcPass without iterating through all cells and wires in the module every time we run ABC. 2025-08-14 22:29:45 +00:00
ffmerge.cc rtlil: represent Const strings as std::string 2024-10-14 06:28:12 +02:00
ffmerge.h Compute `is_port` in AbcPass without iterating through all cells and wires in the module every time we run ABC. 2025-08-14 22:29:45 +00:00
fmt.cc Merge pull request #4567 from kivikakk/cxxrtl-escape-trailing 2025-03-14 16:52:07 +13:00
fmt.h
fstdata.cc fstdata.cc: Fix last step 2025-05-12 13:18:19 +12:00
fstdata.h sim.cc: Move cycle check 2025-05-12 12:48:01 +12:00
functional.cc functional.cc: Explicit unsorted-pool-as-LIFO 2025-05-31 09:57:43 +12:00
functional.h mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
gzip.cc Allow reading of gzipped files when not in NDEBUG 2025-05-21 15:18:29 -07:00
gzip.h gzip: back to pointers 2025-03-19 13:43:44 +01:00
hashlib.h Improve commutative hashing. 2025-08-19 21:45:52 +00:00
io.cc Fix vararg alignment 2025-08-15 05:43:53 +00:00
io.h Making `stringf()` use the format conversion specs as-is without widening them. 2025-07-31 10:54:56 +00:00
json.cc
json.h Reapply "Add groups to command reference" 2025-08-06 13:52:12 +12:00
log.cc Merge pull request #5183 from YosysHQ/emil/test-diagnostics 2025-08-08 14:46:25 +02:00
log.h log: add -expect types prefix-log, prefix-warning, prefix-error 2025-06-16 21:26:08 +02:00
log_help.cc log_help: Fix mem leaks 2025-08-06 13:52:12 +12:00
log_help.h log_help: Fix mem leaks 2025-08-06 13:52:12 +12:00
macc.h macc: Rename 'ports' to 'terms' throughout codebase 2025-03-18 13:25:10 +01:00
mem.cc kernel/mem: Fix Cygwin compat 2024-12-03 13:15:33 +13:00
mem.h rtlil: represent Const strings as std::string 2024-10-14 06:28:12 +02:00
modtools.h mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
qcsat.cc
qcsat.h
register.cc log_help: Fix mem leaks 2025-08-06 13:52:12 +12:00
register.h kernel/register.h: whitespace 2025-08-06 21:34:37 +01:00
rtlil.cc Merge pull request #5135 from YosysHQ/emil/ast-ownership 2025-08-12 10:58:12 +02:00
rtlil.h ast, read_verilog: ownership in AST, use C++ styles for parser and lexer 2025-08-11 13:34:10 +02:00
satgen.cc Merge pull request #5025 from povik/fix-macc_v2-satgen 2025-04-22 08:55:28 +12:00
satgen.h equiv_simple: refactor 2025-08-08 01:35:33 +02:00
scopeinfo.cc
scopeinfo.h fix bugs in handling last id in hdlname to scopename conversion 2025-01-16 12:57:08 +01:00
sexpr.cc
sexpr.h
sigtools.h Compute `is_port` in AbcPass without iterating through all cells and wires in the module every time we run ABC. 2025-08-14 22:29:45 +00:00
tclapi.cc Reinstate #4768 2025-04-08 11:58:05 +12:00
timinginfo.h mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
topo_scc.h
utils.h io: refactor string and file work into new unit 2025-03-19 13:43:42 +01:00
yosys.cc Allows calling yosys_shutdown and then yosys_setup to restart. 2025-06-07 22:21:09 +08:00
yosys.h driver: allow --no-version still write things like Generated by Yosys 2025-05-07 11:34:23 +02:00
yosys_common.h Improve commutative hashing. 2025-08-19 21:45:52 +00:00
yw.cc rtlil: represent Const strings as std::string 2024-10-14 06:28:12 +02:00
yw.h mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00