Additional Tcl Scripts#
Hog provides a series of Tcl scripts, which executes different common tasks. These scripts are located in ./Hog/Tcl/utils.
Depending on the HDL IDE, the scripts can be run as:
Vivado batch mode
vivado -mode batch -notrace -source <tcl_script> -tclargs <options?> <arguments>
PlanAhead batch mode
planAhead -mode batch -notrace -source <tcl_script> -tclargs <options?> <arguments>
Quartus Software Scripting
quartus_sh -t <tcl_script> <options?> <arguments>
Tcl console (Vivado/Quartus/PlanAhead/tclsh)
set argv [list <options?> <arguments>]
source <tcl_script>
Run each script with the -h option to see the full list of arguments/options and usage example.
Tip
Some of these scripts can be executed with tclsh. To do this, you need to install a package called “tcllib”, available on yum and apt.
Note
For each of the following commands, the Options are optional, while the Arguments are mandatory.
check_syntax.tcl#
This script checks the code syntax of a Vivado project.
Arguments:
<project_name>: the project name
Warning
This script has not yet been implemented for Quartus or PlanAhead
check_list_files.tcl (VIVADO ONLY)#
This script checks if the content of list files and of hog.conf match the project. It can also be used to update the list files or the hog.conf file.
Options:
-project <project_name>: the project name. If not set, the currently open project will be used by the script.-outFile <file name>: if set, the script Critical Warnings will be logged to the specified file.-log_list <1/0>: decides if Critical Warnings of list files shall be logged. To be used together with-outFile. Default = 1-log_conf <1/0>: decides if Critical Warnings of hog.conf shall be logged. To be used together with-outFile. Default = 1-recreate: if set will update the list files-recreate_conf: if set will recreate thehog.conffiles-force: if set, forces the overwriting of list files. To be used together with-recreateor-recreate_conf-pedantic: if set, script returns error in case of mismatch-ext_path <external path>: the absolute path for the external libraries
compile_simlib.tcl (VIVADO ONLY)#
This script compiles the Simulation libraries needed to simulate Vivado projects for the chosen simulator.
Options:
-simulator: The target simulator-output_dir: The output directory for the compiled simulation libraries. DefaultSimulationLib
make_doxygen.tcl#
This script is used to create the doxygen documentation. The doxygen configuration file must be stored into ./doxygen/doxygen.conf. If there is no such file, the command will use ./Hog/Templates/doxygen.conf as doxygen configuration file. You require a version of Doxygen newer than 1.8.13 installed on your machine, to execute this script
This script is used by Hog CI
check_yaml_ref.tcl#
This script checks that the Hog submodule SHA matches the ref in your .gitlab-ci.yml file. The .gitlab-ci.yml file defines what stages of the Hog Continuous Integration will be run. For more information, please consult the Hog-CI chapter.
If the two SHAs do not match, the script returns an Error, suggests few solutions to fix the problem.
This script is run by default in the pre-synthesis stage.
generate_yaml.tcl#
This script generates a gitlab-ci.yml configuration file for the dynamic CI child pipeline (see dynamic CI). It can also be used to create a template non dynamic project yaml file.
Options:
-runall: if set, it will generate a gitlab-ci yml file for all projects in the Top folder, even if it has not been modified with respect to the target branch-static: if set, it will generate a template non dynamic project YAML file for every project in the Top folder-ext_path: path to external libraries if any
Outputs:
generated-config.yml: child pipeline yml needed by dynamic CI, if-staticflag is not set.gitlab-ci.yml: template project non dynamic YAML file, if-staticflag is setnew_gitlab-ci.yml: template project non dynamic YAML file, if-staticflag is set and.gitlab-ci.ymlalready exists in the project
reformat.tcl#
This script formats tcl scripts indentation.
Arguments:
<tcl_script>: the tcl script to format
Options:
-tab_width <pad width>: the tab width to be used to indent the code (default = 2)