140 TinyMind SoC

140 : TinyMind SoC

Design render

TinyMind SoC

TinyMind SoC is a small educational processor-controlled inference accelerator implemented in Verilog for TinyTapeout.

The project demonstrates how a simple inference algorithm can evolve into a clocked digital system containing:

  • a tiny custom CPU
  • a program counter
  • a small program ROM
  • CPU registers
  • a clocked TinyMind accelerator
  • START/BUSY/DONE control
  • result registers
  • confidence calculation
  • a seven-segment output interface

The design runs at 10 MHz.

The purpose of TinyMind is educational: to make it possible to follow a computation from a simple mathematical equation through RTL, registers, clock cycles, processor control, synthesis, standard cells, physical implementation, and ultimately GDS.


How it works

1. High-Level Architecture

The final TinyMind design is organized as a small System-on-Chip:

                     10 MHz CLOCK
                          │
                          ▼
                  ┌───────────────┐
                  │   Tiny CPU    │
                  │               │
ui_in[7:0] ──────►│ Program       │
                  │ Counter       │
                  │               │
                  │ ACC Register  │
                  │               │
                  │ Program ROM   │
                  └───────┬───────┘
                          │
                          ▼
                  ┌───────────────┐
                  │   TinyMind    │
                  │  Accelerator  │
                  │               │
                  │ Feature Reg   │
                  │               │
                  │ Score Logic   │
                  │               │
                  │ Winner Logic  │
                  │               │
                  │ Result Regs   │
                  └───────┬───────┘
                          │
                          ▼
                  ┌───────────────┐
                  │  CPU Result   │
                  │   Registers   │
                  └───────┬───────┘
                          │
                          ▼
                  ┌───────────────┐
                  │ Seven-Segment │
                  │    Decoder    │
                  └───────┬───────┘
                          │
                          ▼
                     uo_out[7:0]

The CPU controls the TinyMind accelerator.

The accelerator performs the inference calculation.

The CPU captures the result and makes it available to the seven-segment display.


2. Input Features

TinyMind receives eight binary input features through:

ui_in[7:0]

Each bit represents a yes/no answer:

0 = No
1 = Yes

The features are:

Input Meaning
ui_in[0] Likes mathematics
ui_in[1] Likes programming
ui_in[2] Likes electronics
ui_in[3] Likes physics
ui_in[4] Likes data and patterns
ui_in[5] Likes building things
ui_in[6] Likes design and creativity
ui_in[7] Likes experimentation and research

For example:

ui_in = 10100101

represents one particular combination of the eight features.


3. Tiny CPU

The SoC contains a deliberately small custom CPU/controller.

The CPU includes:

Program Counter
      +
8-bit ACC Register
      +
Result Registers
      +
Control Logic
      +
Program ROM

This CPU is intentionally simple.

It is not RISC-V and does not implement a standard instruction-set architecture.

Instead, it demonstrates the fundamental processor concept:

Program Counter
      │
      ▼
Instruction
      │
      ▼
Execute Operation
      │
      ▼
Update State
      │
      ▼
Next Instruction

4. Program Counter

The Program Counter, or PC, keeps track of which instruction the CPU is currently executing.

Conceptually:

PC = 0
  ↓
WAIT_RUN

clock ↑

PC = 1
  ↓
READ_INPUT

clock ↑

PC = 2
  ↓
WRITE_FEATURE

clock ↑

PC = 3
  ↓
START

The PC is sequential state and is therefore implemented using flip-flops after synthesis.


5. Program ROM

The CPU executes a fixed eight-step program.

PC Instruction Operation
0 WAIT_RUN Wait for run enable
1 READ_INPUT Capture the external feature vector
2 WRITE_FEATURE Write the feature vector to TinyMind
3 START Start the TinyMind accelerator
4 WAIT_DONE Wait for inference to finish
5 READ_RESULT Capture the accelerator result
6 DISPLAY Present the captured result
7 LOOP Return for another inference

The program flow is:

WAIT_RUN
    │
    ▼
READ_INPUT
    │
    ▼
WRITE_FEATURE
    │
    ▼
START
    │
    ▼
WAIT_DONE
    │
    ▼
READ_RESULT
    │
    ▼
DISPLAY
    │
    ▼
LOOP
    │
    └──────────────► READ_INPUT

