mirror of
https://github.com/YosysHQ/yosys
synced 2025-11-24 14:41:31 +00:00
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> |
||
|---|---|---|
| .. | ||
| Makefile.inc | ||
| memlib.cc | ||
| memlib.h | ||
| memlib.md | ||
| memory.cc | ||
| memory_bmux2rom.cc | ||
| memory_bram.cc | ||
| memory_collect.cc | ||
| memory_dff.cc | ||
| memory_libmap.cc | ||
| memory_map.cc | ||
| memory_memx.cc | ||
| memory_narrow.cc | ||
| memory_nordff.cc | ||
| memory_share.cc | ||
| memory_unpack.cc | ||