Skip to content

cv32e40p layout (GDS) #23

cv32e40p layout (GDS)

cv32e40p layout (GDS) #23

Workflow file for this run

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