## 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 create - `HOG_CHECK_SYNTAX` : (**Optional**) if 1, it checks the syntax of the created project. Better if defined globally as an environmental variable in your [Gitlab repository](02-setup-CI.md) - `HOG_NJOBS`: (**Optional**) number of jobs to run the synthesis. It shall be defined in your [Gitlab CI/CD variables](02-setup-CI.md). Default: 4 - `HOG_ONLY_SYNTH` : (**Optional**) If set to 1, Hog-CI will run only the synthesis for the project. Default: 0 - `HOG_NO_BITSTREAM`: (**Optional**) If set to 1, the Hog-CI will not write a binary file for your project. Default: 0 - `HOG_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](02-setup-CI.md). The resulting job in your `.gitlab-ci.yml` file, for the project `my_project` is, ```YAML 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 simulate - `HOG_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](02-setup-CI.md). The resulting job in your `.gitlab-ci.yml` file, for the project `my_project` is, ```YAML 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. ```