Because this program is extremely small, the Verilog description does not require a large physical memory.

Synthesis can implement the instruction-selection logic using ordinary combinational standard cells.


6. CPU Accumulator

The CPU contains an 8-bit register called acc.

During READ_INPUT, the CPU captures:

ui_in[7:0]

into:

acc[7:0]

Conceptually:

ui_in = 10100101
        │
        │ READ_INPUT
        │ clock ↑
        ▼
┌─────────────────┐
│ ACC = 10100101  │
└─────────────────┘

The accumulator allows the CPU to remember the feature vector while it performs later instructions.


7. Writing the TinyMind Feature Register

During the WRITE_FEATURE instruction, the CPU presents the contents of the accumulator to the TinyMind accelerator.

CPU ACC
   │
   ▼
feature_data
   │
   ▼
TinyMind Feature Register

The CPU generates a one-cycle feature_write signal.

On the corresponding clock edge, TinyMind captures the eight feature bits.

The design now contains state on both sides:

CPU Register
     │
     ▼
TinyMind Register

8. Starting the Accelerator

During the START instruction, the CPU generates a one-cycle start signal.

Conceptually:

CPU
 │
 │ START
 ▼
TinyMind

TinyMind responds by asserting:

BUSY = 1
DONE = 0

The CPU then reaches the WAIT_DONE instruction.


9. TinyMind Inference

TinyMind evaluates three fixed-weight scoring functions.

AI-oriented score
score_ai =
x0 + x1 + x4 - x5 + x7 + 1
Hardware-oriented score
score_hardware =
x0 + x2 + x3 + x5 - x6
Creative-oriented score
score_creative =
-x1 - x2 + x5 + x6 + x7 + 1

Conceptually, the three score paths operate in parallel:

                Feature Register
                       │
           ┌───────────┼───────────┐
           │           │           │
           ▼           ▼           ▼
       AI Score    Hardware     Creative
                    Score        Score
           │           │           │
           └───────────┼───────────┘
                       │
                       ▼
                 Winner Logic

This is one of the important differences between thinking about an algorithm as software and implementing it directly as hardware.

The three score expressions are represented by combinational logic rather than being executed one after another by the TinyMind accelerator.


10. Winner Selection

After calculating the three scores, TinyMind determines which score is largest.

The internal class encoding is:

00 = AI-oriented
01 = Hardware-oriented
10 = Creative-oriented

Tie priority is:

AI > Hardware > Creative

For example:

AI       = 4
Hardware = 2
Creative = 3

Winner = AI

11. Confidence

TinyMind also identifies the second-highest score.

Confidence is calculated as:

confidence =
winning score - second-highest score

For example:

AI       = 5
Hardware = 2
Creative = 3

Therefore:

winning score = 5
second score  = 3

confidence = 5 - 3 = 2

The stored confidence value is limited to a maximum value of 9.


12. Close Prediction

TinyMind also generates a close_prediction result.

It is asserted when:

confidence margin <= 1

For example:

AI       = 4
Hardware = 3
Creative = 1

The margin is:

4 - 3 = 1

Therefore:

close_prediction = 1

This signal is ultimately connected to the decimal-point output.


13. Result Registers

The TinyMind accelerator stores:

result_class
confidence
close_prediction

in clocked registers.

The fundamental accelerator datapath is therefore:

FEATURE REGISTER
       │
       ▼
COMBINATIONAL
INFERENCE LOGIC
       │
       ▼
RESULT REGISTERS

This is the classic synchronous digital structure:

REGISTER
   ↓
LOGIC
   ↓
REGISTER

14. BUSY and DONE

The CPU and accelerator communicate using a simple handshake.

CPU
 │
 │ START
 ▼
TinyMind
 │
 ├── BUSY = 1
 │
 │   inference
 │
 └── DONE = 1
        │
        ▼
       CPU

The sequence is:

START
  │
  ▼
BUSY
  │
  ▼
COMPUTE
  │
  ▼
DONE

The CPU remains at WAIT_DONE until the accelerator indicates that the result is available.


15. CPU Reads the Result

Once DONE is detected, the CPU moves to READ_RESULT.

The CPU captures:

result_class
confidence
close_prediction

into its own result registers.

The complete register movement is therefore:

External Inputs
      │
      ▼
CPU ACC Register
      │
      ▼
