You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thanks for the fantastic issue report @likeamahoney! 🥳 The HoistSignals and Mem2Reg passes are an effort to make the Verilog lowering to HW and Arcilator/LLVM more reliable. The idea is to run Mem2Reg and then HoistSignals to simplify processes, then run an improved version of Desequentialize to detect registers/latches and factor them out, and then convert the LLHD processes to scf.execute_regions. At that point Arcilator should be able to simulate basic synthesizable structures. A bit later, we'll want to add support for the LLHD dialect to Arcilator, such that it can simulate the progression of physical time and maintain an event queue where it's needed.
So the idea is definitely to get this into a shape where it can deal with any Verilog you throw at it 😁
Thanks for the fantastic issue report @likeamahoney! 🥳 The HoistSignals and Mem2Reg passes are an effort to make the Verilog lowering to HW and Arcilator/LLVM more reliable. The idea is to run Mem2Reg and then HoistSignals to simplify processes, then run an improved version of Desequentialize to detect registers/latches and factor them out, and then convert the LLHD processes to scf.execute_regions. At that point Arcilator should be able to simulate basic synthesizable structures. A bit later, we'll want to add support for the LLHD dialect to Arcilator, such that it can simulate the progression of physical time and maintain an event queue where it's needed.
So the idea is definitely to get this into a shape where it can deal with any Verilog you throw at it 😁
Thank you very much for writing a detailed roadmap. I really hope that soon it will be possible to simulate large SystemVerilog designs on the arcilator.
Hi all!
There are a few issues related to moore to llvm lowering pipeline.
Currently there is no possibility to lower combination logic with control flow operators into LLVM. For example:
because it fails with this :
error: failed to legalize operation 'llhd.constant_time'
And also
arcilator
fails to lower sequential logic which contains both blocking and nonblocking assignments like this example:because it fails with that:
I'm using to lower a such cmd:
Also I tried to add into "populate LLHD" pipeline a newly added passes -- "llhd-hoist-signals" and "llhd-mem2reg". It didn't help.
Maybe I'm doing something wrong or what could be the issue?
circt-verilog
tool or will they stay standalone?@fabianschuiki @maerhart
The text was updated successfully, but these errors were encountered: