How to get linefile information of macro definitions
Q: How do I get linefile information of macro definitions?
Take the following example:
1 `define A
2 `define B 10
3 `define C(a) a
4 `define D(a, b) a + b
5 `define E(a, b, c) a \
6 + b \
7 + c
8
9 module test ;
10 initial
11 `ifdef A
12 $display("macro A is defined") ;
13 `else
14 $display("macro A is defined") ;
15 `endif
16
17 parameter PB = `B ;
18 parameter PC = `C(10) ;
19 parameter PD = `D(4, 6) ;
20 parameter PE = `E(1, 3, 6) ;
21 endmodule
Macro definition (MacroDef) linefile info is stored that span the whole macro definition including the `define. These linefile info can be accessed using API veri_file::GetMacroDefLinefiles(). It returns you a Map hashed with char *strings and the value is linefile_type.
Here is the table for the above macro definitions:
MacroDef [start line:start col] [end line:end column] A [1:1] [2:1] B [2:1] [3:1] C [3:1] [4:1] D [4:1] [5:1] E [5:1] [8:1]
Macro reference (MacroRef) linefile info is also stored. The linefile spans the whole macro ref including the starting ` and the ending parenthesis in case it passed arguments. These linefile info are accessed using API veri_file::GetMacroRefLinefiles(). It returns you a Map hashed with linefile_type of the macro reference and the value is also linefile_type but of the macro definition.
Here is the table for the above macro references:
MacroRef [start line:start col] [end line:end column] A [11:8] [11:9] B [17:20] [17:22] C [18:20] [18:26] D [19:20] [19:28] E [20:20] [20:31]