cv32e40p layout (GDS) #23
This file contains 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
name: cv32e40p layout (GDS) | |
on: | |
workflow_dispatch: | |
inputs: | |
svTranslator: | |
description: 'SystemVerilog to Verilog translator' | |
default: 'sv2v' | |
type: choice | |
options: | |
- sv2v | |
- svase | |
- surelog | |
env: | |
installDir: ${{ github.workspace }}/coriolis-2.x/Linux.x86_64/Release.Shared/install | |
jobs: | |
cv32e40p-layout: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
path: coriolis-2.x/src/core-v-180-mcu | |
- uses: actions/checkout@v3 | |
with: | |
repository: lip6/alliance | |
path: coriolis-2.x/src/alliance | |
- uses: actions/checkout@v3 | |
with: | |
repository: lip6/alliance-check-toolkit | |
path: coriolis-2.x/src/alliance-check-toolkit | |
- uses: actions/checkout@v3 | |
with: | |
repository: google/gf180mcu-pdk | |
submodules: true | |
path: coriolis-2.x/src/gf180mcu-pdk | |
- name: Update APT cache | |
run: sudo apt-get update | |
- name: Install software dependencies | |
run: > | |
sudo apt-get install libboost-all-dev rapidjson-dev \ | |
python-dev-is-python3 python3-doit python3-orderedmultidict \ | |
qtbase5-dev qtbase5-dev-tools libqt5svg5-dev libqwt-qt5-dev \ | |
libeigen3-dev liblemon-dev \ | |
autotools-dev automake \ | |
libxt-dev libxpm-dev libmotif-dev \ | |
tcl-dev libffi-dev haskell-stack wget unzip | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
- name: Download & install C4M gf180mcu | |
run: | | |
cd ${{ github.workspace }}/coriolis-2.x/src/ | |
wget https://download.opensuse.org/repositories/home:/chips4makers:/releases/xUbuntu_22.04/openpdks-c4m-gf180mcu_0.0.3.orig.tar.gz | |
tar zxvf openpdks-c4m-gf180mcu_0.0.3.orig.tar.gz | |
- name: Cache installed tools | |
id: cache-tools | |
uses: actions/cache@v3 | |
with: | |
key: cache-tools-${{ inputs.svTranslator }} | |
path: ${{ env.installDir }} | |
- if: ${{ (steps.cache-tools.outputs.cache-hit != 'true') && (inputs.svTranslator == 'sv2v') }} | |
uses: actions/checkout@v3 | |
with: | |
repository: zachjs/sv2v | |
path: coriolis-2.x/src/sv2v | |
- if: ${{ (steps.cache-tools.outputs.cache-hit != 'true') && (inputs.svTranslator == 'sv2v') }} | |
name: Build sv2v | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
cd ${{ github.workspace }}/coriolis-2.x/src/sv2v | |
make | |
mkdir -p ${{ env.installDir }}/bin | |
cp ./bin/sv2v ${{ env.installDir }}/bin | |
- if: ${{ (steps.cache-tools.outputs.cache-hit != 'true') && (inputs.svTranslator == 'svase') }} | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
repository: jpc-lip6/svase | |
path: coriolis-2.x/src/svase | |
- if: ${{ (steps.cache-tools.outputs.cache-hit != 'true') && (inputs.svTranslator == 'svase') }} | |
name: Build svase | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
cd ${{ github.workspace }}/coriolis-2.x/src/svase | |
make all | |
mkdir -p ${{ env.installDir }}/bin | |
cp ./build/svase ${{ env.installDir }}/bin | |
- if: ${{ (steps.cache-tools.outputs.cache-hit != 'true') && (inputs.svTranslator == 'surelog') }} | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
repository: chipsalliance/synlig | |
path: coriolis-2.x/src/synlig | |
- if: ${{ (steps.cache-tools.outputs.cache-hit != 'true') && (inputs.svTranslator == 'surelog') }} | |
name: Build Synlig/Surelog | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
cd ${{ github.workspace }}/coriolis-2.x/src/synlig | |
git submodule update --init --recursive third_party/{surelog,yosys} | |
sed -i -e 's,INSTALL_PATH=.*,INSTALL_PATH=${{ env.installDir }},' ./build_binaries.sh | |
./build_binaries.sh | |
- if: ${{ (steps.cache-tools.outputs.cache-hit != 'true') && (inputs.svTranslator != 'surelog') }} | |
uses: actions/checkout@v3 | |
with: | |
repository: YosysHQ/yosys | |
path: coriolis-2.x/src/yosys | |
ref: yosys-0.24 | |
- if: ${{ (steps.cache-tools.outputs.cache-hit != 'true') && (inputs.svTranslator != 'surelog') }} | |
name: Build Yosys | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
cd ${{ github.workspace }}/coriolis-2.x/src/yosys | |
make ENABLE_PYOSYS=1 config-gcc | |
make ENABLE_PYOSYS=1 \ | |
PREFIX=${{ env.installDir }} \ | |
PYTHON_DESTDIR=${{ env.installDir }}/lib64/python3/dist-packages \ | |
LIBDIR=${{ env.installDir }}/lib64/yosys \ | |
DATDIR=${{ env.installDir }}/share/yosys \ | |
install | |
- name: Link Yosys into /usr/bin | |
run: | | |
sudo ln -s ${{ env.installDir }}/bin/* /usr/bin/ | |
- name: Check Yosys share directory | |
run: ls -1 ${{ github.workspace }}/coriolis-2.x/Linux.x86_64/Release.Shared/install/share/yosys | |
#- name: Build Alliance | |
# run: | | |
# export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
# ${{ github.workspace }}/coriolis-2.x/src/coriolis/bootstrap/allianceInstaller.sh --github-runner=${{ github.workspace }} | |
- if: ${{ steps.cache-tools.outputs.cache-hit != 'true' }} | |
uses: actions/checkout@v3 | |
with: | |
repository: lip6/coriolis | |
submodules: true | |
ref: wip-gf180mcu-2 | |
path: coriolis-2.x/src/coriolis | |
- if: ${{ steps.cache-tools.outputs.cache-hit != 'true' }} | |
name: Build Coriolis | |
run: | | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
${{ github.workspace }}/coriolis-2.x/src/coriolis/bootstrap/ccb.py --root=${{ github.workspace }}/coriolis-2.x --project=coriolis --make="-j4 install" | |
- name: Check for binaries | |
run: ls -1 ${{ github.workspace }}/coriolis-2.x/Linux.x86_64/Release.Shared/install/bin | |
- name: Build the layout of cv32e40p | |
run: | | |
export SV_TRANSLATOR=${{ inputs.svTranslator }} | |
export CORIOLIS_TOP=${{ env.installDir }} | |
cd ${{ github.workspace }}/coriolis-2.x/src/core-v-180-mcu/coriolis | |
../../alliance-check-toolkit/bin/crlenv.py --verbose | |
../../alliance-check-toolkit/bin/crlenv.py -- doit pnr | |
- name: Archive test design set logs | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cv32e40p-gds | |
path: | | |
${{ github.workspace }}/coriolis-2.x/src/core-v-180-mcu/coriolis/cv32e40p_core.v | |
${{ github.workspace }}/coriolis-2.x/src/core-v-180-mcu/coriolis/cv32e40p_core.blif | |
${{ github.workspace }}/coriolis-2.x/src/core-v-180-mcu/coriolis/chip_r.gds | |
${{ github.workspace }}/coriolis-2.x/src/core-v-180-mcu/coriolis/chip_r.vst | |
${{ github.workspace }}/coriolis-2.x/src/core-v-180-mcu/coriolis/chip_r.spi | |
retention-days: 5 |