Tests: Improve warning coverage
This commit is contained in:
parent
2dbe897e1b
commit
7a5c223ccf
|
|
@ -19,38 +19,32 @@ Suppressed = {}
|
||||||
|
|
||||||
for s in [
|
for s in [
|
||||||
' exited with ', # Is hit; driver.py filters out
|
' exited with ', # Is hit; driver.py filters out
|
||||||
|
'Assigned pin is neither input nor output', # Instead earlier error
|
||||||
|
'Define missing argument \'', # Instead get Define passed too many arguments
|
||||||
|
'Define or directive not defined: `', # Instead V3ParseImp will warn
|
||||||
'EOF in unterminated string', # Instead get normal unterminated
|
'EOF in unterminated string', # Instead get normal unterminated
|
||||||
'Enum ranges must be integral, per spec', # Hard to hit
|
'Enum ranges must be integral, per spec', # Hard to hit
|
||||||
|
'Expecting define formal arguments. Found: ', # Instead define syntax error
|
||||||
'Import package not found: ', # Errors earlier, until future parser released
|
'Import package not found: ', # Errors earlier, until future parser released
|
||||||
'Return with return value isn\'t underneath a function', # Hard to hit, get other bad return messages
|
'Return with return value isn\'t underneath a function', # Hard to hit, get other bad return messages
|
||||||
'Syntax error: Range \':\', \'+:\' etc are not allowed in the instance ', # Instead get syntax error
|
|
||||||
'Syntax error parsing real: \'', # Instead can't lex the number
|
'Syntax error parsing real: \'', # Instead can't lex the number
|
||||||
|
'Syntax error: Range \':\', \'+:\' etc are not allowed in the instance ', # Instead get syntax error
|
||||||
'Unsupported: Ranges ignored in port-lists', # Hard to hit
|
'Unsupported: Ranges ignored in port-lists', # Hard to hit
|
||||||
'dynamic new() not expected in this context (expected under an assign)', # Instead get syntax error
|
'dynamic new() not expected in this context (expected under an assign)', # Instead get syntax error
|
||||||
# Not yet analyzed
|
# Not yet analyzed
|
||||||
' loading non-variable',
|
' loading non-variable',
|
||||||
'--pins-bv maximum is 65: ',
|
|
||||||
'--pipe-filter protocol error, unexpected: ',
|
'--pipe-filter protocol error, unexpected: ',
|
||||||
'--pipe-filter returned bad status',
|
'--pipe-filter returned bad status',
|
||||||
'--pipe-filter: Can\'t pipe: ',
|
'--pipe-filter: Can\'t pipe: ',
|
||||||
'--pipe-filter: fork failed: ',
|
'--pipe-filter: fork failed: ',
|
||||||
'--threads must be >= 0: ',
|
|
||||||
'--threads-max-mtasks must be >= 1: ',
|
|
||||||
'--trace-threads must be >= 1: ',
|
|
||||||
'/*verilator sformat*/ can only be applied to last argument of ',
|
|
||||||
'Argument needed for string.',
|
'Argument needed for string.',
|
||||||
'Array initialization has too few elements, need element ',
|
'Array initialization has too few elements, need element ',
|
||||||
'Assigned pin is neither input nor output',
|
|
||||||
'Assignment pattern with no members',
|
'Assignment pattern with no members',
|
||||||
'Can\'t find varpin scope of ',
|
'Can\'t find varpin scope of ',
|
||||||
'Can\'t read annotation file: ',
|
'Can\'t read annotation file: ',
|
||||||
'Can\'t resolve module reference: \'',
|
'Can\'t resolve module reference: \'',
|
||||||
'Can\'t write file: ',
|
'Can\'t write file: ',
|
||||||
'Circular logic when ordering code (non-cutable edge loop)',
|
|
||||||
'Define missing argument \'',
|
|
||||||
'Define or directive not defined: `',
|
|
||||||
'Exceeded limit of ',
|
'Exceeded limit of ',
|
||||||
'Expecting define formal arguments. Found: ',
|
|
||||||
'Extern declaration\'s scope is not a defined class',
|
'Extern declaration\'s scope is not a defined class',
|
||||||
'File not found: ',
|
'File not found: ',
|
||||||
'Format to $display-like function must have constant format string',
|
'Format to $display-like function must have constant format string',
|
||||||
|
|
@ -80,7 +74,6 @@ for s in [
|
||||||
'Unsupported pullup/down (weak driver) construct.',
|
'Unsupported pullup/down (weak driver) construct.',
|
||||||
'Unsupported tristate construct (not in propagation graph): ',
|
'Unsupported tristate construct (not in propagation graph): ',
|
||||||
'Unsupported tristate port expression: ',
|
'Unsupported tristate port expression: ',
|
||||||
'Unsupported/unknown built-in dynamic array method ',
|
|
||||||
'Unsupported: $bits for queue',
|
'Unsupported: $bits for queue',
|
||||||
'Unsupported: $c can\'t generate wider than 64 bits',
|
'Unsupported: $c can\'t generate wider than 64 bits',
|
||||||
'Unsupported: &&& expression',
|
'Unsupported: &&& expression',
|
||||||
|
|
@ -107,20 +100,15 @@ for s in [
|
||||||
'Unsupported: [] dimensions',
|
'Unsupported: [] dimensions',
|
||||||
'Unsupported: \'default :/\' constraint',
|
'Unsupported: \'default :/\' constraint',
|
||||||
'Unsupported: \'{} .* patterns',
|
'Unsupported: \'{} .* patterns',
|
||||||
'Unsupported: \'{} tagged patterns',
|
|
||||||
'Unsupported: always[] (in property expression)',
|
'Unsupported: always[] (in property expression)',
|
||||||
'Unsupported: assertion items in clocking blocks',
|
'Unsupported: assertion items in clocking blocks',
|
||||||
'Unsupported: don\'t know how to deal with ',
|
'Unsupported: don\'t know how to deal with ',
|
||||||
'Unsupported: eventually[] (in property expression)',
|
'Unsupported: eventually[] (in property expression)',
|
||||||
'Unsupported: extern forkjoin',
|
'Unsupported: extern forkjoin',
|
||||||
'Unsupported: extern interface',
|
|
||||||
'Unsupported: extern module',
|
|
||||||
'Unsupported: extern task',
|
'Unsupported: extern task',
|
||||||
'Unsupported: modport export',
|
'Unsupported: modport export',
|
||||||
'Unsupported: no_inline for tasks',
|
'Unsupported: no_inline for tasks',
|
||||||
'Unsupported: property port \'local\'',
|
'Unsupported: property port \'local\'',
|
||||||
'Unsupported: randsequence production list',
|
|
||||||
'Unsupported: randsequence repeat',
|
|
||||||
'Unsupported: repeat event control',
|
'Unsupported: repeat event control',
|
||||||
'Unsupported: s_always (in property expression)',
|
'Unsupported: s_always (in property expression)',
|
||||||
'Unsupported: static cast to ',
|
'Unsupported: static cast to ',
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
%Error: t/t_dpi_display_bad.v:17:69: /*verilator sformat*/ can only be applied to last argument of a function
|
||||||
|
17 | (input string formatted /*verilator sformat*/ , input string other_bad );
|
||||||
|
| ^~~~~~~~~
|
||||||
|
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||||
|
%Error: Exiting due to
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2024 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('vlt')
|
||||||
|
|
||||||
|
test.lint(fails=True, expect_filename=test.golden_filename)
|
||||||
|
|
||||||
|
test.passes()
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// Copyright 2010 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
|
||||||
|
|
||||||
|
module t ();
|
||||||
|
|
||||||
|
`ifndef VERILATOR
|
||||||
|
`error "Only Verilator supports PLI-ish DPI calls and sformat conversion."
|
||||||
|
`endif
|
||||||
|
|
||||||
|
import "DPI-C" context dpii_display_call
|
||||||
|
= function void \$dpii_display
|
||||||
|
(input string formatted /*verilator sformat*/, input string other_bad );
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
$dpii_display("hello", "huh");
|
||||||
|
$stop;
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -24,4 +24,13 @@
|
||||||
: ... note: In instance 't'
|
: ... note: In instance 't'
|
||||||
29 | b = s.product with (item inside { "hello", "sad", "world" });
|
29 | b = s.product with (item inside { "hello", "sad", "world" });
|
||||||
| ^
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_dynarray_method_bad.v:32:13: Unsupported/unknown built-in dynamic array method 'unknown_bad'
|
||||||
|
: ... note: In instance 't'
|
||||||
|
32 | b = s.unknown_bad;
|
||||||
|
| ^~~~~~~~~~~
|
||||||
|
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
||||||
|
%Warning-WIDTHTRUNC: t/t_dynarray_method_bad.v:32:9: Operator ASSIGN expects 1 bits on the Assign RHS, but Assign RHS's METHODCALL 'unknown_bad' generates 64 bits.
|
||||||
|
: ... note: In instance 't'
|
||||||
|
32 | b = s.unknown_bad;
|
||||||
|
| ^
|
||||||
%Error: Exiting due to
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,8 @@ module t (/*AUTOARG*/);
|
||||||
b = s.product with (item inside { "hello", "sad", "world" });
|
b = s.product with (item inside { "hello", "sad", "world" });
|
||||||
`checkh(b, 1'b1);
|
`checkh(b, 1'b1);
|
||||||
|
|
||||||
|
b = s.unknown_bad;
|
||||||
|
|
||||||
$write("*-* All Finished *-*\n");
|
$write("*-* All Finished *-*\n");
|
||||||
$finish;
|
$finish;
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
%Error: --threads must be >= 0: -1
|
||||||
|
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2024 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('vlt')
|
||||||
|
test.top_filename = 't/t_EXAMPLE.v'
|
||||||
|
|
||||||
|
test.run(cmd=["perl", os.environ["VERILATOR_ROOT"] + "/bin/verilator", "--threads -1"],
|
||||||
|
logfile=test.run_log_filename,
|
||||||
|
fails=True,
|
||||||
|
expect_filename=test.golden_filename,
|
||||||
|
verilator_run=True)
|
||||||
|
|
||||||
|
test.passes()
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
%Error: --threads-max-mtasks must be >= 1: 0
|
||||||
|
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2024 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('vlt')
|
||||||
|
test.top_filename = 't/t_EXAMPLE.v'
|
||||||
|
|
||||||
|
test.run(cmd=["perl", os.environ["VERILATOR_ROOT"] + "/bin/verilator", "--threads-max-mtasks 0"],
|
||||||
|
logfile=test.run_log_filename,
|
||||||
|
fails=True,
|
||||||
|
expect_filename=test.golden_filename,
|
||||||
|
verilator_run=True)
|
||||||
|
|
||||||
|
test.passes()
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
%Error: --trace-threads must be >= 1: -1
|
||||||
|
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2024 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('vlt')
|
||||||
|
test.top_filename = 't/t_EXAMPLE.v'
|
||||||
|
|
||||||
|
test.lint(verilator_flags2=["--trace-threads -1"],
|
||||||
|
fails=True,
|
||||||
|
expect_filename=test.golden_filename)
|
||||||
|
|
||||||
|
test.passes()
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
%Error-UNSUPPORTED: t/t_program_extern.v:7:1: Unsupported: extern program
|
%Error-UNSUPPORTED: t/t_program_extern.v:7:1: Unsupported: extern program
|
||||||
7 | extern program pgm;
|
7 | extern program ex_pgm;
|
||||||
| ^~~~~~
|
| ^~~~~~
|
||||||
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
||||||
|
%Error-UNSUPPORTED: t/t_program_extern.v:8:1: Unsupported: extern interface
|
||||||
|
8 | extern interface ex_ifc;
|
||||||
|
| ^~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_program_extern.v:9:1: Unsupported: extern module
|
||||||
|
9 | extern module ex_mod;
|
||||||
|
| ^~~~~~
|
||||||
%Error: Exiting due to
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,18 @@
|
||||||
// any use, without warranty, 2022 by Wilson Snyder.
|
// any use, without warranty, 2022 by Wilson Snyder.
|
||||||
// SPDX-License-Identifier: CC0-1.0
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
extern program pgm;
|
extern program ex_pgm;
|
||||||
|
extern interface ex_ifc;
|
||||||
program pgm;
|
extern module ex_mod;
|
||||||
task ptask;
|
|
||||||
endtask
|
|
||||||
endprogram
|
|
||||||
|
|
||||||
module t(/*AUTOARG*/);
|
module t(/*AUTOARG*/);
|
||||||
|
|
||||||
pgm sub ();
|
ex_pgm u_pgm();
|
||||||
|
ex_ifc u_ifc();
|
||||||
|
ex_mod u_mod();
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
|
ex_task();
|
||||||
$write("*-* All Finished *-*\n");
|
$write("*-* All Finished *-*\n");
|
||||||
$finish;
|
$finish;
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -149,4 +149,250 @@
|
||||||
%Error-UNSUPPORTED: t/t_randsequence.v:105:38: Unsupported: randsequence production id
|
%Error-UNSUPPORTED: t/t_randsequence.v:105:38: Unsupported: randsequence production id
|
||||||
105 | one_if: if (i % 10 == 0) count_1 else most;
|
105 | one_if: if (i % 10 == 0) count_1 else most;
|
||||||
| ^~~~~~~
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:105:51: Unsupported: randsequence production id
|
||||||
|
105 | one_if: if (i % 10 == 0) count_1 else most;
|
||||||
|
| ^~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:105:21: Unsupported: randsequence if
|
||||||
|
105 | one_if: if (i % 10 == 0) count_1 else most;
|
||||||
|
| ^~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:105:19: Unsupported: randsequence production
|
||||||
|
105 | one_if: if (i % 10 == 0) count_1 else most;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:106:20: Unsupported: randsequence production
|
||||||
|
106 | count_1: { ++counts[1]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:107:20: Unsupported: randsequence production
|
||||||
|
107 | count_2: { ++counts[2]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:108:20: Unsupported: randsequence production
|
||||||
|
108 | count_3: { ++counts[3]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:109:20: Unsupported: randsequence production
|
||||||
|
109 | count_4: { ++counts[4]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:110:16: Unsupported: randsequence production
|
||||||
|
110 | bad: { $stop; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:112:24: Unsupported: randsequence production id
|
||||||
|
112 | 0: bad;
|
||||||
|
| ^~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:112:22: Unsupported: randsequence case item
|
||||||
|
112 | 0: bad;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:113:27: Unsupported: randsequence production id
|
||||||
|
113 | 1, 2: count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:113:25: Unsupported: randsequence case item
|
||||||
|
113 | 1, 2: count_2;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:114:30: Unsupported: randsequence production id
|
||||||
|
114 | 3, 4, 5: count_3;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:114:28: Unsupported: randsequence case item
|
||||||
|
114 | 3, 4, 5: count_3;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:115:29: Unsupported: randsequence production id
|
||||||
|
115 | default count_4;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:115:21: Unsupported: randsequence case item
|
||||||
|
115 | default count_4;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:111:19: Unsupported: randsequence case
|
||||||
|
111 | most: case (i % 10)
|
||||||
|
| ^~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:111:17: Unsupported: randsequence production
|
||||||
|
111 | most: case (i % 10)
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:103:10: Unsupported: randsequence
|
||||||
|
103 | randsequence(main)
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:127:27: Unsupported: randsequence production id
|
||||||
|
127 | main: repeat(10) count_1;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:127:16: Unsupported: randsequence repeat
|
||||||
|
127 | main: repeat(10) count_1;
|
||||||
|
| ^~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:127:14: Unsupported: randsequence production
|
||||||
|
127 | main: repeat(10) count_1;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:128:17: Unsupported: randsequence production
|
||||||
|
128 | count_1: { ++counts[1]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:126:7: Unsupported: randsequence
|
||||||
|
126 | randsequence(main)
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:136:29: Unsupported: randsequence production id
|
||||||
|
136 | main: rand join count_1 count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:136:37: Unsupported: randsequence production id
|
||||||
|
136 | main: rand join count_1 count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:136:19: Unsupported: randsequence production list
|
||||||
|
136 | main: rand join count_1 count_2;
|
||||||
|
| ^~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:136:17: Unsupported: randsequence production
|
||||||
|
136 | main: rand join count_1 count_2;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:137:20: Unsupported: randsequence production
|
||||||
|
137 | count_1: { ++counts[1]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:138:20: Unsupported: randsequence production
|
||||||
|
138 | count_2: { ++counts[2]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:135:10: Unsupported: randsequence
|
||||||
|
135 | randsequence(main)
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:148:35: Unsupported: randsequence production id
|
||||||
|
148 | main: rand join (1.0) count_1 count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:148:43: Unsupported: randsequence production id
|
||||||
|
148 | main: rand join (1.0) count_1 count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:148:19: Unsupported: randsequence production list
|
||||||
|
148 | main: rand join (1.0) count_1 count_2;
|
||||||
|
| ^~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:148:17: Unsupported: randsequence production
|
||||||
|
148 | main: rand join (1.0) count_1 count_2;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:149:20: Unsupported: randsequence production
|
||||||
|
149 | count_1: { ++counts[1]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:150:20: Unsupported: randsequence production
|
||||||
|
150 | count_2: { ++counts[2]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:147:10: Unsupported: randsequence
|
||||||
|
147 | randsequence(main)
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:153:35: Unsupported: randsequence production id
|
||||||
|
153 | main: rand join (0.0) count_3 count_4;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:153:43: Unsupported: randsequence production id
|
||||||
|
153 | main: rand join (0.0) count_3 count_4;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:153:19: Unsupported: randsequence production list
|
||||||
|
153 | main: rand join (0.0) count_3 count_4;
|
||||||
|
| ^~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:153:17: Unsupported: randsequence production
|
||||||
|
153 | main: rand join (0.0) count_3 count_4;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:154:20: Unsupported: randsequence production
|
||||||
|
154 | count_3: { ++counts[3]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:155:20: Unsupported: randsequence production
|
||||||
|
155 | count_4: { ++counts[4]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:152:10: Unsupported: randsequence
|
||||||
|
152 | randsequence(main)
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:168:19: Unsupported: randsequence production id
|
||||||
|
168 | main: count_1 check count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:168:27: Unsupported: randsequence production id
|
||||||
|
168 | main: count_1 check count_2;
|
||||||
|
| ^~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:168:33: Unsupported: randsequence production id
|
||||||
|
168 | main: count_1 check count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:168:17: Unsupported: randsequence production
|
||||||
|
168 | main: count_1 check count_2;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:169:20: Unsupported: randsequence production id
|
||||||
|
169 | check: count_3 { if (fiftyfifty) break; } count_4;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:169:55: Unsupported: randsequence production id
|
||||||
|
169 | check: count_3 { if (fiftyfifty) break; } count_4;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:169:18: Unsupported: randsequence production
|
||||||
|
169 | check: count_3 { if (fiftyfifty) break; } count_4;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:170:20: Unsupported: randsequence production
|
||||||
|
170 | count_1: { ++counts[1]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:171:20: Unsupported: randsequence production
|
||||||
|
171 | count_2: { ++counts[2]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:172:20: Unsupported: randsequence production
|
||||||
|
172 | count_3: { ++counts[3]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:173:20: Unsupported: randsequence production
|
||||||
|
173 | count_4: { ++counts[4]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:167:10: Unsupported: randsequence
|
||||||
|
167 | randsequence(main)
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:186:19: Unsupported: randsequence production id
|
||||||
|
186 | main: count_1 check count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:186:27: Unsupported: randsequence production id
|
||||||
|
186 | main: count_1 check count_2;
|
||||||
|
| ^~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:186:33: Unsupported: randsequence production id
|
||||||
|
186 | main: count_1 check count_2;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:186:17: Unsupported: randsequence production
|
||||||
|
186 | main: count_1 check count_2;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:187:20: Unsupported: randsequence production id
|
||||||
|
187 | check: count_3 { if (fiftyfifty) return; } count_4;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:187:56: Unsupported: randsequence production id
|
||||||
|
187 | check: count_3 { if (fiftyfifty) return; } count_4;
|
||||||
|
| ^~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:187:18: Unsupported: randsequence production
|
||||||
|
187 | check: count_3 { if (fiftyfifty) return; } count_4;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:188:20: Unsupported: randsequence production
|
||||||
|
188 | count_1: { ++counts[1]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:189:20: Unsupported: randsequence production
|
||||||
|
189 | count_2: { ++counts[2]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:190:20: Unsupported: randsequence production
|
||||||
|
190 | count_3: { ++counts[3]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:191:20: Unsupported: randsequence production
|
||||||
|
191 | count_4: { ++counts[4]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:185:10: Unsupported: randsequence
|
||||||
|
185 | randsequence(main)
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:203:19: Unsupported: randsequence production id
|
||||||
|
203 | main: f_1 f_2 f_3;
|
||||||
|
| ^~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:203:23: Unsupported: randsequence production id
|
||||||
|
203 | main: f_1 f_2 f_3;
|
||||||
|
| ^~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:203:27: Unsupported: randsequence production id
|
||||||
|
203 | main: f_1 f_2 f_3;
|
||||||
|
| ^~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:203:17: Unsupported: randsequence production
|
||||||
|
203 | main: f_1 f_2 f_3;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:204:19: Unsupported: randsequence production id
|
||||||
|
204 | f_1 : func(10);
|
||||||
|
| ^~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:204:17: Unsupported: randsequence production
|
||||||
|
204 | f_1 : func(10);
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:205:19: Unsupported: randsequence production id
|
||||||
|
205 | f_2 : func(20);
|
||||||
|
| ^~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:205:17: Unsupported: randsequence production
|
||||||
|
205 | f_2 : func(20);
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:206:19: Unsupported: randsequence production id
|
||||||
|
206 | f_3 : fnoarg;
|
||||||
|
| ^~~~~~
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:206:17: Unsupported: randsequence production
|
||||||
|
206 | f_3 : fnoarg;
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:207:30: Unsupported: randsequence production
|
||||||
|
207 | void func(int n) : { counts[1] += n; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:208:25: Unsupported: randsequence production
|
||||||
|
208 | void fnoarg : { ++counts[2]; };
|
||||||
|
| ^
|
||||||
|
%Error-UNSUPPORTED: t/t_randsequence.v:202:10: Unsupported: randsequence
|
||||||
|
202 | randsequence(main)
|
||||||
|
| ^~~~~~~~~~~~
|
||||||
%Error: Exiting due to
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,9 @@ import vltest_bootstrap
|
||||||
|
|
||||||
test.scenarios('simulator')
|
test.scenarios('simulator')
|
||||||
|
|
||||||
test.compile(fails=test.vlt_all, expect_filename=test.golden_filename)
|
test.compile(verilator_flags2=['--error-limit 999'],
|
||||||
|
fails=test.vlt_all,
|
||||||
|
expect_filename=test.golden_filename)
|
||||||
|
|
||||||
if not test.vlt_all:
|
if not test.vlt_all:
|
||||||
test.execute()
|
test.execute()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
%Error: --pins-bv maximum is 65: 99
|
||||||
|
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||||
|
%Error: Exiting due to
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2024 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('vlt')
|
||||||
|
test.top_filename = 't/t_EXAMPLE.v'
|
||||||
|
|
||||||
|
test.lint(verilator_flags2=["--pins-bv 99"], fails=True, expect_filename=test.golden_filename)
|
||||||
|
|
||||||
|
test.passes()
|
||||||
Loading…
Reference in New Issue