This commit is contained in:
parent
e96cfc5e56
commit
da0c31926e
|
|
@ -1400,6 +1400,12 @@ class ForceReplaceVisitor final : public VNVisitor {
|
||||||
iterateChildren(nodep);
|
iterateChildren(nodep);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (m_state.doingAssign() && varInfo->m_forceRdVscp) {
|
||||||
|
baseRefp->varp(varInfo->m_forceRdVscp->varp());
|
||||||
|
baseRefp->varScopep(varInfo->m_forceRdVscp);
|
||||||
|
iterateChildren(nodep);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const ForceState::ArraySelInfo arrayInfo = ForceState::getArraySelInfo(nodep);
|
const ForceState::ArraySelInfo arrayInfo = ForceState::getArraySelInfo(nodep);
|
||||||
// Substitute forced reads inside the index expressions before anything is cloned,
|
// Substitute forced reads inside the index expressions before anything is cloned,
|
||||||
// so the fallback value and the flattened index use the same, force-aware index.
|
// so the fallback value and the flattened index use the same, force-aware index.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# 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-FileCopyrightText: 2024 Wilson Snyder
|
||||||
|
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||||
|
|
||||||
|
import vltest_bootstrap
|
||||||
|
|
||||||
|
test.scenarios('simulator')
|
||||||
|
|
||||||
|
test.compile(verilator_flags2=["--binary"])
|
||||||
|
|
||||||
|
test.execute()
|
||||||
|
|
||||||
|
test.passes()
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// This file ONLY is placed under the Creative Commons Public Domain.
|
||||||
|
// SPDX-FileCopyrightText: 2026 Nikolai Kumar
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
// verilog_format: off
|
||||||
|
`define stop $stop
|
||||||
|
`define checkh(g,e) do if ((g) !== (e)) begin $write("%%Error: %s:%0d: got=%x exp=%x\n", `__FILE__,`__LINE__, (g),(e)); `stop; end while(0)
|
||||||
|
// verilog_format: on
|
||||||
|
|
||||||
|
module t;
|
||||||
|
logic var_en [0:1] /*verilator forceable*/;
|
||||||
|
logic sig;
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
var_en[0] = 1'b0;
|
||||||
|
var_en[1] = 1'b0;
|
||||||
|
end
|
||||||
|
|
||||||
|
//verilator lint_off IEEEMAYDEPRECATE
|
||||||
|
initial assign sig = 1'b1;
|
||||||
|
//verilator lint_on IEEEMAYDEPRECATE
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
#1;
|
||||||
|
force var_en[0] = 1'b1;
|
||||||
|
#1;
|
||||||
|
`checkh(var_en[0], 1'b1);
|
||||||
|
`checkh(var_en[1], 1'b0);
|
||||||
|
$write("*-* All Finished *-*\n");
|
||||||
|
$finish;
|
||||||
|
end
|
||||||
|
endmodule
|
||||||
Loading…
Reference in New Issue