Skip to content

Draft: Major updates #435

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 62 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
7c92ea6
Add zyboz7 FPGA port
micprog Apr 22, 2024
24a8353
Make vsim compilation properly stop at errors + update runtime for CV…
FrancescoConti May 5, 2024
0ab6d4e
Add extremely preliminary FIR XIFU
FrancescoConti May 5, 2024
5866b31
Fix missing deps in manually hacked Bender.lock
FrancescoConti May 7, 2024
6af8d64
Update Bender.lock, Bender.yml, Xilinx constraints, memory size.
FrancescoConti May 11, 2024
4ae9651
Fix Bender.lock
FrancescoConti May 11, 2024
313a2d9
Use deps in GitHub only
FrancescoConti May 11, 2024
5f9c992
Fix Bender.lock manually
FrancescoConti May 11, 2024
cb455fe
Update Bender + update runtime + add minimal test for XIFU
FrancescoConti May 15, 2024
8abe60a
Add symlinks to FIR HWPE & XIFU + CV32E40X + pulp_soc to deps folder
FrancescoConti May 15, 2024
ba79d88
Update Bender.yml/lock with beautified pulp_soc
FrancescoConti May 15, 2024
14a62ae
In this branch, use CORE_TYPE=3 (CV32E40X)
FrancescoConti May 15, 2024
e69a949
Update pulp_soc version
FrancescoConti May 15, 2024
4d6b495
Fix pulp_soc
FrancescoConti May 15, 2024
2dd3062
Fix defaults to CV32E40X in the right places
FrancescoConti May 15, 2024
5e85bd3
Adapt to LLVM-based setup + tracing in CV32E40X
FrancescoConti May 19, 2024
d97c5da
Log all signals automatically in QuestaSim
FrancescoConti May 19, 2024
4df67b1
Update versions + tests, working XIFU
FrancescoConti May 22, 2024
ea4e376
remove ssh from Bender.lock and .yml
FrancescoConti May 23, 2024
41d9535
Realign Bender + sw submodules after rebase (to check)
FrancescoConti May 25, 2024
c800588
Update pulp_soc
FrancescoConti May 25, 2024
c0edc2d
Fix potential (?) syntax error on some machines
FrancescoConti May 31, 2024
c6a54d4
Update fir-xifu (and pulp_soc)
FrancescoConti May 31, 2024
39b48ff
Add synthesis dependencies
FrancescoConti Jul 26, 2024
0fa54bc
Improvements to ease non-free synthesis flow
FrancescoConti Jul 26, 2024
be268ec
point CI to LLVM (currently, EFCL Summer School version) in this branch
FrancescoConti Jul 26, 2024
2e2b98a
Add tiny entry in README + small fix to make checkout-synthesis rule
FrancescoConti Oct 25, 2024
fe55493
Initial support for Verilator (not really tested)
FrancescoConti Jan 16, 2025
efa307e
Cleanup of tb_pulp.sv
FrancescoConti Jan 17, 2025
939ecd2
Update Verilated Bender.yml, minor tb_pulp fix, Verilator tracing with
FrancescoConti Jan 21, 2025
30ef384
Minor fixes
FrancescoConti Jan 21, 2025
948c689
Further minor fix
FrancescoConti Jan 21, 2025
f710a0b
Update pulp-runtime for Verilator support with platform=verilator
FrancescoConti Jan 21, 2025
bbd234e
Support bootmode=fast_debug in Verilator
FrancescoConti Jan 21, 2025
6d62950
Minor fixes to tb_pulp.sv to support bootmode=fast_preload in verilator
FrancescoConti Jan 23, 2025
68bab14
Update adv_dbg_if in pulp_soc
FrancescoConti Jan 23, 2025
69761a8
Trying to restore CI
FrancescoConti Jan 23, 2025
aa453b8
Add back missing wires in tb_pulp.sv
FrancescoConti Jan 23, 2025
92a1025
Update pulp-runtime to fix OpenRISC (!!!) code being targeted in CI!
FrancescoConti Jan 31, 2025
d32fbba
Add fake synch_barrier for single-core tests
FrancescoConti Jan 31, 2025
2dbe5a7
Fix Bender typo introduced in 39b48ff that prevented FPGA synthesis
FrancescoConti Jan 31, 2025
2b56236
Update pulp-runtime
FrancescoConti Jan 31, 2025
d10b3f4
Add draft of Verilator CI
FrancescoConti Feb 1, 2025
4e5f72a
Change container stuff for Verilator CI
FrancescoConti Feb 1, 2025
5a93977
Add actual sanity test for Verilator (minimal)
FrancescoConti Feb 1, 2025
9d7856c
Small changes
FrancescoConti May 13, 2025
6ebffdb
Add Verilator-based CI
FrancescoConti May 13, 2025
d602672
fix dependency setup -> tests
FrancescoConti May 13, 2025
db062db
verilator-ci: add forgotten source script to verilator CI tests
FrancescoConti May 13, 2025
c2aef4e
verilator-ci: remove hello world test
FrancescoConti May 13, 2025
fa822bf
verilator-ci: source correct runtime
FrancescoConti May 13, 2025
5225349
verilator-ci: fix typo
FrancescoConti May 13, 2025
cdee25f
verilator-ci: update pulp-runtime with tiny fix to ITB generation
FrancescoConti May 13, 2025
cbecb14
fix to itb generation to enable CI (again)
FrancescoConti May 13, 2025
f1e6a56
verilator-ci: check verilator version
FrancescoConti May 14, 2025
c978d11
Avoid fetching bender, use the preinstalled one
FrancescoConti May 14, 2025
234149b
verilator-ci: fix Bender.lock............
FrancescoConti May 14, 2025
18708d6
verilator-ci: directly download SW env in tests instead of setup (whi…
FrancescoConti May 14, 2025
a0e5198
verilator-ci: revert from using artifacts: slower and tricky
FrancescoConti May 14, 2025
217868e
verilator-ci: remove broken deps
FrancescoConti May 14, 2025
61ef332
verilator-ci: remove testHWLP (not passing, also in VSIM!
FrancescoConti May 15, 2025
6168353
gitlab-ci: workaround: tcl_files symlink seems not to work in CI, rep…
FrancescoConti May 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions .github/workflows/verilator-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Copyright 2024 ETH Zurich and University of Bologna.
# Solderpad Hardware License, Version 0.51, see LICENSE for details.
# SPDX-License-Identifier: SHL-0.51

# Some CI tests run on our GitLab servers due to licenses and tools
name: verilator-ci
on: [push, pull_request, workflow_dispatch]
jobs:
verilator-ci:
name: Public Verilator CI
runs-on: ubuntu-22.04
container:
image: fconti/pulp-verilator:latest
volumes:
- ${{ github.workspace }}:/workspaces
strategy:
matrix:
test: [
sequential_bare_tests/dct,
sequential_bare_tests/fft2,
sequential_bare_tests/rijndael,
sequential_bare_tests/jacobi-2d-imper,
sequential_bare_tests/bitDescriptor,
sequential_bare_tests/stencil_vect,
sequential_bare_tests/keccak,
sequential_bare_tests/fir,
sequential_bare_tests/stencil,
sequential_bare_tests/ipm,
sequential_bare_tests/towerofhanoi,
sequential_bare_tests/crc32,
sequential_bare_tests/conv2d,
sequential_bare_tests/seidel,
sequential_bare_tests/fibonacci,
sequential_bare_tests/gauss-2d,
sequential_bare_tests/aes_cbc,
sequential_bare_tests/bubblesort,
sequential_bare_tests/fdtd-1d,
sequential_bare_tests/jacobi-1d-imper,
sequential_bare_tests/fft,
riscv_tests/testBitManipulation,
riscv_tests/testVecCmp,
riscv_tests/testAddSubNorm,
riscv_tests/testMisaligned,
riscv_tests/testALU,
riscv_tests/testMAC3,
riscv_tests/testVecArith,
riscv_tests/testDotMul,
riscv_tests/testVecLogic,
riscv_tests/testCnt,
riscv_tests/testVecRelat,
riscv_tests/testShufflePack,
riscv_tests/testMUL,
# riscv_tests/testHWLP,
riscv_tests/testMacNorm,
riscv_tests/testVariadic,
riscv_tests/testMAC,
riscv_tests/testLoadStore,
riscv_tests/testALUExt,
riscv_tests/testBuiltins
]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Check container environment
run: |
echo "Running on:"
cat /etc/os-release
- name: Check Verilator version
shell: bash
run: |
cd /workspaces
verilator --version
- name: Verilate
shell: bash
run: |
cd /workspaces
mkdir -p utils/bin && touch utils/bin/bender
make checkout
make verilate
- name: Checkout software
shell: bash
run: |
git submodule update --init --recursive
- name: SW tests
shell: bash
env:
VERILATOR_PATH: /workspaces/build/verilator
run: |
cd /workspaces
source sw/pulp-runtime/configs/pulpissimo_cv32.sh
cd sw/regression_tests/${{ matrix.test }}
make clean all run platform=verilator bootmode=fast_debug
1 change: 1 addition & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ build_rtl:
- make build
- echo "Fetching VIPs"
- ./target/sim/vip/get-vips.sh --yes # --gitlab
- rm -rf build/questasim/tcl_files; cp -R target/sim/questasim/tcl_files build/questasim/tcl_files # workaround: tcl_files symlink seems not to work in CI, replacing it with copy
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA"
paths:
Expand Down
100 changes: 75 additions & 25 deletions Bender.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
packages:
adv_dbg_if:
revision: 19eeef8cae1cbec7413877b3f29fe0bd078748d7
version: 0.0.2
revision: 040cdc9131e2dcda9d6053cb302d115ac8020b72
version: null
source:
Git: https://github.com/pulp-platform/adv_dbg_if.git
dependencies: []
Expand Down Expand Up @@ -41,8 +41,8 @@ packages:
- apb
- common_cells
axi:
revision: 9402c8a9ce0a7b5253c3c29e788612d771e8b5d6
version: 0.39.3
revision: 39f5f2d51c5e524f6fc5cf8b6e901f7dcc5622d7
version: 0.39.6
source:
Git: https://github.com/pulp-platform/axi.git
dependencies:
Expand All @@ -57,16 +57,16 @@ packages:
dependencies:
- common_cells
common_cells:
revision: 0d67563b6b592549542544f1abc0f43e5d4ee8b4
version: 1.35.0
revision: c27bce39ebb2e6bae52f60960814a2afca7bd4cb
version: 1.37.0
source:
Git: https://github.com/pulp-platform/common_cells.git
dependencies:
- common_verification
- tech_cells_generic
common_verification:
revision: 9c07fa860593b2caabd9b5681740c25fac04b878
version: 0.2.3
revision: fb1885f48ea46164a10568aeff51884389f67ae3
version: 0.2.5
source:
Git: https://github.com/pulp-platform/common_verification.git
dependencies: []
Expand All @@ -79,6 +79,29 @@ packages:
- common_cells
- fpnew
- tech_cells_generic
cv32e40x:
revision: fe5e7f41ad284b5aee583a727503bb6f1097daab
version: null
source:
Git: https://github.com/pulp-platform/cv32e40x.git
dependencies: []
fir-hwpe:
revision: 0397301c727e2f232e0f508fbdc13401c023fa26
version: 2.0.2
source:
Git: https://github.com/pulp-platform/fir-hwpe.git
dependencies:
- hci
- hwpe-ctrl
- hwpe-stream
- zeroriscy
fir-xifu:
revision: 2b1a71fa7310c20ae0824b93669766713ebcec88
version: 0.1.3
source:
Git: https://github.com/pulp-platform/fir-xifu.git
dependencies:
- cv32e40x
fpnew:
revision: a8e0cba6dd50f357ece73c2c955d96efc3c6c315
version: null
Expand Down Expand Up @@ -112,21 +135,22 @@ packages:
- common_verification
- register_interface
- tech_cells_generic
hci:
revision: d31af36ebcaf2196fb51676b40782aa8cbd9cc69
version: null
source:
Git: https://github.com/pulp-platform/hci.git
dependencies:
- cluster_interconnect
- hwpe-stream
- l2_tcdm_hybrid_interco
hwpe-ctrl:
revision: 1916c72f024175f1fe351acc3db3c6e9925a117d
version: 1.7.3
revision: 877d676329785f7bba042402e0a6f329a387573d
version: null
source:
Git: https://github.com/pulp-platform/hwpe-ctrl.git
dependencies:
- tech_cells_generic
hwpe-mac-engine:
revision: cd48c574f1972ecbe02d3f463a0e12a92acde484
version: 1.3.3
source:
Git: https://github.com/pulp-platform/hwpe-mac-engine.git
dependencies:
- hwpe-ctrl
- hwpe-stream
hwpe-stream:
revision: 65c99a4a2f37a79acee800ab0151f67dfb1edef1
version: 1.8.0
Expand All @@ -147,6 +171,12 @@ packages:
source:
Git: https://github.com/pulp-platform/jtag_pulp.git
dependencies: []
l2_tcdm_hybrid_interco:
revision: fa55e72859dcfb117a2788a77352193bef94ff2b
version: 1.0.0
source:
Git: https://github.com/pulp-platform/L2_tcdm_hybrid_interco.git
dependencies: []
pulp_io:
revision: da6f8817b667f17973ecb19cb1e7aa4347108716
version: 0.1.0
Expand All @@ -166,8 +196,8 @@ packages:
- udma_sdio
- udma_uart
pulp_soc:
revision: bf65372aab4edd404160170e2a4d2c63b27ab5f2
version: 5.0.1
revision: c783d4724acf0585ba5534e6b24257a52a4800ef
version: null
source:
Git: https://github.com/pulp-platform/pulp_soc.git
dependencies:
Expand All @@ -180,8 +210,10 @@ packages:
- cluster_interconnect
- common_cells
- cv32e40p
- cv32e40x
- fir-hwpe
- fir-xifu
- fpnew
- hwpe-mac-engine
- ibex
- jtag_pulp
- pulp_io
Expand All @@ -190,6 +222,12 @@ packages:
- scm
- tech_cells_generic
- timer_unit
pulpissimo_essentials:
revision: null
version: null
source:
Path: target/synthesis/bender/pulpissimo_essentials
dependencies: []
pulpissimo_optional_vips:
revision: null
version: null
Expand All @@ -213,8 +251,8 @@ packages:
- common_cells
- register_interface
register_interface:
revision: ae616e5a1ec2b41e72d200e5ab09c65e94aebd3d
version: 0.4.4
revision: 5daa85d164cf6b54ad061ea1e4c6f3624556e467
version: 0.4.5
source:
Git: https://github.com/pulp-platform/register_interface.git
dependencies:
Expand Down Expand Up @@ -243,12 +281,18 @@ packages:
Git: https://github.com/pulp-platform/tbtools.git
dependencies: []
tech_cells_generic:
revision: 7968dd6e6180df2c644636bc6d2908a49f2190cf
version: 0.2.13
revision: 8149cde5a03521065ce602891f227df53b128581
version: null
source:
Git: https://github.com/pulp-platform/tech_cells_generic.git
dependencies:
- common_verification
tech_cells_gf22fdx:
revision: null
version: null
source:
Path: target/synthesis/bender/tech_cells
dependencies: []
timer_unit:
revision: 4c69615c89db9397a9747d6f6d6a36727854f0bc
version: 1.0.3
Expand Down Expand Up @@ -328,3 +372,9 @@ packages:
dependencies:
- common_cells
- udma_core
zeroriscy:
revision: cc4068a0ccb7691cd062b809c34b2304e7fbfa36
version: null
source:
Git: https://github.com/yvantor/ibex.git
dependencies: []
28 changes: 24 additions & 4 deletions Bender.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,17 @@ dependencies:
common_cells: { git: "https://github.com/pulp-platform/common_cells.git", version: 1.21.0 }
apb: { git: "https://github.com/pulp-platform/apb.git", version: 0.2.4 }
jtag_pulp: { git: "https://github.com/pulp-platform/jtag_pulp.git", version: 0.2.0 }
pulp_soc: { git: "https://github.com/pulp-platform/pulp_soc.git", version: 5.0.1 }
pulp_soc: { git: "https://github.com/pulp-platform/pulp_soc.git", rev: c783d47 } # branch fc/verilator
tbtools: { git: "https://github.com/pulp-platform/tbtools.git", version: 0.2.1 }
tech_cells_generic: { git: "https://github.com/pulp-platform/tech_cells_generic.git", version: 0.2.3 }
tech_cells_generic: { git: "https://github.com/pulp-platform/tech_cells_generic.git", rev: 8149cde } # branch fc/verilator
pulpissimo_padframe_rtl_sim: { path: "hw/padframe/pulpissimo_padframe_rtl_sim_autogen" }
pulpissimo_padframe_fpga: { path: "hw/padframe/pulpissimo_padframe_fpga_autogen" }
register_interface: { git: "https://github.com/pulp-platform/register_interface.git", version: 0.4.1 }
generic_FLL: { git: "https://github.com/pulp-platform/generic_FLL.git", version: 0.2.0 }
apb_fll_if: { git: "https://github.com/pulp-platform/apb_fll_if.git", version: 0.2.1 }
# the following dependencies are non-free, and will be ignored in a free setup
tech_cells_gf22fdx: { path: "target/synthesis/bender/tech_cells" }
pulpissimo_essentials: { path: "target/synthesis/bender/pulpissimo_essentials" }


# Target Specific Dependencies
Expand Down Expand Up @@ -66,7 +69,25 @@ sources:
- hw/padframe/padframe_adapter.sv
- hw/clock_gen_fpga.sv

- target: simulation
# For Verilator RTL simulation
- target: verilator
files:
- hw/padframe/padframe_adapter.sv
- hw/clock_gen_verilator.sv
- target/sim/tb/tb_lib/riscv_pkg.sv
- target/sim/tb/tb_lib/jtag_pkg.sv
- target/sim/tb/tb_lib/pulp_tap_pkg.sv
- target/sim/tb/tb_lib/tb_clk_gen.sv
- target/sim/tb/tb_lib/SimJTAG.sv
- target/sim/tb/tb_pulp.sv

# For Verilator RTL simulation
- target: verilator_dpi
files:
- target/sim/tb/tb_lib/remote_bitbang/sim_jtag.c
- target/sim/tb/tb_lib/remote_bitbang/remote_bitbang.c

- target: all(simulation, not(verilator))
files:
- target/sim/tb/tb_lib/riscv_pkg.sv
- target/sim/tb/tb_lib/jtag_pkg.sv
Expand All @@ -78,7 +99,6 @@ sources:
- target/sim/tb/tb_pulp.sv
- target/sim/tb/tb_pulp_simple.sv


vendor_package:
# Import the GPIO repository directly. Since we have to regenerate the RTL
# when we change the number GPIOs we cannot just depend on it as a regular
Expand Down
18 changes: 16 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,12 @@
# limitations under the License.
#
# Author: Manuel Eggimann

# Check if bender is in PATH; if yes, use it; if not, use $(PULPISSIMO_UTILS)/bender
ifeq (, $(shell which bender 2>/dev/null))
BENDER ?= $(PULPISSIMO_UTILS)/bender
else
BENDER ?= bender
endif
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path))))
PULPISSIMO_ROOT=$(abspath $(current_dir)/..)
Expand All @@ -23,14 +28,23 @@ ifneq (,$(wildcard /etc/iis.version))
endif

include target/sim/questasim/Makefile
include target/sim/verilator/Makefile
include target/lint/spyglass/Makefile
include target/fpga/Makefile
include $(PULPISSIMO_ROOT)/utils/utils.mk

# ignore synthesis targets if only free setup available
-include target/synthesis/Makefile

.PHONY: checkout
## Checkout all Bender IPs
checkout: $(PULPISSIMO_UTILS)/bender
$(PULPISSIMO_UTILS)/bender checkout
$(BENDER) checkout

.PHONY: checkout-synthesis
checkout-synthesis: $(PULPISSIMO_UTILS)/bender
git clone --recursive [email protected]:pulp-restricted/pulpissimo-synthesis target/synthesis
$(BENDER) update

.PHONY: hw bootrom padframe
## Re-generate generated hardware IPs
Expand Down
Loading
Loading