Commentary: Changes update
This commit is contained in:
parent
3bd04a70bd
commit
3191d98391
15
Changes
15
Changes
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@ module t;
|
||||||
wire [7:0] f;
|
wire [7:0] f;
|
||||||
wire [31:0] g;
|
wire [31:0] g;
|
||||||
logic [4:0] idx = 0;
|
logic [4:0] idx = 0;
|
||||||
sub s(b);
|
sub s (b);
|
||||||
sub8 s_sel(d[7:0]);
|
sub8 s_sel (d[7:0]);
|
||||||
sub8 s_const(8'h7c);
|
sub8 s_const (8'h7c);
|
||||||
subout s_out(e[idx+:8]);
|
subout s_out (e[idx+:8]);
|
||||||
subout s_out_simple(f);
|
subout s_out_simple (f);
|
||||||
subout s_out_slice(g[15:8]);
|
subout s_out_slice (g[15:8]);
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
#1;
|
#1;
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,15 @@
|
||||||
// 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
|
||||||
|
|
||||||
module t;
|
module t;
|
||||||
child a(.i(1'b0));
|
child a (.i(1'b0));
|
||||||
child b(.i(1'b0));
|
child b (.i(1'b0));
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
force a.i = 1'b1;
|
force a.i = 1'b1;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue