Allow the formal engine to perform a same-cycle result in the ALU
[soc.git] / .gitlab-ci.yml
index 2a2942ba0b04ae4609a4c53002a30ada4bea63fe..c57c2d547bf19eb76421deb3cb99e33e9d883a32 100644 (file)
@@ -4,39 +4,75 @@ cache:
     paths:
         - ccache
         - .cache/pip
-        - apt-cache/
+        - apt-cache
+    when: 'always'
 
 variables:
     PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
     GIT_SUBMODULE_STRATEGY: recursive
+    GIT_DEPTH: "500"
 
 build:
     stage: build
+    timeout: 2h
     before_script:
         - mkdir -p apt-cache
-        - apt-get -o dir::cache::archives="apt-cache" update
+        - apt-get -o dir::cache::archives="$(pwd)/apt-cache" update
         - >-
-            apt-get -o dir::cache::archives="apt-cache" -y install
-            build-essential git python3-dev python3-pip
-            python3-setuptools python3-wheel pkg-config tcl-dev
-            libreadline-dev bison flex libffi-dev ccache python3-venv
-            binutils-powerpc64-linux-gnu binutils-powerpc64le-linux-gnu
-            autoconf gperf libgmp-dev
+            apt-get -o dir::cache::archives="$(pwd)/apt-cache" -y install
+            build-essential
+            git
+            python3-dev
+            python3-pip
+            python3-setuptools
+            python3-setuptools-scm
+            python3-wheel
+            pkg-config
+            tcl-dev
+            libreadline-dev
+            bison
+            flex
+            libffi-dev
+            ccache
+            python3-venv
+            binutils-powerpc64-linux-gnu
+            binutils-powerpc64le-linux-gnu
+            autoconf
+            gperf
+            libgmp-dev
+            libmpfr-dev
+            libssl-dev
+            curl
         - export PATH="/usr/lib/ccache:$PATH"
         - export CCACHE_BASEDIR="$PWD"
         - export CCACHE_DIR="$PWD/ccache"
         - export CCACHE_COMPILERCHECK=content
         - ccache --zero-stats || true
         - ccache --show-stats || true
-    after_script:
-        - export CCACHE_DIR="$PWD/ccache"
-        - ccache --show-stats
+        - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
+        - source $HOME/.cargo/env
     script:
-        - python3 -m venv .env
+        - python3 -m venv --system-site-packages .env
         - . .env/bin/activate
-        - pip install nose
+        - pip install pytest-xdist==3.3.1 pytest==7.3.1
+
+        - git clone --depth 1 -b v0.1.1 https://github.com/cocotb/cocotb-bus.git cocotb-bus
+        - pushd cocotb-bus
+        - pip install . --no-deps
+        - popd
+
+        - git clone --depth 1 -b v1.5.2 https://github.com/cocotb/cocotb.git cocotb
+        - pushd cocotb
+        - pip install .
+        - popd
 
-        - git clone --depth 1 https://github.com/SRI-CSL/yices2.git yices2
+        - git clone --depth 1 https://git.libre-soc.org/git/pytest-output-to-files.git pytest-output-to-files
+        - pushd pytest-output-to-files
+        - git rev-parse HEAD
+        - python3 setup.py develop
+        - popd
+
+        - git clone --depth 1 -b Yices-2.6.4 https://github.com/SRI-CSL/yices2.git yices2
         - pushd yices2
         - autoconf
         - ./configure
@@ -44,7 +80,7 @@ build:
         - make install
         - popd
 
-        - git clone --depth 1 https://github.com/YosysHQ/yosys.git yosys
+        - git clone --depth 1 -b yosys-0.17 https://github.com/YosysHQ/yosys.git yosys
         - pushd yosys
         - make config-gcc
         - make -j$(nproc)
@@ -52,29 +88,56 @@ build:
         - popd
         - yosys -V
 
-        - git clone --depth 1 https://github.com/YosysHQ/SymbiYosys.git SymbiYosys
+        - git clone https://github.com/YosysHQ/SymbiYosys.git SymbiYosys
         - pushd SymbiYosys
+        - git checkout d10e472edf4ea9be3aa6347b264ba575fbea933a
         - make install
         - popd
 
-        - git clone --depth 1 https://github.com/nmigen/nmigen.git nmigen
+        - git clone --depth 1 https://gitlab.com/nmigen/nmigen.git nmigen
         - pushd nmigen
-        - python setup.py develop
+        - git rev-parse HEAD
+        - python3 setup.py develop
+        - popd
+
+        - git clone --depth 1 https://git.libre-soc.org/git/mdis.git mdis
+        - pushd mdis
+        - git rev-parse HEAD
+        - python3 setup.py develop
         - popd
 
-        - git clone --depth 1 git://git.libre-riscv.org/nmutil.git nmutil
+        - git clone --depth 1 https://git.libre-soc.org/git/nmutil.git nmutil
         - pushd nmutil
+        - git rev-parse HEAD
+        - python3 setup.py develop
+        - popd
+
+        - git clone --depth 1 https://git.libre-soc.org/git/nmigen-soc.git nmigen-soc
+        - pushd nmigen-soc
+        - git tag | xargs git tag -d
         - python setup.py develop
         - popd
 
-        - git clone --depth 1 git://git.libre-riscv.org/ieee754fpu.git ieee754fpu
+        - git clone --depth 1 https://git.libre-soc.org/git/ieee754fpu.git ieee754fpu
         - pushd ieee754fpu
         - python setup.py develop
         - popd
 
+        - git clone --depth 1 https://git.libre-soc.org/git/openpower-isa.git openpower-isa
+        - pushd openpower-isa
+        - python3 setup.py develop
+        - if ! out="$(make 2>&1)"; then echo "$out"; exit 1; fi
+        - popd
+
+        - git clone --depth 1 https://git.libre-soc.org/git/c4m-jtag.git c4m-jtag
+        - pushd c4m-jtag
+        - python setup.py develop
+        - popd
+
         - IEEE754FPU_PATH="$(pwd)"/ieee754fpu
-        - git clone --depth 1 --recursive https://github.com/billzorn/sfpy.git sfpy
+        - git clone --depth 1 --recursive -b v0.6.0 https://github.com/billzorn/sfpy.git sfpy
         - pushd sfpy
+        - git apply "$IEEE754FPU_PATH"/sfpy.patch
         - pushd berkeley-softfloat-3
         - git apply "$IEEE754FPU_PATH"/berkeley-softfloat.patch
         - popd
@@ -82,13 +145,19 @@ build:
         - git apply ../softposit_sfpy_build.patch
         - git apply "$IEEE754FPU_PATH"/SoftPosit.patch
         - popd
-        - pip install --upgrade -r requirements.txt
+        - pip install -r requirements.txt
         - make lib -j$(nproc)
         - make cython -j$(nproc)
         - make wheel -j$(nproc)
-        - pip install dist/sfpy*.whl
+        - pip install --force-reinstall dist/sfpy*.whl
+        - popd
+
+        - python3 -m pip install 'maturin>=0.11,<0.12'
+        - git clone --depth 1 https://git.libre-soc.org/git/power-instruction-analyzer.git pia
+        - pushd pia
+        - maturin build --cargo-extra-args=--features=python-extension
+        - python3 -m pip install target/wheels/*.whl
         - popd
 
         - python setup.py develop
-        - python src/soc/decoder/pseudo/pywriter.py
-        - nosetests -v --processes=-1 --process-timeout=120
+        - SILENCELOG='!*,default' pytest -v --maxfail=20