<ZipCPU>
I just looked through the issue and I'm struggling to understand the core of the issue
<ZipCPU>
Is there a statement misbehaving? Or a question of Verilog?
<tnt>
ZipCPU: If you look at the screenshot you'll see the _halt signal is '1'. But if you look at the verilog, you might expect it to be '0'.
<tnt>
And that's because in the verilog process it sets IBusSimplePlugin_cmd_valid to 0 after it was evaluated and caused IBusSimplePlugin_iBusRsp_stages_0_halt to be '1'. And iverilog apparently doesn't re-run that process after.
<ZipCPU>
Is that because cmd_valid and _halt are set in the same blcok?
<tnt>
yes. if you split them or if you set _valid at the beginning, it works as expected.
<ZipCPU>
So ... isn't that how simulation is supposed to work though? The blocking statements in the always block get executed in order, and you (the designer) are supposed to handle any dependencies
<emeb>
Probably a red herring, but I'm bothered by a combinatorial process that modifies a signal based on the state of that signal. Seems like that's ripe for zero-delay feedback problems.
<tnt>
that's the question ...
<tnt>
emeb: well valid doesn't depend on valid.
<ZipCPU>
I've seen several examples of what would otherwise be combinatorial processes placed together into one, and so declared as no longer feedback loops
<ZipCPU>
So, if you have two signals whose dependencies intertwine, and you place them within the sample always @(*) block, you (as the engineer) are supposed to deconflict the dependencies with the order of the statements
<ZipCPU>
The simulator trusts you (the engineer) to have sorted our the dependencies
<emeb>
tnt: oh - misread that then.
Jybz has quit [Ping timeout: 258 seconds]
Jybz has joined #yosys
emeb has left #yosys [#yosys]
futarisIRCcloud has quit [Quit: Connection closed for inactivity]