• Olof Kindgren's avatar
    axi_demux: Break combinatorial simulation loop · e1722178
    Olof Kindgren authored
    
    
    Combinatorial processes without explicit XXX can cause circular
    dependencies which causes simulators to endlessly reschedule
    a loop.  Different tools have different heuristics for detecting
    this and breaking up loops.  This isn't an exact science, but the
    following changes seems to avoid an endless loop under Vivado XSim.
    
    Note: There is a small behavioural change in the code:
    
    If `ax_valid` is asserted while `ax_select >= NoMstPorts` (where `x`
    is `r` or `w`), the behaviour is undefined.  In the old code this would
    just not assert the `ax_ready` flag.  This is only an issue if
    `ax_select` for some reason gets out of bound, which probably causes
    other issues.
    
    On the upside, the new code likely uses slightly less logic.  If the
    old behaviour is required, a check to see that the select signal is
    in range could be added.  Alternatively, this could be added as an
    assertion.
    Signed-off-by: default avatarOlof Kindgren <olof.kindgren@gmail.com>
    e1722178
To find the state of this project's repository at the time of any of these versions, check out the tags.