TinyMind Feature Register
      │
      ▼
Inference Logic
      │
      ▼
TinyMind Result Registers
      │
      ▼
CPU Result Registers
      │
      ▼
Display

16. Seven-Segment Display

The final class is converted into a seven-segment pattern.

The display shows:

A = AI-oriented

H = Hardware-oriented

C = Creative-oriented

The seven segment outputs use:

uo_out[6:0]

The segment mapping is:

Output Segment
uo_out[0] g
uo_out[1] f
uo_out[2] e
uo_out[3] d
uo_out[4] c
uo_out[5] b
uo_out[6] a

The class patterns are:

A = 1110111
H = 0110111
C = 1001110

The close-prediction signal is:

uo_out[7]

and can be used as the decimal point.


17. Clocking

The design runs at:

10 MHz

A 10 MHz clock has a period of:

100 ns

Registers capture their inputs on rising clock edges.

A simplified register-to-register timing path looks like:

Rising Edge                           Rising Edge
     │                                    │
     ▼                                    ▼
┌──────────┐                        ┌──────────┐
│ Register │                        │ Register │
│ captures │                        │ captures │
└────┬─────┘                        └──────────┘
     │
     │
     ▼
 Combinational
     Logic
     │
     ▼
 Next Value
     │
     │
     └──────────────────────────────►

     <----------- 100 ns ----------->

Static timing analysis checks whether the combinational path can complete in the available clock period while accounting for the relevant timing requirements.


How to test

Step 1 — Start the Clock

Provide the system clock on:

clk

The target operating frequency is:

10 MHz

Step 2 — Reset the SoC

The reset is active-low.

Assert reset:

rst_n = 0

Then release it:

rst_n = 1

After reset, the CPU begins at program address 0:

WAIT_RUN

Step 3 — Set the Input Features

Place the eight binary feature values on:

ui_in[7:0]

For example:

ui_in = 10100101

Step 4 — Enable CPU Execution

Set:

uio_in[0] = 1

This is the CPU run-enable signal.

The CPU now begins processing the feature vector.


Step 5 — CPU Executes the Program

The CPU automatically performs:

READ_INPUT
    │
    ▼
WRITE_FEATURE
    │
    ▼
START
    │
    ▼
WAIT_DONE
    │
    ▼
READ_RESULT
    │
    ▼
DISPLAY

No external controller needs to directly manipulate the internal TinyMind accelerator signals.


Step 6 — Observe the Output

Read:

uo_out[6:0]

The output represents:

A
H
or
C

depending on the predicted class.

Read:

uo_out[7]

for the close-prediction indicator.

If:

uo_out[7] = 1

the winning and second-place scores were separated by a margin of 1 or less.


Step 7 — Process Another Input

While:

uio_in[0] = 1

the CPU loops and processes input vectors repeatedly.

Conceptually:

READ
 ↓
RUN TINYMIND
 ↓
DISPLAY
 ↓
LOOP
 ↓
READ AGAIN

If the input switches change, the CPU can capture the new feature vector during a later loop iteration.

Setting:

uio_in[0] = 0

causes the CPU to return to its wait state rather than continuing normal inference loops.


Automated Verification

The project includes a cocotb testbench.

There are eight binary input features.

Therefore the total number of possible feature vectors is:

2^8 = 256

The testbench exhaustively tests all 256 combinations.

For each combination, Python independently calculates:

AI score
Hardware score
Creative score
Winner
Confidence
Close prediction

The SoC is then allowed to process the same input.

The test compares the external seven-segment output against the Python reference model.

Conceptually:

                 Feature Vector
                  /          \
                 /            \
                ▼              ▼
        Python Model       TinyMind SoC
                │              │
                ▼              ▼
        Expected Result     Actual Result
                │              │
                └──────┬───────┘
                       ▼
                    COMPARE

This means the verification checks the complete SoC path:

INPUT
  ↓
CPU
  ↓
ACC REGISTER
  ↓
TINYMIND
  ↓
RESULT
  ↓
CPU
  ↓
DISPLAY
  ↓
OUTPUT

rather than directly controlling only the inference logic.


Pinout Summary

