No description
  • Python 52.1%
  • SystemVerilog 39.5%
  • Assembly 5%
  • Makefile 1.2%
  • Tcl 1.2%
  • Other 1%
Find a file
Dragos Bajanica 30e9ed2e8b Add the Python host library with cocotb, ISS, and SPI backends
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 17:56:56 -05:00
.devcontainer Add the podman dev image, the CMOS5L PDK setup, and the M2 SRAM probe 2026-10-31 22:24:13 -04:00
docs Add the Python host library with cocotb, ISS, and SPI backends 2026-11-11 17:56:56 -05:00
host Add the Python host library with cocotb, ISS, and SPI backends 2026-11-11 17:56:56 -05:00
impl/harden Drop the autopull and autopush word merge, add second-stage write enables, and move the TX host bypass 2026-11-06 23:42:01 -05:00
isa Rewrite the datapath shifters, reset the FIFO storage, and record the open area work 2026-11-01 22:00:51 -05:00
src Add the tt_um_protean top level 2026-11-11 17:49:11 -05:00
sw Test every protocol at its slowest and fastest rate and finish M1 2026-10-31 22:03:31 -04:00
tools Drop the autopull and autopush word merge, add second-stage write enables, and move the TX host bypass 2026-11-06 23:42:01 -05:00
verif Add the Python host library with cocotb, ISS, and SPI backends 2026-11-11 17:56:56 -05:00
.gitignore Review the specification and add the ISA file, generators, assembler, and linker 2026-10-30 19:42:04 -04:00
.rules.verible_lint Review the specification and add the ISA file, generators, assembler, and linker 2026-10-30 19:42:04 -04:00
.verible-verilog-format Review the specification and add the ISA file, generators, assembler, and linker 2026-10-30 19:42:04 -04:00
AGENTS.md Wrap the SRAM macro in imem and model it for simulation 2026-11-11 17:15:37 -05:00
info.yaml Review the specification and add the ISA file, generators, assembler, and linker 2026-10-30 19:42:04 -04:00
LICENSE Review the specification and add the ISA file, generators, assembler, and linker 2026-10-30 19:42:04 -04:00
Makefile Add the Python host library with cocotb, ISS, and SPI backends 2026-11-11 17:56:56 -05:00
PLAN.md Add the SPI and QSPI host bus 2026-11-11 17:26:00 -05:00
README.md Review the specification and add the ISA file, generators, assembler, and linker 2026-10-30 19:42:04 -04:00
TODO.md Add the Python host library with cocotb, ISS, and SPI backends 2026-11-11 17:56:56 -05:00

Protean

Protean is a general-purpose protocol emulator for the Jane Street protocol emulator ASIC competition, built on the Tiny Tapeout IHP shuttle. Four hardware contexts run transport-triggered programs from an on-chip SRAM. They take turns on one shared datapath in fixed time slots, so each context has its own timing and the design has one trace in cycle order. A host loads programs and data over SPI or QSPI.

Status

The specification is reviewed. Development has started with the ISA file and the tools. TODO.md holds the work order and the schedule.

Architecture at a glance

  • IHP SG13G2, 130 nm, CMOS5L, 6x4 tiles, 50 MHz core clock.
  • Four contexts in a fixed-slot barrel. Each runs at up to 12.5 MHz, or 25 MHz with two slots.
  • 512 instruction words in an IHP SRAM macro, enough to keep every protocol resident.
  • 32-bit instructions. Each is one guarded transport from a source port to a destination port, with a side-set and a delay.
  • Guards that skip or wait. ALU ports with immediates. A zero-overhead repeat.
  • Per context: PC, four 16-bit registers, 32-bit OSR and ISR, 4-word TX and RX FIFOs, a fractional divider.
  • Pin writes aligned at period boundaries, so contexts started together run in lockstep.
  • TX and RX line coders for CAN and USB, with their own divider. Two 16-bit CRC contexts.
  • FIFO chaining for bridges, a timestamp for sniffing, pin-pair loopback for self-test.
  • The TPSM SPI and QSPI host bus.

Protocols

UART, SPI master and slave, I2C, PS/2, JTAG, SWD, CAN 2.0 with arbitration and ACK, USB Low-Speed packets, 1-Wire, WS2812, a pin sniffer, and bridges. docs/protocols.md has the programs.

Documents

Document Contents
PLAN.md Goal, settled decisions, rules, risks
TODO.md Work order, schedule, cut list
AGENTS.md Rules for working in this repository
docs/review.md Review of the earlier designs
docs/requirements.md Requirements
docs/decisions.md Decision log
docs/arch.md Hardware specification
docs/isa.md Instruction set
docs/host.md Host interface and configuration map
docs/protocols.md Protocol programs
docs/verification.md Verification plan
docs/tooling.md Tools and build
docs/tempo.md The timed language

Lineage

Protean follows TPSM, a two-slot TTA, and Tessera, a PIO-style multi-machine design. It keeps TPSM's transports, line coder, host bus, and verification flow, and Tessera's independent program counters. docs/review.md explains why.

License

Licensed under the Apache License, Version 2.0.

Copyright 2026 Dragos Bajanica.