Skip to content

Bumped Spatz Core Complex#51

Open
luca24balboni wants to merge 1 commit intomainfrom
lb/spatz-integration
Open

Bumped Spatz Core Complex#51
luca24balboni wants to merge 1 commit intomainfrom
lb/spatz-integration

Conversation

@luca24balboni
Copy link
Contributor

@luca24balboni luca24balboni commented Mar 11, 2026

Spatz Core Complex Integration

Hardware Changes

New RTL Modules

  • spatz_cc_wrapper.sv: Main wrapper instantiating Snitch scalar core + Spatz vector coprocessor with HCI/OBI connectivity
  • obi_slave_ctrl_spatz.sv: OBI slave interface with 7 memory-mapped control registers (CLK_EN, READY, START, TASKBIN, DATA, RETURN, DONE) at base 0x1700
  • spatz_bootrom.sv: Minimal 3-instruction bootROM (load from TASKBIN, jump to dispatcher, NOT combinatorial)
  • eu_direct_cut.sv: Direct connection for SPATZ_DONE signal to Event Unit

Protocol Converters (hw/tile/converters/)

  • reqrsp2obi.sv, reqrsp64_to_obi32.sv: Req/Rsp to OBI conversion
  • tcdm2hci.sv, tcdm2hci_atomic.sv: TCDM to HCI conversion with/without atomics
  • tcdm2obi.sv: TCDM to OBI conversion
  • tcdm64_to_dual_hci32.sv, tcdm64_to_dual_hci32_atomic.sv: 64-bit to dual 32-bit HCI
  • tcdm64_to_dual_tcdm32.sv: 64-bit to dual 32-bit TCDM

Modified RTL

  • magia_tile.sv: Integrated Spatz CC, added HCI port array, OBI slave interface, clock gating for Spatz CC
  • magia_tile_pkg.sv: Added Spatz configuration parameters (VLEN, N_FPU, RVD, RVF, XDIVSQRT), address definitions
  • magia_event_unit.sv: Added SPATZ_DONE event input and EU_SPATZ_DONE_MASK (bit 16)
  • Icache: Switched to version without non-resettable flip-flops

NoC Updates

  • Updated FlooNoC to support new ID needed for the new icache. Modified all mesh sizes config and RTL files (also magia.sv)

Build System

Makefile Changes

  • Auto-detection: Scans test sources for *_TASK symbols, automatically builds Spatz binary when needed
  • Binary embedding: Converts Spatz ELF to C header with SPATZ_BINARY_START and task offsets
  • Task naming convention: *_task.cint *_task(void)*_TASK symbol in header
  • Configuration parameters: SPATZ_RVD, SPATZ_VLEN, SPATZ_N_FPU, SPATZ_N_IPU, SPATZ_RVF, SPATZ_XDIVSQRT

Scripts

  • generate_spatz_bootrom.py: Generates bootROM RTL from assembly
  • bin2header.py: Converts Spatz ELF to C header with symbol offsets

Bender

  • Updated dependencies and includes for Spatz IP integration

Note: This is a large PR touching many files with significant architectural changes. The spatz/ directory contains all Spatz-specific software (bootrom, runtime, tasks, build system). Additional minor modifications and cleanups may be present throughout the codebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant