.. _Vertical Alignment:

Vertical Alignment
==================

.. rst-class:: lead

When enabled, this option performs vertical alignment.

- **Vertical Alignment Tokens** (ro.amiq.vlogdt/format.vertical_align.tokens)

The lines of code inside the same *scope* are aligned by the specified comma separated list of vertical alignment tokens.
Vertical alignment is performed left to right, by the same token. For example assuming ``=`` and ``:`` as vertical align tokens:
In order to use the comma character ``,`` as a vertical alignment token, the character must be preceded by the escaping character ``\``.

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After (":" token)
   * - .. figure:: ../../images/common/before-vertical-align-tokens.png
     - .. figure:: ../../images/common/after-vertical-align-tokens.png


- **Only consecutive lines** (ro.amiq.vlogdt/format.vertical_align.consecutive_lines) - When enabled, only consecutive lines are vertically aligned. Two lines are consecutive if they follow each other or are separated by comment lines.

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-only-consecutive-lines.png
     - .. figure:: ../../images/common/after-only-consecutive-lines.png


- **Vertical align single line comments** (ro.amiq.vlogdt/format.vertical_align.sl_comments) - When enabled, single line comments are aligned.

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-single-line-comments.png
     - .. figure:: ../../images/common/after-vertical-align-single-line-comments.png

- **Vertical align to open parenthesis** (ro.amiq.vlogdt/format.vertical_align.paren) - When enabled, vertical align to open parenthesis.

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-to-open-parenthesis.png
     - .. figure:: ../../images/common/after-vertical-align-to-open-parenthesis.png

- **Vertical align to open curly** (ro.amiq.vlogdt/format.vertical_align.curly) - When enabled, vertical align to open curly.

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-to-open-curly.png
     - .. figure:: ../../images/common/after-vertical-align-to-open-curly.png


- **Independent `ifdefs** (ro.amiq.vlogdt/format.vertical_align.independent_ifdefs) - When enabled, \`ifdefs are independent alignment scopes:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-independent-preprocessing-scopes.png
     - .. figure:: ../../images/common/after-independent-preprocessing-scopes.png


Vertical Align Patterns (ro.amiq.vlogdt/format.vertical_align.vregex)
---------------------------------------------------------------------

- **By Name Port Connections** (VlogByNamePortConnections) - When enabled, this pattern aligns instance port connections by name:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-by-name-port-connections.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-by-name-port-connections.png


- **Class Declarations** (VlogClassDeclarationsGroupDimensions) - When enabled, this pattern aligns class parameters while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-class-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-class-declarations.png


- **Class Declarations (split dimensions)** (VlogClassDeclarations) - When enabled, this pattern aligns class parameters while vertically aligning dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-class-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-class-declarations-split-dimensions.png


- **Class Variable Declarations** (VlogClassVariableDeclarationsGroupDimensions) - When enabled, this pattern aligns class variable while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-class-variable-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-class-variable-declarations.png


- **Class Variable Declarations (split dimensions)** (VlogClassVariableDeclarations) - When enabled, this pattern aligns class variables while vertically aligning dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-class-variable-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-class-variable-declarations-split-dimensions.png


- **`defines** (VlogDefines) - When enabled, this pattern aligns \`defines:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-defines.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-defines.png

 

- **Function Declarations** (VlogFunctionDeclarationsGroupDimensions) - When enabled, this pattern aligns function and task declarations while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-function-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-function-declarations.png


- **Function Declarations (split dimensions)** (VlogFunctionDeclarations) - When enabled, this pattern aligns function and task declarations while vertically aligning dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-function-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-function-declarations-split-dimensions.png


- **Function Variable Declarations** (VlogFunctionVariableDeclarationsGroupDimensions) - When enabled, this pattern aligns function and task while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-function-variable-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-function-variable-declarations.png


- **Function Variable Declarations (split dimensions)** (VlogFunctionVariableDeclarations) - When enabled, this pattern aligns function and task while vertically aligning dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-function-variable-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-function-variable-declarations-split-dimensions.png

 
- **Interface Port Declarations** (VlogInterfacePortDeclarationsGroupDimensions) - When enabled, this pattern aligns interface ports while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-interface-port-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-interface-port-declarations.png


- **Interface Port Declarations (split dimensions)** (VlogInterfacePortDeclarations) - When enabled, this pattern aligns interface ports while vertically aligning dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-interface-port-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-interface-port-declarations-split-dimensions.png


- **Interface Signal Declarations** (VlogInterfaceSignalDeclarationsGroupDimensions) - When enabled, this pattern aligns interface signals while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-interface-signal-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-interface-signal-declarations.png


- **Interface Signal Declarations (split dimensions)** (VlogInterfaceSignalDeclarations) - When enabled, this pattern aligns interface signals while vertically aligning dimensionss:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-interface-signal-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-interface-signal-declarations-split-dimensions.png


- **Library & Package Parameter Declarations** (VlogLibraryAndPackageParameterDeclarationsGroupDimensions) - When enabled, this pattern aligns library and package parameter constants while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-library-package-parameter-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-library-package-parameter-declarations.png


- **Library & Package Parameter Declarations (split dimensions)** (VlogLibraryAndPackageParameterDeclarations) - When enabled, this pattern aligns library and package parameter constants while vertically aligning dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-library-package-parameter-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-library-package-parameter-declarations-split-dimensions.png

  
- **Module Port Declarations** (VlogModulePortDeclarationsGroupDimensions) - When enabled, this pattern aligns module ports while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-module-port-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-module-port-declarations.png


- **Module Port Declarations (split dimensions)** (VlogModulePortDeclarations) - When enabled, this pattern aligns module ports while vertically aligning dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-module-port-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-module-port-declarations-split-dimensions.png


- **Module Signal Declarations** (VlogModuleSignalDeclarationsGroupDimensions) - When enabled, this pattern aligns module signals while excluding vertical alignment of dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-module-signal-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-module-signal-declarations.png


- **Module Signal Declarations (split dimensions)** (VlogModuleSignalDeclarations) - When enabled, this pattern aligns module signals while vertically aligning dimensions:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-module-signal-declarations.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-module-signal-declarations-split-dimensions.png


- **`xvm_field macros** (VlogXVMFieldMacros) - When enabled, this pattern aligns \`xvm_field factory registration macros:

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-xvm_field-macros.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-xvm_field-macros.png


- **Compact whitespace for vertical align patterns** (ro.amiq.vlogdt/format.vertical.align.vregex.compact.whitespace) - When enabled, consecutive whitespace characters are trimmed to a single space character for vertical align patterns.

.. list-table::
   :header-rows: 1
   :widths: auto

   * - Before
     - After
   * - .. figure:: ../../images/common/before-vertical-align-patterns-module-port-declaration-compact-ws.png
     - .. figure:: ../../images/common/after-vertical-align-patterns-module-port-declaration-compact-ws.png