Dedicated Inputs
Pin Function
ui_in[0] Likes mathematics
ui_in[1] Likes programming
ui_in[2] Likes electronics
ui_in[3] Likes physics
ui_in[4] Likes data and patterns
ui_in[5] Likes building things
ui_in[6] Likes design and creativity
ui_in[7] Likes experimentation and research
Bidirectional Pins Used as Inputs
Pin Function
uio_in[0] CPU run enable
uio_in[1] Unused
uio_in[2] Unused
uio_in[3] Unused
uio_in[4] Unused
uio_in[5] Unused
uio_in[6] Unused
uio_in[7] Unused

The bidirectional pins are never driven by the design:

uio_out = 00000000
uio_oe  = 00000000
Dedicated Outputs
Pin Function
uo_out[0] Seven-segment g
uo_out[1] Seven-segment f
uo_out[2] Seven-segment e
uo_out[3] Seven-segment d
uo_out[4] Seven-segment c
uo_out[5] Seven-segment b
uo_out[6] Seven-segment a
uo_out[7] Close-prediction / decimal point

External hardware

No external hardware is required for RTL or gate-level simulation.

For a physical TinyTapeout demonstration, the design needs access to:

8 feature inputs
1 CPU run-enable input
clock
reset
7-segment outputs

The conceptual physical demonstration is:

Feature switches
      │
      ▼
 ui_in[7:0]
      │
      ▼
 TinyMind SoC
      │
      ▼
CPU executes program
      │
      ▼
TinyMind inference
      │
      ▼
uo_out[7:0]
      │
      ▼
7-Segment Display

A / H / C

The exact procedure for setting inputs, clocking the design, and connecting the output depends on the TinyTapeout demo board/controller being used.


What this project demonstrates

TinyMind is intentionally small enough that the complete hardware stack can be studied.

The project demonstrates the progression:

Mathematical Equation
        │
        ▼
Combinational Logic
        │
        ▼
Clocked Logic
        │
        ▼
Registers
        │
        ▼
Accelerator
        │
        ▼
START / BUSY / DONE
        │
        ▼
Tiny CPU
        │
        ▼
Program Counter
        │
        ▼
Program ROM
        │
        ▼
Processor-Controlled Accelerator
        │
        ▼
Synthesis
        │
        ▼
Standard Cells
        │
        ▼
Physical Design
        │
        ▼
GDS

TinyMind is not intended to be a high-performance AI accelerator or general-purpose processor.

It is a small fixed-weight neural-style inference accelerator used to demonstrate how computation can be transformed into clocked digital hardware and integrated into a small processor-controlled system.

IO

#InputOutputBidirectional
0Feature 0 - likes mathematicsSeven-segment gCPU run enable
1Feature 1 - likes programmingSeven-segment fUnused
2Feature 2 - likes electronicsSeven-segment eUnused
3Feature 3 - likes physicsSeven-segment dUnused
4Feature 4 - likes data and patternsSeven-segment cUnused
5Feature 5 - likes building thingsSeven-segment bUnused
6Feature 6 - likes design and creativitySeven-segment aUnused
7Feature 7 - likes experimentation and researchClose-prediction decimal pointUnused

Chip location

