968 Audio Wave Generator Chip

968 : Audio Wave Generator Chip

Design render

How it works

2-Channel Sine and Triangle Wave Sound Chip with 8-bit PWM Output.

Two 16-bit registers, written through a parallel bus interface, to control the frequencies of channel 1 (sine) and channel 2 (triangle). Register values go to both sine and triangle wave modules, which uses Direct Digital Synthesis (DDS), to generate 7-bit digital samples at varying frequencies with a sample rate of 28160 Hz. The 7-bit values are added together to an 8-bit sample which is converted to a PWM signal. Each 8-bit sample is converted to four 112640 Hz PWM pulses. The base clock is thus 256x the PWM frequency at 28835840 Hz (~28.84 MHz).

Recommended generated frequency range: 220-1960 Hz

The phase_counter module is simply a 10-bit counter that counts up with the clock and outputs the counter value subsample_phase. Each counter period corresponds to one sample.

The sine module uses CORDIC to algorithmically estimate sine values. The stages of estimation and updating outputs are coordinated with subsample_phase. The triangle module uses Direct Digital Synthesis (DDS) to create a uniform increasing and decreasing ramp waveform with the specified period.

GDS Render

GDS Render

Architecture

Block Diagram

Block diagram

The architecture consists of several key components:

  • register_interface: Implements the write protocol and two 16-bit frequency control registers registers[0] and registers[1].
  • triangle_gen: Generates a triangle waveform into bitstream_ch2 based on registers[1][11:0].
  • sine_gen: Generates a sine waveform into bitstream_ch1 based on registers[0][11:0].
  • phase_counter: Implements a 10-bit counter on subsample_phase[9:0] used for the timings of all waveform and PWM updates.
  • pwm_gen: Adds both channels and compares the waveforms against subsample_phase[7:0] to produce pwm_out.

Register map

Register Description
0b0000 freq_ch1* (sine)
0b0001 freq_ch2* (triangle)
0b0010-1111 Reserved/Unused

*only the least significant 12 bits of frequency registers are read.

To calculate register values from frequency f in Hz, use the following formula:

1764014582091

where f<sub>sample</sub> = 28160 Hz, the output sample rate.

Pinout

Clock frequency: 28835840 Hz (~28.8 MHz)

Reset: active low

# Input Output Bidirectional
0 Register bus address[0] - Register bus data[0]
1 Register bus address[1] - Register bus data[1]
2 Register bus address[2] - Register bus data[2]
3 Register bus address[3] - Register bus data[3]
4 Transfer phase - Register bus data[4]
5 Transfer enable - Register bus data[5]
6 Unused - Register bus data[6]
7 Unused PWM output Register bus data[7]

Bus details

To write to registers: 0. Start with enable = 0

  1. Set address bits, most significant 8 bits of data, and phase to 1 for at least 2 clock cycles.
  2. Set enable = 1 for at least 2 cycles. When this edge is detected, the most significant 8 bits will be read.
  3. Set phase = 0 for at least 2 cycles. When this edge is detected, the least significant 8 bits will be read.
  4. Set enable = 0 for at least 2 cycles. When this edge is detected, the full register value will be written at the specified address.

If any of these steps are violated, the internal state machine will either:

  • if enable = 1: transition into an error state which can be reset by toggling enable back to 0
  • if enable = 0: discard the ongoing bus transfer and reset to idle state

See src/register_interface.v for the exact details of the bus transfer logic.

Requirements

  • Yosys OSS CAD suite: https://github.com/YosysHQ/oss-cad-suite-build
  • KiCad (optional, for simulating and exporting DAC frequency response)
  • Python modules: numpy, scipy

How to test

Remember to source OSS CAD suite. gtkwave can be used to view output waveforms of tests.

System-Level Tests

cd test/

RTL test:

make -B

Sample test waveform for all tests in test.py: sample vcd

Gate-level test (requires hardening first. see Hardening section):

TOP_MODULE=$(cd .. && ./tt/tt_tool.py --print-top-module)
cp ../runs/wokwi/final/pnl/$TOP_MODULE.pnl.v gate_level_netlist.v
make -B GATES=yes

These tests are also run by the TinyTapeout Github Actions.

Block-Level Tests

A cocoTB testbench is used to run tests in Python. Each test uses the following structure:

  • Sets up the system clock using cocoTB Clock.
  • Initializes all DUT inputs and de-asserts rst_n after some cycles.
  • Drives stimuli into the DUT and runs for several cycles (await ClockCycles(...))
  • Checks the assertions on the outputs to verify the correct behaviour and result.

These are RTL tests only. There are four block-level test directories and a full integration test:

  • test/tb_pwm_phase - for phase_counter and pwm
  • test/tb_regs - for register_interface
  • test/tb_sine - for sine waveform
  • test/tb_triangle - for triangle waveform
  • test/test.py - full integration test

Sample test waveform for all tests in sine_test.py and triangle_test.py: sample vcd sample vcd

For each one, enter the directory and run make -B.

Expected Block-Level Test Results

These are the results when run, your values may vary slightly.

tb_pwm_phase
Test Status Sim Time (ns) Real Time (s) Ratio (ns/s)
pwm_phase_test.test_reset_while_running PASS 18375.00 0.01 1392040.82
pwm_phase_test.test_phase_counter_counts_and_wraps PASS 36575.00 0.03 1392378.31
pwm_phase_test.test_pwm_duty_matches_sample_sum PASS 99365.00 0.08 1281090.80
pwm_phase_test.test_pwm_sample_sum_overflow_edge PASS 54565.00 0.04 1299164.98
pwm_phase_test.test_pwm_phase_threshold_behavior PASS 2303385.00 1.96 1173998.96
TESTS=5 PASS=5 FAIL=0 SKIP=0 2512265.00 2.14 1174446.22
tb_regs
Test Status Sim Time (ns) Real Time (s) Ratio (ns/s)
regs_test.test_regs_reset PASS 2450.00 0.00 1020157.75
regs_test.test_regs_mid_transaction_reset PASS 665.00 0.00 1122872.93
regs_test.test_regs_double_write PASS 3920.00 0.00 1284405.58
regs_test.test_regs_timing PASS 17891720.00 11.35 1577041.76
regs_test.test_regs_extreme_values PASS 11270.00 0.01 1362046.11
regs_test.test_regs_error_states PASS 11200.00 0.01 768866.56
regs_test.test_regs_large_addresses PASS 12180.00 0.01 1386302.32
regs_test.test_regs_address_boundary_and_no_clobber PASS 5670.00 0.00 1395558.23
TESTS=8 PASS=8 FAIL=0 SKIP=0 17939075.01 11.41 1572503.84
tb_sine
Test Status Sim Time (ns) Real Time (s) Ratio (ns/s)
sine_test.test_sine_reset PASS 18200.00 0.02 1096046.30
sine_test.test_random_frequencies PASS 43044400.00 35.99 1196040.83
sine_test.test_silence PASS 3656240.00 3.05 1199115.46
TESTS=3 PASS=3 FAIL=0 SKIP=0 46718840.00 39.07 1195669.64
tb_triangle
Test Status Sim Time (ns) Real Time (s) Ratio (ns/s)
triangle_test.test_reset1 PASS 60.00 0.00 65214.42
triangle_test.test_reset2 PASS 6148200.00 0.89 6927668.03
triangle_test.test_midrun_reset_clears_wave PASS 123000.00 0.36 340395.99
triangle_test.test_accumulator_increment PASS 170.00 0.00 272047.26
triangle_test.test_frequency_control PASS 82020.00 0.24 338374.42
triangle_test.test_max_freq_increment_overflow_behavior PASS 2037900.00 6.01 339309.66
triangle_test.test_triangle_wave_shape PASS 1013900.00 3.06 331132.01
triangle_test.test_full_range PASS 5109900.00 15.19 336412.01
triangle_test.test_continuous_waveform PASS 2037900.00 6.20 328568.91
triangle_test.test_zero_frequency PASS 102450.00 0.32 318233.89
TESTS=10 PASS=10 FAIL=0 SKIP=0 16655500.01 32.30 515651.83
test.py
Test Status Sim Time (ns) Real Time (s) Ratio (ns/s)
test.play_a_tune PASS 10001010.00 6.08 1646113.23
test.single_sine_note PASS 3002100.00 1.89 1586899.63
test.single_triangle_note PASS 3002100.00 1.83 1640564.33
test.sine_and_triangle_together PASS 3002100.00 1.82 1653389.06
TESTS=4 PASS=4 FAIL=0 SKIP=0 19007310.00 11.63 1634247.66

Audio Test

This test runs a really long (around 1s sim time) RTL simulation, exports the data, then simulates the PWM signal being filtered by the Audio Pmod circuit to generate a .wav file that you can listen to!

  1. cd test/ && make -B AUDIO=yes - this takes 10 minutes on my machine, will vary depending on hardware. It generates three tones of 0.3s each. This will create pwm_edges.log in the test/ directory.
  2. cd ../pmod-sim/ and run the KiCad ngspice simulation of the Pmod circuit to export the frequency response, or use the pre-simulated freq_response.csv.
  3. run filter_pwm.py, which will apply the filter to the pwm_edges.log file and create output.wav.

Hardening & Viewing

See: https://tinytapeout.com/guides/local-hardening/

External hardware

Audio Pmod required: Audio-Pmod-p716541601

Project Duties & Acknowledgements

Evan Li:

  • sine.v
  • register_interface.v
  • phase_counter.v
  • audio_chip.v
  • pwm.v
  • /tb_regs sub-block tests
  • /tb_sine sub-block tests
  • Audio test - audio_test.py, audio_util.py
  • pmod simulation - /pmod-sim
  • Integration tests - test.py

Rongbin Gu:

  • triangle.v
  • sync.v
  • audio_chip.v
  • pwm.v
  • /tb_pwm_phase sub-block tests
  • /tb_regs sub-block tests
  • /tb_triangle sub-block tests
  • Integration tests - test.py

IO

