From 003a8cfe756f05bd34c885069fe93d4e5d0ca030 Mon Sep 17 00:00:00 2001 From: Adam Bagley <123022216+adambagley@users.noreply.github.com> Date: Thu, 23 Feb 2023 05:36:28 -0500 Subject: [PATCH] Add lint warning on always_comb multidriven (#3888) (#3939) --- docs/CONTRIBUTORS | 1 + src/V3Undriven.cpp | 67 ++++++++- .../t/t_lint_always_comb_multidriven.out | 87 +++++++++++ .../t/t_lint_always_comb_multidriven.pl | 20 +++ .../t/t_lint_always_comb_multidriven.v | 76 ++++++++++ test_regress/t/t_public_seq.v | 2 + test_regress/t/t_timing_debug1.out | 140 +++++++++--------- test_regress/t/t_timing_sched.v | 4 + test_regress/t/t_timing_sched_if.v | 6 + test_regress/t/t_timing_sched_nba.v | 4 + 10 files changed, 334 insertions(+), 73 deletions(-) create mode 100644 test_regress/t/t_lint_always_comb_multidriven.out create mode 100755 test_regress/t/t_lint_always_comb_multidriven.pl create mode 100644 test_regress/t/t_lint_always_comb_multidriven.v diff --git a/docs/CONTRIBUTORS b/docs/CONTRIBUTORS index 5a0a6e426..6b83ecfdb 100644 --- a/docs/CONTRIBUTORS +++ b/docs/CONTRIBUTORS @@ -3,6 +3,7 @@ under the Developer Certificate of Origin (https://developercertificate.org/). Please see the Verilator manual for 200+ additional contributors. Thanks to all. +Adam Bagley Adrien Le Masle Ahmed El-Mahmoudy Aleksander Kiryk diff --git a/src/V3Undriven.cpp b/src/V3Undriven.cpp index 5a70dd3d6..2b3973ecc 100644 --- a/src/V3Undriven.cpp +++ b/src/V3Undriven.cpp @@ -46,8 +46,15 @@ class UndrivenVarEntry final { AstVar* const m_varp; // Variable this tracks std::vector m_wholeFlags; // Used/Driven on whole vector std::vector m_bitFlags; // Used/Driven on each subbit + const AstAlways* m_alwCombp + = nullptr; // always_comb of var if driven within always_comb, else nullptr + const FileLine* m_alwCombFileLinep = nullptr; // File line of always_comb of var if driven + // within always_comb, else nullptr + const AstNodeVarRef* m_nodep = nullptr; // varref if driven, else nullptr + const FileLine* m_nodeFileLinep = nullptr; // File line of varref if driven, else nullptr + bool m_underGen = false; // Under a generate - enum : uint8_t { FLAG_USED = 0, FLAG_DRIVEN = 1, FLAGS_PER_BIT = 2 }; + enum : uint8_t { FLAG_USED = 0, FLAG_DRIVEN = 1, FLAG_DRIVEN_ALWCOMB = 2, FLAGS_PER_BIT = 3 }; public: // CONSTRUCTORS @@ -117,6 +124,24 @@ public: UINFO(9, "set d[*] " << m_varp->name() << endl); m_wholeFlags[FLAG_DRIVEN] = true; } + void drivenWhole(const AstNodeVarRef* nodep, const FileLine* fileLinep) { + drivenWhole(); + m_nodep = nodep; + m_nodeFileLinep = fileLinep; + } + void drivenAlwaysCombWhole(const AstAlways* alwCombp, const FileLine* fileLinep) { + m_wholeFlags[FLAG_DRIVEN_ALWCOMB] = true; + m_alwCombp = alwCombp; + m_alwCombFileLinep = fileLinep; + } + void underGenerate() { m_underGen = true; } + bool isUnderGen() const { return m_underGen; } + bool isDrivenWhole() const { return m_wholeFlags[FLAG_DRIVEN]; } + bool isDrivenAlwaysCombWhole() const { return m_wholeFlags[FLAG_DRIVEN_ALWCOMB]; } + const AstNodeVarRef* getNodep() const { return m_nodep; } + const FileLine* getNodeFileLinep() const { return m_nodeFileLinep; } + const AstAlways* getAlwCombp() const { return m_alwCombp; } + const FileLine* getAlwCombFileLinep() const { return m_alwCombFileLinep; } void usedBit(int bit, int width) { UINFO(9, "set u[" << (bit + width - 1) << ":" << bit << "] " << m_varp->name() << endl); for (int i = 0; i < width; i++) { @@ -304,7 +329,7 @@ private: for (int usr = 1; usr < (m_alwaysCombp ? 3 : 2); ++usr) { // For assigns and non-combo always, do just usr==1, to look // for module-wide undriven etc. - // For non-combo always, run both usr==1 for above, and also + // For combo always, run both usr==1 for above, and also // usr==2 for always-only checks. UndrivenVarEntry* const entryp = getEntryp(nodep, usr); if (nodep->isNonOutput() || nodep->isSigPublic() || nodep->isSigUserRWPublic() @@ -381,7 +406,43 @@ private: UINFO(9, " Full bus. Entryp=" << cvtToHex(entryp) << endl); warnAlwCombOrder(nodep); } - entryp->drivenWhole(); + if (entryp->isDrivenWhole() && !m_inBBox && !VN_IS(nodep, VarXRef) + && !VN_IS(nodep->dtypep()->skipRefp(), UnpackArrayDType) + && nodep->fileline() != entryp->getNodeFileLinep() && !entryp->isUnderGen()) { + if (m_alwaysCombp + && (!entryp->isDrivenAlwaysCombWhole() + || (entryp->isDrivenAlwaysCombWhole() + && m_alwaysCombp != entryp->getAlwCombp() + && m_alwaysCombp->fileline() != entryp->getAlwCombFileLinep()))) { + nodep->v3warn( + MULTIDRIVEN, + "Variable written to in always_comb also written by other process" + << " (IEEE 1800-2017 9.2.2.2): " << nodep->prettyNameQ() << '\n' + << nodep->warnOther() << '\n' + << nodep->warnContextPrimary() << '\n' + << entryp->getNodep()->warnOther() + << "... Location of other write\n" + << entryp->getNodep()->warnContextSecondary()); + } + if (!m_alwaysCombp && entryp->isDrivenAlwaysCombWhole()) { + nodep->v3warn(MULTIDRIVEN, + "Variable also written to in always_comb" + << " (IEEE 1800-2017 9.2.2.2): " << nodep->prettyNameQ() + << '\n' + << nodep->warnOther() << '\n' + << nodep->warnContextPrimary() << '\n' + << entryp->getNodep()->warnOther() + << "... Location of always_comb write\n" + << entryp->getNodep()->warnContextSecondary()); + } + } + entryp->drivenWhole(nodep, nodep->fileline()); + if (m_alwaysCombp && entryp->isDrivenAlwaysCombWhole() + && m_alwaysCombp != entryp->getAlwCombp() + && m_alwaysCombp->fileline() == entryp->getAlwCombFileLinep()) + entryp->underGenerate(); + if (m_alwaysCombp) + entryp->drivenAlwaysCombWhole(m_alwaysCombp, m_alwaysCombp->fileline()); } if (m_inBBox || nodep->access().isReadOrRW() || fdrv diff --git a/test_regress/t/t_lint_always_comb_multidriven.out b/test_regress/t/t_lint_always_comb_multidriven.out new file mode 100644 index 000000000..e57a462a5 --- /dev/null +++ b/test_regress/t/t_lint_always_comb_multidriven.out @@ -0,0 +1,87 @@ +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:26:16: Variable written to in always_comb also written by other process (IEEE 1800-2017 9.2.2.2): 'out1' + : ... In instance t + t/t_lint_always_comb_multidriven.v:26:16: + 26 | always_comb out1 = d; + | ^~~~ + t/t_lint_always_comb_multidriven.v:25:11: ... Location of other write + 25 | assign out1 = 1'b0; + | ^~~~ + ... For warning description see https://verilator.org/warn/MULTIDRIVEN?v=latest + ... Use "/* verilator lint_off MULTIDRIVEN */" and lint_on around source to disable this message. +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:29:16: Variable written to in always_comb also written by other process (IEEE 1800-2017 9.2.2.2): 'out2' + : ... In instance t + t/t_lint_always_comb_multidriven.v:29:16: + 29 | always_comb out2 = 1'b0; + | ^~~~ + t/t_lint_always_comb_multidriven.v:28:11: ... Location of other write + 28 | assign out2 = d; + | ^~~~ +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:32:11: Variable also written to in always_comb (IEEE 1800-2017 9.2.2.2): 'out3' + : ... In instance t + t/t_lint_always_comb_multidriven.v:32:11: + 32 | assign out3 = 1'b0; + | ^~~~ + t/t_lint_always_comb_multidriven.v:31:16: ... Location of always_comb write + 31 | always_comb out3 = d; + | ^~~~ +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:35:11: Variable also written to in always_comb (IEEE 1800-2017 9.2.2.2): 'out4' + : ... In instance t + t/t_lint_always_comb_multidriven.v:35:11: + 35 | assign out4 = d; + | ^~~~ + t/t_lint_always_comb_multidriven.v:34:16: ... Location of always_comb write + 34 | always_comb out4 = 1'b0; + | ^~~~ +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:38:16: Variable written to in always_comb also written by other process (IEEE 1800-2017 9.2.2.2): 'out5' + : ... In instance t + t/t_lint_always_comb_multidriven.v:38:16: + 38 | always_comb out5 = d; + | ^~~~ + t/t_lint_always_comb_multidriven.v:37:16: ... Location of other write + 37 | always_comb out5 = 1'b0; + | ^~~~ +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:41:16: Variable written to in always_comb also written by other process (IEEE 1800-2017 9.2.2.2): 'out6' + : ... In instance t + t/t_lint_always_comb_multidriven.v:41:16: + 41 | always_comb out6 = 1'b0; + | ^~~~ + t/t_lint_always_comb_multidriven.v:40:16: ... Location of other write + 40 | always_comb out6 = d; + | ^~~~ +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:17:15: Bits [0:0] of signal 'out2' have multiple combinational drivers + : ... In instance t + t/t_lint_always_comb_multidriven.v:28:16: ... Location of first driver + 28 | assign out2 = d; + | ^ + t/t_lint_always_comb_multidriven.v:29:21: ... Location of other driver + 29 | always_comb out2 = 1'b0; + | ^ + t/t_lint_always_comb_multidriven.v:17:15: ... Only the first driver will be respected +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:19:15: Bits [0:0] of signal 'out4' have multiple combinational drivers + : ... In instance t + t/t_lint_always_comb_multidriven.v:34:21: ... Location of first driver + 34 | always_comb out4 = 1'b0; + | ^ + t/t_lint_always_comb_multidriven.v:35:16: ... Location of other driver + 35 | assign out4 = d; + | ^ + t/t_lint_always_comb_multidriven.v:19:15: ... Only the first driver will be respected +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:20:15: Bits [0:0] of signal 'out5' have multiple combinational drivers + : ... In instance t + t/t_lint_always_comb_multidriven.v:37:21: ... Location of first driver + 37 | always_comb out5 = 1'b0; + | ^ + t/t_lint_always_comb_multidriven.v:38:21: ... Location of other driver + 38 | always_comb out5 = d; + | ^ + t/t_lint_always_comb_multidriven.v:20:15: ... Only the first driver will be respected +%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven.v:21:15: Bits [0:0] of signal 'out6' have multiple combinational drivers + : ... In instance t + t/t_lint_always_comb_multidriven.v:40:21: ... Location of first driver + 40 | always_comb out6 = d; + | ^ + t/t_lint_always_comb_multidriven.v:41:21: ... Location of other driver + 41 | always_comb out6 = 1'b0; + | ^ + t/t_lint_always_comb_multidriven.v:21:15: ... Only the first driver will be respected +%Error: Exiting due to diff --git a/test_regress/t/t_lint_always_comb_multidriven.pl b/test_regress/t/t_lint_always_comb_multidriven.pl new file mode 100755 index 000000000..4786ecc50 --- /dev/null +++ b/test_regress/t/t_lint_always_comb_multidriven.pl @@ -0,0 +1,20 @@ +#!/usr/bin/env perl +if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; } +# DESCRIPTION: Verilator: Verilog Test driver/expect definition +# +# Copyright 2023 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 + +scenarios(linter => 1); + +lint( + verilator_flags2 => ['--lint-only'], + fails => 1, + expect_filename => $Self->{golden_filename}, + ); + +ok(1); +1; diff --git a/test_regress/t/t_lint_always_comb_multidriven.v b/test_regress/t/t_lint_always_comb_multidriven.v new file mode 100644 index 000000000..2a0421618 --- /dev/null +++ b/test_regress/t/t_lint_always_comb_multidriven.v @@ -0,0 +1,76 @@ +// DESCRIPTION: Verilator: Verilog Test module +// +// This file ONLY is placed under the Creative Commons Public Domain, for +// any use, without warranty, 2012 by Wilson Snyder. +// SPDX-License-Identifier: CC0-1.0 + +module t (/*AUTOARG*/ + // Outputs + out1, out2, out3, out4, out5, out6, out7, out8, + // Inputs + clk, d + ); + + input clk; + input d; + output reg out1; + output reg out2; + output reg out3; + output reg out4; + output reg out5; + output reg out6; + output reg out7; + output reg out8; + + assign out1 = 1'b0; + always_comb out1 = d; // <--- Warning + + assign out2 = d; + always_comb out2 = 1'b0; // <--- Warning + + always_comb out3 = d; + assign out3 = 1'b0; // <--- Warning + + always_comb out4 = 1'b0; + assign out4 = d; // <--- Warning + + always_comb out5 = 1'b0; + always_comb out5 = d; // <--- Warning + + always_comb out6 = d; + always_comb out6 = 1'b0; // <--- Warning + + always_comb begin + out7 = 1'b0; + out7 = d; + end + + always_comb begin + out8 = d; + out8 = 1'b0; + end + + reg [1:0] arr_packed; + reg arr_unpacked [0:1]; + reg [1:0] gen_arr_packed; + reg gen_arr_unpacked [0:1]; + genvar g; + + always_comb begin + arr_packed[0] = d; + arr_packed[1] = d; + end + + always_comb begin + arr_unpacked[0] = d; + arr_unpacked[1] = d; + end + + generate + for (g=0; g<2; ++g) begin + always_comb gen_arr_packed[g] = d; + always_comb gen_arr_unpacked[g] = d; + end + endgenerate + +endmodule diff --git a/test_regress/t/t_public_seq.v b/test_regress/t/t_public_seq.v index 007e51ffe..a796e15c2 100644 --- a/test_regress/t/t_public_seq.v +++ b/test_regress/t/t_public_seq.v @@ -37,6 +37,8 @@ module t ( end always_ff @(posedge dummy_clk) begin + // verilator lint_off MULTIDRIVEN comb_byte = ~pub_byte; + // verilator lint_on MULTIDRIVEN end endmodule diff --git a/test_regress/t/t_timing_debug1.out b/test_regress/t/t_timing_debug1.out index 5775d0dde..3a8e37eeb 100644 --- a/test_regress/t/t_timing_debug1.out +++ b/test_regress/t/t_timing_debug1.out @@ -11,7 +11,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___eval_initial__TOP__1 -V{t#,#} Suspending process waiting for @(posedge t.clk1) at t/t_timing_sched.v:17 -V{t#,#}+ Vt_timing_debug1___024root___eval_initial__TOP__2 --V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:46 +-V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___eval_initial__TOP__3 -V{t#,#}+ Vt_timing_debug1___024root___eval_settle -V{t#,#}+ Vt_timing_debug1___024root___eval_triggers__stl @@ -45,7 +45,7 @@ -V{t#,#} - Process waiting at t/t_timing_sched.v:18 -V{t#,#} - Process waiting at t/t_timing_sched.v:17 -V{t#,#} Committing processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#}+ Vt_timing_debug1___024root___eval_act -V{t#,#}+ Vt_timing_debug1___024root___act_sequent__TOP__0 @@ -74,7 +74,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 3: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 3: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 3: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 @@ -134,7 +134,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 6: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 6: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 7: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:10 @@ -173,7 +173,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 7: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 7: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 9: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:10 @@ -207,7 +207,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 9: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 9: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:10 @@ -259,7 +259,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 11: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 12: Process waiting at t/t_timing_sched.v:10 @@ -283,11 +283,11 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Ready processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#} Ready processes waiting for @(posedge t.clk2): -V{t#,#} - Process waiting at t/t_timing_sched.v:18 -V{t#,#} Resuming processes waiting for @(posedge t.clk2) --V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:18 -V{t#,#} Suspending process waiting for @(posedge t.clk1) at t/t_timing_sched.v:18 -V{t#,#}+ Vt_timing_debug1___024root___eval_act @@ -324,15 +324,15 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 12: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 12: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 12: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:13 --V{t#,#} Awaiting time 13: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Awaiting time 13: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming delayed processes --V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:13 --V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:46 +-V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___eval_act -V{t#,#}+ Vt_timing_debug1___024root___act_comb__TOP__0 -V{t#,#}+ Vt_timing_debug1___024root___eval_triggers__act @@ -340,7 +340,7 @@ -V{t#,#} 'act' region trigger index 0 is active: @([hybrid] __VassignWtmp_t.clk1__0) -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#} Committing processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#}+ Vt_timing_debug1___024root___eval_act -V{t#,#}+ Vt_timing_debug1___024root___act_sequent__TOP__0 @@ -367,7 +367,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 13: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 13: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 15: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:10 @@ -400,7 +400,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 15: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 15: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Resuming delayed processes @@ -457,7 +457,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 18: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 18: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 19: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -495,7 +495,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 19: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 19: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 21: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 @@ -528,7 +528,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 21: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 21: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Resuming delayed processes @@ -579,7 +579,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 22: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 25: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 24: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -617,7 +617,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 24: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 24: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 25: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:13 @@ -655,7 +655,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 25: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 25: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 27: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:10 @@ -688,7 +688,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 27: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 27: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Resuming delayed processes @@ -739,7 +739,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 30: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 30: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 31: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -777,7 +777,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 31: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 31: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 @@ -810,7 +810,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 33: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Resuming delayed processes @@ -840,11 +840,11 @@ -V{t#,#} Resuming processes waiting for @(posedge t.clk1) -V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:17 -V{t#,#} Ready processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#} Ready processes waiting for @(posedge t.clk2): -V{t#,#} - Process waiting at t/t_timing_sched.v:18 -V{t#,#} Resuming processes waiting for @(posedge t.clk2) --V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:18 -V{t#,#} Suspending process waiting for @(posedge t.clk1) at t/t_timing_sched.v:18 -V{t#,#}+ Vt_timing_debug1___024root___eval_act @@ -883,14 +883,14 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 34: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 34: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 36: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 --V{t#,#} Awaiting time 37: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Awaiting time 37: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming delayed processes --V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:46 --V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:46 +-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50 +-V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___eval_act -V{t#,#}+ Vt_timing_debug1___024root___act_comb__TOP__0 -V{t#,#}+ Vt_timing_debug1___024root___eval_triggers__act @@ -898,7 +898,7 @@ -V{t#,#} No triggers active -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#} Committing processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___eval_nba -V{t#,#}+ Vt_timing_debug1___024root___act_comb__TOP__0 -V{t#,#}+ Vt_timing_debug1___024root___eval_triggers__act @@ -917,7 +917,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 36: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 36: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 37: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -955,7 +955,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 37: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 37: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 39: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 @@ -988,7 +988,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 39: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 39: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Resuming delayed processes @@ -1045,7 +1045,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 42: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 42: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 43: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -1083,7 +1083,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 43: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 43: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 45: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 @@ -1116,7 +1116,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 44: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 45: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Resuming delayed processes @@ -1153,7 +1153,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 45: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 45: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Resuming delayed processes @@ -1204,7 +1204,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 48: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 48: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 49: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -1242,7 +1242,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 49: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 49: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 51: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 @@ -1275,7 +1275,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 51: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 51: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Resuming delayed processes @@ -1326,7 +1326,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 54: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 54: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -1364,7 +1364,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 55: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 57: Process waiting at t/t_timing_sched.v:10 @@ -1390,11 +1390,11 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Ready processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#} Ready processes waiting for @(posedge t.clk2): -V{t#,#} - Process waiting at t/t_timing_sched.v:18 -V{t#,#} Resuming processes waiting for @(posedge t.clk2) --V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:18 -V{t#,#} Suspending process waiting for @(posedge t.clk1) at t/t_timing_sched.v:18 -V{t#,#}+ Vt_timing_debug1___024root___eval_act @@ -1431,13 +1431,13 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 56: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 56: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 57: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:13 --V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming delayed processes --V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:46 --V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:46 +-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50 +-V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___eval_act -V{t#,#}+ Vt_timing_debug1___024root___act_comb__TOP__0 -V{t#,#}+ Vt_timing_debug1___024root___eval_triggers__act @@ -1445,7 +1445,7 @@ -V{t#,#} No triggers active -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#} Committing processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___eval_nba -V{t#,#}+ Vt_timing_debug1___024root___act_comb__TOP__0 -V{t#,#}+ Vt_timing_debug1___024root___eval_triggers__act @@ -1464,7 +1464,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 57: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 57: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:13 -V{t#,#} Resuming delayed processes @@ -1521,7 +1521,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 60: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 60: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 61: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -1559,7 +1559,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 61: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 61: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 63: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 @@ -1592,7 +1592,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 63: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 63: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Resuming delayed processes @@ -1643,7 +1643,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 67: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 66: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -1685,7 +1685,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 67: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 67: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 69: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:13 @@ -1718,7 +1718,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 69: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 69: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Resuming delayed processes @@ -1769,7 +1769,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 72: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 72: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 73: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:17 @@ -1807,7 +1807,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 73: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 73: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 75: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 @@ -1840,7 +1840,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 75: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 75: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Resuming delayed processes @@ -1891,7 +1891,7 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 77: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 79: Process waiting at t/t_timing_sched.v:17 @@ -1913,11 +1913,11 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Ready processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#} Ready processes waiting for @(posedge t.clk2): -V{t#,#} - Process waiting at t/t_timing_sched.v:18 -V{t#,#} Resuming processes waiting for @(posedge t.clk2) --V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:18 -V{t#,#} Suspending process waiting for @(posedge t.clk1) at t/t_timing_sched.v:18 -V{t#,#}+ Vt_timing_debug1___024root___eval_act @@ -1954,17 +1954,17 @@ -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#} Delayed processes: --V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:48 +-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:52 -V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 79: Process waiting at t/t_timing_sched.v:10 -V{t#,#} Awaiting time 88: Process waiting at t/t_timing_sched.v:13 --V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Awaiting time 78: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming delayed processes --V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:46 +-V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:50 -V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:13 *-* All Finished *-* -V{t#,#} Resuming: Process waiting at t/t_timing_sched.v:10 --V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:46 +-V{t#,#} Suspending process waiting for @(posedge t.clk2) at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___eval_act -V{t#,#}+ Vt_timing_debug1___024root___act_comb__TOP__0 -V{t#,#}+ Vt_timing_debug1___024root___eval_triggers__act @@ -1972,7 +1972,7 @@ -V{t#,#} 'act' region trigger index 0 is active: @([hybrid] __VassignWtmp_t.clk1__0) -V{t#,#}+ Vt_timing_debug1___024root___timing_commit -V{t#,#} Committing processes waiting for @(posedge t.clk2): --V{t#,#} - Process waiting at t/t_timing_sched.v:46 +-V{t#,#} - Process waiting at t/t_timing_sched.v:50 -V{t#,#}+ Vt_timing_debug1___024root___timing_resume -V{t#,#}+ Vt_timing_debug1___024root___eval_act -V{t#,#}+ Vt_timing_debug1___024root___act_sequent__TOP__0 diff --git a/test_regress/t/t_timing_sched.v b/test_regress/t/t_timing_sched.v index 57fa10fcd..6bb015fb9 100644 --- a/test_regress/t/t_timing_sched.v +++ b/test_regress/t/t_timing_sched.v @@ -19,7 +19,9 @@ module t; int a2 = 0; always_comb begin + // verilator lint_off MULTIDRIVEN a2 = a1 << 1; + // verilator lint_on MULTIDRIVEN `ifdef TEST_VERBOSE $display("[%0t] a2 = %0d", $time, a2); `endif @@ -27,7 +29,9 @@ module t; int b2 = 0; always_comb begin + // verilator lint_off MULTIDRIVEN b2 = b1 << 2; + // verilator lint_on MULTIDRIVEN `ifdef TEST_VERBOSE $display("[%0t] b2 = %0d", $time, b2); `endif diff --git a/test_regress/t/t_timing_sched_if.v b/test_regress/t/t_timing_sched_if.v index faa84e266..768c7a82c 100644 --- a/test_regress/t/t_timing_sched_if.v +++ b/test_regress/t/t_timing_sched_if.v @@ -25,7 +25,9 @@ module t; int a2 = 0; always_comb begin + // verilator lint_off MULTIDRIVEN a2 = a1 << 1; + // verilator lint_on MULTIDRIVEN `ifdef TEST_VERBOSE $display("[%0t] a2 = %0d", $time, a2); `endif @@ -33,7 +35,9 @@ module t; int b2 = 0; always_comb begin + // verilator lint_off MULTIDRIVEN b2 = b1 << 2; + // verilator lint_on MULTIDRIVEN `ifdef TEST_VERBOSE $display("[%0t] b2 = %0d", $time, b2); `endif @@ -41,7 +45,9 @@ module t; int c2 = 0; always_comb begin + // verilator lint_off MULTIDRIVEN c2 = c1 << 3; + // verilator lint_on MULTIDRIVEN `ifdef TEST_VERBOSE $display("[%0t] c2 = %0d", $time, c2); `endif diff --git a/test_regress/t/t_timing_sched_nba.v b/test_regress/t/t_timing_sched_nba.v index 4106d755c..d09a4778a 100644 --- a/test_regress/t/t_timing_sched_nba.v +++ b/test_regress/t/t_timing_sched_nba.v @@ -19,7 +19,9 @@ module t; int a2 = 0; always_comb begin + // verilator lint_off MULTIDRIVEN a2 = a1 << 1; + // verilator lint_on MULTIDRIVEN `ifdef TEST_VERBOSE $display("[%0t] a2 = %0d", $time, a2); `endif @@ -27,7 +29,9 @@ module t; int b2 = 0; always_comb begin + // verilator lint_off MULTIDRIVEN b2 = b1 << 2; + // verilator lint_on MULTIDRIVEN `ifdef TEST_VERBOSE $display("[%0t] b2 = %0d", $time, b2); `endif