3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-11-24 14:41:31 +00:00
yosys/tests/memlib
Craig Hasselbring 00b3c83282 memory_libmap: Add beam search for many-port memories
The existing read port assignment algorithm uses Cartesian product
expansion, which has O(options^N) complexity. For memories with many
read ports (e.g., 64 parallel reads), this causes exponential memory
usage (60GB+) and timeouts.

This commit adds a beam search algorithm that activates for >8 read
ports. It maintains only the top K (default 16) configurations at
each step, reducing complexity to O(N * options * K).

Tested with:
- 64 read ports: completes in ~1s vs OOM
- 32 read ports: completes in ~1s vs timeout
- Maintains existing behavior for ≤8 ports

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 18:31:38 -08:00
..
.gitignore Add a general tests/.gitignore and remove redundant entries in subdirectory .gitignore files. 2025-07-22 10:38:38 +00:00
generate.py memory_libmap: look for ram_style attributes on surrounding signals 2023-10-19 19:23:35 +02:00
memlib_9b1B.txt More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_9b1B.v Move parameters to module declaration 2024-04-08 12:44:37 +02:00
memlib_beam_search.v memory_libmap: Add beam search for many-port memories 2025-11-19 18:31:38 -08:00
memlib_beam_search.ys memory_libmap: Add beam search for many-port memories 2025-11-19 18:31:38 -08:00
memlib_block_sdp.txt Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_block_sdp.v Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_block_sdp_1clk.txt Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_block_sdp_1clk.v Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_block_sp.txt Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_block_sp.v Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_block_sp_full.txt More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_block_sp_full.v More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_block_tdp.txt Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_block_tdp.v Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_clock_sdp.txt More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_clock_sdp.v More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_lut.txt More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_lut.v More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_multilut.txt More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_multilut.v More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_wide_read.txt Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_wide_read.v Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_wide_sdp.txt Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_wide_sdp.v Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_wide_sp.txt Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_wide_sp.v Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_wide_write.txt Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_wide_write.v Add memory_libmap tests. 2022-05-18 17:32:56 +02:00
memlib_wren.txt More tests in memlib/generate.py 2023-02-21 05:23:15 +13:00
memlib_wren.v Move parameters to module declaration 2024-04-08 12:44:37 +02:00
run-test.sh tests: use /usr/bin/env for bash. 2023-08-12 11:59:39 +10:00