ITADN

Yosys sat -prove segfaults on a design containing a memory read

#6009Openkenmcmil 创建于 2026-07-07
pending-verification
K
kenmcmilcommented
### Version 0.66 ### On which OS did this happen? macOS ### Reproduction Steps Version: Yosys 0.66 (git sha1 7f8fdfd8d7bc08c749a2a969388d3425d4f369d5), clang++ 21.0.0, macOS (Apple silicon, Homebrew build). Command (SIGSEGV, exit 139): yosys -p "read_rtlil bug.il; memory; sat -prove out 8'00000101" Minimal bug.il — a module whose only output is an asynchronous read of an uninitialized memory: module \top wire width 4 input 1 \addr wire width 8 output 2 \out wire width 8 $r memory width 8 size 16 \mem cell $memrd $rd parameter \MEMID "\\mem" parameter \ABITS 4 parameter \WIDTH 8 parameter \CLK_ENABLE 0 parameter \CLK_POLARITY 0 parameter \TRANSPARENT 0 connect \CLK 1'x connect \EN 1'x connect \ADDR \addr connect \DATA $r end connect \out $r end Isolation notes (all on the same bug.il): - read_rtlil bug.il; memory → OK (exit 0). The crash is not in read_rtlil or memory. - read_rtlil bug.il; memory; sat (find-a-model) → OK (exit 0). - read_rtlil bug.il; memory; sat -prove out 8'00000101 → SIGSEGV. - read_rtlil bug.il; memory_collect; memory_map; sat -prove … → also SIGSEGV. - Adding/removing a $meminit, and the specific prove-value, make no difference — the crash is the sat -prove path over a $memrd-derived signal (present regardless of whether memory mapped it to logic). So: sat succeeds but sat -prove crashes on the identical circuit, whenever the proven signal derives from a memory read. bug.il is at .../scratchpad/bug.il if you want the exact file to attach. ### Expected Behavior No SIGSEGV ### Actual Behavior SIGSEGV
0 条评论