assignment of combinatorial values with delayed assignment gives incorrect results when referencing same signal · Issue #303 · m-labs/migen · GitHub
More Web Proxy on the site http://driver.im/
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
I designed a small priority encoder in a LiteX framework, and found that the post-synthesis results were not as I had specified in my Migen input. I specified the following:
This is not correct, and indeed, in hardware, post-synthesis on Efinix, my gateware periodically had a 5 show up in inp_priority if two sources were ready at the same moment.
This is clearly illegal because the output of that always block would cause that block to retrigger; in an event-based model, this would loop forever, so it does not have a meaningful synthesis equivalent (even though it looks like it should!). This would be fixed either by continuous assignment, or by splitting each into its own always block (note that leaving the default would infer a latch, though!).
The text was updated successfully, but these errors were encountered:
No, this should be fixed by outputting VHDL. This sort of issue is basically intractable in Verilog and your suggestions are naive.
But in practice, most synthesizers do not have an issue with the Verilog code as generated above, and Migen is designed for these. See if you can get the Efinix compiler to behave itself.
I designed a small priority encoder in a LiteX framework, and found that the post-synthesis results were not as I had specified in my Migen input. I specified the following:
This synthesized down to:
This is not correct, and indeed, in hardware, post-synthesis on Efinix, my gateware periodically had a
5
show up ininp_priority
if two sources were ready at the same moment.This is clearly illegal because the output of that always block would cause that block to retrigger; in an event-based model, this would loop forever, so it does not have a meaningful synthesis equivalent (even though it looks like it should!). This would be fixed either by continuous
assign
ment, or by splitting each into its ownalways
block (note that leaving the default would infer a latch, though!).The text was updated successfully, but these errors were encountered: