Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect results with partially out-of-bounds part select (re-opened) #1008

Open
veripoolbot opened this issue Nov 26, 2015 · 2 comments
Open
Labels
area: data-types Issue involves data-types area: wrong runtime result Issue involves an incorrect runtine result from Verilated model effort: days Expect this issue to require roughly days of invested effort to resolve

Comments

@veripoolbot
Copy link
Contributor


Author Name: Clifford Wolf (@cliffordwolf)
Original Redmine Issue: 1008 from https://www.veripool.org


Sorry, I don't know how to re-open a closed issue.. (can I even do that?)

A year ago I reported issue #823: Incorrect results with partially out-of-bounds part select:

http://www.veripool.org/issues/823-Verilator-Incorrect-results-with-partially-out-of-bounds-part-select

This ticked has been closed as "Fixed in git towards 3.865".

However, with current git head of verilator (commit 373a68e) I can still reproduce the problem, using exactly the test case that I posted in issue 823:

http://svn.clifford.at/handicraft/2014/verilatortest/test020.v

http://svn.clifford.at/handicraft/2014/verilatortest/test020_tb.v

http://svn.clifford.at/handicraft/2014/verilatortest/test020.cc

http://svn.clifford.at/handicraft/2014/verilatortest/test020.sh

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2015-12-06T01:01:02Z


Sorry, the test case I extracted and fixed had the opposite bit ordering. I've started on a patch, but it makes a mess of other tests, so more work is needed. Stay tuned.

@veripoolbot veripoolbot added area: data-types Issue involves data-types area: wrong runtime result Issue involves an incorrect runtine result from Verilated model effort: days Expect this issue to require roughly days of invested effort to resolve labels Dec 22, 2019
@yTakatsukasa
Copy link
Member

I found another case that causes different failure.
Splitting mask causes the following error.

%Error: t/t_select_bound1.v:23: __Vtable1_t__DOT__out[2]1:Unsupported: 4-state numbers in this context
   wire [3:0]  out;
               ^~~
%Error: t/t_select_bound1.v:23: __Vtable1_t__DOT__out[3]1:Unsupported: 4-state numbers in this context
   wire [3:0]  out;
               ^~~
%Error: t/t_select_bound1.v:23: __Vtable1_t__DOT__out[4]1:Unsupported: 4-state numbers in this context
   wire [3:0]  out;
               ^~~

<snip>

Disabling table lookup optimization by -Oa option is a workaround.

I made an unsup test case here.

yTakatsukasa@e513751

yTakatsukasa added a commit to yTakatsukasa/verilator that referenced this issue Feb 11, 2020
…thing.

The following tests fail. Explanation is here.

- Failure because extra warnings
    - vlt/t_a1_first_cc: %Error: Exec of perl failed: No stack.
        make -j && test_regress/t/t_a1_first_cc.pl  --vlt
    - vlt/t_a2_first_sc: %Error: Exec of perl failed: No stack.
        make -j && test_regress/t/t_a2_first_sc.pl  --vlt
    - vlt/t_flag_debugi9: %Error: Exec of perl failed: Starting Verilator 4.029 devel rev v4.028-114-g8e707db3 (mod)
        make -j && test_regress/t/t_flag_debugi9.pl  --vlt
    - vlt/t_gen_forif: %Error: Exec of perl failed: %Warning-CLKDATA: t/t_gen_forif.v:35: Clock used as data (on rhs of assignment) in sequential block 't.Result'
        make -j && test_regress/t/t_gen_forif.pl  --vlt
- Failures because the statistics changes
    - vlt/t_split_var_0: %Error: File_grep: obj_vlt/t_split_var_0/Vt_split_var_0__stats.txt: Got='26' Expected='23' in regexp: (?^i:SplitVar,\s+Split unpacked arrays\s+(\d+))
        make -j && test_regress/t/t_split_var_0.pl  --vlt
    - vlt/t_split_var_1_bad: %Error: Line 1 mismatches; obj_vlt/t_split_var_1_bad/vlt_compile.log != t/t_split_var_1_bad.out
        make -j && test_regress/t/t_split_var_1_bad.pl  --vlt
    - vlt/t_split_var_2_trace: %Error: VCD miscompare obj_vlt/t_split_var_2_trace/simx.vcd t/t_split_var_2_trace.out
        make -j && test_regress/t/t_split_var_2_trace.pl  --vlt
    - vlt/t_unopt_combo_isolate: %Error: File_grep: obj_vlt/t_unopt_combo_isolate/Vt_unopt_combo_isolate__stats.txt: Regexp not found: (?^i:Optimizations, isolate_assignments blocks\s+5)
        make -j && test_regress/t/t_unopt_combo_isolate.pl  --vlt
    - vlt/t_unopt_combo_isolate_vlt: %Error: File_grep: obj_vlt/t_unopt_combo_isolate_vlt/Vt_unopt_combo_isolate_vlt__stats.txt: Regexp not found: (?^i:Optimizations, isolate_assignments blocks\s+5)
        make -j && test_regress/t/t_unopt_combo_isolate_vlt.pl  --vlt
    - vlt/t_xml_tag: %Error: Line 26 mismatches; obj_vlt/t_xml_tag/Vt_xml_tag.xml != t/t_xml_tag.out
        make -j && test_regress/t/t_xml_tag.pl  --vlt
- SplitVar changed error message by other pass. (the testcases are intended for error message)
    - vlt/t_bitsel_wire_array_bad: %Error: Line 1 mismatches; obj_vlt/t_bitsel_wire_array_bad/vlt_compile.log != t/t_bitsel_wire_array_bad.out
        make -j && test_regress/t/t_bitsel_wire_array_bad.pl  --vlt
    - vlt/t_lint_multidriven_bad: %Error: Line 9 mismatches; obj_vlt/t_lint_multidriven_bad/vlt_compile.log != t/t_lint_multidriven_bad.out
        make -j && test_regress/t/t_lint_multidriven_bad.pl  --vlt
    - vlt/t_unoptflat_simple_2_bad: %Error: Exec of perl ok, but expected to fail
        make -j && test_regress/t/t_unoptflat_simple_2_bad.pl  --vlt
- Because of other issue verilator#1008 (comment)
    - vlt/t_select_bound1: %Error: Exec of perl failed: %Error: t/t_select_bound1.v:23: Unsupported: 4-state numbers in this context
        make -j && test_regress/t/t_select_bound1.pl  --vlt
yTakatsukasa added a commit to yTakatsukasa/verilator that referenced this issue Feb 11, 2020
…thing.

The following tests fail. Explanation is here.

- Failure because extra warnings
    - vlt/t_a1_first_cc: %Error: Exec of perl failed: No stack.
        make -j && test_regress/t/t_a1_first_cc.pl  --vlt
    - vlt/t_a2_first_sc: %Error: Exec of perl failed: No stack.
        make -j && test_regress/t/t_a2_first_sc.pl  --vlt
    - vlt/t_flag_debugi9: %Error: Exec of perl failed: Starting Verilator 4.029 devel rev v4.028-114-g8e707db3 (mod)
        make -j && test_regress/t/t_flag_debugi9.pl  --vlt
- Failures because the statistics changes
    - vlt/t_split_var_0: %Error: File_grep: obj_vlt/t_split_var_0/Vt_split_var_0__stats.txt: Got='26' Expected='23' in regexp: (?^i:SplitVar,\s+Split unpacked arrays\s+(\d+))
        make -j && test_regress/t/t_split_var_0.pl  --vlt
    - vlt/t_split_var_1_bad: %Error: Line 1 mismatches; obj_vlt/t_split_var_1_bad/vlt_compile.log != t/t_split_var_1_bad.out
        make -j && test_regress/t/t_split_var_1_bad.pl  --vlt
    - vlt/t_split_var_2_trace: %Error: VCD miscompare obj_vlt/t_split_var_2_trace/simx.vcd t/t_split_var_2_trace.out
        make -j && test_regress/t/t_split_var_2_trace.pl  --vlt
    - vlt/t_unopt_combo_isolate: %Error: File_grep: obj_vlt/t_unopt_combo_isolate/Vt_unopt_combo_isolate__stats.txt: Regexp not found: (?^i:Optimizations, isolate_assignments blocks\s+5)
        make -j && test_regress/t/t_unopt_combo_isolate.pl  --vlt
    - vlt/t_unopt_combo_isolate_vlt: %Error: File_grep: obj_vlt/t_unopt_combo_isolate_vlt/Vt_unopt_combo_isolate_vlt__stats.txt: Regexp not found: (?^i:Optimizations, isolate_assignments blocks\s+5)
        make -j && test_regress/t/t_unopt_combo_isolate_vlt.pl  --vlt
    - vlt/t_xml_tag: %Error: Line 26 mismatches; obj_vlt/t_xml_tag/Vt_xml_tag.xml != t/t_xml_tag.out
        make -j && test_regress/t/t_xml_tag.pl  --vlt
- SplitVar changed error message by other pass.
    - vlt/t_bitsel_wire_array_bad: %Error: Line 1 mismatches; obj_vlt/t_bitsel_wire_array_bad/vlt_compile.log != t/t_bitsel_wire_array_bad.out
        make -j && test_regress/t/t_bitsel_wire_array_bad.pl  --vlt
    - vlt/t_lint_multidriven_bad: %Error: Line 9 mismatches; obj_vlt/t_lint_multidriven_bad/vlt_compile.log != t/t_lint_multidriven_bad.out
        make -j && test_regress/t/t_lint_multidriven_bad.pl  --vlt
    - vlt/t_gen_forif: %Error: Exec of perl failed: %Warning-CLKDATA: t/t_gen_forif.v:35: Clock used as data (on rhs of assignment) in sequential block 't.Result'
        make -j && test_regress/t/t_gen_forif.pl  --vlt
    - vlt/t_unoptflat_simple_2_bad: %Error: Exec of perl ok, but expected to fail
        make -j && test_regress/t/t_unoptflat_simple_2_bad.pl  --vlt
- Because of other issue verilator#1008 (comment)
    - vlt/t_select_bound1: %Error: Exec of perl failed: %Error: t/t_select_bound1.v:23: Unsupported: 4-state numbers in this context
        make -j && test_regress/t/t_select_bound1.pl  --vlt
yTakatsukasa added a commit to yTakatsukasa/verilator that referenced this issue Feb 12, 2020
…thing.

The following tests fail. Explanation is here.

- Failure because extra warnings
    - vlt/t_a1_first_cc: %Error: Exec of perl failed: No stack.
        make -j && test_regress/t/t_a1_first_cc.pl  --vlt
    - vlt/t_a2_first_sc: %Error: Exec of perl failed: No stack.
        make -j && test_regress/t/t_a2_first_sc.pl  --vlt
    - vlt/t_flag_debugi9: %Error: Exec of perl failed: Starting Verilator 4.029 devel rev v4.028-114-g8e707db3 (mod)
        make -j && test_regress/t/t_flag_debugi9.pl  --vlt
- Failures because the statistics changes
    - vlt/t_split_var_0: %Error: File_grep: obj_vlt/t_split_var_0/Vt_split_var_0__stats.txt: Got='26' Expected='23' in regexp: (?^i:SplitVar,\s+Split unpacked arrays\s+(\d+))
        make -j && test_regress/t/t_split_var_0.pl  --vlt
    - vlt/t_split_var_1_bad: %Error: Line 1 mismatches; obj_vlt/t_split_var_1_bad/vlt_compile.log != t/t_split_var_1_bad.out
        make -j && test_regress/t/t_split_var_1_bad.pl  --vlt
    - vlt/t_split_var_2_trace: %Error: VCD miscompare obj_vlt/t_split_var_2_trace/simx.vcd t/t_split_var_2_trace.out
        make -j && test_regress/t/t_split_var_2_trace.pl  --vlt
    - vlt/t_unopt_combo_isolate: %Error: File_grep: obj_vlt/t_unopt_combo_isolate/Vt_unopt_combo_isolate__stats.txt: Regexp not found: (?^i:Optimizations, isolate_assignments blocks\s+5)
        make -j && test_regress/t/t_unopt_combo_isolate.pl  --vlt
    - vlt/t_unopt_combo_isolate_vlt: %Error: File_grep: obj_vlt/t_unopt_combo_isolate_vlt/Vt_unopt_combo_isolate_vlt__stats.txt: Regexp not found: (?^i:Optimizations, isolate_assignments blocks\s+5)
        make -j && test_regress/t/t_unopt_combo_isolate_vlt.pl  --vlt
    - vlt/t_xml_tag: %Error: Line 26 mismatches; obj_vlt/t_xml_tag/Vt_xml_tag.xml != t/t_xml_tag.out
        make -j && test_regress/t/t_xml_tag.pl  --vlt
- SplitVar changed error message by other pass.
    - vlt/t_bitsel_wire_array_bad: %Error: Line 1 mismatches; obj_vlt/t_bitsel_wire_array_bad/vlt_compile.log != t/t_bitsel_wire_array_bad.out
        make -j && test_regress/t/t_bitsel_wire_array_bad.pl  --vlt
    - vlt/t_lint_multidriven_bad: %Error: Line 9 mismatches; obj_vlt/t_lint_multidriven_bad/vlt_compile.log != t/t_lint_multidriven_bad.out
        make -j && test_regress/t/t_lint_multidriven_bad.pl  --vlt
    - vlt/t_gen_forif: %Error: Exec of perl failed: %Warning-CLKDATA: t/t_gen_forif.v:35: Clock used as data (on rhs of assignment) in sequential block 't.Result'
        make -j && test_regress/t/t_gen_forif.pl  --vlt
    - vlt/t_unoptflat_simple_2_bad: %Error: Exec of perl ok, but expected to fail
        make -j && test_regress/t/t_unoptflat_simple_2_bad.pl  --vlt
- Because of other issue verilator#1008 (comment)
    - vlt/t_select_bound1: %Error: Exec of perl failed: %Error: t/t_select_bound1.v:23: Unsupported: 4-state numbers in this context
        make -j && test_regress/t/t_select_bound1.pl  --vlt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: data-types Issue involves data-types area: wrong runtime result Issue involves an incorrect runtine result from Verilated model effort: days Expect this issue to require roughly days of invested effort to resolve
Projects
None yet
Development

No branches or pull requests

2 participants