Fix variables hiding package imports (#6289).
This commit is contained in:
parent
75c6745868
commit
047a12cc62
3
Changes
3
Changes
|
|
@ -73,6 +73,7 @@ Verilator 5.039 devel
|
||||||
* Fix dynamic cast purity (#6267). [Igor Zaworski, Antmicro Ltd.]
|
* Fix dynamic cast purity (#6267). [Igor Zaworski, Antmicro Ltd.]
|
||||||
* Fix same variable on the RHS forced to two different LHSs. (#6269). [Artur Bieniek, Antmicro Ltd.]
|
* Fix same variable on the RHS forced to two different LHSs. (#6269). [Artur Bieniek, Antmicro Ltd.]
|
||||||
* Fix spurious VPI value change callbacks (#6274). [Todd Strader]
|
* Fix spurious VPI value change callbacks (#6274). [Todd Strader]
|
||||||
|
* Fix variables hiding package imports (#6289). [Johan Wouters]
|
||||||
|
|
||||||
|
|
||||||
Verilator 5.038 2025-07-08
|
Verilator 5.038 2025-07-08
|
||||||
|
|
@ -904,7 +905,7 @@ Verilator 5.016 2023-09-16
|
||||||
* Fix nested assignments on the LHS (#4435). [Ryszard Rozak, Antmicro Ltd]
|
* Fix nested assignments on the LHS (#4435). [Ryszard Rozak, Antmicro Ltd]
|
||||||
* Fix false MULTITOP on bound interfaces (#4438). [Alex Solomatnikov]
|
* Fix false MULTITOP on bound interfaces (#4438). [Alex Solomatnikov]
|
||||||
* Fix internal error on real conversion (#4447). [vdhotre-ventana]
|
* Fix internal error on real conversion (#4447). [vdhotre-ventana]
|
||||||
* Fix lifetime unknown error on enum.name (#4448). [jwoutersymatra]
|
* Fix lifetime unknown error on enum.name (#4448). [Johan Wouters]
|
||||||
* Fix unstable output of VHashSha256 (#4453). [Anthony Donlon]
|
* Fix unstable output of VHashSha256 (#4453). [Anthony Donlon]
|
||||||
* Fix static cast from a stream type (#4469) (#4485). [Ryszard Rozak, Antmicro Ltd]
|
* Fix static cast from a stream type (#4469) (#4485). [Ryszard Rozak, Antmicro Ltd]
|
||||||
* Fix error on enum with VARHIDDEN of cell (#4482). [Michail Rontionov]
|
* Fix error on enum with VARHIDDEN of cell (#4482). [Michail Rontionov]
|
||||||
|
|
|
||||||
|
|
@ -1462,7 +1462,7 @@ class LinkDotFindVisitor final : public VNVisitor {
|
||||||
bool ins = false;
|
bool ins = false;
|
||||||
if (!foundp) {
|
if (!foundp) {
|
||||||
ins = true;
|
ins = true;
|
||||||
} else if (!findvarp && m_curSymp->findIdFlat(nodep->name())) {
|
} else if (!findvarp && m_curSymp->findIdFlat(nodep->name()) && !foundp->imported()) {
|
||||||
nodep->v3error("Unsupported in C: Variable has same name as "
|
nodep->v3error("Unsupported in C: Variable has same name as "
|
||||||
<< LinkDotState::nodeTextType(foundp->nodep()) << ": "
|
<< LinkDotState::nodeTextType(foundp->nodep()) << ": "
|
||||||
<< nodep->prettyNameQ());
|
<< nodep->prettyNameQ());
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2025 by Wilson Snyder. This program is free software; you
|
||||||
|
# can redistribute it and/or modify it under the terms of either the GNU
|
||||||
|
# Lesser General Public License Version 3 or the Perl Artistic License
|
||||||
|
# Version 2.0.
|
||||||
|
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||||
|
|
||||||
|
import vltest_bootstrap
|
||||||
|
|
||||||
|
test.scenarios('linter')
|
||||||
|
|
||||||
|
test.compile(verilator_flags2=['--timing'])
|
||||||
|
|
||||||
|
test.passes()
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// This file ONLY is placed under the Creative Commons Public Domain, for
|
||||||
|
// any use, without warranty, 2025 by Wilson Snyder.
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
package pkg;
|
||||||
|
|
||||||
|
typedef enum logic [1:0] {
|
||||||
|
INT,
|
||||||
|
BLA,
|
||||||
|
DUMMY
|
||||||
|
} t_shadowed_enum;
|
||||||
|
|
||||||
|
endpackage
|
||||||
|
|
||||||
|
module sub
|
||||||
|
import pkg::*;
|
||||||
|
(
|
||||||
|
input logic INT, // This is also in the pkg::t_shadowed_enum, but it shadows it
|
||||||
|
output logic dummy_out
|
||||||
|
);
|
||||||
|
|
||||||
|
assign dummy_out = !INT;
|
||||||
|
endmodule
|
||||||
|
|
||||||
|
module t;
|
||||||
|
logic my_wire;
|
||||||
|
logic dummy_out;
|
||||||
|
|
||||||
|
sub i_sub (
|
||||||
|
.INT(my_wire),
|
||||||
|
.dummy_out(dummy_out)
|
||||||
|
);
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
my_wire = 1'b0;
|
||||||
|
|
||||||
|
repeat (2) begin
|
||||||
|
my_wire = ~my_wire;
|
||||||
|
#1ns;
|
||||||
|
$display("my_wire = %b, dummy_out = %b", my_wire, dummy_out);
|
||||||
|
end
|
||||||
|
|
||||||
|
$write("*-* All Finished *-*\n");
|
||||||
|
$finish;
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
Loading…
Reference in New Issue