How raphaelpinheiro26/tt_um_fp8_fpu works
This repository implements an FP8 E4M3 floating-point unit for Tiny Tapeout, alongside exact reference modeling and verification. The principal workflow is an operation request entering the RTL interface, being processed by the FPU, and producing a result with flags and exceptions. Separate branches generate reference vectors, check RTL behavior through simulation and UVM, prove selected protocol properties formally, and characterize hardening metrics. RTL internals are represented at module level, but their call relationships are not established by the sampled source; those links are therefore omitted or marked unverified.
Main entry points: fp8_components.py UVM Components · fp8_math.py Exact FP8 Model · gen_vectors_math.py Vector Generator · fp8_bfm.py Pin-Level BFM
Components 27
FP8 RTL
- Tiny Tapeout Wrapper
src/tt_um_fp8_fpu.v - FP8 Unit
src/tiny_fp8_unit.v - Operation Controller
src/fp8_controller.v - Elastic Pipeline
src/fp8_elastic_pipeline.v - Execute Datapath
src/fp8_execute_comb.v - Direct Operations
src/fp8_direct_ops.v - Iterative Division
src/fp8_div_iter.v - Operand Unpack
src/fp8_unpack.v - Result Normalize
src/fp8_normalize.v - Result Rounding
src/fp8_round.v - Handshake Register
src/fp8_handshake_reg.v - Pre-Execute
src/fp8_pre_execute.v - Format And Opcodes
src/header_fp8.v
Reference Model
- Format Utilities
Golden_model/fp8_common.py - Exact FP8 Model
Golden_model/fp8_math.py - Vector Generator
Golden_model/gen_vectors_math.py - Reference Vectors
Golden_model/vectors.hex
Verification
- UVM Sequences
verification/uvm/pyuvm/fp8_seq.py - UVM Transactions
verification/uvm/pyuvm/fp8_item.py - Pin-Level BFM
verification/uvm/pyuvm/fp8_bfm.py - UVM Components
verification/uvm/pyuvm/fp8_components.py - UVM Reference Adapter
verification/uvm/pyuvm/fp8_ref.py - Formal Properties
verification/formal - Scan Verification
verification/dft
Hardening Metrics
- Metrics Collector
flow/collect_metrics.py - Clock Sweep
flow/sweep_clock.py
Other components
- Operation Source
Connections 11
- Operation Source → Tiny Tapeout Wrapper: sends operation
- Format Utilities → Exact FP8 Model: provides format utilities
Golden_model/fp8_math.py - Exact FP8 Model → Vector Generator: computes expected values
Golden_model/gen_vectors_math.py - Vector Generator → Reference Vectors: writes vectors
Golden_model/gen_vectors_math.py - UVM Sequences → UVM Transactions: creates transactions
verification/uvm/pyuvm/fp8_seq.py - UVM Components → Pin-Level BFM: drives and monitors
verification/uvm/pyuvm/fp8_components.py - UVM Components → UVM Transactions: publishes transactions
verification/uvm/pyuvm/fp8_components.py - UVM Components → UVM Reference Adapter: predicts results
verification/uvm/pyuvm/fp8_components.py - Exact FP8 Model → UVM Reference Adapter: supplies reference math
verification/uvm/pyuvm/fp8_ref.py - Pin-Level BFM → Tiny Tapeout Wrapper: drives and samples pins
- Clock Sweep → Metrics Collector: reads metrics
flow/sweep_clock.py