The RTL Parser
This document describes the function of the software unit that reads and elaborates RTL files and stores the connectivity (with parameters) in the hierarchical database ZDB for later processing. It supports all variants of Verilog, SystemVerilog and VHDL.
Introduction
In addition of using the StarVision PRO GUI to read RTL files either the stand alone binary rtl2zdb
or the Tcl command zrtl
can be used.
The rtl2zdb
binary reads the given RTL files and creates a binfile containing the elaborated netlist of the input files:
rtl2zdb -o binfile.zdb <OPTIONS> <FILES>
The zrtl
Tcl command reads the given RTL files and returns the elaborated netlist of the input files as an in-memory database:
set db [zrtl <OPTIONS> <FILES>]
The RTL parser can use precompiled VHDL libraries.
The precompiled library format is called VDB and can be created using the StarVision PRO GUI, the vhdl2vdb
stand alone binary or the Tcl command zvdb
.
The Tcl commands are available in the Console window of the StarVision PRO GUI
and in the starsh
shell
.
This document describes the usage of this flow.
RTL Parser Options
Option | Parameters | Description |
---|---|---|
|
Elaborate RAM used within loops. |
|
|
Read cmdline arguments from file. |
|
|
Open this binfile as a precompiled library. |
|
|
Stop on errors during parsing. |
|
|
Adjust the level of compaction for a RTL schematic. |
|
|
Set the RTL compile mode. Mode can either be the default of the specified input language, multi file compilation unit (mfcu) or single file compilation unit (sfcu). |
|
|
Connect matching net by name, i.e. don’t route it. |
|
|
Create buses for ports with Verilog conform, consecutive numbering. |
|
|
Store macro definition and reference info in virtual objects. |
|
|
Create unique nets for all constants. |
|
|
Perform common subexpression elimination and merge logic that creates the same functional behavior. |
|
|
Enable a specific debug flag. |
|
|
Define a Verilog macro on the command line. |
|
|
Define Verilog macros on the command line. |
|
|
Define generic value (VHDL only). |
|
Don’t cut long filenames in messages. |
||
|
Don’t elaborate modules matching the name pattern. |
|
|
Read Verilog fileset file. The files in the fileset are relative to the fileset file. |
|
|
Read Verilog fileset file. Files in the fileset are relative to the current working directory. |
|
Overwrite existing symbols with the symbols from the given symbol library files (option -symlib). |
||
|
Create hierarchy for function calls. |
|
|
Define global Verilog include files. Global includes are processed before any other source files (this option can be repeated multiple times). |
|
Print a help text with a short description of each option. |
||
|
Set the desired hierarchy separator 'hiersepchar' of your choice. Any character can be used. To be able to identify the hierarchy separator, a character that is not already used in an identifier should be used. |
|
|
Case-insensitive parser. |
|
|
Ignore all Pragmas. |
|
|
Ignore only Translate and Synthesis Pragmas. |
|
|
Do not elaborate the VHDL unit <unit>; any VHDL unit whose name matches <unit> case-insensitively will not be elaborated. |
|
|
Define an include directory (this option can be repeated multiple times). |
|
|
Define include directories. |
|
|
Level of verbosity for issued messages. |
|
|
Compile the given files into an already existing database. |
|
|
Search for Verilog modules and packages in <library>; multiple libraries can be specified using multiple -L options; libraries are searched in the order of the -L options. |
|
|
Define the file name extensions for the -y option. |
|
|
Parse all files following this option into a library with the given name. |
|
|
Define a Verilog macro local to the next file. |
|
|
Define Verilog macros on the command line. |
|
|
Define an include directory local to next file(this option can be repeated multiple times). |
|
|
Define include directories local to next file. |
|
Append to logfile. |
||
|
Generate log file. |
|
|
Set maximum number of errors that can occur before the parser stops reading the input file(s). |
|
|
Minimum size (in bits) a RAM needs to be before RTL elaboration extracts it. Value 0 means no lower limit. |
|
|
Matching files are structural Verilog files. |
|
Don’t search for a hierarchy separator. |
||
Print no greeting message. |
||
|
Name of the zdb output binfile. |
|
|
Create operator implementation. |
|
|
Toggle pedantic language checking mode (in relaxed mode some errors are just warnings and some warnings are suppressed). |
|
|
Preprocess verilog macros and includes. Write output to given file. |
|
|
Preserve assignments in the netlist. |
|
|
Preserve X values when generating netlists from RTL. |
|
|
Create hierarchy for always and process blocks. |
|
Print progress information. |
||
|
Suffix for renaming duplicate cells. |
|
|
Resolve duplicate cells. If "off" all duplicate cells are renamed. |
|
|
Name of Verific sdbl file. |
|
|
Create source code references. |
|
|
Suppress messages which match pattern. |
|
Preload symbol library file(s) given with the -symlib option. |
||
|
Specify a symbol library file. |
|
Read RTL SystemVerilog 2009. |
||
|
Define SystemVerilog file name extensions. |
|
Read RTL SystemVerilog 2005. |
||
Print CPU time consumption (requires enabled progress updates). |
||
|
Define this module as the top module. If * is set, then all unreferenced cells are used as top. |
|
|
The library containing the top-level design. |
|
|
Read <libfile> as Verilog library file. |
|
Validate DB before creating the zdb output file. |
||
|
Define Verilog 1995 file name extensions. |
|
Read RTL Verilog 2001. |
||
|
Define Verilog 2001 file name extensions. |
|
Read RTL Verilog 95. |
||
Read RTL Verilog AMS. |
||
Read RTL VHDL 2000. |
||
Read RTL VHDL 2008. |
||
Read RTL VHDL 2019. |
||
Read RTL VHDL 87. |
||
Read RTL VHDL 93. |
||
|
Look for and store precompiled VHDL libraries in <dir>. |
|
|
Wait 'sec' seconds for a license. If the value is -1 then the started tool will not wait for the next free license. Use a value of 0 to wait forever. |
|
|
Read files matching the extension given with +libext+ from the specified directory as Verilog library files. |
VDB Creation
The vhdl2vdb
binary reads the given VHDL files and creates a binfile for later use by the RTL parser:
vhdl2vdb -vhdlLibPath /path/to/vdbdir <OPTIONS> <FILES>
The zvdb
Tcl command reads the given VHDL files and creates a binfile for later use by the RTL parser:
zvdb -vhdlLibPath /path/to/vdbdir <OPTIONS> <FILES>
VDB Options
Option | Parameters | Description |
---|---|---|
|
Read cmdline arguments from file. |
|
|
Stop on errors during parsing. |
|
|
Connect matching net by name, i.e. don’t route it. |
|
|
Enable a specific debug flag. |
|
Don’t cut long filenames in messages. |
||
Print a help text with a short description of each option. |
||
|
Ignore all Pragmas. |
|
|
Ignore only Translate and Synthesis Pragmas. |
|
|
Do not elaborate the VHDL unit <unit>; any VHDL unit whose name matches <unit> case-insensitively will not be elaborated. |
|
|
Level of verbosity for issued messages. |
|
|
Parse all files following this option into a library with the given name. |
|
Append to logfile. |
||
|
Generate log file. |
|
|
Set maximum number of errors that can occur before the parser stops reading the input file(s). |
|
Print no greeting message. |
||
|
Toggle pedantic language checking mode (in relaxed mode some errors are just warnings and some warnings are suppressed). |
|
Print progress information. |
||
|
Suffix for renaming duplicate cells. |
|
|
Resolve duplicate cells. If "off" all duplicate cells are renamed. |
|
|
Create source code references. |
|
|
Suppress messages which match pattern. |
|
Print CPU time consumption (requires enabled progress updates). |
||
|
The library containing the top-level design. |
|
|
Unit name for the following files. |
|
Read RTL VHDL 2000. |
||
Read RTL VHDL 2008. |
||
Read RTL VHDL 2019. |
||
Read RTL VHDL 87. |
||
Read RTL VHDL 93. |
||
|
Look for and store precompiled VHDL libraries in <dir>. |
|
|
Wait 'sec' seconds for a license. If the value is -1 then the started tool will not wait for the next free license. Use a value of 0 to wait forever. |