Controller Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Analog Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Analog Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux tt_um_chip_rom (Chip ROM) tt_um_factory_test (Tiny Tapeout Factory Test) tt_um_teuscher_eml_fabric (EML Fabric — analog exp/ln compute cells) tt_um_wokwi_465656663515438081 (Convert binary to hex on 7 segments) tt_um_nikita_face_detect (FPGA Face Detection) tt_um_obstacle_avoider (Obstacle Avoider State Machine) tt_um_poket_animal (Poket Animal) tt_um_drewbabel_uart (Configurable FIFO-buffered UART with APB CSR) tt_um_wokwi_469163916296039425 (TT Workshop Test) tt_um_jonahsaunders_slsvga (tt_um_jonahsaunders_slsvga) tt_um_fatigue_monitor (Fatigue Monitor (PPG Pulse-Interval Variability)) tt_um_vedam_dual_port_ram (Dual Port RAM) tt_um_wokwi_469739097665887233 (Tiny Tapeout Template Copy) tt_um_spdif_to_i2s_kilpelaj (S/PDIF to I2S receiver) tt_um_morse_converter (ASCII to Morse Code Converter) tt_um_wokwi_469806914724000769 (Spin, Text and VGA) tt_um_wokwi_469701770572338177 (TinyTapeout) tt_um_garnetkoebel_communotron (Communotron) tt_um_wokwi_469449970323169281 (full adder) tt_um_duzabf_2026_ow (A WIP Online Workshop 2026 project) tt_um_wokwi_469807513638180865 (Tiny Tapeout NAK) tt_um_ttsky26c_oguz (ttsky26c-202607-mehmetoguzderin by Oguz) tt_um_kashif_fp4_sparse_tpu (FP4 Sparse Mini-TPU) tt_um_moein_maleki_arm16 (arm16) tt_um_wokwi_469453454643027969 (ON Check System) tt_um_felixcheng_neural_core (Neural Compute Core (V0.15)) tt_um_wokwi_469788774011248641 (Spin Display - select-reset-reverse) tt_um_wokwi_469449443070765057 (Samuel's first chip) tt_um_wokwi_469449007236383745 (testinttrsv01) tt_um_vga_ca (VGA cellular Automaton) tt_um_dosci_500hz (Digital Oscillator 500 Hz) tt_um_wokwi_469747443569078273 (XOR test project - Tiny Tapeout workshop) tt_um_wokwi_469585758593419265 (spinner) tt_um_fp16_mac (FP32 Math Unit) tt_um_1DC_vga_dyoa (VGA Design Your Own ASIC) tt_um_haydenevans_top (Systolic Processing Element) tt_um_wokwi_469806252715961345 (TT_Proj_SA) tt_um_wokwi_469448996577604609 (Tiny Tapeout - Reto) tt_um_ehofmannbr_pmodvga_06 (VGA Color Tiles) tt_um_lfglabs_lsc1u (leanSilicon LSC-1 Micro arithmetic kernel) tt_um_wokwi_469804280240495617 (Zetterling SRAM) tt_um_wokwi_469806066852696065 (TileTestchase) tt_um_wokwi_469449118072978433 (binary_add_v1) tt_um_voltage_amplifier_neuron (Voltage Amplfier Neuron) tt_um_wokwi_469449686545956865 (Tiny Tapeout Template Copy_JinoShiono) tt_um_wokwi_469448887171240961 (Tiny Tapeout - Mini CORDIC) tt_um_wokwi_469809033878555649 (Tiny Tapeout Yummy Chip - bgianfo) tt_um_sirajmuhammad_bpsk_mod (BPSK Baseband Modulator) tt_um_K_coder_9 (TENs device frequency controller) tt_um_wokwi_469758119198926849 (LL_6BitShiftRegister_ToggleEnabledFeedback) tt_um_Asaadkhex_6x6u (6x6 UART Bussbar Switch) tt_um_wokwi_469809198944364545 (tt8-8bit-cpu Copy) tt_um_wokwi_469710279607305217 (Tiny Tapeout Submission KL - SiliDize) tt_um_wokwi_469629799092815873 (2:1 Mux with differential outputs) tt_um_poundbrad_reciprocal_counter (Two-Channel Reciprocal Counter) tt_um_joonatanalanampa_cordic (CORDIC-1) tt_um_x4ntha_nova (Data General Nova 1200 CPU) tt_um_quick_bus (quick_bus) tt_um_wokwi_470058539448408065 (Nigel's Tiny Tapeout Project) tt_um_wokwi_470058244557293569 (Tiny Tapeout Kabisan) tt_um_wokwi_470058241869790209 (Abdi's desgin) tt_um_wokwi_470060107756808193 (Sukhraj Deol's Chip) tt_um_wokwi_470058578588614657 (The Chip of Master George Stead) tt_um_wokwi_470069286344622081 (Tiny Tapeout ISHA) tt_um_ucl_display (Flashing... lights) tt_um_wokwi_470058746279043073 (Arihant's first Wokwi design) tt_um_wokwi_470060103260512257 (Tiny Tapeout Jabriel Copy) tt_um_wokwi_470069460157662209 (haadi's tiny tapeout) tt_um_wokwi_470058418706939905 (Kitty) tt_um_wokwi_470058490118136833 (Iris) tt_um_wokwi_470060098828179457 (Temz_ tiny tapeout) tt_um_wokwi_470058023187099649 (Osman WOKWI project 1) tt_um_wokwi_470057988621827073 (Viraj Tiny Template Full Adder TEST) tt_um_wokwi_470069802034377729 (Tiny Tapeout Template Copy) tt_um_wokwi_470070136685362177 (full adder) tt_um_wokwi_470070449402211329 (Anastasia Copy (2)) tt_um_wokwi_470059864883484673 (Keyaan’s first Wokwi design) tt_um_wokwi_470071200164912129 (full adder tiny tapeout Copy) tt_um_wokwi_470060671178857473 (SBUSixth First Chip Design Mentored by Tiny Tapeout) tt_um_wokwi_470099562753182721 (Isaac Tiny Tapeout) tt_um_wokwi_470120538476737537 (efwz8voices) tt_um_lelo_gr01_analogicus (LELO-GR01) tt_um_lelo_gr04_analogicus (LELO-GR04) tt_um_lelo_gr02_analogicus (LELO-GR02) tt_um_pump_out (60 Hz RMS Pump-Out Controller) tt_um_urish_simon (Simon Says memory game) tt_um_lelo_gr03_analogicus (LELO-GR03) tt_um_wokwi_470299374901578753 (Shrimp) tt_um_vga_clock (VGA clock) tt_um_frequency_counter (Frequency counter) tt_um_z2a_rgb_mixer (RGB Mixer demo) tt_um_mattvenn_r2r_dac_3v3 (Analog 8 bit 3.3v R2R DAC) tt_um_rebeccargb_universal_decoder (Universal Binary to Segment Decoder) tt_um_rebeccargb_hardware_utf8 (Hardware UTF Encoder/Decoder) tt_um_rebeccargb_intercal_alu (INTERCAL ALU) tt_um_rebeccargb_vga_pride (VGA Pride) tt_um_ogggggish_ota_ldo (SSF Capless LDO) tt_um_hariri4534_audioplayback (audioplayback) tt_um_wokwi_470637150792846337 (Joni - Tiny Tapeout Teardown2026 Workshop) tt_um_wokwi_470635013242210305 (Tom's first Wokwi design) tt_um_wokwi_470635780983408641 (Tiny Tapeout-AyeshaTeardown26) tt_um_wokwi_470639152626282497 (KeKoaM Tiny Tapeout) tt_um_wokwi_470637073520124929 (Tiny Tapeout workshop) tt_um_toby43479_iox (IO Expander with PWM) tt_um_wokwi_470635764113915905 (Divider Demo) tt_um_wokwi_470635580461052929 (Mann-teardown-project) tt_um_wokwi_470639672984256513 (KCs 001 TinyTapeout Design) tt_um_wokwi_470635507665754113 (Tiny Tapeout Template Copy) tt_um_wokwi_470637047364443137 (Pixel-Curio-Chip) tt_um_terihear_tinytearout (TinyTearout) tt_um_wokwi_470643025042834433 (TT 2026) tt_um_wokwi_470637360757626881 (Tiny Tapeout Template Copy) tt_um_wokwi_470635627278929921 (Tiny Tapeout Workshop) tt_um_wokwi_474471160110403585 (Cylon-Scanner) tt_um_wokwi_470646659230201857 (bloopbloop) tt_um_pthomas_sigma_delta (Continuous-Time Sigma-Delta ADC (1st order)) tt_um_sky_tpu_3x3 (Sky TPU 3x3) tt_um_tpcannon7_fir (tinyfir) tt_um_bruniliomuy_top (Fir_Filter) tt_um_semiqa_diff_opamp (Diff-In-Diff-Out-OpAmp) tt_um_TinyProcessor_naiyar_ (TinyProcessor) tt_um_CCDmos3D (ADC for CCDmos3D pixel) tt_um_snn_lif_neuron (snn_lif_neurons) tt_um_galaguna_NanoSys_fit (Nano-120_CPU@ler.uam.mx) tt_um_rowles_regime (Single-Bit Macro Regime Classifier) tt_um_rowles_fedmodel (The Fed Model (F1/F2)) tt_um_sky26c (tt_sky26c) tt_um_aka_regfile_ecc (regfile_ecc) tt_um_fwilson12_mac (int8 MAC) tt_um_davidbroughsmyth_ecg_sar12 (heart_monitor_adc_art) tt_um_foxworks_picorv32 (TCD Foxworks PicoRV32) tt_um_saltworks_ndf_c32 (Neural dataflow fabric — bit-serial MAC cells on a self-routing switch) tt_um_yjeum11 (DTMF (Touch-Tone) decoder) tt_um_vedic_mult (4-bit Vedic Multiplier) tt_um_atx_phased_interferometer (Acoustic Interferometer) tt_um_tilesos_dual_adc (Dual-Path Noise-Shaping ADC) tt_um_darga_cirom (Darga CiROM digital read + ternary MAC) tt_um_azara_cirom (Azara CiROM ternary read) tt_um_spi_reg_bank (8-bit Modified RISC-V) tt_um_aialaqili_updown_counter (4-bit Up/Down Counter) tt_um_noahzperez29_riscv_core (Noah RISC-V Core) tt_um_fp8_fpu (FP8 (E4M3) Floating-Point Unit) tt_um_costinemanuelv_gps_daily_trigger (GPS Daily Trigger) tt_um_ja_achtung_1x1 (JA Achtung Compact) tt_um_ja_achtung_1x2 (JA Achtung Full) tt_um_pwm_spice (spice-pwm-tapeout) tt_um_wecallemjazzyfact_bgr_ldo (BGR + LDO 3.3V/1.8V Integrated IP) tt_um_lelo_temp_wulffern (LELO-TEMP) tt_um_wokwi_472389622799861761 (3-Bit 101 Pattern Detector) tt_um_LnL_SoC (Lab and Lectures SoC) tt_um_dash_lucas_risc (risc_processor) tt_um_serdes_ephotonics (UCIe-style SERDES with analog TX driver & RX slicer) tt_um_joram200 (Kalman Filter Hardware Accelerator) tt_um_colbywonn_poly_synth (Poly Synth v1.0) tt_um_nobleg30_uart_vga_scroller (UART VGA Text Scroller) tt_um_multi_precision_mult (Multi-Precision Multiplier) tt_um_pratibha_munnangi_qkt_mac (QKT MAC Accelerator) tt_um_akankaan_bf16_fma (BF16 Fused Multiply-Add (FMA)) tt_um_rtfce (RTFCE - Reconfigurable Temporal Fault/Constraint Engine) tt_um_hdc_classifier (HDC Classifier) tt_um_preethi8a_adaptive_lfsr_prng (Self-Seeding Adaptive 16-bit Galois LFSR PRNG) tt_um_dilip951_cpu_systolic_array (Reconfigurable mixed-precision 2x2 systolic MAC array) tt_um_pqc_ntt_bfly (Crypto-Agile NTT Butterfly (ML-KEM / ML-DSA / FN-DSA)) tt_um_mlkem_coefficient_integrity (Fault-Aware Constant-Time FO Backend for ML-KEM) tt_um_vital_ap (VITAL-AP: Adaptive Pixel Register) tt_um_olaf8 (OLAF-8: Bounded-Memory Online Adaptive Fuzzy Inference) tt_um_Median_MAD (Streaming Median-MAD Estimator) tt_um_tnt_mosbius (tnt's variant of SKY130 mini-MOSbius) tt_um_undip_ann_q610 (UNDIP ANN Accelerator (SPI + bring-up self-test)) tt_um_cpu8 (CPU8) tt_um_vaishnavipatil5_configurable_cam (Configurable CAM with Masked Pattern Matching and Priority Resolution) tt_um_gina_env_monitor (Environmental Mapping Processor) tt_um_manasvibhat_bloom_filter (Bloom Filter Membership Tester) tt_um_amazing_sage_snn (LIF Neuron SNN) tt_um_nkanderson_lut_snn (LUT Spiking Network Classifier) tt_um_bigmanraffa_clm (Clementine: 4-lane int8 SIMT GPU) tt_um_adityarprasad_fft (Adaptive-Precision FFT) tt_um_oscillating_bones (Oscillating Bones) tt_um_silicon_edge_ns_sar_adc (NS SAR ADC) tt_um_sishi888_tinymind (TinyMind SoC) tt_um_afra_123_ecc_memory (Runtime-Reconfigurable ECC Memory) tt_um_kenchangh_mnist (MNIST Digit Recognition) tt_um_ece298a_8_bit_cpu_top (8-Bit CPU) tt_um_libormiller_SIMON_V2 (SIMON V2) tt_um_WaiMingLee888_nanov_1tile (NanoV RV32E one-tile RISC-V processor) tt_um_four_bit_nn_accel (4-bit Neural Network Accelerator) tt_um_rsa_simple (RSA Simple Encryptor) tt_um_synapticrw_lif_neuron (LIF Neuron (SynapticRW Teardown 2026)) tt_um_smunigan_ipv4_filter (IPv4 Header Filter) tt_um_jjy_spi_watchdog (SPI-Configurable Watchdog Timer) tt_um_osian_beam_controller (Programmable Metasurface Beam Controller) tt_um_namramazhar_popcnt_shiftreg (17-bit Wallace-tree POPCNT with shift-register input) tt_um_obookstay_puf (An arbiter PUF) tt_um_arminkardovic_montenegro_securekey (Montenegro SecureKey) tt_um_rcyaon_droop (All-Digital Supply Droop Detector) tt_um_ctw_spms (CTW-SPMS — Programmable Smart Power Management & Supervisor) tt_um_taiwoopesade_tempo_detector_sky26c (Hardware Audio Tempo Detector) tt_um_wokwi_470059878406973441 (Ehan's first TinyTapeout Project) tt_um_wokwi_470637170309995521 (My First Wokwi Thing!) tt_um_wokwi_470637401137246209 (Teardown Tiny Tapeout) tt_um_wokwi_469443433165025281 (Tiny Tapeout First Design Beth Plummer) tt_um_wokwi_472423526521678849 (4-bit to 5x7 Matrix Decoder for Tiny Tapeout) tt_um_wokwi_470057961258181633 (Tiny Tapeout Template Kavana) tt_um_wokwi_470057993933917185 (ivane- Tiny Tapeout (full adder)) tt_um_wokwi_470088776251343873 (training_project_kaylem) tt_um_neuropong (NeuroPong) tt_um_tamagotchi (TamaGotThis) tt_um_group02_seethebeat (SeeTheBeat) tt_um_kul_chromechain (Chrome Chain) tt_um_baked_weights (Baked-Weights Shakespeare GPT) tt_um_gilangfajrul_sar_adc (sar-adc) tt_um_Logy_FMAC (FMAC) tt_um_porkfreezer_rrio_opamp (RRIO Op-amp) tt_um_diff_engine (DSLX finite_difference) tt_um_dragonochi (WISH) tt_um_siliconsonics (ultrasonic sonar: range and bearing) tt_um_kul_conway (Interactive Conway's Game of Life) tt_um_algofoogle_ttsky26c_analog (Assorted analog in 1 tile) tt_um_mariavictoriaalm_qubit_sim ( tt-2qubit-sim) tt_um_andre_dpe (Dot product engine) tt_um_rmranjitkarNULL_pong_top (last_minute_Pong) tt_um_SAR_ADC (CTW LDO and Dynamic Comparator) tt_um_fabulous_sky_26c (Tiny FABulous FPGA) tt_um_tomvdsch_tiny32_soc (Tiny32 RV32IMA Zephyr-target SoC) tt_um_np523_pong (Pong) tt_um_usfq_adc_procmon (USFQ 8-bit Tracking ADC and Process Variation Monitor) tt_um_rangfuu_alu (Tiny ALU PD) tt_um_wokwi_473800139156677633 (Tiny Snake with PRISM 8) tt_um_mini_nn (Four-MAC Core Neural Network Inference Engine) tt_um_kianv_rv32_regfile (KianV uLinux RISC-V regfile edition) tt_um_2048_vga_game (2048 sliding tile puzzle game (VGA)) tt_um_urish_rings (VGA Rings) tt_um_silicon_art_vga_screensaver (VGA Screensaver with Silicon Art ROM) tt_um_rom_vga_screensaver (VGA Screensaver with embedded bitmap ROM) tt_um_krisjdev_manchester_baby (Manchester Baby) tt_um_urish_sic1 (SIC-1 8-bit SUBLEQ Single Instruction Computer) tt_um_ThomasCowieEngineering_LMC (Little Man Computer CPU) tt_um_pranavUl_ascon_aead128 (Ascon bit-serial permutation engine) tt_um_orca (ORCA — Online Reconfigurable Circuit with Adaptation) tt_um_krisjdev_artwork (Silicon Artwork) tt_um_htfab_caterpillar (Simon's Caterpillar) tt_um_htfab_vga_tester (Video mode tester) Available Available Available Available Available Available Available Available Available Available