********************************************
*  SURELOG System Verilog Compiler/Linter  *
********************************************

  ------------ SURELOG HELP --------------

STANDARD VERILOG COMMAND LINE:
  -f <file>             Accepts a file containing command line arguments
  -v <file>             Library file
  -y <path>             Library directory
  +incdir+<dir>+...     Specifies include paths
  -Idir                 Specifies include paths
  +libext+<extname>+... Specifies the library extensions
  <file>.v              Verilog File
  <file>.sv             System Verilog File
  +liborder             Lib Order option (ignored)
  +librescan            Lib Rescan option (ignored)
  +libverbose           Lib Verbose option (ignored)
  +nolibcell            No Lib Cell option (ignored)
  +define+macro_name=definition+...
                        Defines a macro and optionally its value
  -L <libName>          Defines library compilation order
  -map <mapFile>        Specifies a library mapping file (multiple -map options supported)
  -cfgfile <confiFile>  Specifies a configuration file (multiple -cfgFile options supported)
  -cfg <configName>     Specifies a configuration to use (multiple -cfg options supported)
FLOWS OPTIONS:
  -fileunit             Compiles each Verilog file as an independent
                        compilation unit (under slpp_unit/ if -writepp used)
  -diffcompunit         Compiles both all files as a whole unit and
                        separate compilation units to perform diffs
  -parse                Parse/Compile/Elaborate the files after pre-processing step
  -nocomp               Turns off Compilation & Elaboration
  -noelab               Turns off Elaboration
  -pythonlistener       Enables the Parser Python Listener
  -pythonlistenerfile <script.py> Specifies the AST python listener file
  -pythonevalscriptperfile <script.py>  Eval the Python script on each source file (Multithreaded)
  -pythonevalscript <script.py> Eval the Python script at the design level
  -nopython             Turns off all Python features, including waivers
  -strictpythoncheck    Turns on strict Python checks
  -mt <nb_max_treads>   0 up to 512 max threads, 0 or 1 being single threaded,
                        if "max" is given, the program will use one thread
                        per core on the host
  -split <line number>  Split files or modules larger than specified line number for multi thread compilation
  -timescale=<timescale> Specifies the overall timescale
  -nobuiltin            Do not parse SV builtin classes (array...)

TRACES OPTIONS:
  -d <int>              Debug <level> 1-4, lib, ast, inst, incl
  -nostdout             Mutes Standard output
  -verbose              Gives verbose processing information
  -profile              Gives Profiling information
  -l <file>             Specifies log file, default is surelog.log under output dir

OUTPUT OPTIONS:
  -odir <dir>           Specifies the output directory, default is ./
  -writeppfile <file>   Writes out Preprocessor output in file
                        (all compilation units will override this file)
  -writepp              Writes out Preprocessor output (all compilation
                        units will generate files under slpp_all/ or slpp_unit/)
  -lineoffsetascomments Writes the preprocessor line offsets as comments as opposed as parser directives
  -nocache              Default allows to create a cache for include files, this option prevents it
  -cache <dir>          Specifies the cache directory, default is slpp_all/cache or slpp_unit/cache
  -createcache          Create cache for precompiled packages
  -filterdirectives     Filters out simple directives like
                        `default_nettype in pre-processor's output
  -filterprotected      Filters out protected regions in pre-processor's output
  -filtercomments       Filters out comments in pre-processor's output
  -outputlineinfo       Outputs SLline directives in pre-processor's output
  -pploc                Output message location in terms of post preprocessor location
  -noinfo               Filters out INFO messages
  -nonote               Filters out NOTE messages
  -nowarning            Filters out WARNING messages
  -o <path>             Turns on all compilation stages, produces all outputs under that path


********************************************
*   End SURELOG SVerilog Compiler/Linter   *
********************************************

0.10user 0.03system 0:00.13elapsed 100%CPU (0avgtext+0avgdata 45648maxresident)k
0inputs+16outputs (0major+10028minor)pagefaults 0swaps
