[ci] Add Verible style lint to PR CI checks
This triggers a style lint run using Verible for all IPs that define a
lint target in the top_earlgrey_lint_cfg.hjson file.
Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index d8fe256..633bbea 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -5,6 +5,7 @@
VERILATOR_VERSION: 4.028
VERILATOR_PATH: /opt/buildcache/verilator/$(VERILATOR_VERSION)
TOOLCHAIN_PATH: /opt/buildcache/riscv
+ VERIBLE_VERSION: v0.0-469-gb458ff6
# Release tag from https://github.com/lowRISC/lowrisc-toolchains/releases
# if you update this, update the definition in util/container/Dockerfile
TOOLCHAIN_VERSION: 20200626-1
@@ -35,6 +36,15 @@
displayName: Remove existing Clang installation
- template: ci/install-package-dependencies.yml
- bash: |
+ set -e
+ mkdir -p build/verible
+ cd build/verible
+ curl -Ls -o verible.tar.gz https://github.com/google/verible/releases/download/$(VERIBLE_VERSION)/verible-$(VERIBLE_VERSION)-Ubuntu-16.04-xenial-x86_64.tar.gz
+ sudo mkdir -p /tools/verible && sudo chmod 777 /tools/verible
+ tar -C /tools/verible -xf verible.tar.gz --strip-components=1
+ echo "##vso[task.setvariable variable=PATH]/tools/verible/bin:$PATH"
+ displayName: Install Verible
+ - bash: |
python3 --version
yapf --version
isort --version
@@ -113,6 +123,16 @@
condition: eq(variables['Build.Reason'], 'PullRequest')
displayName: Check formatting on header guards
- bash: |
+ util/dvsim/dvsim.py hw/top_earlgrey/lint/top_earlgrey_lint_cfgs.hjson \
+ --tool=veriblelint
+ if [ $? != 0 ]; then
+ echo -n "##vso[task.logissue type=error]"
+ echo "Verilog style lint with Verible failed. Run 'util/dvsim/dvsim.py -t veriblelint hw/top_earlgrey/lint/top_earlgrey_lint_cfgs.hjson' to check and fix all errors."
+ exit 1
+ fi
+ condition: eq(variables['Build.Reason'], 'PullRequest')
+ displayName: Style-Lint Verilog source files with Verible
+ - bash: |
commit_range="$(git merge-base --fork-point origin/master)..HEAD"
# Notes:
# * Merge commits are not checked. We always use rebases instead of