Add syntax for SystemVerilog style part selects#1354
Open
Conversation
This commits adds syntax to the parser for SystemVerilog-style part select operators, `v[n +: m]` and `v[n -: m]`. Currently these are allowed in both expressions and L-expressions. More work is needed to support these in bitfield definitions. Right now these aren't implemented, so any attempt to use results in ``` REPL:2> v[n -: m] Syntax error: REPL:2.2-8: 2 |v[n -: m] | ^----^ | Reserved vector indexing syntax. | | This syntax is not currently implemented, but is reserved for future syntax extensions. ``` To push further into the language I think the L-expression type needs to be re-factored so backends can handle all these operators in a clean way. This also potentially opens the door to parsing half-open ranges, which is another requested feature - although the exact syntax for that would require more consideration.
Test Results 13 files 28 suites 0s ⏱️ For more details on these errors, see this check. Results for commit 247abe9. |
TinyuengKwan
pushed a commit
to TinyuengKwan/sail
that referenced
this pull request
Dec 31, 2025
This adds a few state change callbacks that we needed for an internal binary logging format. They aren't used by the RVFI or log callback handlers but they should also be useful for the open source binary logging format that we eventually add (rems-project#545). * Add a `fetch_callback` that says which instruction was executed (if any). * Add `redirect_callback` that is called for taken and unconditional branches. * Add `is_interrupt` and `cause` to `trap_callback`. I also renamed `value` to `new_pc` to be a bit more explicit. Fixes rems-project#1352
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This commits adds syntax to the parser for SystemVerilog-style part select operators,
v[n +: m]andv[n -: m]. Currently these are allowed in both expressions and L-expressions. More work is needed to support these in bitfield definitions.Right now these aren't implemented, so any attempt to use results in
To push further into the language I think the L-expression type needs to be re-factored so backends can handle all these operators in a clean way.
This also potentially opens the door to parsing half-open ranges, which is another requested feature - although the exact syntax for that would require more consideration.