blob: 87783c70fc6c8c7ef808b46eda0888911176dcd5 [file] [log] [blame] [edit]
// Copyright 2020 Google LLC.
// SPDX-License-Identifier: Apache-2.0
//- @pkg defines/binding _
package pkg;
struct {
//- @aa defines/binding AA1
//- @dd defines/binding _
byte aa, dd;
//- @bb defines/binding _
reg bb;
//- @cc defines/binding CC1
shortint unsigned cc;
}
//- @local_struct defines/binding LocalStruct1
//- @other_struct defines/binding OtherStruct
local_struct = '{1, 2, 100}, other_struct;
typedef struct {
//- @xx defines/binding _
byte xx;
//- @yy defines/binding _
reg yy;
//- @zz defines/binding ZZ1
shortint unsigned zz;
}
//- @my_struct1 defines/binding MyStruct1
my_struct1;
//- @my_struct1 ref MyStruct1
//- @struct_instance defines/binding StructInstnace
my_struct1 struct_instance;
//- @f1 defines/binding _
function int f1();
//- @struct_instance ref StructInstnace
//- @zz ref ZZ1
//- @other_struct ref OtherStruct
//- @cc ref CC1
//- @local_struct ref LocalStruct1
//- @aa ref AA1
return struct_instance.zz + other_struct.cc + local_struct.aa;
endfunction
endpackage
typedef struct {
//- @xx defines/binding XX
byte xx;
//- @yy defines/binding YY
reg yy;
//- @zz defines/binding ZZ
shortint unsigned zz;
}
//- @my_struct defines/binding MyStruct
my_struct;
//- @module_with_struct defines/binding _
module module_with_struct;
struct {
//- @aa defines/binding AA
byte aa;
//- @bb defines/binding BB
reg bb;
//- @cc defines/binding CC
shortint unsigned cc;
}
//- @local_struct defines/binding LocalStruct
local_struct = '{1, 2, 100};
//- @my_struct ref MyStruct
//- @#0external_struct defines/binding ExternalStruct
//- @external_struct2 defines/binding ExternalStruct2
my_struct external_struct = '{1, 2, 100}, external_struct2;
//- @local_struct ref LocalStruct
//- @cc ref CC
assign local_struct.cc = 50;
//- @local_struct ref LocalStruct
//- @#0external_struct ref ExternalStruct
//- @bb ref BB
//- @xx ref XX
//- @external_struct2 ref ExternalStruct2
//- @yy ref YY
assign local_struct.bb = external_struct.xx + external_struct2.yy;
//- @zz ref ZZ
//- @cc ref CC
assign local_struct.cc = external_struct.zz;
//- @xx ref XX
//- @external_struct ref ExternalStruct
assign external_struct.xx = 0;
//- @aa ref AA
//- @xx ref XX
assign local_struct.aa = external_struct.xx;
//- @yy ref YY
//- @bb ref BB
assign external_struct.yy = local_struct.bb;
endmodule