Commentary: Changes update

This commit is contained in:
Wilson Snyder 2026-07-10 08:43:12 -04:00
parent 3bd04a70bd
commit 3191d98391
9 changed files with 76 additions and 34 deletions

15
Changes
View File

@ -16,12 +16,27 @@ Verilator 5.051 devel
**Other:** **Other:**
* Add comments as a branch description in coverage .info files (#7843). [Eryk Szpotanski] * Add comments as a branch description in coverage .info files (#7843). [Eryk Szpotanski]
* Add --enable-light-debug configure option (#7886). [Geza Lore, Testorrent USA, Inc.]
* Add user-provided DPI-C function declarations (#7626) (#7893). [Jakub Michalski]
* Support a sequence used as an event control (#7797) (#7846). [Yilou Wang]
* Optimize random initialization. [Geza Lore, Testorrent USA, Inc.] * Optimize random initialization. [Geza Lore, Testorrent USA, Inc.]
* Optimize more always blocks in DFG (#7775). [Geza Lore, Testorrent USA, Inc.]
* Optimize assertion NFAs using bit-vector ring buffers (#7885). [Artur Bieniek, Antmicro Ltd.]
* Fix $display accepting streaming concat arguments (#7663) (#7890). [Jaeuk Lee]
* Fix DFG misoptimizing bound checks (#7755). [Jakub Michalski] * Fix DFG misoptimizing bound checks (#7755). [Jakub Michalski]
* Fix unique0 case side effects (#7787). [Pawel Klopotek] * Fix unique0 case side effects (#7787). [Pawel Klopotek]
* Fix cleaning purity cache after assertions. [Geza Lore, Testorrent USA, Inc.] * Fix cleaning purity cache after assertions. [Geza Lore, Testorrent USA, Inc.]
* Fix internal error for coverpoints that reference a covergroup formal parameter (#7853 partial) (#7889). [Matthew Ballance]
* Fix clang++ ambiguous overload of '==' operator (#7863). [Pawel Kojma, Antmicro Ltd.] * Fix clang++ ambiguous overload of '==' operator (#7863). [Pawel Kojma, Antmicro Ltd.]
* Fix heap-use-after-free in `VlRNG::VlRNG()` (#7865). [Dragon-Git] * Fix heap-use-after-free in `VlRNG::VlRNG()` (#7865). [Dragon-Git]
* Fix mixed-width inside and dist range bounds failing randomization (#7875). [Yilou Wang]
* Fix range delays with parameter bounds (#7882). [Artur Bieniek, Antmicro Ltd.]
* Fix --coverage on labeled inline assert/cover property (#7898) (#7904). [Patrick Creighton]
* Fix memory leak in VerilatedFst::close() (#7899). [Jakub Michalski]
* Fix independent force of multiply instantiated signals (#7905). [Artur Bieniek, Antmicro Ltd.]
* Fix release of forced port nets (#7907) (#7901). [Artur Bieniek, Antmicro Ltd.]
* Fix VL_TO_STRING function for array of structs (#7912). [Kornel Uriasz, Antmicro Ltd.]
* Fix queues falling into wrong template spec (#7914). [Adam Kostrzewski, Antmicro Ltd.]
Verilator 5.050 2026-07-01 Verilator 5.050 2026-07-01

View File

@ -22,15 +22,18 @@ module t (
if (!rst_n) begin if (!rst_n) begin
q <= 1'b0; q <= 1'b0;
cnt <= '0; cnt <= '0;
end else if (en) begin end
else if (en) begin
q <= ~q; q <= ~q;
cnt <= cnt + 8'd1; cnt <= cnt + 8'd1;
end end
end end
a : assert property (@(posedge clk) !rst_n |=> q == 1'b0); a :
assert property (@(posedge clk) !rst_n |=> q == 1'b0);
c : cover property (@(posedge clk) disable iff (!rst_n) en && cnt == $past(cnt)); c :
cover property (@(posedge clk) disable iff (!rst_n) en && cnt == $past(cnt));
always @(posedge clk) begin always @(posedge clk) begin
cyc <= cyc + 1; cyc <= cyc + 1;

View File

@ -4,12 +4,18 @@
// SPDX-FileCopyrightText: 2026 Antmicro // SPDX-FileCopyrightText: 2026 Antmicro
// SPDX-License-Identifier: CC0-1.0 // SPDX-License-Identifier: CC0-1.0
// verilog_format: off
`define stop $stop `define stop $stop
`define checks(gotv,expv) do if ((gotv) != (expv)) begin $write("%%Error: %s:%0d: got='%s' exp='%s'\n", `__FILE__,`__LINE__, (gotv), (expv)); `stop; end while(0); `define checks(gotv,expv) do if ((gotv) != (expv)) begin $write("%%Error: %s:%0d: got='%s' exp='%s'\n", `__FILE__,`__LINE__, (gotv), (expv)); `stop; end while(0);
// verilog_format: on
module t; module t;
import "DPI-C" function string func(input string arg) /*verilator dpi_c_decl "char* func(const char*)"*/; import "DPI-C" function string func(
import "DPI-C" function string func_with_specifier(input string arg) /*verilator dpi_c_decl "char* func_with_specifier(const char*) throw()"*/; input string arg
) /*verilator dpi_c_decl "char* func(const char*)"*/;
import "DPI-C" function string func_with_specifier(
input string arg
) /*verilator dpi_c_decl "char* func_with_specifier(const char*) throw()"*/;
initial begin initial begin
`checks(func("arg"), "abc"); `checks(func("arg"), "abc");

View File

@ -1,4 +1,4 @@
%Error-BADVLTPRAGMA: t/t_dpi_decl_bad.v:8:57: No function declaration provided in /*verilator dpi_c_decl*/ meta-comment %Error-BADVLTPRAGMA: t/t_dpi_decl_bad.v:8:58: No function declaration provided in /*verilator dpi_c_decl*/ meta-comment
8 | import "DPI-C" function string func(input string arg) /*verilator dpi_c_decl*/; 8 | import "DPI-C" function string func(input string arg) /*verilator dpi_c_decl*/;
| ^~~~~~~~~~~~~~~~~~~~~~~~ | ^~~~~~~~~~~~~~~~~~~~~~~~
... For error description see https://verilator.org/warn/BADVLTPRAGMA?v=latest ... For error description see https://verilator.org/warn/BADVLTPRAGMA?v=latest

View File

@ -76,12 +76,18 @@ module t;
endmodule endmodule
module sub(input logic [31:0] c); module sub (
input logic [31:0] c
);
endmodule endmodule
module sub8(input logic [7:0] c); module sub8 (
input logic [7:0] c
);
endmodule endmodule
module subout(output logic [7:0] c); module subout (
output logic [7:0] c
);
assign c = 8'h5a; assign c = 8'h5a;
endmodule endmodule

View File

@ -4,7 +4,9 @@
// SPDX-FileCopyrightText: 2026 Antmicro // SPDX-FileCopyrightText: 2026 Antmicro
// SPDX-License-Identifier: CC0-1.0 // SPDX-License-Identifier: CC0-1.0
module child(input wire i); module child (
input wire i
);
/*verilator no_inline_module*/ /*verilator no_inline_module*/
endmodule endmodule

View File

@ -4,7 +4,10 @@
// SPDX-FileCopyrightText: 2026 Antmicro // SPDX-FileCopyrightText: 2026 Antmicro
// SPDX-License-Identifier: CC0-1.0 // SPDX-License-Identifier: CC0-1.0
module child(input wire drive, output wire observed); module child (
input wire drive,
output wire observed
);
/*verilator no_inline_module*/ /*verilator no_inline_module*/
logic value; logic value;
@ -22,8 +25,14 @@ module t;
wire b_observed; wire b_observed;
bit done; bit done;
child a(.drive(1'b1), .observed(a_observed)); child a (
child b(.drive(1'b0), .observed(b_observed)); .drive(1'b1),
.observed(a_observed)
);
child b (
.drive(1'b0),
.observed(b_observed)
);
always @(a_observed or b_observed) begin always @(a_observed or b_observed) begin
if (!done && a_observed === 1'b1) begin if (!done && a_observed === 1'b1) begin

View File

@ -45,7 +45,8 @@ module t (
assert property (@(posedge clk) fixed_a |-> ##1024 fixed_b) assert property (@(posedge clk) fixed_a |-> ##1024 fixed_b)
else fixed_fail_q.push_back($sampled(cyc) + 1); else fixed_fail_q.push_back($sampled(cyc) + 1);
cover property (@(posedge clk) range_a ##[5:300] range_b) range_pass_q.push_back($sampled(cyc) + 1); cover property (@(posedge clk) range_a ##[5:300] range_b)
range_pass_q.push_back($sampled(cyc) + 1);
assert property (@(posedge clk) range_a |-> ##[5:300] range_b) assert property (@(posedge clk) range_a |-> ##[5:300] range_b)
else range_fail_q.push_back($sampled(cyc) + 1); else range_fail_q.push_back($sampled(cyc) + 1);