Skip to content

SoC-1 top-level spec: block list, memory map, boot flow #3

Description

@WJiangH

Deliverable: docs/spec/soc_1.md (status: draft) per docs/spec/TEMPLATE.md conventions, via PR with deliverable manifest.

Target (acceptance, verbatim)

sky130 @ 50 MHz; stream stories15M int8 weights from external flash; generate text token-by-token over UART, bit-exact vs PyTorch reference; sustained >= 10 tok/s (conservative, per ADR-0002 bandwidth tables).

Constraints

  • Pure open-source flow; Yosys-native SV subset (ADR-0001)
  • Area scenario (c) free-form die per ADR-0002 (Tiny Tapeout ruled out there)
  • Wishbone B4 pipelined on-chip bus, sync active-low rst_n (CLAUDE.md)
  • CPU: PicoRV32 (ADR-0003, merged); NPU: 1x8 weight-streaming GEMV (ADR-0002, accepted)

Inputs (in-repo, cite them)

  • workloads/tinystories/profile.md — shapes, SRAM sizing, bandwidth
  • explore/npu-dse/results.md + docs/adr/0002 — NPU config + area/bandwidth numbers
  • docs/adr/0003 — CPU integration notes

External references (architecture level only; implementation code goes through IP intake later)

  • PicoSoC (in the PicoRV32 repo) — CPU + SPI flash XIP + UART arrangement precedent
  • Caravel harness conventions (clocking/reset/pad organization)
  • Wishbone B4 spec
    Every block decision must cite data or precedent — uncited decisions get bounced by the integrator.

Spec must cover

Block list with integrate/adapt/build tag per block; memory map; boot flow (ROM -> firmware load -> NPU dispatch); NPU weight-stream path (dedicated channel vs shared bus — justify with bandwidth numbers from ADR-0002); external flash controller requirements (the tokens/s-critical block); interrupt map; clocking/reset; system-infrastructure blocks (reset sync, pad ring note).

Register strategy

Note SystemRDL/PeakRDL as the intended register source-of-truth (reference: caliptra-rtl workflow) in open questions — do not implement tooling now.

Open questions section: everything needing human ruling before status moves past draft.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions