DVT SystemVerilog IDE User Guide
Rev. 24.1.5, 13 March 2024

13.2 Indentation

  • Optional "begin" (ro.amiq.vlogdt/format.indent.begin) - Some language constructs, for example the conditional statement if or the loop statement for, require a begin - end block to control the execution of several statements. Such blocks are called optional "begin" in order to distinguish them from other cases like fork begin ... end endfork' or plain begin ... end blocks used just for grouping several statements together for readability. This option affects the optional "begin" blocks:

    • Leave as is (1)

    • On a new line (2)- begin is moved on a new line

    • On the same line (3)- begin is moved on the same line with its construct

    • On a new line and indent (4) - begin is moved on a new line and indented

Initial code Leave as is (1) On a new line (2) On the same line (3) On a new line and indent (4)
  • "else" (ro.amiq.vlogdt/format.indent.else) - This option affects else placement:

    • Leave as is (1)

    • On a new line (2) - else is moved on a new line

    • On the same line (3) - if end precedes it else is moved on the same line with end

Initial code Leave as is (1) On a new line (2) On the same line (3)
  • Parameters (ro.amiq.vlogdt/format.indent.params) - This option affects module ports and parameters, function and task arguments, class parameters:

    • Leave as is (1)

    • One per line (open parenthesis on the same line) (2) - Each parameter/argument is placed on its own line and the open parentheses is placed on the same line with the parameter/argument receiver

    • One per line (open parenthesis on the next line) (3) - Each parameter/argument is placed on its own line and the open parentheses is placed on the next line after the parameter/argument receiver

    • More per line if less than (ro.amiq.vlogdt/format.indent.more_per_line_if_less_than_enable) - It controls whether to place parameters on the same line when their number does not exceed a specified value. This option is available only when the Parameters preference is set to One per line (open parenthesis on the same line) or One per line (open parenthesis on the next line).

    • More per line (4) - More parameters are placed on the same line

Note: When more parameters get to be placed on a single line and line wrapping is enabled, the parameters may be moved to separate lines as needed to fit within the specified line width.

Initial code Leave as is (1) More per line (4)

Initial code One per line (open parenthesis on the next line) (3) One per line (open parenthesis on the next line) (3) and More per line if less than set to "3" One per line (open parenthesis on the next line) (3) and More per line if less than set to "1"
  • Preprocessing (ro.amiq.vlogdt/format.indent.preproc) - This option affects preprocessing directives:

    • Leave as is (1)

    • Indent (2) - Indent the preprocessing directives according to the enclosing scope. `ifdef blocks don't increase the enclosed statements indentation.

    • Indent and increase indentation level (3) - Indent the preprocessing directives according to the enclosing scope. `ifdef blocks increase indentation of its enclosed statements like any other scope language construct.

    • Indent and increase indentation level except first (5) - Indent the preprocessing directives according to the enclosing scope.`ifdef blocks increase the enclosed code indentation with the exception of the first level preprocessing block.

    • Move at first column (4) - Move the preprocessing directives at line start. `ifdef blocks don't increase the enclosed statements indentation.

Initial code Leave as is (1) Indent (2) Indent and increase indentation level (3) Indent and increase indentation level - except first (5) Move at first column (4)
  • Don't indent single line comments at first column (ro.amiq.vlogdt/format.indent.preserve_sl_comment_column_zero) - This option affects single line comments that start at column zero. It is useful to disable the indentation for whole regions of code that are block commented, for example by using Ctrl + /. When enabled, single line comments that start at column zero are not indented.

Before After
  • Indent multi-line comments (ro.amiq.vlogdt/format.indent.multiline_comments) - This option affects multi-line comments ( /* ... */). When enabled, multi-line comments are indented.

Before After
  • Do not indent multi-line content of assigns (ro.amiq.vlogdt/format.indent.skip_assigns) - When enabled, the assign lines are not indented such as to preserve an alignment.

Before After
  • Do not indent multi-line macro definitions (ro.amiq.vlogdt/format.indent.skip.ml.macro.definitions) - When enabled, multi-line macro definitions are not indented such as to preserve an alignment. This option is available only when the Preprocessing preference is set to Indent, Indent and increase indentation level, Indent and increase indentation level except first or Move at first column.

Before After
  • Add New Line After Begin And Before End (ro.amiq.vlogdt/format.indent.add_new_line_after_begin_and_before_end) - Controls whether to add a new line after `begin` and before `end`.

Before After
  • Add New Line After End (ro.amiq.vlogdt/format.indent.add_new_line_after_end) - Controls whether to add a new line after `end`.

Before After
  • Ignore lines starting with (ro.amiq.vlogdt/format.indent.ignore_lines) - Space separated list of line prefixes. A line starting with one of the prefixes is completely ignored, that is it is not indented, nor it contributes to indentation.

Before After
  • Don't increase the indent Level On (ro.amiq.vlogdt/format.indent.no_indent_keywords) - By default all scope language constructs increase indentation. This option allows you to control which language constructs should increase indentation.

Before After ("assert" keyword)
  • Implicit semi macros (ro.amiq.vlogdt/format.indent.implicit_semi_macros) - The code formatting engine depends on detecting some delimiters for properly identifying the proper indentation scope, for example indentation should not increase after if(a) foo1();, but it should after if(a) begin foo();. Semicolon or end is such a delimiter and sometimes it may be encapsulated inside a macro. This option allows you to explicitly list such macros for proper code formatting.

Before After
  • Open scope macros (ro.amiq.vlogdt/format.indent.open_scope_macros) and Close scope macros (/ro.amiq.vlogdt/format.indent.close_scope_macros) - An open scope macro increases the indentation level of subsequent code to visualize scoping. A close scope macro decreases back the indentation level. Open/close scope macros are paired, for example: `TEST and `ENDTEST, similar with language keywords like function and endfunction.

Before After