Configure your YAML file#
In this paragraph, we describe the jobs of the Hog CI pipelines that need to be configured in your local .gitlab-ci.yml
file. Only the jobs that are project-specific must be defined in this file. General jobs are directly included from the hog.yml
reference file and are not configurable.
The configurable jobs are:
Generation
Simulation
Generation Job#
From Hog2020.2, all project related jobs are merged in a single Generation job, in order to minimise calls to git and to Vivado/Quartus.
The Generation job calls the generate_project
function, creates and builds the Quartus/Vivado project, using the Hog/LaunchWorkflow.sh
bash script.
It can be configured with the following variables:
PROJECT_NAME
: (Mandatory) name of the Hog project you want to createHOG_CHECK_SYNTAX
: (Optional) if 1, it checks the syntax of the created project. Better if defined globally as an environmental variable in your Gitlab repositoryHOG_NJOBS
: (Optional) number of jobs to run the synthesis. It shall be defined in your Gitlab CI/CD variables. Default: 4HOG_ONLY_SYNTH
: (Optional) If set to 1, Hog-CI will run only the synthesis for the project. Default: 0HOG_NO_BITSTREAM
: (Optional) If set to 1, the Hog-CI will not write a binary file for your project. Default: 0HOG_IP_EOS_PATH
: (Optional) path to the EOS folder where the IP generated results are stored. If defined, the job will copy the IP products from EOS without relaunching the IP synthesis/implementation to speed up the pipeline. If the IP products on EOS are outdated, the script will regenerate and upload them to EOS. It shall be defined in your Gitlab CI/CD variables.
The resulting job in your .gitlab-ci.yml
file, for the project my_project
is,
generate_project:my_project:
extends: .generate_project
variables:
extends: .vars
PROJECT_NAME: my_project
HOG_ONLY_SYNTH : 0
HOG_NO_BITSTREAM : 0
HOG_CHECK_SYNTAX : 0
Simulation Job#
The Simulation job calls the simulate_project
function and launches a behavioural simulation for each .sim
list file in your Hog project. By default, simulation is executed using Modelsim. If you wish to use another simulation software, add the following line to the top of your .sim
list file:
Simulator xsim # For Vivado Simulator
Simulator questa # For QuestaSim
Simulator modelsim # For Modelsim
simulate_project
requires two variables:
PROJECT_NAME
: (Mandatory) name of the Hog project you want to simulateHOG_SIMULATION_LIB_PATH
: (Mandatory for Questa/Modelsim) Path to the compiled simulation library in your VM. It shall be defined in your Gitlab CI/CD variables.
The resulting job in your .gitlab-ci.yml
file, for the project my_project
is,
simulate_project:my_project:
extends: .simulate_project
variables:
extends: .vars
PROJECT_NAME: my_project
Note
From Hog-2020.2, the Simulation job will run in parallel with the Generation job, since it does not depend of it.