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
[ImportVerilog] Add delayed assignment support (#9085)
Add the `moore.delayed_assign` and `moore.delayed_nonblocking_assign`
ops to represent `assign #1ns a = b` and `a <= #1ns b` in SystemVerilog,
respectively.
Lower the new delay ops to `llhd.drv` with the appropriate delay value.
Add support for blocking assignments with intra-assignment timing
control to the ImportVerilog conversion. These are pretty trivial, since
the blocking effects of the timing control are simply inserted in
between computing the right-hand side and assigning to the left-hand
side.
Also add support for non-blocking assignments with intra-assignment
delays. These require the new `moore.delayed_nonblocking_assign`, since
the operation cannot suspend execution of the surrounding process.
Instead, the assignment has to be added to the event queue and executed
at a later point in time. Theoretically, the user could type wild things
here, like `a <= repeat(5) @(posedge b or negedge c) d`, which would
require us to spawn a separate "thread" to determine when all the events
have occurred and the assignment can take place. We don't support any of
that for now, because this is just utterly deranged.
Also add support for delayed continuous assignments. This is pretty
trivial since SystemVerilog only allows for simple delay values, such as
`assign #1ns a = b`. This requires the new `moore.delayed_assign` op.
0 commit comments