Skip to content
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

Michaero/v5.0.0 draft #96

Merged
merged 50 commits into from
May 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
9016e95
Don't use latest register_interface with new AXI version deps
Apr 11, 2022
3a94fd4
Whitespace cleanup of soc_interconnect
May 28, 2021
f65ebc8
Refactor soc_peripherals module
Jun 2, 2021
45983dc
WIP switch to pulp-io
Apr 19, 2022
1dd7e21
instantiate pulp_io and propagate peripheral structure to the top
alfiodm Jul 16, 2021
512f973
Integrate new gpio peripheral
Aug 18, 2021
413d771
Remove unused mode_select port
Sep 7, 2021
c311134
Fix lint error for slice reversal of vector port connection
Sep 7, 2021
2b1348a
Fix lint warnign about slice into integer type
Sep 8, 2021
9670ffc
Fix wrong apb slaves count in soc_peripherals
Sep 18, 2021
cbbd3fa
enable pipeline registers on the axi_lite_to_apb bridge
alfiodm Sep 28, 2021
a0d0c99
Externalize clock generator modules using regbus
Jun 7, 2021
d4397b6
Fix duplicate declaration of GPIO signals
Dec 2, 2022
846a6e3
Bump version
Dec 4, 2022
61b47af
Bump APB version
Dec 4, 2022
8a49c45
Remove obsolete parameter
Dec 7, 2022
bd7c674
Remove internal reset synchronizers
Dec 7, 2022
b1a92c7
Cleanup and reorder connection between pulp_soc and soc_peripherals
Dec 7, 2022
4c3b20e
Remove less than constraint on reg_interface dependency
Dec 7, 2022
c95596a
Move jtag_tap_top to pulp_soc repo where it is actually used
Dec 7, 2022
ff67ee0
Fix bugs in soc_peripherals
Dec 7, 2022
5a71acd
Fix wrong jtag_tap connections in pulp_soc
Dec 7, 2022
31b5fe5
Print timestamp in virtual stdout
Dec 8, 2022
22ba75b
Add hint where boot rom model looks for the binary dump file
Dec 8, 2022
d1fbf8f
Add missing apb chip control signals
Dec 8, 2022
71a3c4a
Add connections for pin level gpio interrupts
Dec 9, 2022
69a2030
Point to stable version of dependencies
Dec 9, 2022
772cc09
Remove obsolete rtl/components files
Dec 9, 2022
a8f9e8b
Remove support for IPApproX
Dec 9, 2022
fc03483
Delete pulpemu files
Dec 9, 2022
cc34b83
Remove obsolete boot_l2 signal
Dec 12, 2022
c72e09e
Add documentation to each toplevel port
Dec 12, 2022
ac552c1
Vendor in reggen tool from register_interface repo using Bender
Dec 12, 2022
15cee69
Replace old apb_soc control with an autogenerated register file
Dec 13, 2022
6829e59
Rename jtag_lint wiring signals
Dec 19, 2022
15c8626
Remove axi_slice
micprog Feb 23, 2024
e75ea7a
Replace axi64_2_lint32 with axi_to_mem_split
micprog Feb 23, 2024
30d0e7e
Use generated ROM for PULPissimo
micprog Feb 26, 2024
bc0ea9d
Update AXI, replace lint2axi with axi_from_mem
micprog Mar 14, 2024
150cd7d
Update changelog
micprog Mar 14, 2024
515bbc2
Bump FPnew dependency
micprog Mar 22, 2024
806134f
Fix vivado issue for peripheral APB demux
micprog Apr 19, 2024
9ceb84c
Fix external AXI buffering
micprog Apr 26, 2024
baf231c
Vivado [Synth 8-9123] fix
micprog May 7, 2024
73edba6
Bump pulp-io dependency to released version
micprog May 13, 2024
1cccc2e
Reduce default L2 size (for small FPGAs)
micprog May 21, 2024
cde263f
Remove FLL dependencies (now in PULPissimo top-level)
micprog May 21, 2024
69971f8
Make spacing/indentation more internally consistent
FrancescoConti May 15, 2024
96f7b13
Change to indent = 2 spaces
FrancescoConti May 15, 2024
e6d223b
More beautification & consistency improvements
FrancescoConti May 15, 2024
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
171 changes: 171 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
# Created by https://www.toptal.com/developers/gitignore/api/python
# Edit at https://www.toptal.com/developers/gitignore?templates=python

### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

### Python Patch ###
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
poetry.toml


# End of https://www.toptal.com/developers/gitignore/api/python
58 changes: 17 additions & 41 deletions Bender.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,69 +13,49 @@ package:
- "Luca Valente <[email protected]>"

dependencies:
L2_tcdm_hybrid_interco: { git: "https://github.com/pulp-platform/L2_tcdm_hybrid_interco.git", version: 1.0.0 }
apb: { git: "https://github.com/pulp-platform/apb.git", version: 0.1.0 }
apb: { git: "https://github.com/pulp-platform/apb.git", version: 0.2.2 }
adv_dbg_if: { git: "https://github.com/pulp-platform/adv_dbg_if.git", version: 0.0.2 }
apb2per: { git: "https://github.com/pulp-platform/apb2per.git", version: 0.1.0 }
apb_adv_timer: { git: "https://github.com/pulp-platform/apb_adv_timer.git", version: 1.0.4 }
apb_fll_if: { git: "https://github.com/pulp-platform/apb_fll_if.git", version: 0.1.3 }
apb_gpio: { git: "https://github.com/pulp-platform/apb_gpio.git", rev: "0e9f142f2f11278445c953ad011fce1c7ed85b66" }
apb_node: { git: "https://github.com/pulp-platform/apb_node.git", version: 0.1.1 }
apb_interrupt_cntrl: { git: "https://github.com/pulp-platform/apb_interrupt_cntrl.git", version: 0.1.1 }
axi: { git: "https://github.com/pulp-platform/axi.git", version: 0.29.1 }
# axi_node: { git: "https://github.com/pulp-platform/axi_node.git", version: 1.1.4 } # deprecated, replaced by axi_xbar (in axi repo)
axi_slice: { git: "https://github.com/pulp-platform/axi_slice.git", version: 1.1.4 } # deprecated, replaced by axi_cut (in axi repo)
apb_interrupt_cntrl: { git: "https://github.com/pulp-platform/apb_interrupt_cntrl.git", version: 0.2.0 }
axi: { git: "https://github.com/pulp-platform/axi.git", version: 0.39.2 }
timer_unit: { git: "https://github.com/pulp-platform/timer_unit.git", version: 1.0.2 }
common_cells: { git: "https://github.com/pulp-platform/common_cells.git", version: 1.21.0 }
cluster_interconnect: { git: "https://github.com/pulp-platform/cluster_interconnect.git", version: 1.1.1 }
fpnew: { git: "https://github.com/pulp-platform/fpnew.git", version: 0.6.6 }
jtag_pulp: { git: "https://github.com/pulp-platform/jtag_pulp.git", rev: v0.2.0 }
cv32e40p: { git: "https://github.com/pulp-platform/cv32e40p.git", rev: "pulpissimo-v4.1.0"}
fpnew: { git: "https://github.com/pulp-platform/cvfpu.git", rev: pulp-v0.1.3 }
jtag_pulp: { git: "https://github.com/pulp-platform/jtag_pulp.git", version: 0.2.0 }
cv32e40p: { git: "https://github.com/pulp-platform/cv32e40p.git", rev: "7a49867b2232d97344cde1b8a1e05bcb38634894"}
ibex: { git: "https://github.com/pulp-platform/ibex.git", rev: "pulpissimo-v6.1.2" }
scm: { git: "https://github.com/pulp-platform/scm.git", version: 1.0.1}
generic_FLL: { git: "https://github.com/pulp-platform/generic_FLL.git", rev: "1c92dc73a940392182fd4cb7b86f35649b349595" }
tech_cells_generic: { git: "https://github.com/pulp-platform/tech_cells_generic.git", version: 0.2.3 }
udma_core: { git: "https://github.com/pulp-platform/udma_core.git", version: 1.1.2 }
udma_uart: { git: "https://github.com/pulp-platform/udma_uart.git", version: 1.0.2 }
udma_i2c: { git: "https://github.com/pulp-platform/udma_i2c.git", version: 2.0.0 }
udma_i2s: { git: "https://github.com/pulp-platform/udma_i2s.git", version: 1.1.2 }
udma_qspi: { git: "https://github.com/pulp-platform/udma_qspi.git", version: 1.0.4 }
udma_sdio: { git: "https://github.com/pulp-platform/udma_sdio.git", version: 1.1.2 }
udma_camera: { git: "https://github.com/pulp-platform/udma_camera.git", version: 1.1.2 }
udma_filter: { git: "https://github.com/pulp-platform/udma_filter.git", version: 1.0.3 }
udma_external_per: { git: "https://github.com/pulp-platform/udma_external_per.git", version: 1.0.4 }
udma_hyper: { git: "https://github.com/pulp-platform/udma_hyper.git", rev: "83ab704f9d1c5f9e5353268c901fe95c36bcea36" }
pulp_io: { git: "https://github.com/pulp-platform/pulp-io.git", version: 0.1.0 }
hwpe-mac-engine: { git: "https://github.com/pulp-platform/hwpe-mac-engine.git", version: 1.3.3 }
riscv-dbg: { git: "https://github.com/pulp-platform/riscv-dbg.git", version: 0.5.0 }
register_interface: { git: "https://github.com/pulp-platform/register_interface.git", version: 0.3.1 }
register_interface: { git: "https://github.com/pulp-platform/register_interface.git", version: 0.4.1 }

