# This file describes the GitHub Actions workflow for continuous integration of XS Core. name: EMU Test on: push: branches: [ master ] pull_request: branches: [ master ] jobs: generate-verilog: runs-on: bosc continue-on-error: false name: Generate Verilog steps: - uses: actions/checkout@v2 with: submodules: 'recursive' - name: set env run: | export HEAD_SHA=${{ github.run_number }} echo "NEMU_HOME=/nfs/home/share/ci-workloads/NEMU" >> $GITHUB_ENV echo "WAVE_HOME=/nfs/home/ci-runner/xs-wave/${HEAD_SHA}" >> $GITHUB_ENV mkdir -p /nfs/home/ci-runner/xs-wave/${HEAD_SHA} - name: clean up run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean - name: check top wiring run: bash .github/workflows/check-usage.sh "BoringUtils" $GITHUB_WORKSPACE - name: generate verilog file run: python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --generate --num-cores 2 - name: check verilog run: python3 $GITHUB_WORKSPACE/.github/workflows/check_verilog.py build/XSTop.v - name: build MinimalConfig Release emu run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build \ --threads 4 --config MinimalConfig --release - name: run MinimalConfig - Linux run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 4 --numa --ci linux-hello 2> perf.log cat perf.log | sort emu-basics: runs-on: bosc continue-on-error: false timeout-minutes: 900 name: EMU - Basics steps: - uses: actions/checkout@v2 with: submodules: 'recursive' - name: set env run: | export HEAD_SHA=${{ github.run_number }} echo "NEMU_HOME=/nfs/home/share/ci-workloads/NEMU" >> $GITHUB_ENV echo "AM_HOME=/nfs/home/share/ci-workloads/nexus-am" >> $GITHUB_ENV echo "PERF_HOME=/nfs/home/ci-runner/xs-perf/${HEAD_SHA}" >> $GITHUB_ENV echo "WAVE_HOME=/nfs/home/ci-runner/xs-wave/${HEAD_SHA}" >> $GITHUB_ENV mkdir -p /nfs/home/ci-runner/xs-perf/${HEAD_SHA} mkdir -p /nfs/home/ci-runner/xs-wave/${HEAD_SHA} - name: clean up run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean - name: Build EMU run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --build --threads 8 - name: Basic Test - cputest run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --ci cputest 2> /dev/zero - name: Basic Test - riscv-tests run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --rvtest /nfs/home/share/ci-workloads/riscv-tests --ci riscv-tests 2> /dev/zero - name: Basic Test - misc-tests run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --numa --ci misc-tests 2> /dev/zero - name: Basic Test - nodiff-tests run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --numa --no-diff --ci nodiff-tests 2> /dev/zero - name: Simple Test - microbench run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --ci microbench 2> perf.log cat perf.log | sort | tee $PERF_HOME/microbench.log - name: Simple Test - CoreMark run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --numa --ci coremark 2> perf.log cat perf.log | sort | tee $PERF_HOME/coremark.log - name: System Test - Linux run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --numa --ci linux-hello 2> perf.log cat perf.log | sort | tee $PERF_HOME/linux.log - name: Floating-point Test - povray run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --numa --max-instr 5000000 --ci povray 2> perf.log cat perf.log | sort | tee $PERF_HOME/povray.log - name: Uncache Fetch Test - copy and run run: | $GITHUB_WORKSPACE/build/emu -F $GITHUB_WORKSPACE/ready-to-run/copy_and_run.bin -i $GITHUB_WORKSPACE/ready-to-run/microbench.bin --diff $GITHUB_WORKSPACE/ready-to-run/riscv64-nemu-interpreter-so --enable-fork 2> perf.log cat perf.log | sort | tee $PERF_HOME/copy_and_run.log emu-performance: runs-on: bosc continue-on-error: false timeout-minutes: 900 name: EMU - Performance steps: - uses: actions/checkout@v2 with: submodules: 'recursive' - name: set env run: | export HEAD_SHA=${{ github.run_number }} echo "NEMU_HOME=/nfs/home/share/ci-workloads/NEMU" >> $GITHUB_ENV echo "AM_HOME=/nfs/home/share/ci-workloads/nexus-am" >> $GITHUB_ENV echo "PERF_HOME=/nfs/home/ci-runner/xs-perf/${HEAD_SHA}" >> $GITHUB_ENV echo "WAVE_HOME=/nfs/home/ci-runner/xs-wave/${HEAD_SHA}" >> $GITHUB_ENV mkdir -p /nfs/home/ci-runner/xs-perf/${HEAD_SHA} mkdir -p /nfs/home/ci-runner/xs-wave/${HEAD_SHA} - name: clean up run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean - name: Build EMU run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build \ --dramsim3 /nfs/home/share/ci-workloads/DRAMsim3 \ --with-dramsim3 --threads 16 - name: SPEC06 Test - mcf run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci mcf 2> perf.log cat perf.log | sort | tee $PERF_HOME/mcf.log - name: SPEC06 Test - xalancbmk run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci xalancbmk 2> perf.log cat perf.log | sort | tee $PERF_HOME/xalancbmk.log - name: SPEC06 Test - gcc run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci gcc 2> perf.log cat perf.log | sort | tee $PERF_HOME/gcc.log - name: SPEC06 Test - namd run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci namd 2> perf.log cat perf.log | sort | tee $PERF_HOME/namd.log - name: SPEC06 Test - milc run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci milc 2> perf.log cat perf.log | sort | tee $PERF_HOME/milc.log - name: SPEC06 Test - lbm run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci lbm 2> perf.log cat perf.log | sort | tee $PERF_HOME/lbm.log - name: SPEC06 Test - gromacs run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci gromacs 2> perf.log cat perf.log | sort | tee $PERF_HOME/gromacs.log - name: SPEC06 Test - wrf run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci wrf 2> perf.log cat perf.log | sort | tee $PERF_HOME/wrf.log - name: SPEC06 Test - astar run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci astar 2> perf.log cat perf.log | sort | tee $PERF_HOME/astar.log emu-mc: runs-on: bosc continue-on-error: false timeout-minutes: 900 name: EMU - MC steps: - uses: actions/checkout@v2 with: submodules: 'recursive' - name: set env run: | export HEAD_SHA=${{ github.run_number }} echo "NEMU_HOME=/nfs/home/share/ci-workloads/NEMU" >> $GITHUB_ENV echo "AM_HOME=/nfs/home/share/ci-workloads/nexus-am" >> $GITHUB_ENV echo "PERF_HOME=/nfs/home/ci-runner/xs-perf/${HEAD_SHA}" >> $GITHUB_ENV echo "WAVE_HOME=/nfs/home/ci-runner/xs-wave/${HEAD_SHA}" >> $GITHUB_ENV mkdir -p /nfs/home/ci-runner/xs-perf/${HEAD_SHA} mkdir -p /nfs/home/ci-runner/xs-wave/${HEAD_SHA} - name: clean up run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean - name: Build MC EMU run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build \ --num-cores 2 \ --dramsim3 /nfs/home/share/ci-workloads/DRAMsim3 \ --with-dramsim3 --threads 16 - name: MC Test run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --diff ./ready-to-run/riscv64-nemu-interpreter-dual-so --ci mc-tests 2> /dev/zero - name: SMP Linux run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --diff ./ready-to-run/riscv64-nemu-interpreter-dual-so --ci linux-hello-smp 2> /dev/zero simv-basics: runs-on: bosc continue-on-error: false timeout-minutes: 900 name: SIMV - Basics steps: - uses: actions/checkout@v2 with: submodules: 'recursive' - name: set env run: | export HEAD_SHA=${{ github.run_number }} echo "NEMU_HOME=/nfs/home/share/ci-workloads/NEMU" >> $GITHUB_ENV echo "AM_HOME=/nfs/home/share/ci-workloads/nexus-am" >> $GITHUB_ENV echo "PERF_HOME=/nfs/home/ci-runner/xs-perf/${HEAD_SHA}" >> $GITHUB_ENV echo "WAVE_HOME=/nfs/home/ci-runner/xs-wave/${HEAD_SHA}" >> $GITHUB_ENV mkdir -p /nfs/home/ci-runner/xs-perf/${HEAD_SHA} mkdir -p /nfs/home/ci-runner/xs-wave/${HEAD_SHA} - name: clean up run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean - name: Remote Connection Test run: | ssh -tt 172.28.10.101 "echo test-ok" - name: Generate Verilog for VCS run: | python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --vcs-gen --release - name: Build SIMV on Remote run: | ssh -tt 172.28.10.101 "python3 `echo $GITHUB_WORKSPACE`/scripts/xiangshan.py --vcs-build --release" - name: Basic Test - cputest run: | ssh -tt 172.28.10.101 "python3 `echo $GITHUB_WORKSPACE`/scripts/xiangshan.py --ci-vcs cputest --am=/nfs/home/share/ci-workloads/nexus-am/" 2> /dev/zero - name: Simple Test - CoreMark run: | ssh -tt 172.28.10.101 "python3 `echo $GITHUB_WORKSPACE`/scripts/xiangshan.py --ci-vcs coremark --am=/nfs/home/share/ci-workloads/nexus-am/ --timeout 1800" 2> /dev/zero - name: System Test - Linux run: | ssh -tt 172.28.10.101 "python3 `echo $GITHUB_WORKSPACE`/scripts/xiangshan.py --ci-vcs linux-hello --timeout 7200" 2> /dev/zero