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
When running Vortex on questasim, with 4 state simulation, I came accross an issue where the then_mask went x.
Upon investigation, the cause was traced back to the signal is_cond_neg.
While the value of is_cond_neg has no impact on join result it enters into the logic equation for the then_mask.
If it is left at x, in 4-state simulation, the then_mask is assigned x which creates problems.
Assigning is_cond_neg to 0 adds no logic and ensures the then_mask is not x.
After this fix, I was able to run multiple kernels with branches on questa.
Verified and merged as 62ef86d, authored to you — thanks for a precise report AND
the right-sized fix. We confirmed the mechanism: the wctl unit folds is_cond_neg into
the join mask as (taken & tmask) | (~taken & tmask), which cancels in 2-state and in
hardware (so no silicon defect and no Verilator symptom) but survives the OR as X in
4-state and drives an all-X tmask into the warp scheduler on every JOIN. Reproduced in
xsim: X before, 0 after, join mask defined; rtlsim cycles bit-identical. Your one-bit
zero at the one leaking arm was exactly right — the remaining wctl fields stay
don't-care on purpose (their consumers qualify them), so we kept your change as-is and
only condensed the comment to house style. Your report also led us to fix one more
declare-before-use straggler (VX_mem_from_axi) that blocked 4-state compilation of the
RTL libs (bcba2ac).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When running Vortex on questasim, with 4 state simulation, I came accross an issue where the then_mask went x.
Upon investigation, the cause was traced back to the signal is_cond_neg.
While the value of is_cond_neg has no impact on join result it enters into the logic equation for the then_mask.
If it is left at x, in 4-state simulation, the then_mask is assigned x which creates problems.
Assigning is_cond_neg to 0 adds no logic and ensures the then_mask is not x.
After this fix, I was able to run multiple kernels with branches on questa.