Repository navigation
feat(sv): support nested dynamic containers and class handle keys - #2424
Conversation
|
This pull request is part of a Mergify stack:
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 89558495ce
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Queued — the merge queue status continues in this comment ↓. |
8955849 to
d4cfcb3
Compare
79d36ee to
437b350
Compare
Revision history
|
d4cfcb3 to
5076963
Compare
437b350 to
53dedc6
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5076963e22
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
5076963 to
da1cc68
Compare
53dedc6 to
15e6872
Compare
da1cc68 to
dc72e4c
Compare
15e6872 to
8e65031
Compare
8e65031 to
b431e1e
Compare
6484baa to
ac30379
Compare
b431e1e to
5f7b93b
Compare
A dynamic container with several dynamic dimensions (`int m[string][$]`, `T m[C][C][E]`, `int grid[][]`) was rejected, as was an associative array indexed by a class (IEEE 1800-2023 7.4.5, 7.8.5), which UVM uses for its comparer, copier and recorder recursion state. An element of a container of containers is the inner container's handle. Containers are immutable heap values, so `m[a]` reads the inner container, an absent one being empty, and an update of an element's element, such as `m[a][b] = v`, `m[a].push_back(x)` or `m[a].delete(b)`, writes the updated inner container back into `m[a]`, and so on outwards. An element of container type takes a container value, so `grid[1] = new[3]` works. A class index is a handle; associative keys of object handles are traced by the heap collector (container parameter bit 46), so an object referred to only as a key stays alive. `foreach` and traversal methods take an index variable of the class type. sv-tests chapter-7/arrays/associative/class now passes in both state modes. Containers of fixed-size unpacked arrays stay unsupported. Icarus 13.0 rejects type-name indices; xezim 0.11.3 misreads two of the new cases, which the review retains. Change-Id: I54576c9fc206a0a46ff5a3e7a4782eaf5be449d3
5f7b93b to
a37c612
Compare
ac30379 to
9fd32cc
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9fd32cc71a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
✅ Merged into
|
| Condition | |
|---|---|
| ✅ | depends-on=celox-sim/celox#2424 |
| ✅ | any of: depends-on = celox-sim/celox#2422, number != 2424 |
The batch, tested on draft #2496
| Condition | Required by | |
|---|---|---|
| ✅ | check-success = Conventional Commit title |
— |
| ✅ | check-success = Queue validation |
— |
| ✅ | any of: check-success = @github-actions/Lint & Format, check-neutral = @github-actions/Lint & Format, check-skipped = @github-actions/Lint & Format |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Rust Test & NAPI Build, check-neutral = @github-actions/Rust Test & NAPI Build, check-skipped = @github-actions/Rust Test & NAPI Build |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/JS Test (Ubuntu), check-neutral = @github-actions/JS Test (Ubuntu), check-skipped = @github-actions/JS Test (Ubuntu) |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Conventional Commit title, check-neutral = @github-actions/Conventional Commit title, check-skipped = @github-actions/Conventional Commit title |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Queue validation, check-neutral = @github-actions/Queue validation, check-skipped = @github-actions/Queue validation |
GitHub repository ruleset rule master |
Times in UTC · dashboard · how the merge queue works
… reads Review findings on the unpacked structure stack (#2415, #2422, #2424) that arrived after it merged: - A `default` pattern item descends into a structure member unless the value is a structure of that member's type (IEEE 1800-2023 10.9.2), so `c = '{default: a}` initializes the nested members of `a`'s type instead of rejecting it. - 4-state object fields store their complemented value and mask planes masked to the field width. Padding bits stay zero, so a default record of a field that is not byte-aligned (`logic flag`) is all zero bytes, and `finish_record` keeps it `null`: `d = new[1]; d[0] = d[0];` no longer wakes `@(d)`. - `q.pop_front` and `q.pop_back` without parentheses are whole elements of a queue of structures. - A `$` index of a queue read through a receiver with a side effect, such as `m[f()][$]`, is rejected: the size behind `$` reads the receiver again, which could name another queue. Change-Id: Ibd97e9c73adb7703a0734ca9fcdedeb66c0a2189
A dynamic container with several dynamic dimensions (
int m[string][$],T m[C][C][E],int grid[][]) was rejected, as was an associative arrayindexed by a class (IEEE 1800-2023 7.4.5, 7.8.5), which UVM uses for its
comparer, copier and recorder recursion state.
An element of a container of containers is the inner container's handle.
Containers are immutable heap values, so
m[a]reads the inner container,an absent one being empty, and an update of an element's element, such as
m[a][b] = v,m[a].push_back(x)orm[a].delete(b), writes the updatedinner container back into
m[a], and so on outwards. An element ofcontainer type takes a container value, so
grid[1] = new[3]works.A class index is a handle; associative keys of object handles are traced
by the heap collector (container parameter bit 46), so an object referred
to only as a key stays alive.
foreachand traversal methods take anindex variable of the class type. sv-tests
chapter-7/arrays/associative/class now passes in both state modes.
Containers of fixed-size unpacked arrays stay unsupported. Icarus 13.0
rejects type-name indices; xezim 0.11.3 misreads two of the new cases,
which the review retains.
Depends-On: #2422