mirror of
https://github.com/lowRISC/ibex.git
synced 2025-04-24 22:07:43 -04:00
... and to get around warnings when using pip without wheel being present. No functional change expected.
162 lines
6.5 KiB
YAML
162 lines
6.5 KiB
YAML
# Copyright lowRISC contributors.
|
|
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Azure Pipelines CI build configuration
|
|
# Documentation at https://aka.ms/yaml
|
|
|
|
variables:
|
|
VERILATOR_VERSION: 4.032
|
|
RISCV_TOOLCHAIN_TAR_VERSION: 20200323-1
|
|
RISCV_COMPLIANCE_GIT_VERSION: 844c6660ef3f0d9b96957991109dfd80cc4938e2
|
|
VERIBLE_VERSION: v0.0-266-g9e55307
|
|
|
|
trigger:
|
|
batch: true
|
|
branches:
|
|
include:
|
|
- '*'
|
|
tags:
|
|
include:
|
|
- '*'
|
|
pr:
|
|
branches:
|
|
include:
|
|
- '*'
|
|
|
|
# Note: All tests run as part of one job to avoid copying intermediate build
|
|
# artifacts around (e.g. Verilator and toolchain builds). Once more builds/tests
|
|
# are added, we need to re-evaluate this decision to parallelize jobs and
|
|
# improve end-to-end CI times.
|
|
|
|
jobs:
|
|
- job: lint_dv
|
|
displayName: Run quality checks (Lint and DV)
|
|
pool:
|
|
vmImage: "ubuntu-16.04"
|
|
steps:
|
|
# Installing six is a workaround for pip dependency resolution: six is already
|
|
# installed as system package with a version below the required one.
|
|
# Explicitly installing six through pip gets us a supported version.
|
|
#
|
|
# Updating pip and setuptools is required to have these tools properly parse
|
|
# Python-version metadata, which some packages uses to specify that an older
|
|
# version of a package must be used for a certain Python version. If that
|
|
# information is not read, pip installs the latest version, which then fails
|
|
# to run.
|
|
- bash: |
|
|
curl -L https://download.opensuse.org/repositories/home:phiwag:edatools/xUbuntu_16.04/Release.key | sudo apt-key add -
|
|
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/phiwag:/edatools/xUbuntu_16.04/ /' > /etc/apt/sources.list.d/edatools.list"
|
|
# Uninstall distribution-provided version to get a newer version through pip
|
|
sudo apt-get remove -y python3-yaml
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
python3 \
|
|
python3-pip \
|
|
python3-setuptools \
|
|
python3-wheel \
|
|
srecord \
|
|
zlib1g-dev \
|
|
git \
|
|
make \
|
|
autoconf \
|
|
g++ \
|
|
flex \
|
|
bison \
|
|
curl \
|
|
libelf-dev \
|
|
clang-format \
|
|
verilator-$(VERILATOR_VERSION) \
|
|
&& sudo pip3 install -U setuptools pip six \
|
|
&& sudo pip3 install -U -r python-requirements.txt
|
|
displayName: Install dependencies
|
|
|
|
- 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: |
|
|
export TOOLCHAIN_URL=https://github.com/lowRISC/lowrisc-toolchains/releases/download/${RISCV_TOOLCHAIN_TAR_VERSION}/lowrisc-toolchain-gcc-rv32imc-${RISCV_TOOLCHAIN_TAR_VERSION}.tar.xz
|
|
mkdir -p build/toolchain
|
|
curl -Ls -o build/toolchain/rv32-toolchain.tar.xz $TOOLCHAIN_URL
|
|
sudo mkdir -p /tools/riscv && sudo chmod 777 /tools/riscv
|
|
tar -C /tools/riscv -xf build/toolchain/rv32-toolchain.tar.xz --strip-components=1
|
|
echo "##vso[task.setvariable variable=PATH]/tools/riscv/bin:$PATH"
|
|
displayName: Get precompiled RISC-V toolchain
|
|
|
|
- bash: |
|
|
echo $PATH
|
|
python3 --version
|
|
echo -n "fusesoc "
|
|
fusesoc --version
|
|
verilator --version
|
|
riscv32-unknown-elf-gcc --version
|
|
verilog_lint --version
|
|
displayName: Display environment
|
|
|
|
# Verible lint/format is experimental so only run on default config for now,
|
|
# will eventually become part of the per-config CI
|
|
- bash: |
|
|
fusesoc --cores-root . run --no-export --target=lint --tool=veriblelint lowrisc:ibex:ibex_core_tracing
|
|
if [ $? != 0 ]; then
|
|
echo -n "##vso[task.logissue type=error]"
|
|
echo "Verilog lint with Verible failed. Run 'fusesoc --cores-root . run --target=lint --tool=veriblelint lowrisc:ibex:ibex_core_tracing' to check and fix all errors."
|
|
echo "This flow is currently experimental and failures can be ignored."
|
|
exit 1
|
|
fi
|
|
continueOnError: true
|
|
displayName: Lint Verilog source files with Verible (experimental)
|
|
|
|
- bash: |
|
|
fusesoc --cores-root . run --no-export --target=format --tool=veribleformat lowrisc:ibex:ibex_core_tracing
|
|
if [ $? != 0 ]; then
|
|
echo -n "##vso[task.logissue type=error]"
|
|
echo "Verilog format with Verible failed. Run 'fusesoc --cores-root . run --no-export --target=format --tool=veribleformat lowrisc:ibex:ibex_core_tracing' to check and fix all errors."
|
|
echo "This flow is currently experimental and failures can be ignored."
|
|
fi
|
|
# Show diff of what verilog_format would have changed, and then revert.
|
|
git diff
|
|
git reset --hard HEAD
|
|
continueOnError: true
|
|
displayName: Format all source code with Verible format (experimental)
|
|
|
|
- bash: |
|
|
fork_origin=$(git merge-base --fork-point origin/master)
|
|
changed_files=$(git diff --name-only $fork_origin | grep -v '^vendor' | grep -E '\.(cpp|cc|c|h)$')
|
|
test -z "$changed_files" || git diff -U0 $fork_origin $changed_files | clang-format-diff -p1 | tee clang-format-output
|
|
if [ -s clang-format-output ]; then
|
|
echo -n "##vso[task.logissue type=error]"
|
|
echo "C/C++ lint failed. Use 'git clang-format' with appropriate options to reformat the changed code."
|
|
exit 1
|
|
fi
|
|
# This check is not idempotent, but checks changes to a base branch.
|
|
# Run it only on pull requests.
|
|
condition: eq(variables['Build.Reason'], 'PullRequest')
|
|
displayName: 'Use clang-format to check C/C++ coding style'
|
|
|
|
- bash: |
|
|
# Build and run CSR testbench, chosen Ibex configuration does not effect
|
|
# this so doesn't need to be part of per-config CI
|
|
fusesoc --cores-root=. run --target=sim --tool=verilator lowrisc:ibex:tb_cs_registers
|
|
displayName: Build and run CSR testbench with Verilator
|
|
|
|
- bash: |
|
|
cd build
|
|
git clone https://github.com/riscv/riscv-compliance.git
|
|
cd riscv-compliance
|
|
git checkout "$(RISCV_COMPLIANCE_GIT_VERSION)"
|
|
displayName: Get RISC-V Compliance test suite
|
|
|
|
# Run Ibex RTL CI per supported configuration
|
|
- template : ci/ibex-rtl-ci-steps.yml
|
|
parameters:
|
|
ibex_configs:
|
|
- small
|
|
- experimental-maxperf-pmp
|
|
- experimental-maxperf-pmp-bm
|