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
As far as I understood, ROHD is capable of handling multiple consecutive nonblocking assignments to one variable (tried to comment out this line and everything worked). I found mentions of this (#114) and cannot agree with the phrase
It doesn't make sense for a signal to be driven by two drivers in a Sequential block.
In this example, the module saves the control signals and processes them on the next cycle, when the data on the intf.rfcuData bus is ready. The intf.branch and trigger flags are set to zero by default, but this can be overridden depending on conditions. It seems to me that this way of using multiple consecutive non-blocking assignments simplifies the scheme.
Thanks for filing, you make some good points here, and thank you for the reference links. I think I agree with the idea that ROHD should support multiple assignments in Sequential where the last one wins.
I'm not sure a global configuration knob is the right way to handle the behavior change. I'm wondering if the right solution might be:
All Sequentials have a default behavior
Add an argument in eachSequentials constructor to toggle the behavior.
The value of the "default" for this setting seems like it could go either way. It feels a little "safer" to default to the more restrictive behavior, but if it's unambiguous for simulation and synthesis anyway, why not default to the more flexible behavior? Then if someone wants to restrict themselves, they can enable the additional restriction. Sort of like unique in Case?
Motivation
As far as I understood, ROHD is capable of handling multiple consecutive nonblocking assignments to one variable (tried to comment out this line and everything worked). I found mentions of this (#114) and cannot agree with the phrase
Here is an example where I needed this feature:
In this example, the module saves the control signals and processes them on the next cycle, when the data on the
intf.rfcuData
bus is ready. Theintf.branch
andtrigger
flags are set to zero by default, but this can be overridden depending on conditions. It seems to me that this way of using multiple consecutive non-blocking assignments simplifies the scheme.Some links:
Desired solution
It is proposed to add functionality for configuring
Simulator
, for example:Prefer default restrictive behavior.
Alternatives considered
No response
Additional details
I can do the implementation if the idea is accepted.
The text was updated successfully, but these errors were encountered: