All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add switch between cluster and non-cluster configuration: elaboration time parameter (when not there, AXI signals to the cluster are routed to SLV_ERR, signals from the cluster are tied-off to '0)
- Add number of peripherals as configurable parameters to be chosen at the very top-level (or use default)
- Add memory sizes as configurable parameters to be chosen at the very top-level (or use default)
- Add DMA into fabric controller (single-core side) to handle sensor transfers: the DMA in the cluster can then come back to its original role, i.e. moving data horizontally between FC and cluster, keeping telemetry
- Add JTAG manufacturer code with PULP
- Add fast shadow interrupts in CLIC and CV32 core
- Change location of
gpio
assignments: removesafe_domain.sv
source file - Connect dft test mode signals (89d5df3e and b78f1588)
- Refactor clock and reset generation (move the module in the top-level instead of hidden in the hierarchy)
- Move L1 cluster memory within cluster hierarchy again (needed for other projects such as chips)
- Overhaul package handling
- Update DMA version in the cluster DMA: now FC (see above) and cluster DMAs are the same, updated, IP
- Fix cluster timer reference clock (wrong wiring)
- Map bus errors to regular CLINT interrupts
- Fix some unconnected dft signals (22b7ff32)
- Add srec loading support in testbench
- Add spyglass linting flow
- Add vcs support
- Add basic verilator support
- Add uart boot
- Bump axi
- Use filelists for generic synthesis
- Clean up global defines
- Fix CV32 Tracer for multi-cycle APU instructions and ZFINX
- Fix multiple driven signals in tb fixture
- Uniquified output for ipstools so that we don't have duplicate modules anymore
- Fix Address width when instantiating rom macro
- Fix misaligned 64-bit access for fw rtl test
- Updated
riscv-dbg
tov4.1.0
- Various lint issues
- Update memory wrappers for L2, L1 and cluster cache data/tag fields. Memories are now parameterized with
BEHAV_MEM
parameter, which arbitrates between a behavioral model (tc_sram
) and a memory macro. - Clean and streamline RTL and FPGA top-level modules: removed several levels of hierarchies between modules and aligned modules' names as agreed.
- Clean and streamline RTL and FPGA testbench directory: decouple testbenches simulation driver process from the device under test (DUT) to avoid code replication and ease maintainability.
- Update power control FW RTL simulation test to latest realease
- Update README.md files to align with new naming and modules structure
- Add
SIM_TOP
variable in the simulation process to seamlessly select the top-level tb for a specific simulation. - Add
SIM_STDOUT
parameter to control simulation stdout - Add
MACRO_ROM
parameter to arbitrate between synthesizable ROM and a macro ROM. - Add
ips/tech_mem
folder to store memory macros (L2, L1, cluster cache data and tag) - Add I2C slave test and testbenches (RTL/FGPA)
- Add Watchdog timer (WDT) alert and clear-alert top-level signals to notify the TMB to drive pms reset when a failure happens, preventing the pms to drive its own reset.
- Remove legacy and unused IPs (legacy FPGA emulation modules, legacy RTC, legacy PLIC
- Remove legacy PLIC tests from CI
- Remove legacy documentation from classic PULP/PULPissimo
- Fix several I/O-specific bugs from previous release (GPIOs, I2C slave ...)
- Fix CLIC tests to be compliant with latest CLIC release
- Fix WDT formatting and code structure
- Overhaul FPU configuration in RTL/ASIC and FPGA: 9 private FPUs (1 SoC, 8 Cluster) and one shared DIVSQRT unit in the Cluster
- Bump freertos to fe6e67
- Bump PMS FW to 0fe697
- Memory-map bootmode selection: choose whether to select the bootmode from an input signal (bootsel_i) or via register writing
- Add peripheral demultiplexer for direct core-DMA connection in the Cluster
- Add ACK/NACK acknowledgment from I2C slave devices when issuing from I2C master
- Add CLIC interrupt controller: route external/software/timer interrupts to the CLIC and redirects them to the core. Replaces the PLIC for external interrupt lines.
- asic: Add synthesis flow GF22 for control-pulp top level module
- asic: Add post-synthesis simulation flow with control-pulp top-level netlist
- Improve verification environment:
- Select AXI preloaded boot testbench as default
- Simulate control-pulp ASIC top-level module (control_pulp_top_with_mem) with exploded ports instead of array/struct top-level (control_pulp_with_mem)
- Add PMS FW loop testbench + test
- Add basic SCMI testbench + test
- Add basic ACPI testbench + test
- Add PVT register reading test from the Cluster
- fpga: Add peripherals (I2CM, SPIM, UART, GPIO) to control-pulp top-level FPGA wrapper
- fpga: Add end-to-end FPGA Linux flow: bitstream, Linux images and Linux rootfs generation for Xlinx ZCU102
- fpga: Clean FPGA testbenches with exact control-pulp FPGA top-level wrapper used with the board
- Add generic file list generation. Now used to compile hw with questasim.
- Remove PLIC interrupt controller for external interrupts
- Fix FPU interconnect wrong multiplexing between FPU and external DIV/SQRT unit for cotnrol-pulp ASIC/FPGA
- Fix width mismatch with private memory-cuts for control-pulp ASIC/FPGA
- Fix uDMA clock-gating for control-pulp FPGA (bypass clock gating for FPGA flow)
- Fix wrong reset connected to timer module in control-pulp SoC ASIC/FPGA
- Fix soc_clk_o (AXI and SoC clock) propagation for control-pulp top-level FPGA
- Fix wrong system reset connected to control_pulp top-level
- Fix HW compilation warnings (unconnected/undeclared signals)
- Switch pulp-riscv-gnu-toolchain to
v2.2.0
in the CI (to be changed further in the future) - Bump pulp-runtime to
v0.0.10
- Bump tech_cells_generic to
v0.2.4
- Bump (1:1 manual integration) pulp_soc to
v2.1.0
. This mainly consists of consistent changes in thesoc_interconnect
- Bump pulp_cluster to
cluster-axi-update
dev branch (not released yet). This mainly consists of consistent changes incluster_interconnect
andcluster_bus
backbones - Bump cluster_peripherals to
v2.0.0
- Bump cluster_interconnect to
v1.1.0
- Bump icache_mp_128_pf to
6f2e54102001230db9c82432bf9e011842419a48
- Bump hier-icache to
v1.2.0
- Bump mchan to
5104953034dd0df46d574b3c4c839618079342ba
- Bump axi to
v0.28.0
- Set internal AXI ID and data width values within
pulp_soc
according to AXI xbar routing rules - Change AXI clock domain crossing setup between
pulp_soc
andpulp_cluster
with novelaxi_cdc_src
andaxi_cdc_dst
halves modules - Decouple bootroms between RTL/ASIC and FPGA
- Overhaul top-level module port list according to specifications
- Add Xilinx IP to model PMS cluster L1 memory in the FPGA implementation
- Add dummy PMS firmware (no I/O) to CI
- Add Verible support for code linting/formatting
- Add cv32e40p IP from 91e7c749 (pulp-platform fork)
- Add ASIC synthesis constraints in the
synth
directory - Add one private, per-core FPU in the cluster accelerator
- Add
float16
,bfloat16
andfloat SIMD
FPU support - Add Platform Level Interrupt Controller (PLIC) for interrupt handling
- Remove
soc_node
for AXI traffic. Newsoc_interconnect
exploit its function. - Remove sdk-releases directory
- Novel cluster interconnects give rise to a DRC error during FPGA placement, fixed with a set of two constraints
- Add soc and cluster in the same clock domain
- Make clock configurable. The actual setup has two main clocks,
sys_clk
andref_clk
. The former generates the clock for the SoC and the peripherals. The latter generates the 32 kHz timer clock. - Expose memory cuts to top-level ports. In order to allow the IP to be tested without internal memory, we add a wrapper
control_pulp_with_mem
that instantiates either L2 memory (SoC) and L1 (Cluster) and is used in the testbenches. - Overhaul AXI ports to be specifications-compliant: 1 AXI mst and 1 AXI slv
- Add intermediate level of structs for AXI ports. This is actually the primitive module (
control_pulp_structs
) instantiated withincontrol_pulp_with_mem
module - Overhaul I/O interfaces to be specifications-compliant
- Bump
axi
tov0.26.0
- Bump
common_cells
tov1.20.1
-
Add pulp-runtime
v0.0.5
as subtree -
Add
common_verification
v0.1.1
-
Add
control_pulp
module with flatten AXI ports and I/O ports, the top-level IP of the PMS. It does instantiatecontrol_pulp_structs
-
Add SPI slave and
I2C slaveI/O modules -
Add independent bootrom, third boot mode (
PRELOADED
, from an external entity). Overhaul bootrom fallback -
Add testbenches for:
- Executing software and test AXI master port (tb_control_pulp_aximst.sv)
- Testing AXI slave port (tb_control_pulp_axislv.sv)
- Testing SPI slave port (tb_control_pulp_spi_slv.sv)
- Executing software and test AXI master port on FPGA wrapper (tb_control_pulp_aximst-txilzu9eg.sv)
- Testing AXI slave port on FPGA wrapper (tb_control_pulp_axislv-txilzu9eg.sv)
- Testing bootrom (tb_bootrom.sv)
- Executing software and test AXI master port using PRELOADED boot, i.e. with binary loaded through AXI slave port (tb_control_pulp_axi_boot.sv)
- Executing software and test AXI master port using PRELOADED boot, i.e. with binary loaded through AXI slave port on the FPGA wrapper (tb_control_pulp_axi_boot-txilzu9eg.sv)
-
Add FPGA implementation:
- Add RTL wrapper for FPGA, i.e. Vivado compliant (control_pulp_txilzu9eg.sv)
- Add control_pulp IP packaging, block design creation, synthesis and implementation scripts (
fpga/
folder)
-
Add tests to CI:
- AXI master port test
- AXI slave port test
- SPI slave port test
- Bootrom test
- PRELOADED boot of control_pulp test
- FPGA synthesis/implementation test replaces the previous implementation
- Remove FLLs for clock generation
- Remove HWPE accelerator support
- Remove IBEX core support
- Remove unused I/O peripherals (e.g. camera interface)
- Remove L2 memory (SoC) and L1 memory (Cluster) from the design
- Rephrase FPGA implementation w.r.t. release [1.3.0]
- Enable ZFINX everywhere
- Add verification rams to noc and nocr07 axi out ports
- Add noc/nocr07 tests
- Add simple dc elaboration and generic synthesis test
- do not try to git pull when invoking ipstools
- access to noc and nocr07 from control pulp's view
- various tests
- various synthesis/elaboration problems
- Bump wdt to
v0.2
(multi driven net fix) - Bump ipstools to 7c60243f
- Misc cleanups of code style (instance names, indentation, ...)
- Update CONTRIBUTING.md (workflow)
- Third boot mode by widening bootsel to 2 bits. Allows sms to boot by accessing memory mapped registers.
- Allow
generate-scripts
passing arguments to vlog
- Backport fixes from
pulp_soc
v1.2.0
- parametrization of
NBIT_PADCFG
,NUM_GPIO
- Constrain parameters to legal values
- hartsel instantation as for loop instead of for gen loop
- Declare constant functions before usage (dc synth fix)
- parametrization of
- Fully expand parameters in instantiations
- Explod star in
pulp_soc
- Remove dead
boot_l2
signal
- Bump
pulp_cluster
to 741bbc94 - Pull updates from
pulp_soc
v1.1.1 - Setup scripts improvement
- Add
make help
target - Support minimal runtime (pulp-runtime) and tests
- Allow fetch enable to be controlled by signals or register access
- Various CI issues
- Remove dead parameters
- Clearly seperate pad frame stuff for simulation from control-pulp top-level
- Make SPI signals parametrizable
- Make I2C signals parametrizable
- Update sdk to
2019.12.05
- Disable FPGA synthesis in CI (broken)
- Flatten all IPS with
git subtree
- Fork PULP from
pulp-next-bluewww
- Add
axi_data_width_converter.sv
from theaxi_dwc
(4cc7c1e) branch ofaxi
- Top-level for control-pulp
- Add gitlab CI (rtl, PULP software tests, fpga synthesis) and pipeline badge
- Add wdt and accompanying test
- Add
soc_node
(AXI interconnect for external AXI interfaces)
- AXI id widths from cluster to soc
- Use new
udma
- Update
README.m
with FPGA usage instructions - Move tests to subfolder
tests
- Allow setting entry point with
-gENTRY_POINT
- Update to sdk-release 2019.11.02
- Bump
pulp_soc
tov1.1.0
- DPI models for peripherals
- PMP support in RI5CY
- Debug module compliant with RISC-V External Debug Support v0.13.1
- Support for Xcelium
FPGA support for genesys2(WIP)FPGA support for Xilinx ZCU104(WIP)FPGA support for Xilinx ZCU102(WIP)FPGA support for Nexys Video(WIP)FPGA support for Zedboard(WIP)- ibex support
- Improved software debugging (disassembly in simulator window)
- Gitlab CI (fpga synthesis, software tests, debug module tests)
- Automatic handling of VIPs (installing and compiling)
- CHANGELOG.md
- CI support for pulp-runtime to run tests, using bwruntest.py and tests/runtime-tests.yaml
- Support for custom debug module
- zero-riscy support in the fabric controller
- JTAG issues
- Bad pad mux configuration
- Various jenkins CI issues
- Bootsel behavior
- Bugs in debug module integration
- AXI width issues
- USE_HWPE parameter propagation
- I2C EEPROM can now be concurrently used with I2C DPI model
- Small quartus compatibility fixes
- Many minor tb issues
- Properly propagate NB_CORES
- Initial release