refactor(params): Update Params for supported data type in CUTE (#57) #53
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This file describes the GitHub Actions workflow for continuous integration of XS Core. | |
| name: EMU Test | |
| on: | |
| push: | |
| branches: [ master, dev-v0.6 ] | |
| pull_request: | |
| branches: [ master, dev-v0.6 ] | |
| jobs: | |
| changes: # Changes Detection | |
| name: Changes Detection | |
| runs-on: ubuntu-latest | |
| # Required permissions | |
| permissions: | |
| pull-requests: read | |
| # Set job outputs to values from filter step | |
| outputs: | |
| core: ${{ steps.filter.outputs.core }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| predicate-quantifier: 'every' | |
| filters: .github/filters.yaml | |
| generate-verilog: | |
| runs-on: bosc | |
| needs: changes | |
| if: ${{ needs.changes.outputs.core == 'true' }} | |
| continue-on-error: false | |
| timeout-minutes: 900 | |
| name: Generate XSAI Verilog | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: set env | |
| run: | | |
| export HEAD_SHA=${{ github.run_number }} | |
| echo "NOOP_HOME=$GITHUB_WORKSPACE" >> $GITHUB_ENV | |
| echo "NEMU_HOME=/nfs/home/share/ci-workloads/NEMU" >> $GITHUB_ENV | |
| echo "WAVE_HOME=/nfs/home/ci-runner/xsai-wave/${HEAD_SHA}" >> $GITHUB_ENV | |
| mkdir -p /nfs/home/ci-runner/xsai-wave/${HEAD_SHA} | |
| - name: Initialize submodules | |
| run: make init-force | |
| - 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 standalone devices for TL | |
| run: | | |
| make StandAloneCLINT DEVICE_BASE_ADDR=0x38000000 DEVICE_ADDR_WIDTH=32 DEVICE_DATA_WIDTH=64 DEVICE_TL=1 DEVICE_PREFIX=CLINT_ | |
| make StandAloneSYSCNT DEVICE_BASE_ADDR=0x38040000 DEVICE_ADDR_WIDTH=32 DEVICE_DATA_WIDTH=64 DEVICE_TL=1 DEVICE_PREFIX=CLINT_ | |
| make StandAloneDebugModule DEVICE_BASE_ADDR=0x38020000 DEVICE_ADDR_WIDTH=32 DEVICE_DATA_WIDTH=64 DEVICE_TL=1 DEVICE_PREFIX=DM_ | |
| make StandAlonePLIC DEVICE_BASE_ADDR=0x3C000000 DEVICE_ADDR_WIDTH=32 DEVICE_DATA_WIDTH=64 DEVICE_TL=1 DEVICE_PREFIX=PLIC_ | |
| make clean | |
| - name: generate standalone devices for AXI4 | |
| run: | | |
| make StandAloneCLINT DEVICE_BASE_ADDR=0x38000000 DEVICE_ADDR_WIDTH=32 DEVICE_DATA_WIDTH=64 DEVICE_TL=0 DEVICE_PREFIX=CLINT_ | |
| make StandAloneSYSCNT DEVICE_BASE_ADDR=0x38040000 DEVICE_ADDR_WIDTH=32 DEVICE_DATA_WIDTH=64 DEVICE_TL=0 DEVICE_PREFIX=CLINT_ | |
| make StandAloneDebugModule DEVICE_BASE_ADDR=0x38020000 DEVICE_ADDR_WIDTH=32 DEVICE_DATA_WIDTH=64 DEVICE_TL=0 DEVICE_PREFIX=DM_ | |
| make StandAlonePLIC DEVICE_BASE_ADDR=0x3C000000 DEVICE_ADDR_WIDTH=32 DEVICE_DATA_WIDTH=64 DEVICE_TL=0 DEVICE_PREFIX=PLIC_ | |
| make clean | |
| - name: generate verilog file | |
| run: | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --generate --num-cores 2 --config DefaultMatrixConfig | |
| - name: check verilog | |
| run: | | |
| python3 $GITHUB_WORKSPACE/.github/workflows/check_verilog.py build/rtl | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean | |
| - name: generate chirrtl only | |
| run: | | |
| make sim-verilog CHISEL_TARGET=chirrtl CONFIG=DefaultMatrixConfig | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean | |
| - name: build MinimalMatrixConfig Release emu | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build \ | |
| --threads 8 --config MinimalMatrixConfig --release --trace-fst | |
| - name: run MinimalMatrixConfig - Linux | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 8 --numa --ci linux-hello-opensbi 2> perf.log | |
| cat perf.log | sort | |
| emu-xsai-basics: | |
| runs-on: bosc | |
| needs: changes | |
| if: ${{ needs.changes.outputs.core == 'true' }} | |
| continue-on-error: false | |
| timeout-minutes: 900 | |
| name: EMU - XSAI Basics | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: set env | |
| run: | | |
| export HEAD_SHA=${{ github.run_number }} | |
| echo "NOOP_HOME=$GITHUB_WORKSPACE" >> $GITHUB_ENV | |
| 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/xsai-perf/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "WAVE_HOME=/nfs/home/ci-runner/xsai-wave/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "GCPT_RESTORE_BIN=/nfs/home/share/ci-workloads/fix-gcpt/gcpt.bin" >> $GITHUB_ENV | |
| mkdir -p /nfs/home/ci-runner/xsai-perf/${HEAD_SHA} | |
| mkdir -p /nfs/home/ci-runner/xsai-wave/${HEAD_SHA} | |
| - name: Initialize submodules | |
| run: make init-force | |
| - name: clean up | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean | |
| - name: Build EMU | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build --threads 16 \ | |
| --config DefaultMatrixConfig --pgo $GITHUB_WORKSPACE/ready-to-run/coremark-2-iteration.bin --llvm-profdata llvm-profdata --trace-fst | |
| - name: Basic Test - cputest | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --ci cputest 2> /dev/zero | |
| - name: Basic Test - riscv-tests | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --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 16 --numa --ci misc-tests 2> /dev/zero | |
| - name: Extension Test - hypervisor | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci rvh-tests 2> /dev/zero | |
| - name: Simple Test - microbench | |
| id: microbench | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --ci microbench 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/microbench.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: Simple Test - CoreMark | |
| id: coremark | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci coremark 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/coremark.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: System Test - Linux | |
| id: linux | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci linux-hello-opensbi 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/linux.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: Floating-point Test - povray | |
| id: povray | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --max-instr 5000000 --ci povray --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/povray.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: Uncache Fetch Test - copy and run | |
| id: 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 | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/copy_and_run.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: V Extension Test - rvv-bench | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci rvv-bench 2> /dev/zero | |
| - name: F16 Test - f16_test | |
| run: | | |
| python3 ./scripts/xiangshan.py --wave-dump ./build --thread 16 --numa --ci f16_test 2> /dev/zero | |
| - name: Zcb Extension Test - zcb-test | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci zcb-test 2> /dev/zero | |
| - name: Generate summary | |
| if: always() | |
| run: | | |
| echo "## Emu - Basics summary" >> $GITHUB_STEP_SUMMARY | |
| echo "| Testcase | IPC |" >> $GITHUB_STEP_SUMMARY | |
| echo "| -------- | --- |" >> $GITHUB_STEP_SUMMARY | |
| echo "| microbench | ${{ steps.microbench.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| coremark | ${{ steps.coremark.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| linux | ${{ steps.linux.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| povray | ${{ steps.povray.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| copy_and_run | ${{ steps.copy_and_run.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| emu-xsai-gsim: | |
| runs-on: bosc | |
| needs: changes | |
| if: ${{ needs.changes.outputs.core == 'true' }} | |
| continue-on-error: false | |
| timeout-minutes: 900 | |
| name: EMU - XSAI GSIM | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: set env | |
| run: | | |
| export HEAD_SHA=${{ github.run_number }} | |
| echo "NOOP_HOME=$GITHUB_WORKSPACE" >> $GITHUB_ENV | |
| 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/xsai-perf/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "WAVE_HOME=/nfs/home/ci-runner/xsai-wave/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "GCPT_RESTORE_BIN=/nfs/home/share/ci-workloads/fix-gcpt/gcpt.bin" >> $GITHUB_ENV | |
| mkdir -p /nfs/home/ci-runner/xsai-perf/${HEAD_SHA} | |
| mkdir -p /nfs/home/ci-runner/xsai-wave/${HEAD_SHA} | |
| - name: Initialize submodules | |
| run: make init-force | |
| - name: clean up | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean | |
| - name: Build XSAI GSIM emu | |
| run: | | |
| make gsim GSIM=1 CONFIG=DefaultMatrixConfig -j 200 PGO_WORKLOAD=$GITHUB_WORKSPACE/ready-to-run/coremark-2-iteration.bin LLVM_PROFDATA=llvm-profdata WITH_DRAMSIM3=1 DRAMSIM3_HOME=/nfs/home/share/ci-workloads/DRAMsim3 | |
| - name: Simple Test - CoreMark | |
| id: coremark | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci coremark 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/coremark-gsim.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: System Test - Linux | |
| id: linux | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci linux-hello-opensbi 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/linux-gsim.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| docker-build: | |
| name: Docker Build | |
| runs-on: ubuntu-latest | |
| needs: changes | |
| continue-on-error: true | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Build docker image | |
| run: make image | |
| - name: Compile generator JAR | |
| run: make test-jar | |
| emu-xsai-performance: | |
| runs-on: bosc | |
| needs: changes | |
| if: ${{ needs.changes.outputs.core == 'true' }} | |
| continue-on-error: false | |
| timeout-minutes: 900 | |
| name: EMU - XSAI General-Purpose Performance | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: set env | |
| run: | | |
| export HEAD_SHA=${{ github.run_number }} | |
| echo "NOOP_HOME=$GITHUB_WORKSPACE" >> $GITHUB_ENV | |
| 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/xsai-perf/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "WAVE_HOME=/nfs/home/ci-runner/xsai-wave/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "GCPT_RESTORE_BIN=/nfs/home/share/ci-workloads/fix-gcpt/gcpt.bin" >> $GITHUB_ENV | |
| mkdir -p /nfs/home/ci-runner/xsai-perf/${HEAD_SHA} | |
| mkdir -p /nfs/home/ci-runner/xsai-wave/${HEAD_SHA} | |
| - name: Initialize submodules | |
| run: make init-force | |
| - 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 \ | |
| --config DefaultMatrixConfig \ | |
| --pgo $GITHUB_WORKSPACE/ready-to-run/coremark-2-iteration.bin --llvm-profdata llvm-profdata --trace-fst | |
| - name: SPEC06 Test - hmmer-Vector | |
| id: hmmer_vector | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci hmmer-Vector 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/hmmer-Vector.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - mcf | |
| id: mcf | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci mcf --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/mcf.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - xalancbmk | |
| id: xalancbmk | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci xalancbmk --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/xalancbmk.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - gcc | |
| id: gcc | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci gcc --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/gcc.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - namd | |
| id: namd | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci namd --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/namd.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - milc | |
| id: milc | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci milc --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/milc.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - lbm | |
| id: lbm | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci lbm --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/lbm.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - gromacs | |
| id: gromacs | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci gromacs --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/gromacs.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - wrf | |
| id: wrf | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci wrf --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/wrf.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: SPEC06 Test - astar | |
| id: astar | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --max-instr 5000000 --numa --ci astar --gcpt-restore-bin $GCPT_RESTORE_BIN 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/astar.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: Generate summary | |
| if: always() | |
| run: | | |
| echo "## Emu - Performance summary" >> $GITHUB_STEP_SUMMARY | |
| echo "| Testcase | IPC |" >> $GITHUB_STEP_SUMMARY | |
| echo "| -------- | --- |" >> $GITHUB_STEP_SUMMARY | |
| echo "| hmmer-Vector | ${{ steps.hmmer_vector.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| mcf | ${{ steps.mcf.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| xalancbmk | ${{ steps.xalancbmk.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| gcc | ${{ steps.gcc.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| namd | ${{ steps.namd.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| milc | ${{ steps.milc.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| lbm | ${{ steps.lbm.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| gromacs | ${{ steps.gromacs.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| wrf | ${{ steps.wrf.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| echo "| astar | ${{ steps.astar.outputs.IPC }} |" >> $GITHUB_STEP_SUMMARY | |
| emu-xsai-mc: | |
| runs-on: bosc | |
| needs: changes | |
| if: ${{ needs.changes.outputs.core == 'true' }} | |
| continue-on-error: false | |
| timeout-minutes: 900 | |
| name: EMU - XSAI MC | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: set env | |
| run: | | |
| export HEAD_SHA=${{ github.run_number }} | |
| echo "NOOP_HOME=$GITHUB_WORKSPACE" >> $GITHUB_ENV | |
| 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/xsai-perf/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "WAVE_HOME=/nfs/home/ci-runner/xsai-wave/${HEAD_SHA}" >> $GITHUB_ENV | |
| mkdir -p /nfs/home/ci-runner/xsai-perf/${HEAD_SHA} | |
| mkdir -p /nfs/home/ci-runner/xsai-wave/${HEAD_SHA} | |
| - name: Initialize submodules | |
| run: make init-force | |
| - 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 --emu-optimize "" --config DefaultMatrixConfig \ | |
| --dramsim3 /nfs/home/share/ci-workloads/DRAMsim3 --with-dramsim3 --threads 16 \ | |
| --pgo /nfs/home/share/ci-workloads/linux-hello-smp-new/bbl.bin --llvm-profdata llvm-profdata --trace-fst | |
| - 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-new 2> /dev/null | |
| emu-no-matrix: | |
| runs-on: bosc | |
| needs: changes | |
| if: ${{ needs.changes.outputs.core == 'true' }} | |
| continue-on-error: false | |
| timeout-minutes: 900 | |
| name: EMU - XS without Matrix | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: set env | |
| run: | | |
| export HEAD_SHA=${{ github.run_number }} | |
| echo "NOOP_HOME=$GITHUB_WORKSPACE" >> $GITHUB_ENV | |
| 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/xsai-perf/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "WAVE_HOME=/nfs/home/ci-runner/xsai-wave/${HEAD_SHA}" >> $GITHUB_ENV | |
| echo "GCPT_RESTORE_BIN=/nfs/home/share/ci-workloads/fix-gcpt/gcpt.bin" >> $GITHUB_ENV | |
| mkdir -p /nfs/home/ci-runner/xsai-perf/${HEAD_SHA} | |
| mkdir -p /nfs/home/ci-runner/xsai-wave/${HEAD_SHA} | |
| - name: Initialize submodules | |
| run: make init-force | |
| - name: clean up | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean | |
| - name: Build EMU | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build \ | |
| --config DefaultConfig \ | |
| --dramsim3 /nfs/home/share/ci-workloads/DRAMsim3 --with-dramsim3 --threads 16 \ | |
| --pgo $GITHUB_WORKSPACE/ready-to-run/coremark-2-iteration.bin --llvm-profdata llvm-profdata --trace-fst | |
| - name: Simple Test - CoreMark | |
| id: coremark | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci coremark 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/coremark.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| - name: System Test - Linux | |
| id: linux | |
| run: | | |
| python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --wave-dump $WAVE_HOME --threads 16 --numa --ci linux-hello-opensbi 2> perf.log | tee stdout.log | |
| cat perf.log | sort | tee $PERF_HOME/linux.log | |
| echo "IPC=$(grep -oP 'IPC = \K\d+\.\d+' stdout.log)" >> $GITHUB_OUTPUT | |
| check-submodules: | |
| runs-on: ubuntu-latest | |
| needs: changes | |
| if: ${{ needs.changes.outputs.core == 'true' }} | |
| continue-on-error: false | |
| timeout-minutes: 5 | |
| name: Check Submodules | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: 'true' | |
| fetch-depth: '0' | |
| # - name: check rocket-chip | |
| # run: cd rocket-chip && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| - name: check difftest | |
| run: cd difftest && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| - name: check ready-to-run | |
| run: cd ready-to-run && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| - name: check huancun | |
| run: cd huancun && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| - name: check fudian | |
| run: cd fudian && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/pipeline | |
| - name: check utility | |
| run: cd utility && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| - name: check yunsuan | |
| run: cd yunsuan && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| - name: check HBL2 | |
| run: cd coupledL2 && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| - name: check openLLC | |
| run: cd openLLC && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| - name: check ChiselAIA | |
| run: cd ChiselAIA && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/main | |
| - name: check CUTE | |
| run: cd CUTE && git fetch --all && git merge-base --is-ancestor `git rev-parse HEAD` origin/master | |
| scalafmt: | |
| runs-on: ubuntu-latest | |
| needs: changes | |
| if: ${{ needs.changes.outputs.core == 'true' }} | |
| continue-on-error: true | |
| timeout-minutes: 900 | |
| name: Check Format | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: 'recursive' | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '11' | |
| - run: | | |
| mkdir -p ~/.local/bin | |
| sh -c "curl -L https://github.com/com-lihaoyi/mill/releases/download/0.11.7/0.11.7 > ~/.local/bin/mill && chmod +x ~/.local/bin/mill" | |
| export PATH=~/.local/bin:$PATH | |
| - run: make check-format |