Skip to content

Commit

Permalink
Units,SystemVerilog: add parameter tests for #2537
Browse files Browse the repository at this point in the history
  • Loading branch information
hirooih committed Oct 12, 2020
1 parent 9914e7e commit c22d7f6
Show file tree
Hide file tree
Showing 3 changed files with 187 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
--sort=no
--fields-SystemVerilog=+{property}
101 changes: 84 additions & 17 deletions Units/parser-verilog.r/systemverilog-parameter.d/expected.tags
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
C input.sv /^class C #($/;" C
p input.sv /^ int p = 1$/;" c class:C
p input.sv /^ int p = 1$/;" c class:C property:parameter
q input.sv /^ parameter int q = 5; \/\/ local parameter$/;" c class:C
t input.sv /^ static task t;$/;" t class:C
p input.sv /^ int p;$/;" r task:C.t
x input.sv /^ int x = C::p; \/\/ C::p disambiguates p$/;" r task:C.t
C input.sv /^class C #($/;" C
p input.sv /^ int p = 1,$/;" c class:C
T input.sv /^ type T = int$/;" c class:C
p input.sv /^ int p = 1,$/;" c class:C property:parameter
T input.sv /^ type T = int$/;" c class:C property:parameter
f input.sv /^function C::T C::f();$/;" f class:C.C
C input.sv /^virtual class C#(parameter DECODE_W, parameter ENCODE_W = $clog2(DECODE_W));$/;" C class:C
DECODE_W input.sv /^virtual class C#(parameter DECODE_W, parameter ENCODE_W = $clog2(DECODE_W));$/;" c class:C.C
ENCODE_W input.sv /^virtual class C#(parameter DECODE_W, parameter ENCODE_W = $clog2(DECODE_W));$/;" c class:C.C
DECODE_W input.sv /^virtual class C#(parameter DECODE_W, parameter ENCODE_W = $clog2(DECODE_W));$/;" c class:C.C property:parameter
ENCODE_W input.sv /^virtual class C#(parameter DECODE_W, parameter ENCODE_W = $clog2(DECODE_W));$/;" c class:C.C property:parameter
ENCODER_f input.sv /^ static function logic [ENCODE_W-1:0] ENCODER_f$/;" f class:C.C
DecodeIn input.sv /^ (input logic [DECODE_W-1:0] DecodeIn);$/;" p function:C.C.ENCODER_f
i input.sv /^ for (int i = 0; i < DECODE_W; i++) begin$/;" r function:C.C.ENCODER_f
Expand All @@ -19,23 +19,23 @@ EncodeIn input.sv /^ (input logic [ENCODE_W-1:0] EncodeIn);$/;" p function:
class input.sv /^interface class PutImp #(type PUT_T = logic); \/\/ FIXME$/;" I
class input.sv /^interface class GetImp #(type GET_T = logic); \/\/ FIXME$/;" I interface:class
Fifo input.sv /^class Fifo #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" C interface:class.class
T input.sv /^class Fifo #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" c class:class.class.Fifo
DEPTH input.sv /^class Fifo #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" c class:class.class.Fifo
T input.sv /^class Fifo #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" c class:class.class.Fifo property:parameter
DEPTH input.sv /^class Fifo #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" c class:class.class.Fifo property:parameter
myFifo input.sv /^ T myFifo[$:DEPTH-1];$/;" r class:class.class.Fifo
put input.sv /^ virtual function void put(T a); \/\/ FIXME : to be ignored$/;" f class:class.class.Fifo
a input.sv /^ virtual function void put(T a); \/\/ FIXME : to be ignored$/;" p function:class.class.Fifo.put
get input.sv /^ virtual function T get(); \/\/ FIXME : to be ignored$/;" f class:class.class.Fifo
put input.sv /^ virtual function void put(T a); \/\/ FIXME : to be ignored?$/;" f class:class.class.Fifo
a input.sv /^ virtual function void put(T a); \/\/ FIXME : to be ignored?$/;" p function:class.class.Fifo.put
get input.sv /^ virtual function T get(); \/\/ FIXME : to be ignored?$/;" f class:class.class.Fifo
Stack input.sv /^class Stack #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" C interface:class.class
T input.sv /^class Stack #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" c class:class.class.Stack
DEPTH input.sv /^class Stack #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" c class:class.class.Stack
T input.sv /^class Stack #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" c class:class.class.Stack property:parameter
DEPTH input.sv /^class Stack #(type T = logic, int DEPTH = 1) implements PutImp#(T), GetImp#(T);$/;" c class:class.class.Stack property:parameter
myFifo input.sv /^ T myFifo[$:DEPTH-1];$/;" r class:class.class.Stack
put input.sv /^ virtual function void put(T a); \/\/ FIXME : to be ignored$/;" f class:class.class.Stack
a input.sv /^ virtual function void put(T a); \/\/ FIXME : to be ignored$/;" p function:class.class.Stack.put
get input.sv /^ virtual function T get(); \/\/ FIXME : to be ignored$/;" f class:class.class.Stack
generic_fifo input.sv /^module generic_fifo$/;" m interface:class.class
MSB input.sv /^ #(parameter MSB=3, LSB=0, DEPTH=4) \/\/ these parameters can be redefined$/;" c module:class.class.generic_fifo
LSB input.sv /^ #(parameter MSB=3, LSB=0, DEPTH=4) \/\/ these parameters can be redefined$/;" c module:class.class.generic_fifo
DEPTH input.sv /^ #(parameter MSB=3, LSB=0, DEPTH=4) \/\/ these parameters can be redefined$/;" c module:class.class.generic_fifo
MSB input.sv /^ #(parameter MSB=3, LSB=0, DEPTH=4) \/\/ these parameters can be redefined$/;" c module:class.class.generic_fifo property:parameter
LSB input.sv /^ #(parameter MSB=3, LSB=0, DEPTH=4) \/\/ these parameters can be redefined$/;" c module:class.class.generic_fifo property:parameter
DEPTH input.sv /^ #(parameter MSB=3, LSB=0, DEPTH=4) \/\/ these parameters can be redefined$/;" c module:class.class.generic_fifo property:parameter
in input.sv /^ (input wire [MSB:LSB] in,$/;" p module:class.class.generic_fifo
clk input.sv /^ input wire clk, read, write, reset,$/;" p module:class.class.generic_fifo
read input.sv /^ input wire clk, read, write, reset,$/;" p module:class.class.generic_fifo
Expand All @@ -45,13 +45,80 @@ out input.sv /^ output logic [MSB:LSB] out,$/;" p module:class.class.generic_
full input.sv /^ output logic full, empty );$/;" p module:class.class.generic_fifo
empty input.sv /^ output logic full, empty );$/;" p module:class.class.generic_fifo
generic_decoder input.sv /^module generic_decoder$/;" m interface:class.class
num_code_bits input.sv /^ #(num_code_bits = 3, localparam num_out_bits = 1 << num_code_bits)$/;" c module:class.class.generic_decoder
num_code_bits input.sv /^ #(num_code_bits = 3, localparam num_out_bits = 1 << num_code_bits)$/;" c module:class.class.generic_decoder property:parameter
num_out_bits input.sv /^ #(num_code_bits = 3, localparam num_out_bits = 1 << num_code_bits)$/;" c module:class.class.generic_decoder
A input.sv /^ (input [num_code_bits-1:0] A, output reg [num_out_bits-1:0] Y);$/;" p module:class.class.generic_decoder
Y input.sv /^ (input [num_code_bits-1:0] A, output reg [num_out_bits-1:0] Y);$/;" p module:class.class.generic_decoder
int_t input.sv /^typedef int int_t;$/;" T interface:class.class
user_defined_type_param input.sv /^module user_defined_type_param$/;" m interface:class.class
um_code_bits input.sv /^ #(int_t num_code_bits = 3, localparam num_out_bits = 1 << num_code_bits)$/;" c module:class.class.user_defined_type_param
um_code_bits input.sv /^ #(int_t num_code_bits = 3, localparam num_out_bits = 1 << num_code_bits)$/;" c module:class.class.user_defined_type_param property:parameter
num_out_bits input.sv /^ #(int_t num_code_bits = 3, localparam num_out_bits = 1 << num_code_bits)$/;" c module:class.class.user_defined_type_param
A input.sv /^ (input [num_code_bits-1:0] A, output reg [num_out_bits-1:0] Y);$/;" p module:class.class.user_defined_type_param
Y input.sv /^ (input [num_code_bits-1:0] A, output reg [num_out_bits-1:0] Y);$/;" p module:class.class.user_defined_type_param
L1 input.sv /^parameter L1 = 0; \/\/ synonym for the localparam$/;" c interface:class.class property:parameter
module_with_parameter_port_list input.sv /^module module_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4/;" m interface:class.class
P1 input.sv /^module module_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4/;" c module:class.class.module_with_parameter_port_list property:parameter
P2 input.sv /^module module_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4/;" c module:class.class.module_with_parameter_port_list property:parameter
L2 input.sv /^module module_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4/;" c module:class.class.module_with_parameter_port_list
L3 input.sv /^module module_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4/;" c module:class.class.module_with_parameter_port_list
P3 input.sv /^module module_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4/;" c module:class.class.module_with_parameter_port_list property:parameter
P4 input.sv /^module module_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4/;" c module:class.class.module_with_parameter_port_list property:parameter
L4 input.sv /^ parameter L4 = "local parameter"; \/\/ synonym for the localparam$/;" c module:class.class.module_with_parameter_port_list
L5 input.sv /^ localparam L5 = "local parameter";$/;" c module:class.class.module_with_parameter_port_list
module_with_empty_parameter_port_list input.sv /^module module_with_empty_parameter_port_list #()$/;" m interface:class.class
L6 input.sv /^ parameter L6 = "local parameter"; \/\/ synonym for the localparam$/;" c module:class.class.module_with_empty_parameter_port_list
L7 input.sv /^ localparam L7 = "local parameter";$/;" c module:class.class.module_with_empty_parameter_port_list
module_no_parameter_port_list input.sv /^module module_no_parameter_port_list$/;" m interface:class.class
P5 input.sv /^ parameter P5 = "parameter";$/;" c module:class.class.module_no_parameter_port_list property:parameter
L8 input.sv /^ localparam L8 = "local parameter";$/;" c module:class.class.module_no_parameter_port_list
class_with_parameter_port_list input.sv /^class class_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4);$/;" C interface:class.class
P1 input.sv /^class class_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4);$/;" c class:class.class.class_with_parameter_port_list property:parameter
P2 input.sv /^class class_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4);$/;" c class:class.class.class_with_parameter_port_list property:parameter
L2 input.sv /^class class_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4);$/;" c class:class.class.class_with_parameter_port_list
L3 input.sv /^class class_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4);$/;" c class:class.class.class_with_parameter_port_list
P3 input.sv /^class class_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4);$/;" c class:class.class.class_with_parameter_port_list property:parameter
P4 input.sv /^class class_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, P4);$/;" c class:class.class.class_with_parameter_port_list property:parameter
L4 input.sv /^ parameter L4 = "local parameter"; \/\/ synonym for the localparam$/;" c class:class.class.class_with_parameter_port_list
L5 input.sv /^ localparam L5 = "local parameter";$/;" c class:class.class.class_with_parameter_port_list
class_with_empty_parameter_port_list input.sv /^class class_with_empty_parameter_port_list #();$/;" C interface:class.class
L6 input.sv /^ parameter L6 = "local parameter"; \/\/ synonym for the localparam$/;" c class:class.class.class_with_empty_parameter_port_list
L7 input.sv /^ localparam L7 = "local parameter";$/;" c class:class.class.class_with_empty_parameter_port_list
class_no_parameter_port_list input.sv /^class class_no_parameter_port_list;$/;" C interface:class.class
L8 input.sv /^ parameter L8 = "local parameter"; \/\/ synonym for the localparam (class only)$/;" c class:class.class.class_no_parameter_port_list
L9 input.sv /^ localparam L9 = "local parameter";$/;" c class:class.class.class_no_parameter_port_list
program_with_parameter_port_list input.sv /^program program_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, /;" P interface:class.class
P1 input.sv /^program program_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, /;" c program:class.class.program_with_parameter_port_list property:parameter
P2 input.sv /^program program_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, /;" c program:class.class.program_with_parameter_port_list property:parameter
L2 input.sv /^program program_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, /;" c program:class.class.program_with_parameter_port_list
L3 input.sv /^program program_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, /;" c program:class.class.program_with_parameter_port_list
P3 input.sv /^program program_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, /;" c program:class.class.program_with_parameter_port_list property:parameter
P4 input.sv /^program program_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter P3, /;" c program:class.class.program_with_parameter_port_list property:parameter
L4 input.sv /^ parameter L4 = "local parameter"; \/\/ synonym for the localparam$/;" c program:class.class.program_with_parameter_port_list
L5 input.sv /^ localparam L5 = "local parameter";$/;" c program:class.class.program_with_parameter_port_list
program_with_empty_parameter_port_list input.sv /^program program_with_empty_parameter_port_list #()$/;" P interface:class.class
L6 input.sv /^ parameter L6 = "local parameter"; \/\/ synonym for the localparam$/;" c program:class.class.program_with_empty_parameter_port_list
L7 input.sv /^ localparam L7 = "local parameter";$/;" c program:class.class.program_with_empty_parameter_port_list
program_no_parameter_port_list input.sv /^program program_no_parameter_port_list$/;" P interface:class.class
P5 input.sv /^ parameter P5 = "parameter";$/;" c program:class.class.program_no_parameter_port_list property:parameter
L8 input.sv /^ localparam L8 = "local parameter";$/;" c program:class.class.program_no_parameter_port_list
interface_with_parameter_port_list input.sv /^interface interface_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter /;" I interface:class.class
P1 input.sv /^interface interface_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter /;" c interface:class.class.interface_with_parameter_port_list property:parameter
P2 input.sv /^interface interface_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter /;" c interface:class.class.interface_with_parameter_port_list property:parameter
L2 input.sv /^interface interface_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter /;" c interface:class.class.interface_with_parameter_port_list
L3 input.sv /^interface interface_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter /;" c interface:class.class.interface_with_parameter_port_list
P3 input.sv /^interface interface_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter /;" c interface:class.class.interface_with_parameter_port_list property:parameter
P4 input.sv /^interface interface_with_parameter_port_list #(P1, P2, localparam L2 = P1+1, L3=P2*2, parameter /;" c interface:class.class.interface_with_parameter_port_list property:parameter
L4 input.sv /^ parameter L4 = "local parameter"; \/\/ synonym for the localparam$/;" c interface:class.class.interface_with_parameter_port_list
L5 input.sv /^ localparam L5 = "local parameter";$/;" c interface:class.class.interface_with_parameter_port_list
interface_with_empty_parameter_port_list input.sv /^interface interface_with_empty_parameter_port_list #()$/;" I interface:class.class
L6 input.sv /^ parameter L6 = "local parameter"; \/\/ synonym for the localparam$/;" c interface:class.class.interface_with_empty_parameter_port_list
L7 input.sv /^ localparam L7 = "local parameter";$/;" c interface:class.class.interface_with_empty_parameter_port_list
interface_no_parameter_port_list input.sv /^interface interface_no_parameter_port_list$/;" I interface:class.class
P5 input.sv /^ parameter P5 = "parameter";$/;" c interface:class.class.interface_no_parameter_port_list property:parameter
L8 input.sv /^ localparam L8 = "local parameter";$/;" c interface:class.class.interface_no_parameter_port_list
package_has_no_parameter_port_list input.sv /^package package_has_no_parameter_port_list;$/;" K interface:class.class
L1 input.sv /^ parameter L1 = "local parameter";$/;" c package:class.class.package_has_no_parameter_port_list
L2 input.sv /^ localparam L2 = "local parameter";$/;" c package:class.class.package_has_no_parameter_port_list
generate_constructs input.sv /^module generate_constructs;$/;" m interface:class.class
L1 input.sv /^ parameter L1 = "local parameter"; \/\/ FIXME$/;" c module:class.class.generate_constructs property:parameter
L2 input.sv /^ localparam L2 = "local parameter";$/;" c module:class.class.generate_constructs
Loading

0 comments on commit c22d7f6

Please sign in to comment.