-
Notifications
You must be signed in to change notification settings - Fork 3
97 lines (89 loc) · 6.16 KB
/
bus-wrap.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
name: Run UVM tests
on:
push: # This now triggers on pushes to any branch
jobs:
Bus-Wrap:
runs-on: ubuntu-latest
name: Generate
steps:
- name: Set variables
run: |
github_repo=${{ github.repository }}
github_repo=${github_repo#*/}
echo "BUSWRAP_PATH=./bus-wrap" >> $GITHUB_ENV
echo "BUSWRAP_REPO=efabless/BusWrap" >> $GITHUB_ENV
echo "IP_PATH=./ip" >> $GITHUB_ENV
echo "IP_NAME=${github_repo}" >> $GITHUB_ENV
- name: Install iverilog
run: |
sudo apt-get update -qq
sudo apt-get install -y iverilog
- name: Install dependencies
shell: bash
run: |
sudo apt-get -y install --no-install-recommends git python3 python3-click python3-unidiff
- name: Install Verible
uses: chipsalliance/verible-actions-common/install-verible@main
- uses: actions/checkout@v4
name: Checkout ${{ env.BUSWRAP_REPO }}
with:
repository: ${{ env.BUSWRAP_REPO }}
path: ${{ env.BUSWRAP_PATH }}
- uses: actions/checkout@v4
name: Checkout ${{ github.repository }}
with:
path: ${{ env.IP_PATH }}
- name: Execute BusWrap flow
run: |
set -x
ip_dir=${{ env.IP_PATH }}
ip_name=${{ env.IP_NAME }}
bus_wrap_dir=${{ env.BUSWRAP_PATH }}
rm -rf ${ip_dir}/hdl/rtl/bus_wrappers
rm -rf ${ip_dir}/README.md
rm -rf ${ip_dir}/verify/README.md
rm -rf ${ip_dir}/fw/${ip_name}_regs.h
git -C ${{ env.IP_PATH }} status
mkdir -p ${ip_dir}/hdl/rtl/bus_wrappers/dft
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -apb > ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_APB.dev.v
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -apb -dft > ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_APB_DFT.dev.v
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -wb > ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_WB.dev.v
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -wb -dft > ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_WB_DFT.dev.v
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -ahbl > ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_AHBL.dev.v
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -ahbl -dft > ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_AHBL_DFT.dev.v
iverilog -E -I$bus_wrap_dir/includes/rtl -o ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_APB.v ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_APB.dev.v
iverilog -E -I$bus_wrap_dir/includes/rtl -o ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_APB_DFT.v ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_APB_DFT.dev.v
iverilog -E -I$bus_wrap_dir/includes/rtl -o ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_WB.v ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_WB.dev.v
iverilog -E -I$bus_wrap_dir/includes/rtl -o ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_WB_DFT.v ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_WB_DFT.dev.v
iverilog -E -I$bus_wrap_dir/includes/rtl -o ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_AHBL.v ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_AHBL.dev.v
iverilog -E -I$bus_wrap_dir/includes/rtl -o ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_AHBL_DFT.v ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_AHBL_DFT.dev.v
verible-verilog-format --inplace ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_APB.v
verible-verilog-format --inplace ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_APB_DFT.v
verible-verilog-format --inplace ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_WB.v
verible-verilog-format --inplace ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_WB_DFT.v
verible-verilog-format --inplace ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_AHBL.v
verible-verilog-format --inplace ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_AHBL_DFT.v
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -ahbl -md | head -n -18 > ${ip_dir}/README.md
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -ahbl -md | tail -n 18 > ${ip_dir}/README.md
# fw
python3 $bus_wrap_dir/scripts/bus_wrap.py ${ip_dir}/${ip_name}.yaml -ch > ${ip_dir}/fw/${ip_name}_regs.h
# remove extra lines and comment
sed -i '/^$/N;/^\n$/D' ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_APB.v
sed -i '/^$/N;/^\n$/D' ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_APB_DFT.v
sed -i '/^$/N;/^\n$/D' ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_WB.v
sed -i '/^$/N;/^\n$/D' ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_WB_DFT.v
sed -i '/^$/N;/^\n$/D' ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_AHBL.v
sed -i '/^$/N;/^\n$/D' ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_AHBL_DFT.v
# add line between timescale and default_nettype
sed -i 's/`timescale 1ns \/ 1ps `default_nettype none/`timescale 1ns \/ 1ps\n`default_nettype none/' ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_APB.v
sed -i 's/`timescale 1ns \/ 1ps `default_nettype none/`timescale 1ns \/ 1ps\n`default_nettype none/' ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_APB_DFT.v
sed -i 's/`timescale 1ns \/ 1ps `default_nettype none/`timescale 1ns \/ 1ps\n`default_nettype none/' ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_WB.v
sed -i 's/`timescale 1ns \/ 1ps `default_nettype none/`timescale 1ns \/ 1ps\n`default_nettype none/' ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_WB_DFT.v
sed -i 's/`timescale 1ns \/ 1ps `default_nettype none/`timescale 1ns \/ 1ps\n`default_nettype none/' ${ip_dir}/hdl/rtl/bus_wrappers/${ip_name}_AHBL.v
sed -i 's/`timescale 1ns \/ 1ps `default_nettype none/`timescale 1ns \/ 1ps\n`default_nettype none/' ${ip_dir}/hdl/rtl/bus_wrappers/dft/${ip_name}_AHBL_DFT.v
# - name: Push output files to a branch
# - name: Create a pullrequest from the branch to main
- name: Check output
run: |
git -C ${{ env.IP_PATH }} status
git -C ${{ env.IP_PATH }} diff