blob: 71cbdca825ca31f9042e60d96d8fe8228c4995b3 [file] [log] [blame] [edit]
//- _FileNode.node/kind file
//- @PRINT_STRING defines/binding PRINT_STRING
//- PRINT_STRING.node/kind macro
//- @#0str1 defines/binding Sr1_PRINT_STRING
//- Sr1_PRINT_STRING.node/kind variable
//- Sr1_PRINT_STRING.complete definition
//- Sr1_PRINT_STRING childof PRINT_STRING
`define PRINT_STRING(str1) $display("%s\n", str1)
//- @PRINT_3_STRINGS defines/binding PRINT_3_STRINGS
//- PRINT_3_STRINGS.node/kind macro
//- @str1 defines/binding Sr1_PRINT_3_STRINGS
//- Sr1_PRINT_3_STRINGS.node/kind variable
//- Sr1_PRINT_3_STRINGS.complete definition
//- Sr1_PRINT_3_STRINGS childof PRINT_3_STRINGS
//- @str2 defines/binding Sr2_PRINT_3_STRINGS
//- Sr2_PRINT_3_STRINGS.node/kind variable
//- Sr2_PRINT_3_STRINGS.complete definition
//- Sr2_PRINT_3_STRINGS childof PRINT_3_STRINGS
//- @str3 defines/binding Sr3_PRINT_3_STRINGS
//- Sr3_PRINT_3_STRINGS.node/kind variable
//- Sr3_PRINT_3_STRINGS.complete definition
//- Sr3_PRINT_3_STRINGS childof PRINT_3_STRINGS
`define PRINT_3_STRINGS(str1, str2, str3) \
`PRINT_STRING(str1); \
`PRINT_STRING(str2); \
`PRINT_STRING(str3);
//- @PRINT_INT defines/binding PRINT_INT
//- PRINT_INT.node/kind macro
//- @#0int1 defines/binding Int1_PRINT_INT
//- Int1_PRINT_INT.node/kind variable
//- Int1_PRINT_INT.complete definition
//- Int1_PRINT_INT childof PRINT_INT
`define PRINT_INT(int1) $display("%d\n", int1)
//- @PRINT_3_INTS defines/binding PRINT_3_INTS
//- PRINT_3_INTS.node/kind macro
//- @int1 defines/binding Int1_PRINT_3_INTS
//- Int1_PRINT_3_INTS.node/kind variable
//- Int1_PRINT_3_INTS.complete definition
//- Int1_PRINT_3_INTS childof PRINT_3_INTS
//- @int2 defines/binding Int2_PRINT_3_INTS
//- Int2_PRINT_3_INTS.node/kind variable
//- Int2_PRINT_3_INTS.complete definition
//- Int2_PRINT_3_INTS childof PRINT_3_INTS
//- @int3 defines/binding Int3_PRINT_3_INTS
//- Int3_PRINT_3_INTS.node/kind variable
//- Int3_PRINT_3_INTS.complete definition
//- Int3_PRINT_3_INTS childof PRINT_3_INTS
`define PRINT_3_INTS(int1, int2, int3) \
`PRINT_INT(int1); \
`PRINT_INT(int2); \
`PRINT_INT(int3);
//- @TEN defines/binding TEN
//- TEN.node/kind macro
`define TEN 10
//- @NUM defines/binding NUM
//- NUM.node/kind macro
//- @#0int1 defines/binding Int1
//- Int1.node/kind variable
//- Int1.complete definition
//- Int1 childof NUM
`define NUM(int1) int1
package my_pkg;
function automatic my_function(int arg1, int arg2);
//- @MacroFunction defines/binding MacroFunction
//- MacroFunction.node/kind macro
`define MacroFunction 10
return arg1 + arg2;
endfunction
//- @MacroPackage defines/binding MacroPackage
//- MacroPackage.node/kind macro
`define MacroPackage 10
task my_task();
//- @MacroTask defines/binding MacroTask
//- MacroTask.node/kind macro
`define MacroTask 10
endtask
class my_class;
//- @MacroClass defines/binding MacroClass
//- MacroClass.node/kind macro
`define MacroClass 10
endclass
endpackage
module macro;
//- @MacroModule defines/binding MacroModule
//- MacroModule.node/kind macro
`define MacroModule 10
//- @"TEN" ref/expands TEN
parameter int x = `TEN;
initial begin
//- @"PRINT_3_STRINGS" ref/expands PRINT_3_STRINGS
`PRINT_3_STRINGS("Grand", "Tour", "S4");
//- @"PRINT_3_INTS" ref/expands PRINT_3_INTS
`PRINT_3_INTS(1, 2, 3);
//- @"TEN" ref/expands TEN
$display("%d\n", `TEN);
//- @"MacroClass" ref/expands MacroClass
$display("%d\n", `MacroClass);
//- @"NUM" ref/expands NUM
$display("%d\n", `NUM(1));
//- @"TEN" ref/expands TEN
//- @"NUM" ref/expands NUM
$display("%d\n", `NUM(`TEN));
end
endmodule