sources:
# pulp_soc
- include_dirs:
- rtl/include
files:
- rtl/pulp_soc/pkg_soc_interconnect.sv
- rtl/pulp_soc/axi64_2_lint32_wrap.sv
- rtl/pulp_soc/lint_2_axi_wrap.sv
- rtl/pulp_soc/contiguous_crossbar.sv
- rtl/pulp_soc/interleaved_crossbar.sv
- rtl/pulp_soc/tcdm_demux.sv
- rtl/pulp_soc/boot_rom.sv
- rtl/pulp_soc/l2_ram_multi_bank.sv
- rtl/pulp_soc/lint_jtag_wrap.sv
- rtl/pulp_soc/periph_bus_wrap.sv
- rtl/pulp_soc/soc_clk_rst_gen.sv
- rtl/pulp_soc/soc_event_arbiter.sv
- rtl/pulp_soc/soc_event_generator.sv
- rtl/pulp_soc/soc_event_queue.sv
- rtl/pulp_soc/tcdm_error_slave.sv
- rtl/pulp_soc/soc_interconnect.sv
- rtl/pulp_soc/soc_interconnect_wrap.sv
- rtl/pulp_soc/soc_ctrl_reg/src/soc_ctrl_reg_pkg.sv
- rtl/pulp_soc/soc_ctrl_reg/src/soc_ctrl_reg_top.sv
- rtl/pulp_soc/soc_peripherals.sv
- rtl/pulp_soc/jtag_tap_top.sv
- rtl/pulp_soc/pulp_soc.sv
# udma_subsystem
- files:
- rtl/udma_subsystem/udma_subsystem.sv
# fc
- target: rtl
defines:
Expand All @@ -94,21 +74,17 @@ sources:
# components
- files:
- rtl/components/apb_clkdiv.sv
- rtl/components/apb_soc_ctrl.sv
- rtl/components/memory_models.sv
- rtl/components/pulp_interfaces.sv
- rtl/components/glitch_free_clk_mux.sv
- rtl/components/scm_2048x32.sv
- rtl/components/scm_512x32.sv
- rtl/components/tcdm_arbiter_2x1.sv
- rtl/components/obi_pulp_adapter.sv
# components_rtl
- files:
- rtl/components/glitch_free_clk_mux.sv
- rtl/components/apb_dummy.sv
target: rtl
# components_behav
- files:
- rtl/components/freq_meter.sv
- rtl/components/tb_fs_handler.sv
target: all(rtl, not(synthesis))
external_import:
- name: reggen
target_dir: "util"
upstream: { git: "https://github.com/pulp-platform/register_interface.git", rev: "e3a4955071fcf554febd4b29a7c7a52c7f1e7fc6"}
mapping:
- { from: 'vendor/lowrisc_opentitan/util', to: 'reggen'}
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
- Use pulp-io for peripherals -> updated udma subsystem and corresponding peripherals
- Use new gpio peripheral
- Externalize clock generator modules
- Remove IPApproX support
- Clean up & update dependencies
- Update AXI to TCDM IPs

## [4.4.0] - 2022-06-10
- Bump cv32e40p to pulpissimo-v4.1.0 (Unlock all interrupts and increases fpu latency)

Expand Down
27 changes: 27 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
.DEFAULT_GOAL := help

VENVDIR?=$(WORKDIR)/.venv
REQUIREMENTS_TXT?=$(wildcard requirements.txt)
include Makefile.venv

.PHONY: regenerate_soc_ctrl
## Regenerate the register file and HAL C-header the soc_ctrl register.
micprog marked this conversation as resolved.
Show resolved Hide resolved
regenerate_soc_ctrl: | venv
@echo Regenerating SoC control register...
$(VENV)/python util/reggen/regtool.py rtl/pulp_soc/soc_ctrl_reg/soc_ctrl_reg.hjson -r -t rtl/pulp_soc/soc_ctrl_reg/src
$(VENV)/python util/reggen/regtool.py rtl/pulp_soc/soc_ctrl_reg/soc_ctrl_reg.hjson --cdefines -o rtl/pulp_soc/soc_ctrl_reg/hal/soc_ctrl_reg_hal.h
@echo "Done"

.PHONY: help
help: Makefile
@printf "Pulp SoC Reconfiguration\n"
@printf "Available targets\n\n"
@awk '/^[a-zA-Z\-_0-9]+:/ { \
helpMessage = match(lastLine, /^## (.*)/); \
if (helpMessage) { \
helpCommand = substr($$1, 0, index($$1, ":")-1); \
helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
printf "%-15s %s\n", helpCommand, helpMessage; \
} \
} \
{ lastLine = $$0 }' $(MAKEFILE_LIST)
Loading