mirror of
https://github.com/verilator/verilator.git
synced 2025-04-30 12:36:53 +00:00
Fix 2009 localparam syntax, msg2139.
This commit is contained in:
parent
6a238b0514
commit
ad3ea636d5
2
Changes
2
Changes
@ -5,6 +5,8 @@ The contributors that suggested a given feature are shown in []. Thanks!
|
|||||||
|
|
||||||
* Verilator 3.901 devel
|
* Verilator 3.901 devel
|
||||||
|
|
||||||
|
**** Fix 2009 localparam syntax, msg2139. [Galen Seitz]
|
||||||
|
|
||||||
|
|
||||||
* Verilator 3.900 2017-01-15
|
* Verilator 3.900 2017-01-15
|
||||||
|
|
||||||
|
@ -1155,10 +1155,14 @@ parameter_declarationFront: // IEEE: parameter_declaration w/o assignment
|
|||||||
|
|
||||||
parameter_port_declarationFrontE: // IEEE: parameter_port_declaration w/o assignment
|
parameter_port_declarationFrontE: // IEEE: parameter_port_declaration w/o assignment
|
||||||
// // IEEE: parameter_declaration (minus assignment)
|
// // IEEE: parameter_declaration (minus assignment)
|
||||||
|
// // IEEE: local_parameter_declaration (minus assignment)
|
||||||
// // Front must execute first so VARDTYPE is ready before list of vars
|
// // Front must execute first so VARDTYPE is ready before list of vars
|
||||||
varGParamReset implicit_typeE { /*VARRESET-in-varGParam*/ VARDTYPE($2); }
|
varGParamReset implicit_typeE { /*VARRESET-in-varGParam*/ VARDTYPE($2); }
|
||||||
| varGParamReset data_type { /*VARRESET-in-varGParam*/ VARDTYPE($2); }
|
| varGParamReset data_type { /*VARRESET-in-varGParam*/ VARDTYPE($2); }
|
||||||
| varGParamReset yTYPE { /*VARRESET-in-varGParam*/ VARDTYPE(new AstParseTypeDType($2)); }
|
| varGParamReset yTYPE { /*VARRESET-in-varGParam*/ VARDTYPE(new AstParseTypeDType($2)); }
|
||||||
|
| varLParamReset implicit_typeE { /*VARRESET-in-varLParam*/ VARDTYPE($2); }
|
||||||
|
| varLParamReset data_type { /*VARRESET-in-varLParam*/ VARDTYPE($2); }
|
||||||
|
| varLParamReset yTYPE { /*VARRESET-in-varLParam*/ VARDTYPE(new AstParseTypeDType($2)); }
|
||||||
| implicit_typeE { /*VARRESET-in-varGParam*/ VARDTYPE($1); }
|
| implicit_typeE { /*VARRESET-in-varGParam*/ VARDTYPE($1); }
|
||||||
| data_type { /*VARRESET-in-varGParam*/ VARDTYPE($1); }
|
| data_type { /*VARRESET-in-varGParam*/ VARDTYPE($1); }
|
||||||
| yTYPE { /*VARRESET-in-varGParam*/ VARDTYPE(new AstParseTypeDType($1)); }
|
| yTYPE { /*VARRESET-in-varGParam*/ VARDTYPE(new AstParseTypeDType($1)); }
|
||||||
|
18
test_regress/t/t_param_local.pl
Executable file
18
test_regress/t/t_param_local.pl
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# Copyright 2003 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.
|
||||||
|
|
||||||
|
compile (
|
||||||
|
);
|
||||||
|
|
||||||
|
execute (
|
||||||
|
check_finished=>1,
|
||||||
|
);
|
||||||
|
|
||||||
|
ok(1);
|
||||||
|
1;
|
28
test_regress/t/t_param_local.v
Normal file
28
test_regress/t/t_param_local.v
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// This file ONLY is placed into the Public Domain, for any use,
|
||||||
|
// without warranty, 2017 by Wilson Snyder.
|
||||||
|
|
||||||
|
module t (/*AUTOARG*/
|
||||||
|
// Inputs
|
||||||
|
a, y
|
||||||
|
);
|
||||||
|
|
||||||
|
input [1:0] a;
|
||||||
|
output [3:0] y;
|
||||||
|
|
||||||
|
Test #(.C(2))
|
||||||
|
test (.*);
|
||||||
|
endmodule
|
||||||
|
|
||||||
|
module Test
|
||||||
|
#(C = 3,
|
||||||
|
localparam O = 1 << C)
|
||||||
|
(input [C-1:0] a,
|
||||||
|
output reg [O-1:0] y);
|
||||||
|
initial begin
|
||||||
|
if (O != 4) $stop;
|
||||||
|
$write("*-* All Finished *-*\n");
|
||||||
|
$finish;
|
||||||
|
end
|
||||||
|
endmodule
|
Loading…
Reference in New Issue
Block a user