#InputOutputBidirectional
0ADDR0REG_IN0
1ADDR1REG_IN1
2ADDR2REG_IN2
3ADDR3REG_IN3
4WRITE_PHASEREG_IN4
5WRITE_ENREG_IN5
6REG_IN6
7PWM_OUTREG_IN7

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 Analog Mux Mux Mux Mux Mux Mux tt_um_chip_rom (Chip ROM) tt_um_factory_test (Tiny Tapeout Factory Test) tt_um_oscillating_bones (Oscillating Bones) tt_um_wokwi_457142813149930497 (TinyTapeOut workshop) tt_um_wokwi_457311688017142785 (tiny tapeout test gates) tt_um_bfcpu (bfCPU) 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_wokwi_457215959798165505 (4-bit N frequency divider) tt_um_ppu_aebarthyi (simple_ppu) tt_um_riscyv02 (RISCY-V02) tt_um_pong (Pong) tt_um_LH_TapeoutMultiplier (tt_um_LH_TapeoutMultiplier) tt_um_wokwi_457571222315471873 (7 Seg C) tt_um_wokwi_457571216758012929 (Mikes Second) tt_um_wokwi_457569452934172673 (FirstTinyTapeoutWokwiProject) tt_um_wokwi_457571159626309633 (Tiny Tapeout V1) tt_um_wokwi_457577038845586433 (TinyTapeOut) tt_um_wokwi_457571280506256385 (Tiny tapeouts test gates) tt_um_wokwi_457576742418338817 (calculator) tt_um_wokwi_457571219715001345 (Ami's TT Logic Gates) tt_um_wokwi_457571067547656193 (Mikes First Wokwi design) tt_um_wokwi_457571453314827265 (Tiny tapeout one hot to seven segment display 1-8) tt_um_wokwi_457572218833202177 (4bit adder and hex converter) tt_um_wokwi_463741407580251137 (Lady's First Tapeout) tt_um_wokwi_457571138696714241 (jdisplayer) tt_um_wokwi_457570687900145665 (Tiny Tapeout Test Gates) tt_um_wokwi_457577511431565313 (Tiny Tapeout Test Gates) tt_um_wokwi_457571262875481089 (Tiny Tapeout) tt_um_wokwi_457571417674762241 (TamTries Tiny Tapeout) tt_um_wokwi_457571366985520129 (georgies wokwi design) tt_um_wokwi_457571701752981505 (WilfTT) tt_um_wokwi_457572875733692417 (First WOKWI Design) tt_um_wokwi_457571571887847425 (tiny tapeout gate test) tt_um_wokwi_457571352249873409 (First Wokwi design) tt_um_wokwi_457571405919170561 (Namo's first tapeout) tt_um_wokwi_457571339952163841 (OR Gate with NAND) tt_um_wokwi_457571188658258945 (Abishag's first Wokwi Design) tt_um_wokwi_457571426719781889 (Tiny) tt_um_wokwi_457571268900604929 (tiny tape GDS) tt_um_wokwi_457571949070179329 (Tom Haley Tiny Tape Out Design ) tt_um_alex_ha_192 (alex_ha_192) tt_um_wokwi_457577241913913345 (tiny tapeout test gates ) tt_um_wokwi_457571297367365633 (First Wokwi Attempt) tt_um_wokwi_457571363309211649 (idk yet) tt_um_wokwi_457571305740256257 (Work In progress title) tt_um_wokwi_457579594627462145 (TinyTapeoutProjectDefne) tt_um_wokwi_457571274041781249 (Tiny Tapeout Workshop by Kirsty Tan) tt_um_wokwi_457571233499594753 (Tiny Tapeout Workshop) tt_um_wokwi_457570205537212417 (Tiny Tapeout Test Project) tt_um_ojas_sharma_imperial_ttcpu (ttcpu 4-bit RISC microprocessor) tt_um_wokwi_457571271419289601 (chip one) tt_um_wokwi_457573490746716161 (Name Serial Printer) tt_um_wokwi_457569507958215681 (Tiny tapeout proj) tt_um_wokwi_457577929607958529 (Random 1st Attempt) tt_um_wokwi_457571438667259905 (PD+PFD+FreqDiv) tt_um_wokwi_457571602706552833 (Joe's first Wokwi design) tt_um_wokwi_457571471659666433 (Nicolas' first Wokwi design) tt_um_wokwi_457571148733696001 (Tiny Tapeout Workshop 1) tt_um_wokwi_457572520479222785 (Tiny Tapeout: Buenos días Mundo! ) tt_um_wokwi_457571494688497665 (First Chip) tt_um_wokwi_457571341266031617 (D-Type Flip Flop) tt_um_wokwi_457581344351934465 (WOKWI) tt_um_wokwi_457571462196267009 (Tiny Tapeout) tt_um_wokwi_457571359410603009 (TinyTapeout) tt_um_Terdoo_Osu (Spiking Pattern Recognition Core) tt_um_wokwi_457571319408448513 (Mani TinyTapeout) tt_um_wokwi_457571298662360065 (Tiny Tapeout Test Gates) tt_um_wokwi_457573015156590593 (Lil tapeout) tt_um_wokwi_457576363047649281 (Inverter) tt_um_wokwi_457571216488527873 (Tiny Tapeout Template Copy Paul 1) tt_um_wokwi_457571472208072705 (Tiny Tapeout Test design) tt_um_wokwi_457571381968631809 (Tiny tapeout test) tt_um_wokwi_457571314694049793 (Tiny Tapeout Test) tt_um_wokwi_457571368009979905 (Tiny Tapeout Test Gates) tt_um_wokwi_457571389542502401 (First thing) tt_um_wokwi_457570267471381505 (Tiny Tapeout) tt_um_wokwi_457571563051492353 (CS First Wokwi design) tt_um_wokwi_457577392775721985 ( tiny Tapeout Test Gate) tt_um_wokwi_457570279596067841 (Tiny Tapeout Workshop - AJJ) tt_um_wokwi_457571180646081537 (Alins Password) tt_um_wokwi_457572360568198145 (Tiny Tapeout) tt_um_wokwi_457571270578328577 (Tiny tapeout workshop) tt_um_wokwi_457581625098771457 (Tiny Tapeout First Test Run) tt_um_wokwi_442342513281875969 (First Design) tt_um_wokwi_457581848269362177 (Tiny Tapeout Brainf*ck?) tt_um_sap_alexanderholden (sap1) tt_um_wokwi_457571752214675457 (3bit_ALU) tt_um_wokwi_457571542558115841 (Tiny Tapeout") tt_um_wokwi_457573095390500865 (Tiny Tapeout Workshop Counter) tt_um_wokwi_457571511812802561 (Akash's first Wokwi design) tt_um_wokwi_457577563633889281 (Tiny Tapeouts gate tests) tt_um_wokwi_457576950671858689 (Hymns_GDS) tt_um_wokwi_457571371384299521 (Digital digit display circuit - TINYTAPEOUT) tt_um_rowantylerr_RC_TDC (Resistor Capacitor TDC) tt_um_wokwi_463662181299058689 (2 bit ALU) tt_um_chinghey (Hey FlexCompute-130) tt_um_8b10 (serdes8b10) tt_um_rom_vga_screensaver (VGA Screensaver with embedded bitmap ROM) tt_um_mayamelon_top (Tiny PI Controller) tt_um_JAIMEPRYOR0_VGA_YAY (VGA_YAY) tt_um_2048_vga_game (2048 sliding tile puzzle game (VGA)) tt_um_mng2_2ncos (A Tale of Two NCOs) tt_um_shimmydee_checkers (One-tile ADC) tt_um_urish_simon (Simon Says memory game) tt_um_dheeeraaj_sine_chirp_beacon (DDS Sine Chirp Beacon) tt_um_nicholas_ls194a (Universal Shift Register (SN74LS194A compatible)) tt_um_BellaB05_Hearts (Pink Hearts) tt_um_scottshuynh_ad_astra (ASIC Ad Astra) tt_um_liamolucko_vga (VGA demo) tt_um_lledoux_s3fdp_seqcomb (S3FDP Seq+Comb Stream Core) tt_um_5482582_cat_vga (Cat VGA) tt_um_vga_example_directional_toggle (Directional toggle of VGA playground example) tt_um_jimbok_ro_puf (Ring Oscillator PUF) tt_um_xxsahanaxx_hwsec_glitch (Hardware Security Glitching Attack) tt_um_NguyenHuuHenry_vga_project (VGA_Project) tt_um_irfantekin_analog (tt_um_irfantekin_analog) tt_um_chicagojones_sky26a_trng (Sky26a Advanced TRNG) tt_um_yen (YEN) tt_um_pedometer (Ultra Low Power Pedometer ASIC) tt_um_analog_atenfyr1 (Configurable Self-biasing Miller-compensated OTA) tt_um_aes_sbox (Formally-Verified Constant-Time AES S-Box) tt_um_tcpu_alienflip (tcpu) tt_um_nebula (Sierpinski Fractal Starfield) tt_um_zenith_tx26 (Zenith TX26) tt_um_odgrip_demoscene_ttsky26a (My first demoscene) tt_um_vighnesh_sawant_plane (Plane with a banner) tt_um_glyph_mode_hd (Glyph Mode HD) tt_um_TSARKA_TinyQV (TinyQV Wishbone SoC) tt_um_SimpleCounter (Simple Counter) tt_um_cfar_nobuzzer (CFAR Detector without Buzzer) tt_um_present (Present) tt_um_top (Approximate Logic Unit) tt_um_goose (OIIA-goose) tt_um_riscv_core (Tiny RISC-V) tt_um_dac_test3v3 (Design and Implementation of R-2R Ladder DAC for GPR Application) tt_um_tadc_its (Time Domain ADC) tt_um_algofoogle_vga_matrix_dac (Analog VGA CSDAC experiments) tt_um_jyblue1001_pll (Analog-PLL) tt_um_axi4lite2x2_top (AXI4-Lite 2M-2S Interconnect) tt_um_systolic_top (4x4 Systolic Matrix MAC Accelerator) tt_um_goose_game (Goose Game) tt_um_rongbin99_happyredmapleleaf_audio_chip (Audio Wave Generator Chip) tt_um_fp_id (FinSec-1: AS-68M Fingerprint Verification ASIC) tt_um_game_of_life (Demoscene: Game of Life) tt_um_ds_missile_command (Missile Command) tt_um_cmos_inverter (Reactive Plasma: CMOS Inverter) tt_um_nightplumeaki_tinypipcore (tinypipcore) tt_um_immrudul_w7khan (Mrudul and Wahhaj Demoscene F2025) tt_um_sohamgovande_transformer (Transformer) tt_um_isa084_uart_servo (UART Positioning PWM Interface) tt_um_wokwi_461265571826974721 (Bias Correction Filter) tt_um_8_bit_cpu (8-bit CPU) tt_um_richad (ADPPLS) tt_um_algofoogle_dottee (DOTTEE VGA demo) tt_um_sar_fms (SAR FSM) tt_um_kolontsov_journey (Journey) tt_um_fft_adityaamehra (64 Sample FFT ASIC) tt_um_lambda_clock (Lambda Clock) tt_um_ece298A_analog (ECE298A analog tile) tt_um_toivoh_demo (Orion Iron Ion [TTSKY26a demo competition]) tt_um_kilian_interference (Wave Lattice) tt_um_fabulous_sky_26a (Tiny FABulous FPGA) tt_um_Rats2012_WobblyBits (WobblyBits - A probabilistic computing chip) tt_um_rebelmike_asic_odyssey (2026: An ASIC Odyssey) tt_um_huyatieo_tinyqv_speck (Speck-V SoC) tt_um_mosbius (mini mosbius) tt_um_remedy_cpu (FFD16 cpu 16-bit) tt_um_vga_ocarina (Ocarina on VGA) tt_um_TinyGPU_v3 (Tiniest GPU V3) tt_um_santhosh_ring_osc (Ring Oscillator PVT Sensor & TRNG) tt_um_santhosh_xbar_ctrl (Memristive Crossbar Peripheral Controller) tt_um_santhosh_stdp_ctrl (Digital STDP Learning Controller) tt_um_santhosh_stoch_neuron (LFSR-Based Stochastic Neuron) tt_um_anweiteck_ldo (1V-LDO) tt_um_sriaxi4lite_top (Axi4_Lite) tt_um_bch_code_15_7_2 (Bose-Chaudhuri-Hocquenghem Code) tt_um_mastensg_ttsky26a_demo (Luz) tt_um_pakesson_vga_rocket (VGA Rocket) tt_um_adpll (ADPLL - All-Digital Phase-Locked Loop) tt_um_Bingyao_FCOTA (Self biased Single Ended Folded Cascoded OTA) tt_um_spacewar_top (Spacewar) tt_um_microlane_demo (microlane demo project) tt_um_NE567Mixer28 (ECG Front End) tt_um_wakita_mux8onehot_cap (Mux8onehot Pulldown Mosfet) tt_um_johshoff_metaballs (Metaballs v2) tt_um_tomvdsch_cyclonerunner (CycloneRunner) tt_um_lowprocess_wildcamping (PicoMIPS CPU) tt_um_canvas (Tiny Canvas) tt_um_snrlxd1068_MACs (Linear and Logarithmic MACs) tt_um_pakesson_simon64_128 (SIMON64/128) tt_um_AmitChen1415 (Tiny Blackjack) tt_um_ole_moller_double_dabble_SV (double_dabble_SV) tt_um_toivoh_demo_1tile (Single tile demo [TTSKY26a demo competition]) tt_um_shiho_space_invaders (Tiny Space Invaders) tt_um_analog_RO (Analog RO) tt_um_electron65_vga (VGA Clock Demo) tt_um_wokwi_457571266840151041 (3-Bit ALU) tt_um_katomata (Katomata - 1D Cellular Automata) tt_um_shimomi_analog (analog circuit) tt_um_toivoh_demo_4tile (Four tile demo [TTSKY26a demo competition]) tt_um_IEEE_open_silicon_FOSSEE (Ring oscillator VCO and Differential Amplifier) tt_um_lm_chip_top (Project Long Man: A Delay-Insensitive Interconnect) tt_um_AlephNaNsea_space_time_waves_and_filaments (Space-Time Waves and Filaments) tt_um_spacelizard_apu (Spacelizard APU) tt_um_wokwi_457569490272926721 (Letter S) tt_um_mau_top_4b (SIMD2 Math Accelerator Unit) tt_um_maze (Maze) tt_um_demoscenettsky (Algorithmic Pattern Generator) tt_um_wokwi_457572141968369665 (Arran's tinytapeout project) tt_um_maxluppe_ttsky26a_analog (Standard Digital Logic Cells Analog Comparator) tt_um_grammartile (GrammarTile) tt_um_bubble_sort (IEEE Bubble Sort Engine) tt_um_ahmed_nematallah_12_bit_adc (12-bit ADC) tt_um_bad_ode_plotter_vga (Bad VGA ODE Plotter) tt_um_wokwi_463706339714973697 (Demo 4-bit ALU 74181 variant) tt_um_wokwi_457569853853115393 (Jasper Tiny Tape Out Workshop) tt_um_wokwi_457560507752701953 (Osian Tiny Tapeout) tt_um_wokwi_457571501325987841 (Rola_Tiny Tapeout Template Workshop4Mar26) tt_um_wokwi_457571903121572865 (TT-wokwi-template) tt_um_wokwi_463380823859050497 (My_Name_on_7_Seg_display) tt_um_wokwi_457569584731832321 (Tiny Tapeout 9 Template Copy) tt_um_wokwi_457571826952995841 (Tiny Tapeout Novomorphic Design 1) tt_um_wokwi_457571349142937601 (Tiny Tapeout Secret First Letter Code) tt_um_wokwi_457571261877235713 (Tiny Tapeout Test) tt_um_wokwi_457582867322921985 (Tiny Tapeout Test GDS) tt_um_wokwi_457571135132600321 (Tiny Tapeout Test Gates) tt_um_wokwi_457571331577181185 (Tinytapeout_IA) tt_um_wokwi_457576779101727745 (tiny tapeout test gates) tt_um_wokwi_457571577702202369 (tj wowki) tt_um_wokwi_457572953060951041 (wokwi) tt_um_pettit_galton (Tiny Galton) tt_um_fountaincoder_top_abc (ABC Temporal Coincidence Detector) tt_um_prime_quine (Prime Quine) tt_um_ghtag_trinity_gf16 (Trinity GF16 Dot Product Accelerator) tt_um_LFSR (Configurable Galois LFSR) tt_um_Acrazt05_titan_proccesing_unit (Titan Proccesing Unit (TPU)) tt_um_essen (Digital) tt_um_alu_bns (6-bit Multi-Functional ALU) tt_um_gerardvt_spade_poc (Interactive XOR Plasma (Spade HDL)) tt_um_gerardvt_clash_poc (Interactive Triangle-Wave Plasma (Clash HDL)) tt_um_jackthoene_frogger (Frogger) tt_um_wokwi_463698873100105729 (IEEE Open Silicon 2026: UTB Logic Trivia Challenge: 8-bit Digital Lock) tt_um_wokwi_463666635153364993 (IEEE - Hex Counter and Logic Gate Validator) tt_um_ChristmasTree_MaligayangPasko (ChristmasTree_MaligayangPasko) tt_um_wokwi_463711763041599489 (IEEE Open Silicon 2026: UTB UART Transmitter basic) tt_um_tinytensorcore (TinyTensorCore) tt_um_uwasic_crypto (UWASIC Crypto) tt_um_topadi (time) tt_um_siliconimist (Siliconimist Demoscene) tt_um_neutern_0 (tt_um_neutern_0) tt_um_htfab_hsxo (HSXO) tt_um_madech_8bit_processor_vga (8-Bit Processor with VGA) tt_um_vga_clock (VGA clock) tt_um_usu_AXIS_MVMul (AXI-Stream Matrix Vector Multiplier) tt_um_weird_numbers (Weird Numbers) tt_um_bovi_cable_tester (Cable Tester) tt_um_libokuohai_asap_cpu_v2 (ASAP CPU v2) tt_um_LinusSkucas_pio (Tiny PIO) tt_um_thomas_ep_sensor (EP Sensor v7 (symmetric in-place thicken, Zhao-compliant)) tt_um_rakhanaufm_truerandom (Current-Starved Ring Oscillator Based True Random Number Generator) tt_um_parakeet (parakeet) tt_um_mcml_vco (MCML experiments) tt_um_tpu ( Tensor Processing Unit) tt_um_strasti (8-Bit ALU) tt_um_zed_analog (Analog design) tt_um_axi4lite_top (Axi4_Lite) tt_um_c4m_spsram_direct (TTSKY-SPSRAM-direct) tt_um_Onchip_Folded_Cascode_N_with_Bias (Folded Cascode N Type with Bias from Onchip Research Group) tt_um_htfab_hybrid (Telephone hybrid) tt_um_ilamparuthi_cfar (CFAR Radar Detector) tt_um_pakesson_glitcher (Glitcher) tt_um_advaittej_stopwatch (V-SPACE Demo: Command & Control Chronograph) tt_um_william_pll (Smartcard PLL Clock Generator) tt_um_Melody_Generator_JLANordhal (Melody Generator based on Markov Chains) tt_um_d_monteiro (Neuromorphic Processor (SNN)) tt_um_jacob_kebaso_4bit_cpu (Nibble - 4-bit CPU) tt_um_signal_detector (Signal_Detection_Processor) tt_um_catalinlazar_tinycore8 (TinyCore8) tt_um_chidam_secengine (Tiny Secure Telemetry Engine) tt_um_urish_usb_cdc (USB CDC (Serial) Device) tt_um_josenbm (9-Channel Frequency Counter with I2C + SPI DAC & ADC) tt_um_shalindra_vga_rings (Variable Speed and Colour Select VGA Rings) tt_um_dinukuk_MYVGA_GLIDER (DKTT01 - VGA Glider) tt_um_fibonacci_JoaoBortolace (Fibonacci Counter) tt_um_wokwi_461639934990157825 (4 bit unlock (IEEE)) tt_um_ctw_ldo (LDO Regulator Skywater 130nm)