Macro
Deep Dive into Macros in SystemVerilog
SystemVerilog includes several special character sequences to assist with certain specific tasks. These sequences start with a backtick (`) and are followed by one or more characters. In this tutorial, we will focus on the double tick (``), the tick followed by a double quote (`"), and the tick followed by a backslash followed by a double quote (`\").
I. The Double Tick (``)
The double tick character sequence (``) is used to include whitespace characters, such as spaces, tabs, or newlines, in a macro definition. Normally, a macro definition ends at the end of the line, but if you use the double tick (``) sequence, the macro definition continues until it encounters another double tick.
Here's an example:
`define PRINT_MESSAGE `"
    This is a long message
    that spans multiple lines.
`"
initial begin
    $display(`PRINT_MESSAGE);
endIn the above example, `PRINT_MESSAGE is a macro that contains a string spanning multiple lines.
II. Tick Followed by a Double Quote (`")
The character sequence of a tick followed by a double quote (`") is used to insert a double quote character into a macro definition. Normally, double quotes in a macro definition are treated as starting or ending a string. But if you use `", the preprocessor inserts a double quote into the macro definition.
Here's an example:
`define DOUBLE_QUOTED_STRING `"This is a string inside double quotes`"
initial begin
    $display(`DOUBLE_QUOTED_STRING);
endIn the above example, `DOUBLE_QUOTED_STRING is a macro that contains a string enclosed in double quotes.
III. Tick Followed by a Backslash Followed by a Double Quote (`\")
The character sequence of a tick followed by a backslash followed by a double quote (`\") is used to insert a double quote character into a macro definition, just like `". The difference between `\" and `" is subtle and mostly comes into play when these sequences are used inside strings.
Here's an example:
`define QUOTED_STRING_WITH_SLASH `\"This string contains a backslash and double quotes.\`"
initial begin
    $display(`QUOTED_STRING_WITH_SLASH);
endIn this example, `QUOTED_STRING_WITH_SLASH is a macro that contains a string with a backslash followed by double quotes.
Have a Question?
Feel free to ask your question in the comments below.
Please Login to ask a question.
Login Now