YosysHQ / yosys

Yosys Open SYnthesis Suite
https://yosyshq.net/yosys/
ISC License
3.38k stars 873 forks source link

Importing init of memory is extremely slow #4601

Open marzoul opened 3 days ago

marzoul commented 3 days ago

Version

Yosys 0.45+106

On which OS did this happen?

Linux

Reproduction Steps

Complete Yosys version : Yosys 0.45+106 (git sha1 982fade0d, g++ 14.2.1 -march=x86-64 -mtune=generic -O2 -fno-plt -fexceptions -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/home/prostboa/Dev/AUR/yosys-git/src=/usr/src/debug/yosys-git -flto=auto -fPIC -O3)

Reproducer can't be attached due to size. Here is a public archive : https://cloud.univ-grenoble-alpes.fr/s/f9ADZGf7sRpr9Ff

Init with zeros is done here for the sake of a simple reproducer. Actually for original design, init with arbitrary data is used. What causes the issue if the init block with following template (generated by ghdl) :

initial begin
    mem[65535] = 1'b0;
    mem[65534] = 1'b0;
    [...]
    mem[1] = 1'b0;
    mem[0] = 1'b0;
end

Expected Behavior

Yosys should perform synthesis in very short time (for example less than 2 seconds)

Actual Behavior

Yosys is taking at least several minutes to import the design (killed after 5 minutes)

marzoul commented 3 days ago

Update : For unknown reasons, after 4 minuts Yosys gets killed by the operating system. So it's not just a rapidity problem, there is a crash-type of issue involved.