Fix wrong runtime result when using -fno-gate (#6952)
Signed-off-by: Charitha-Jeewanka <cjrathnayake24@gmail.com>
This commit is contained in:
parent
0aaf17acfd
commit
e1392b81c7
|
|
@ -1284,26 +1284,33 @@ void V3Gate::gateAll(AstNetlist* netlistp) {
|
|||
graphp->removeRedundantEdgesSum(&V3GraphEdge::followAlwaysTrue);
|
||||
if (dumpGraphLevel() >= 6) graphp->dumpDotFilePrefixed("gate_simp");
|
||||
|
||||
// Inline variables
|
||||
// Inline variables (CRITICAL for downstream scheduling)
|
||||
GateInline::apply(*graphp);
|
||||
if (dumpGraphLevel() >= 6) graphp->dumpDotFilePrefixed("gate_inline");
|
||||
|
||||
// Remove redundant logic
|
||||
if (v3Global.opt.fDedupe()) {
|
||||
GateDedupe::apply(*graphp);
|
||||
if (dumpGraphLevel() >= 6) graphp->dumpDotFilePrefixed("gate_dedup");
|
||||
}
|
||||
// --- NON-CRITICAL OPTIMIZATIONS ---
|
||||
// Only run these aggressive logic reducers if gate optimization is enabled
|
||||
if (v3Global.opt.fGate()) {
|
||||
|
||||
// Remove redundant logic
|
||||
if (v3Global.opt.fDedupe()) {
|
||||
GateDedupe::apply(*graphp);
|
||||
if (dumpGraphLevel() >= 6) graphp->dumpDotFilePrefixed("gate_dedup");
|
||||
}
|
||||
|
||||
// Merge assignments
|
||||
if (v3Global.opt.fAssemble()) {
|
||||
GateMergeAssignments::apply(*graphp);
|
||||
if (dumpGraphLevel() >= 6) graphp->dumpDotFilePrefixed("gate_merge");
|
||||
}
|
||||
// Merge assignments
|
||||
if (v3Global.opt.fAssemble()) {
|
||||
GateMergeAssignments::apply(*graphp);
|
||||
if (dumpGraphLevel() >= 6) graphp->dumpDotFilePrefixed("gate_merge");
|
||||
}
|
||||
|
||||
// Remove unused logic
|
||||
GateUnused::apply(*graphp);
|
||||
if (dumpGraphLevel() >= 3) graphp->dumpDotFilePrefixed("gate_final");
|
||||
// Remove unused logic
|
||||
GateUnused::apply(*graphp);
|
||||
if (dumpGraphLevel() >= 3) graphp->dumpDotFilePrefixed("gate_final");
|
||||
|
||||
} // End of fGate() check
|
||||
}
|
||||
|
||||
V3Global::dumpCheckGlobalTree("gate", 0, dumpTreeEitherLevel() >= 3);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -420,12 +420,13 @@ static void process() {
|
|||
|
||||
// Gate-based logic elimination; eliminate signals and push constant across cell
|
||||
// boundaries Instant propagation makes lots-o-constant reduction possibilities.
|
||||
if (v3Global.opt.fGate()) {
|
||||
V3Gate::gateAll(v3Global.rootp());
|
||||
// V3Gate calls constant propagation itself.
|
||||
} else {
|
||||
v3info("Command Line disabled gate optimization with -fno-gate. "
|
||||
"This may cause ordering problems.");
|
||||
// Always run gateAll to perform critical downstream normalizations
|
||||
// (like GateInline) even if fGate is false.
|
||||
V3Gate::gateAll(v3Global.rootp());
|
||||
|
||||
if (!v3Global.opt.fGate()) {
|
||||
v3info("Command Line disabled gate optimization with -fno-gate. "
|
||||
"Only critical normalizations will be performed.");
|
||||
}
|
||||
|
||||
// Combine COVERINCs with duplicate terms
|
||||
|
|
|
|||
Loading…
Reference in New Issue