Repository navigation
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: 290e01820f
ℹ️ 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 ↓. |
290e018 to
27e5a3d
Compare
Revision history
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 27e5a3d152
ℹ️ 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".
27e5a3d to
d484bec
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d484becb4f
ℹ️ 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".
d484bec to
3703011
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3703011934
ℹ️ 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".
3703011 to
f7aeb22
Compare
f7aeb22 to
5ab0f09
Compare
🚫 Left the queue21 min in the queue, with no time running CI. So far
Reason The pull request conflicts with Hint You should update or rebase your pull request. If you want to requeue this pull request, you can post a Requeued — the merge queue status continues in this comment ↓. Times in UTC · dashboard · how the merge queue works |
5ab0f09 to
bfa9061
Compare
Implement formatting to a string (IEEE 1800-2023 21.3.3). The analyzer binds `$sformatf(format, args...)` as a string operation, so it is typed `string` wherever a string value is valid: assignments, function results, arguments, concatenations and conditional operands. `$sformat(output, format, args...)` assigns the same value to a string variable, a function's return variable or a string class property. A call with conversions is a synchronous host request of the scheduled process. The host renders the format with the `$display` renderer, so every conversion, field width, X/Z digit and `%m` scope matches `$display`, and interns the text as the result. A literal format is fixed at compile time and its `%t` values are scaled as the analyzer scales those of `$display`; a `string` or integral format is read when the call runs and the host scales its `%t` values. A literal without conversions or arguments is a constant. Integral outputs, `%p` and the `$swrite` family remain unsupported. A host request in a later input of a subroutine call would otherwise lose the registers computed for earlier inputs across the suspension, so those inputs are kept, converted to their formals, in temporaries; operands of string, object and container operations are materialized as the heap helpers already do. A cached transitive check finds subroutines that make host requests, including in the defaults of omitted arguments. A format read at run time keeps bytes that are not UTF-8. `$display` now resolves every string-valued argument, not only string identifiers, so a string conditional prints its text. The shared string_format cases compare `$sformatf` and `$sformat` with `$display` on all backends and in a native image. Verilator 5.052 passes all of them (the four-state case is unsupported there); Icarus 13.0 limitations (string conditional crash, class-property output, integral format) and an xezim 0.11.3 integral-format bug are retained with evidence. Change-Id: Ife5fd5bc64ccbecb7a73976fc8b68f22e5216d53
bfa9061 to
242cd1f
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 242cd1fc09
ℹ️ 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".
| Ok(sv::ir::Expr::Ident(name)) | ||
| } |
There was a problem hiding this comment.
Preserve DPI-C inputs across formatting host requests
With sv-dpi enabled, a formatting request in a later DPI-C argument leaves earlier arguments live in registers across suspension. For example, combine(a, formatted_length()), where formatted_length() calls $sformatf and returns the resulting string's length, reaches Ff::dpi_call, which evaluates and retains a in registers before hoisting the second argument (ff.rs:1993–2018). The formatting request resumes through a new kernel invocation, so that earlier register is no longer available when the ExternCall executes. The new input-preservation logic only covers ordinary subroutine calls; apply equivalent formal-type-aware capture and reload to DPI-C arguments as well.
Useful? React with 👍 / 👎.
🚫 Left the queue1 min in the queue, with no time running CI. So far
Reason The pull request conflicts with Conflicting file: Hint You should update or rebase your pull request. If you want to requeue this pull request, you can post a Tick the box to put this pull request back in the merge queue (same as
Times in UTC · dashboard · how the merge queue works |
Implement formatting to a string (IEEE 1800-2023 21.3.3). The analyzer binds
$sformatf(format, args...)as a string operation, so it is typedstringwherever a string value is valid: assignments, function results, arguments,
concatenations and conditional operands.
$sformat(output, format, args...)assigns the same value to a string variable, a function's return variable or
a string class property.
A call with conversions is a synchronous host request of the scheduled
process. The host renders the format with the
$displayrenderer, so everyconversion, field width, X/Z digit and
%mscope matches$display, andinterns the text as the result. A literal format is fixed at compile time and
its
%tvalues are scaled as the analyzer scales those of$display; astringor integral format is read when the call runs and the host scalesits
%tvalues. A literal without conversions or arguments is a constant.Integral outputs,
%pand the$swritefamily remain unsupported.A host request in a later input of a subroutine call would otherwise lose the
registers computed for earlier inputs across the suspension, so those inputs
are kept, converted to their formals, in temporaries; operands of string,
object and container operations are materialized as the heap helpers already
do. A cached transitive check finds subroutines
that make host requests, including in the defaults of omitted arguments. A
format read at run time keeps bytes that are not UTF-8.
$displaynow resolves every string-valued argument, not only stringidentifiers, so a string conditional prints its text.
The shared string_format cases compare
$sformatfand$sformatwith$displayon all backends and in a native image. Verilator 5.052 passes allof them (the four-state case is unsupported there); Icarus 13.0 limitations
(string conditional crash, class-property output, integral format) and an
xezim 0.11.3 integral-format bug are retained with evidence.