| //- @Stack defines/binding Stack |
| //- @T defines/binding T |
| class Stack #(parameter type T=int); |
| //- @T ref T |
| //- @items defines/binding _ |
| //- @idx defines/binding _ |
| T items[64], idx=0; |
| |
| //- @T ref T |
| //- @val defines/binding _ |
| function void push(input T val); |
| endfunction |
| endclass |
| |
| //- @Vector defines/binding Vector |
| //- @WIDTH defines/binding WIDTH |
| class Vector #(parameter WIDTH=1); |
| //- @WIDTH ref WIDTH |
| //- @data defines/binding _ |
| bit [WIDTH-1:0] data; |
| endclass |
| |
| //- @my_module defines/binding _ |
| module my_module(); |
| //- @Stack ref Stack |
| //- @real_stack defines/binding _ |
| Stack #(real) real_stack = new(); |
| |
| //- @#0Stack ref Stack |
| //- @#1Stack ref Stack |
| //- @instance1 defines/binding _ |
| Stack#(Stack#(int)) instance1 = new; |
| |
| //- @#0Vector ref Vector |
| //- @#1Vector ref Vector |
| //- @instance2 defines/binding _ |
| Vector#(Vector#(int)) instance2 = new; |
| |
| //- @Vector ref Vector |
| //- @v1 defines/binding _ |
| Vector v1 = new(); |
| //- @x1 defines/binding X1 |
| int x1; |
| //- @Vector ref Vector |
| //- @v2 defines/binding _ |
| //- @x1 ref X1 |
| //- @WIDTH ref WIDTH |
| Vector #(.WIDTH(x1)) v2 = new(); |
| endmodule |
| |
| //- @uvm_sequence_item defines/binding UvmSequenceItem |
| class uvm_sequence_item; |
| endclass |
| |
| //- @M defines/binding M |
| package M; |
| //- @uvm_sequence defines/binding UvmSequence |
| //- @T defines/binding T1 |
| class uvm_sequence #(parameter type T = int); |
| endclass |
| endpackage |
| |
| //- @core_base_seq defines/binding _ |
| //- @#0REQ defines/binding REQ |
| //- @#0uvm_sequence_item ref UvmSequenceItem |
| //- @#1uvm_sequence_item ref UvmSequenceItem |
| //- @ Y defines/binding _ |
| //- @M ref M |
| //- @#2uvm_sequence ref UvmSequence |
| //- @T ref T1 |
| //- @#1REQ ref REQ |
| class core_base_seq #(type REQ = uvm_sequence_item, Y = uvm_sequence_item) extends M::uvm_sequence#(.T(REQ)); |
| endclass |
| |
| //- @foo_c defines/binding FooC |
| class foo_c #( |
| //- @A defines/binding A |
| parameter int A = 1, |
| //- @B defines/binding B |
| parameter int B = 0 |
| ); |
| //- @bar_c defines/binding BarC |
| class bar_c #( |
| //- @X defines/binding X |
| parameter int X = 1, |
| //- @W defines/binding W |
| parameter int W = 0 |
| ); |
| //- @get2 defines/binding Get2 |
| function static int get2(); |
| endfunction |
| endclass |
| endclass |
| |
| function void f1(); |
| //- @var1 defines/binding Var1 |
| //- @var2 defines/binding Var2 |
| int var1, var2; |
| |
| //- @foo_c ref FooC |
| //- @bar_c ref BarC |
| //- @X ref X |
| //- @B ref B |
| //- @A ref A |
| //- @W ref W |
| //- @#0var1 ref Var1 |
| //- @#0var2 ref Var2 |
| //- @#1var1 ref Var1 |
| //- @#1var2 ref Var2 |
| //- @get2 ref Get2 |
| foo_c#(.A(var1), .B(var2))::bar_c#(.X(var1), .W(var2))::get2(); |
| endfunction |