Configuration file and wizard script
In order to facilitate the usage of Verisocks with Verilator, a command line
wizard script vsl-wizard is provided with the verisocks
python package. This script generates automatically a Makefile, a C++ top
testbench source file and a Verilator configuration file to declare the
necessary public variables for using Verilator while integrating Verisocks. The
files are generated based on entries which have to be provided by the user in a
YAML configuration file
.
Wizard-script usage
If properly installed with pip, an entry point is added in the path such that the wizard script can simply be evoked as follows:
usage: vsl-wizard [-h] [--templates-dir TEMPLATES_DIR]
[--makefile MAKEFILE] [--testbench-file TESTBENCH_FILE]
[--variables-file VARIABLES_FILE] config
- config
Path to YAML configuration file
The content and structure of the YAML configuration file shall be as described below. Unless specifically mentioned, all fields are mandatory. Entries which are paths can be relative to the configuration file location.
config:
prefix: <text> # Prefix name to be used
top: <text> # Name of top module
verilog_src_files: # List of Verilog source files
- <path>
# ...
cpp_src_files: # (optional) List of C++ extra files
- <path>
# ...
verisocks_root: <path> # Path to Verisocks root directory
verilator_path: <path> # Path to the verilator binary
verilator_root: <path> # Path to Verilator root
use_tracing: <bool> # If true, tracing is enabled
use_fst: <bool> # (optional if use_tracing is false) If true,
# the FST format is used for the traces file
variables: # (optional) Public variables
scalars: # (optional) List of scalar variables
- path: <text> # Name/alias to be used for the variable
module: <text> # Name of the module in which is the variable
type: <text> # Variable type [uint8, uint16, uint32, uint64, real]
width: <number> # Width of the variable
# ...
arrays: # (optional) List of array variables
- path: <text> # Name/alias to be used for the variable
module: <text> # Name of the module in which is the variable
type: <text> # Variable type [uint8, uint16, uint32, uint64, real]
width: <number> # Width of the variable
depth: <number> # Depth of the array
# ...
params: # (optional) List of parameter variables
- path: <text> # Name/alias to be used for the variable
module: <text> # Name of the module in which is the variable
type: <text> # Variable type [uint8, uint16, uint32, uint64, real]
width: <number> # Width of the variable
# ...
events: # (optional) List of events
- path: <text> # Name/alias to be used for the event
module: <text> # Name of the module in which is the event
# ...
Optional arguments
- -h, --help
Displays help content
- --templates-dir <TEMPLATES_DIR>, -t <TEMPLATES_DIR>
Path to templates directory if alternatives templates shall be used instead of the default ones
- --makefile <MAKEFILE>
Rendered makefile name (default:
Makefile
)
- --testbench-file <TESTBENCH_FILE>
Rendered C++ testbench file (default:
test_main.cpp
)
- --variables-file <VARIABLES_FILE>
Rendered Verilator configuration file for public variables (default:
variables.vlt
)