.. _Paths:

Paths
=====

.. rst-class:: lead

   
You can specify absolute or relative paths.

Relative paths are resolved relative to the *compilation root*. By default the compilation root is the project directory. However, when using the ``-F`` directive to include another *argument file* the compilation root might change (for more details see :ref:`Including Other Argument Files`).

You can use environment variables when specifying paths.

You can use `ant-like path patterns <http://ant.apache.org/manual/dirtasks.html#patterns>`_ when specifying *top files* and *incdirs*:


-  **?** matches a single character, for example **top?.sv** matches **top1.sv** and **topA.sv** but not **top_1.sv**
-  ***** matches a sequence of characters from a file or directory name, for example **top*/*.sv** matches all files with **.sv** extension from all the directories starting with **top**, **+incdir+/path/to/incdir_*** will set as incdirs all directories from **/path/to/** having the **incdir_** prefix
-  ****** matches a sequence of directories from a path (recursively), for example **\*\*/\*.sv** matches all files with **.sv** extension from the whole project directory tree

When multiple files are specified using path patterns, a shallow analysis is performed in order to figure out the proper compilation order.

.. tip:: 
    
    Computing all files that match a given path pattern might be time consuming, especially on slow filesystems or when using recursive patterns (like \*\*/\*.sv). 
    By default, the filesystem scan times out after 5 seconds. Use **+dvt_path_pattern_timeout+<timeout>** to control the timeout value(in seconds) of this operation.

.. tip:: 
    
    Figuring out the proper compilation order of files expanded from a path pattern might be time consuming, especially when the wildcard matches hundreds/thousands of files. By default, sorting times out after 5 seconds. Use **+dvt_path_pattern_sorting_timeout+<timeout>** to control the timeout value(in seconds) of this operation.

