3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-22 19:17:55 +00:00
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 Generate an RTLIL representation of bind constructs 2021-08-13 17:11:35 -06:00
binding.h Generate an RTLIL representation of bind constructs 2021-08-13 17:11:35 -06:00
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 Fixing old e-mail addresses and deadnames 2021-06-08 00:39:36 +02:00
celltypes.h celltypes: Comment pointing to ConstEval 2025-08-12 10:57:59 +12:00
compute_graph.h convert class FunctionalIR to a namespace Functional, rename functionalir.h to functional.h, rename functional.h to compute_graph.h 2024-08-21 11:04:08 +01:00
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 cost: add model for techmapped cell count, keep_hierarchy pass with -min_cost parameter 2024-07-29 10:26:02 +02:00
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 ff: improve comments 2024-09-05 11:17:12 +02:00
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 fmt,cxxrtl: add option to group digits in numbers. 2024-04-02 12:13:22 +02:00
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 Support for BTOR witness to Yosys witness conversion 2023-01-11 18:07:16 +01:00
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 Add coarse-grain $buf buffer cell type 2024-09-17 10:46:20 +02:00
qcsat.h Refactor common parts of SAT-using optimizations into a helper. 2021-08-09 16:54:35 +02:00
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 Add scopeinfo index/lookup utils 2024-02-06 18:01:26 +01:00
scopeinfo.h fix bugs in handling last id in hdlname to scopename conversion 2025-01-16 12:57:08 +01:00
sexpr.cc factor out SExpr/SExprWriter classes out of smtlib backend, and also tidy them up/document them 2024-08-21 11:03:27 +01:00
sexpr.h factor out SExpr/SExprWriter classes out of smtlib backend, and also tidy them up/document them 2024-08-21 11:03:27 +01:00
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 functional backend: topological sort starts with the output and next states nodes, other nodes get deleted 2024-08-21 11:03:29 +01:00
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