546 Tiny Calculator

546 : Tiny Calculator

Design render

Tiny Calculator ASIC bring-up guide

Tiny Calculator is a manufactured 16-bit hexadecimal calculator for Tiny Tapeout. It reads a 4×4 hexadecimal keypad plus seven control buttons, performs +, -, ×, and integer ÷, and serializes the result for five seven-segment positions. Four additional outputs indicate the selected operation.

The calculator supports unsigned values from 0000 through FFFF and signed two's-complement values from -8000 through 7FFF. This page explains how to connect and operate the ASIC. See the GitHub repository README for its internal architecture, state machine, and arithmetic implementation.

Tiny Calculator architecture

Before power-up

The Tiny Tapeout SKY130 GPIOs use 3.3 V logic, are not 5 V tolerant, and are rated to source or sink 4 mA per pin. Treat 4 mA as a maximum rating, not a normal design current. Verify the electrical limits of the particular Tiny Tapeout board and external components before connecting them.

For first bring-up:

  1. Connect the keypad, control buttons, mode selector, shift-register chain, displays, and their resistors before enabling the design.
  2. Select Tiny Calculator at project address 546. A standard demoboard provides its normal project-selection tooling; other boards may require manual multiplexer selection after power-up. Tiny Tapeout's GF0p2 breakout-board guide provides one manual-selection example, but follow the procedure for the board actually in use.
  3. Hold rst_n low while applying the clock, then release it high.
  4. Start with a 5 kHz clock. This frequency is an untested bring-up suggestion and will be revised after silicon testing. The useful rate depends on input conditioning, shift-register timing, wiring capacitance, and loading.
  5. Set NEG_EN before entering a calculation and preferably keep it stable through that calculation.
  6. Confirm WL[3:0], SER, falling-edge SRCLK, rising-edge RCLK, and OE_n with a logic analyzer before attaching the displays if possible.

Functional pin groups

The official published page appends the complete pin table from info.yaml. Functionally, the pins are grouped as follows:

Group Signals Purpose
Keypad inputs BL0BL3 Active-high matrix bit-line inputs
Control inputs ADD, SUB, MUL, DIV, EQ, AC, NEG Active-high push-button inputs
Mode input NEG_EN Low selects unsigned operation; high selects signed two's-complement operation
Keypad outputs WL0WL3 One-hot active-high matrix word-line drive
Display interface SER, SRCLK, RCLK, OE_n Serial data, shift clock, storage-latch clock, and active-low output enable
Operation indicators ADD, SUB, MUL, DIV on uio[3:0] Active-high selected-operation outputs

The input and output signals with the same operation name are separate pins: for example, ui_in[4] is the ADD button input while uio[0] is the addition-status output.

Electrical protection and pull-downs

All active-high inputs need a defined low level when open. A 100 kΩ pull-down is a practical starting value for each dedicated button input, NEG_EN, and each BL input. Higher resistance reduces current but increases sensitivity to leakage and noise; lower resistance improves noise immunity but loads a pressed WL more heavily.

Approximately 1 kΩ of series protection is recommended on non-LED connections to the ASIC. Choose the final value from the worst credible fault:

Rseries >= 3.3 V / Isafe

A 1 kΩ resistor limits a direct 3.3 V short to about 3.3 mA on one pin. It does not certify that shorting many pins simultaneously is safe: twelve calculator pins can drive externally (uo_out[7:0] and uio[3:0]), so twelve independent 1 kΩ shorts could demand about 39.6 mA in total. Avoid sustained faults and use external buffers when aggregate loading is uncertain. (In extreme cases, if an incorrect project is loaded, the ASIC may drive up to 16 pins simultaneously)

Total series resistance also forms an RC network with the wiring, pin, and receiving-input capacitance. This effect is generally small at low frequencies, but verify the chosen resistance, wiring, capacitance, and clock frequency together. In the keypad path, include the WL-side resistor and any BL-side series resistor when checking the pressed voltage:

VBL ~= (3.3 V - Vdiode) × Rpulldown / (Rpulldown + Rseries)

Verify the result against the receiving input's guaranteed VIH, including diode drop and component tolerances. Keeping a nominal 100 kΩ pull-down much larger than a nominal 1–2 kΩ total series path avoids the roughly 10% divider loss that a 10 kΩ pull-down would introduce with 1 kΩ of series resistance. A Schmitt-trigger buffer can restore a clean logic transition and add hysteresis after the resistor-divider node, but it cannot repair a pressed voltage below its positive-going threshold and does not provide mechanical debounce by itself.

Input pins are normally high impedance, so their series resistors should carry negligible steady current. Therefore, adding a small series resistor to input pins should be a safe way to protect the ASIC, while not affecting the logic level (due to low-to-none current draw).

Keypad array

4×4 hexadecimal keypad matrix

The keypad, switches, diodes, and pull-downs are external hardware. Each normally-open key connects one WL to one BL through a series isolation diode. Place the diode anode toward the driven WL and its cathode/bar toward BL. Give every BL its own pull-down. The diagram is illustrative and intentionally omits component values and optional protection resistors.

Active word line BL0 BL1 BL2 BL3
WL0 0 1 2 3
WL1 4 5 6 7
WL2 8 9 A B
WL3 C D E F

For each active word line, the asserted BL corresponds to the value shown at that WL/BL coordinate in the table.

The ASIC drives one WL high at a time. It can update the candidate key while buttons are held, but it emits a valid button event only after every matrix and control button has been released for one complete four-row scan. Holding a key therefore produces one release-latched event rather than repeated digits. This scan and release logic is not mechanical debouncing.

Simultaneous buttons

Simultaneous inputs are supported. They resolve deterministically into one release-latched event according to scan order, per-row and dedicated-button priority, and release order. See the repository README for the exact rules.

Input release behavior and optional debounce

The inputs are sampled synchronously on clock edges as the rows are scanned; they are not asynchronous one-shot triggers. The reader emits an event only after one complete four-row scan observes every matrix and dedicated input released. A short contact interruption that does not produce a complete released scan is therefore ignored naturally.

This is still not a designed mechanical debouncer. Mechanical bounce may span several clock edges. The relevant failure case is not simply whether bounce is faster than clk; it is whether sampled bounce resembles a complete released scan followed by another press. That sequence can create an early or duplicate event. Many switches and clock rates may work reliably without extra debounce, so validate the real hardware before adding it.

If testing shows incorrect or duplicate events, an RC filter followed by a Schmitt-trigger buffer is a straightforward option for each dedicated button. Calculate its thresholds and time constant from the switch bounce, intended response time, series protection, and buffer datasheet.

BL filtering needs more care. The isolation diodes prevent reverse current into inactive WLs, but a large capacitor directly from a shared BL to ground can retain a high level into a later row slot and associate the key with the wrong row. Use either:

  • A small BL RC used only as a noise filter, verified to fall below VIL before another row can be sampled.
  • Schmitt-trigger or matrix-aware conditioning that respects the row scan.
  • Per-key conditioning before the matrix connection.
  • A deliberately chosen and validated scan clock combined with external logic.

At the suggested 5 kHz clock, one row slot is about 200 µs and a full scan is about 800 µs. A conventional multi-millisecond debounce capacitor on a shared BL is therefore likely to remain charged across several rows. If BL filtering is needed, validate clock rate, RC timing, diode drop, series resistance, VIH, and VIL together on the real circuit.

Operation-status LEDs

The four active-high operation outputs may directly drive low-current indicator LEDs. Start near 1 mA and calculate each resistor from:

RLED = (3.3 V - VF_LED) / ILED

Choose the next larger standard value and remain below the ASIC pad limit. If brightness or current is a concern, use the ASIC output to drive the gate of a logic-level NMOS. Connect the NMOS source to ground and place the LED plus its current-limiting resistor between 3.3 V and the drain. The ASIC then supplies only transient gate current.

Seven-segment shift-register interface

A SIPO is a Serial-In, Parallel-Out register: it accepts one SER bit per shift clock and presents the stored bits simultaneously on parallel output pins. The ASIC does not drive the display segments from SER; segment current comes from the SIPO or a separate LED-driver stage.

Use enough outputs for one sign segment plus four complete hexadecimal digits: 29 retained outputs. Four daisy-chained 8-bit registers provide 32 outputs and are sufficient; leave the extra retained dummy outputs disconnected. The ASIC nevertheless transmits 35 bits on every update:

first sent                                                   last sent
D1a D1b D1c D1d D1e D1f D1g | D2a ... D2g | D3a ... D3g | D4a ... D4g | D5a ... D5g

D1 is the leftmost/MSB display position and D5 is the rightmost/LSB position. D1a through D1f are always-zero dummy bits. After 35 clocks, a 29-stage chain naturally discards those first six zeroes and retains this useful frame:

D1g | D2a D2b D2c D2d D2e D2f D2g | ... | D5a D5b D5c D5d D5e D5f D5g

The minus sign uses segment g immediately to the left of the magnitude's most-significant visible digit. D1g is used when all four magnitude digits need display space; for shorter values, a later digit's g segment carries the sign. The six dummy outputs are always zero, including during Err.

The final QA/QB/… wiring order depends on the selected register's shift direction. On a typical chain the last transmitted bit remains nearest the serial input and the earliest retained bit ends farthest away, but the register datasheet—not its output naming convention alone—is authoritative. Test a one-hot frame before wiring all segments.

Required SRCLK falling-edge capture

Hardware erratum: the manufactured design requires the external SIPO to capture SER on the falling edge of SRCLK.

SRCLK is normally held high and follows clk while a display frame is being shifted. The design assumed that a rising-edge register would capture the previous cycle's data. In physical hardware, however, SER and SRCLK are produced from the same internal clock event, so the data has no guaranteed setup time before the rising edge.

At each falling edge, SER has had approximately half a clock period to settle. This includes the first falling edge, when the normally-high SRCLK begins following the low phase of clk. A falling-edge SIPO therefore captures all 35 bits correctly.

Use one of these approaches:

  1. A SIPO that shifts natively on a falling clock edge.
  2. A proper logic inverter between ASIC SRCLK and a conventional rising-edge SIPO.
  3. A validated NMOS-plus-pull-up inverter, provided its voltage levels, rise time, loading, and inversion are suitable.
  4. A deliberately delayed SER path only after timing analysis proves setup and hold margins.

This was an overlooked design flaw, but the falling-edge workaround is simple and does not affect calculator arithmetic.

RCLK, OE_n, and clean updates
  • RCLK is the storage-latch clock after all 35 bits. Connect it to a SIPO's storage/shadow-latch clock so the completed frame is captured on the rising edge of RCLK. The old display remains stable until that edge transfers the complete frame.
  • OE_n is high while shifting and low while displaying. Connect it to an active-low output-enable input when available so the display is blank during transfer.
  • A storage latch by itself is enough to prevent intermediate patterns. OE_n by itself can hide shifting on a register without a storage latch. Using both is preferred.
  • A register with neither feature can still receive the final frame, but intermediate patterns may visibly flash while bits move.
Segment drive capability

For common-cathode displays, an active-high push-pull SIPO may source the segments directly only if its output-high voltage, per-pin source current, and total package current all satisfy the desired brightness with the selected segment resistors. Calculate each resistor from the SIPO supply, output drop, LED forward voltage, and chosen current.

If the SIPO cannot supply enough current, add transistor or LED-driver stages. A common-anode arrangement can use one low-side NMOS per segment: the shift-register output drives the gate, the NMOS sinks the LED current, and the segment still needs a current-limiting resistor.

Using the calculator

Digits are hexadecimal. Chained operations execute from left to right; there is no operator precedence.

Normal calculations
Keys Meaning Result
1 2 + 3 = 0x12 + 0x3 15
F F * 2 = 0xFF × 2 1FE
A / 3 = Integer quotient; remainder discarded 3
2 + 3 * 4 = First 2+3, then 5×4 14

Pressing another operator after entering B calculates the pending operation immediately and selects the new operator. That is why chained calculations are left-to-right.

Omitted and repeated operands
  • 1 + = uses the displayed A value as the missing B, so it calculates 1+1 and displays 2.
  • Another = repeats the retained operation with the retained B. Therefore 3 + = = displays 6, then 9.
  • 2 + 3 = * = selects addition again and uses the displayed 5 result as the omitted second operand, so it calculates 5*5 and displays 19.
  • An operator pressed before any B digit replaces the previous operator. 2 + * 3 = calculates 2×3, not 2+3.
  • Combining both rules, 2 + * 3 - = replaces + with *, calculates 2×3 = 6 when - is pressed, selects subtraction, then uses displayed A as omitted B: 6-6 = 0.
After =
  • Pressing an operator continues from the displayed result as A. Example: 2 + 3 = * 4 = displays 5, then 14.
  • Pressing a digit starts a fresh calculation and discards the old A, B, and operation.
  • Pressing = again repeats the retained operation and B.
  • Pressing NEG toggles the displayed result in signed mode.
NEG and signed input

NEG_EN=0 selects unsigned mode; NEG then has no numerical effect. NEG_EN=1 enables two's-complement signed entry and display.

  • NEG 2 * 3 = enters negative two and displays -6.
  • 2 NEG * 3 = also negates A before the operator.
  • 2 * NEG 3 = prepares a negative B before its first digit.
  • 2 * 3 NEG = negates the already-entered B.
  • Pressing NEG twice toggles back to the original sign.
  • After =, NEG toggles the displayed result without starting a new calculation.

The signed-mode input is live rather than latched per calculation. Changing NEG_EN alone does not rewrite the already-latched display; the new interpretation appears on the next display transaction, such as a digit update, NEG, calculation result, or AC. Preferably keep NEG_EN stable during a calculation so later input, arithmetic, and display updates all use the same interpretation.

Clear, errors, and limits
  • Initial = is ignored because no operation has been selected.
  • AC clears A, B, the selected operation, sign-entry flags, and the display value.
  • Division by zero displays Err. Every key except AC is ignored until the error is cleared.
  • Division truncates toward zero and discards the remainder.
  • A digit that would exceed the current 16-bit signed or unsigned input range is ignored, leaving the displayed operand unchanged.
  • Arithmetic results are limited to 16 bits. Add, subtract, and multiply overflow wraps modulo 2^16; overflow is not reported as an error.

Bring-up checklist

  • Confirm 3.3 V logic and common ground; never apply 5 V to an ASIC input.
  • Select project 546 following the board's project-selection procedure.
  • Hold reset low, begin with the untested 5 kHz suggestion, then release reset.
  • Check that one and only one WL is high at a time.
  • Verify each key appears only after complete release.
  • Verify SER on falling SRCLK edges before connecting the SIPO.
  • Confirm 35 shift edges followed by the rising RCLK latch edge and OE_n returning low.
  • Test a one-hot segment mapping and confirm all six discarded dummy bits are zero.
  • Check SIPO per-pin and total current before enabling all display segments.

IO

#InputOutputBidirectional
0i_BL0o_WL0o_ADD
1i_BL1o_WL1o_SUB
2i_BL2o_WL2o_MUL
3i_BL3o_WL3o_DIV
4i_ADDo_SERi_EQ
5i_SUBo_SRCLKi_AC
6i_MULo_RCLKi_NEG
7i_DIVo_OE_ni_NEG_EN

Chip location

Controller Mux 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_oscillating_bones (Oscillating Bones) tt_um_tinyflash (Tiny Chaos) tt_um_tnt_rf_test (TTSKY25A Register File Test) tt_um_wokwi_442983115801432065 (TimosChip) tt_um_wokwi_442977603880750081 (My first Wokwi project) tt_um_wokwi_442980274206980097 (Lauflicht_HTL_Leonding) tt_um_wokwi_442985235137668097 (Chip) tt_um_wokwi_442977476137901057 (Paircheck) tt_um_seven_segment_games (7-segment-games) tt_um_wokwi_442977465750697985 (Auberger tiny tapeout) tt_um_wokwi_442983567899298817 (Template copy) tt_um_wokwi_442977846716359681 (Tiny Tapeout) tt_um_wokwi_442983760106473473 (Tiny Tapeout Test) tt_um_Max00Ker_Traffic_Light (Traffic Light Controller) tt_um_wokwi_442983721200099329 (Piffl first Wokwi project) tt_um_strasti (8-Bit ALU) tt_um_wokwi_442977509323262977 (simple adder and subtractor) tt_um_wokwi_442977852139597825 (The Ultimate ASIC) tt_um_wokwi_442984105081776129 (Test project) tt_um_wokwi_442977495241922561 (First Wokwi design) tt_um_wokwi_442977534651634689 (Tiny Tapeout Wokwi Bsp) tt_um_pwm_led_top (PWM_LED_dimmer) tt_um_classic_vga_clock (tt_classic_vga_clock_by_TT) tt_um_wokwi_442977463421808641 (Patrick first TT chip) tt_um_wokwi_442983748797580289 (Simple Logic-Gate Controlled LEDs) tt_um_timba307_LEDSpinner (jku-sky-LEDSpinner) tt_um_wokwi_442977533467790337 (4 Bit Counter) tt_um_wokwi_442977645972707329 (Davids first Wokwi design) tt_um_wokwi_442977436543634433 (2 Bit Counter) tt_um_wokwi_442977452121292801 (Shift_Register) tt_um_wokwi_442976058838162433 (7segCounter) tt_um_wokwi_442977493563151361 (7SegDec) tt_um_Lukasseirl (Tiny_Tapeout_Scoreboard) tt_um_dip_switch_game_TobiasPfaffeneder (Can you count binary?) tt_um_wokwi_442977704392041473 (test-project.) tt_um_wokwi_442984054310760449 (TinyTapeout Wokwi) tt_um_cpu_fabianp1704 (8-Bit-CPU) tt_um_wokwi_442977579441572865 (Hamming (7,4) Encoder and Decoder) tt_um_wokwi_442977842875423745 (Tiny Tapeout) tt_um_wokwi_442977476963131393 (Test) tt_um_s_grundner (Polyphonic MIDI-Synth) tt_um_wokwi_442987128372461569 (counter7seg) tt_um_wokwi_442977648674888705 (tt-test) tt_um_wokwi_442977792040445953 (tiny tapeout test gates) tt_um_lukasdragoste_vga_patterns (VGA Pattern Generator) tt_um_wokwi_442983161563395073 (tt_primitiv_rotating_7segment) tt_um_attention_top (transformer-attention-engine) tt_um_wokwi_442977515486800897 (Austrochip 2025 Tiny Tapeout Project) tt_um_endecoder_workfefra (EnDecoder) tt_um_wokwi_442977774857423873 (first-chip-project) tt_um_wokwi_442983487202965505 (EmilsChip) tt_um_wokwi_442984104166367233 (Austrochip 2025 Workshop Design) tt_um_wokwi_442978797853619201 (Full Adder) tt_um_wokwi_442983541057844225 (First Wokwi design) tt_um_df_top (Digital Filter) tt_um_tiny_4bit_alu (4-Bit ALU) tt_um_wokwi_442987944543304705 (Lauflichterweitung) 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_442987201599784961 (Tiny tapeout test gates) tt_um_wokwi_442977606409919489 (Tiney Tapeout Test Gates) tt_um_wokwi_442977490552687617 (Tiny Tapeout Projekt) tt_um_wokwi_442987575358494721 (Tiny Tapeout Template) tt_um_wokwi_442987960046504961 (Lauflicht_Erweiteung_HTL_LEONDING) tt_um_urish_simon (Simon Says memory game) tt_um_FG_TOP_Dominik_Brandstetter (Function Generator) tt_um_vga_clock (VGA clock) tt_um_z2a_rgb_mixer (RGB Mixer demo) tt_um_felixzhou_spi_slave_ctrl (spi_slave_ctrl) tt_um_Jsilicon (Jsilicon) tt_um_wokwi_413387009513254913 (SimplePattern) tt_um_wokwi_445165988923203585 (Crazy logic gates) tt_um_wokwi_445172771884208129 (TinyTapeoutProject) tt_um_wokwi_445163720250008577 (base-4-circuit-addition) tt_um_wokwi_445163803460843521 (tiny tapeout) tt_um_wokwi_445163742018450433 (Simon Memory Game) tt_um_wokwi_445163652263454721 (Minhala's tinytapeout) tt_um_wokwi_445163607540610049 (Leena and Gabby's coding masterpiece) tt_um_wokwi_445163940815949825 (doritos) tt_um_wokwi_445164514940747777 (DAMTinyTape) tt_um_wokwi_445163656445179905 (Test) tt_um_wokwi_445163922612663297 (Chip Design (Working title)) tt_um_wokwi_445171727534897153 (FlippyFlop) tt_um_wokwi_445172053537213441 (Chip-Test) tt_um_wokwi_445163628668378113 (4 switch, seven segment display) tt_um_wokwi_445174163497792513 (T Flip Flop) tt_um_wokwi_445164196289996801 (Tiny Tapeout Test Gates) tt_um_wokwi_445165735970991105 (tiny tapout test gates) tt_um_wokwi_445163669892121601 (Nicky - Tiny Tapeout) tt_um_wokwi_445163874814362625 (Tiny Tapeout Test Gates) tt_um_wokwi_445163790648286209 (AnalogClockTest1) tt_um_wokwi_445173979376212993 (EJ Wokwi proj.) tt_um_wokwi_445172860504617985 (Tiny_Tapeout_Test_Gates) tt_um_wokwi_445163677488010241 (Bob design) tt_um_wokwi_445171420903985153 (Fawwaz's Project) tt_um_wokwi_445256090314494977 (Tiny Tapeout Hackathon UofT Day 2 Template) tt_um_wokwi_445254767859645441 (flipper 1 to 5) tt_um_wokwi_445256131623154689 (Tiny tapeout test gates) tt_um_wokwi_445254731311517697 (Single Digit Sums by Mark Angelov) tt_um_wokwi_445255383410583553 (Overly Complicated Light Switch) tt_um_wokwi_445254813154997249 (Tiny Tapeout Gates) tt_um_wokwi_445255110472500225 (chipchip) tt_um_wokwi_445255067501843457 (Semi-Conductor Design) tt_um_wokwi_445254767711795201 (WOKWI Design - Joelle) tt_um_wokwi_445254845860088833 (Johans Wokwi design) tt_um_wokwi_445254714007910401 (Arjun's 1st Wokwi design) tt_um_wokwi_445254980988014593 (Tiny Tapeout Test Gates) tt_um_wokwi_445254976953093121 (Inverting Numbers) tt_um_wokwi_445254908700218369 (Tinytapeoutchipnikki) tt_um_wokwi_445254867374774273 (Hardware Hackday Test Gates) tt_um_wokwi_445255496359022593 (gds) tt_um_wokwi_445265377104476161 (WokwiDesign) tt_um_wokwi_445256528755654657 (sigma uncount) tt_um_wokwi_445255578007454721 (Tiny Tapeout Test Gates) tt_um_wokwi_445265925317879809 (tinytapeout) tt_um_wokwi_445260761196909569 (Tiny Tapeout Template Copy) tt_um_wokwi_446565876953355265 (Tiny Tapeout Project - Binary to Decimal Display) tt_um_wokwi_445255326319805441 (Svens Woki design) tt_um_wokwi_445255081544375297 (Tiney Tapeout Semiconduxtor) tt_um_wokwi_445266058506969089 (Wowki) tt_um_wokwi_445262455513487361 (Tiny Tapeout Test Games) tt_um_wokwi_445264784091688961 (Wokwicreation) tt_um_wokwi_445276353959823361 (Jarle Chip) tt_um_wokwi_444910895295771649 (Project Title) tt_um_wokwi_445263189281882113 (FullAdder) tt_um_wokwi_445254953748100097 (Tiny Tapeout Test Gates) tt_um_wokwi_444269677791635457 (Ring Counter) tt_um_rebeccargb_arrow_board (Arrow Board) tt_um_sergejsumnovs_spi_slave (Cynergy4MIE SPI Slave Component) tt_um_rebelmike_femtorv (FemtoRV register file test) tt_um_wokwi_445163733427466241 (my first wokwi design) tt_um_tnt_rf_validation (TTSKY25B Register File Validation) tt_um_pongsagon_tinygpu_v2 (Tiniest GPU V2) tt_um_rc_servo_motor_xy_ea (rc_servo_motor_xy) tt_um_htfab_asicle2 (Asicle v2) tt_um_dumb_turing_yliu_hashed (DUMB-Turing) tt_um_wokwi_446363696828310529 (sparkhom SR flip flop) tt_um_wokwi_446364165240923137 (TinyTapeout) tt_um_wokwi_446645853372820481 (JBs first chip) tt_um_wokwi_446907838117673985 (miloh-tinytapeout-supercon2025) tt_um_wokwi_446363880417243137 (test) tt_um_wokwi_446363782054494209 (4-bit Johnson Counter) tt_um_wokwi_446847576277095425 (Tiny Tapeout 20251031) tt_um_wokwi_446363829539267585 (AndNand) tt_um_wokwi_446363784753530881 (LeviathonGds) tt_um_wokwi_446363928119066625 (mysteryform) tt_um_wokwi_447138553926768641 (Digit Fidgit) tt_um_6502_chip_select (6502 Chip Selector) tt_um_wokwi_446363731295014913 (Tiny Tapeout Binary to Decimal) tt_um_wokwi_446363984157070337 (HAD TT) tt_um_wokwi_446364133350576129 (Tiny Tapeout Workshop Supercon 25) tt_um_bmellor_lightsout (Lights-Out) tt_um_wokwi_446363771447095297 (Simple Tapped Delay Line) tt_um_sleepy_module (Sleepy Chip) tt_um_camdenmil_sky25b (OctoPWM) tt_um_wokwi_446363844132307969 (wokwi-adder) tt_um_wokwi_446362347802682369 (DETDFF (Tiny Tapeout)) tt_um_arko (Arko) tt_um_wokwi_446363696538901505 (Fastest Finger First) tt_um_wokwi_446363830909757441 (My Tiny Tapeout) tt_um_wokwi_446363833426340865 (First WOWKI Project) tt_um_wokwi_446364777751946241 (Seven Segment Display Driver) tt_um_wokwi_446359782214875137 (Jon_And_Angie_08281999) tt_um_wokwi_446368563224770561 (TinyTapeout2) tt_um_wokwi_446373432938861569 (j-initial-cycler) tt_um_kianV_rv32ima_uLinux_SoC (KianV uLinux SoC) tt_um_kercrafter_leds_racer (LEDs Racer) tt_um_four_bit_cpu_top_level (4Bit_CPU) tt_um_yorimichi_kittscanner (kitt_scanner) tt_um_devmonk_ay8913 (Classic 8-bit era Programmable Sound Generator AY-3-8913) tt_um_tinytapeout_logo_screensaver (VGA Screensaver with Tiny Tapeout Logo) tt_um_TinyWhisper (Tiny Whisper) tt_um_markr_transientshaper (Audio Transient Shaper) tt_um_urish_sic1 (SIC-1 8-bit SUBLEQ Single Instruction Computer) tt_um_essen (Blake2s) tt_um_baud_rate_cdr (Baud-Rate PAM4 Clock and Data Recovery (CDR)) tt_um_b2nch_DreiMann_top (DreiMann) tt_um_tt05_analog_test (TT25 3B DAC and RingO) tt_um_wokwi_446424200424416257 (JK flip-flop) tt_um_willwhang (60/50Hz AC clock) tt_um_toivoh_delta_sigma (Noise shaping delta-sigma DAC) tt_um_wokwi_444123325639097345 (tinytapeout test gates) tt_um_lime_cic_filter (lime_cic_filter) tt_um_VHDL_PWM_DEMUX (PWM Generator) tt_um_VHDL_FSM (FSM) tt_um_vhdl_ALU_top (6bit ALU) tt_um_proppy_bytebeat (bytebeat) tt_um_femto (UNAL's RISCV ) tt_um_ag2048_tiny_calculator (Tiny Calculator) tt_um_alexlowl_myTTproject (myTTproject) tt_um_relax (Relax_Oscillator) tt_um_tiny_shader_v2_mole99 (Tiny Shader v2) tt_um_mattvenn_r2r_dac_3v3 (Analog 8 bit 3.3v R2R DAC) tt_um_evm (Electronic Voting Machine) tt_um_top_axis_uart (AXIS_UART_TTO) tt_um_nco (Numerically Controlled Oscillator) tt_um_morse (Morse Code Converter) tt_um_tiny_hardware_authentication_engine (Tiny Hardware Authentication Engine) tt_um_mattvenn_analog_ring_osc (Ring Oscillators) tt_um_eestevez3_SAR_ADC (8 Bit SAR ADC) tt_um_wokwi_446992736864284673 (Binary Counter) tt_um_patrick_lin_git_mcht_trx (Manchester Encode/Decode with built-in 5X PLL) tt_um_bleeptrack_nn1 (Negative Nature #1) tt_um_bleeptrack_nn2 (Negative Nature #2) tt_um_bleeptrack_nn3 (Negative Nature #3) tt_um_bleeptrack_nn4 (Negative Nature #4) tt_um_underserved (TTSKY25b-RISCV-Core) tt_um_axc1271_tinypong (Tiny Pong) tt_um_Electom_cla_4bits (4-bit CLA) tt_um_zerotoasic_logo_screensaver (VGA Screensaver with Zero to ASIC Logo) tt_um_wokwi_446364830841352193 (Flip the Flop) tt_um_instrumented_ring_oscillator_two (instrumented_ring_oscillator_two) tt_um_tadc_its (Time Domain ADC) tt_um_seven_segment_animations (7-Segment-Animations) tt_um_urish_spell (SPELL) tt_um_algofoogle_vga_matrix_dac (Analog VGA CSDAC experiments (TTSKY25b)) tt_um_cejmu_wspr (CEJMU WSPR Encoder) tt_um_wokwi_442987636779898881 (tt-wokwi) tt_um_wokwi_442977691824856065 (Numbers) tt_um_wokwi_442988211554861057 (Siebensegment_Chip) tt_um_wokwi_442982978057266177 (Kleine Tapeout Vorlagen-Kopie) tt_um_wokwi_442977531497515009 (Tiny Tapeout meli) tt_um_wokwi_442985098452614145 (Template) tt_um_wokwi_442983461306274817 (Tiny tapeout test) tt_um_wokwi_442983243536903169 (Tiny Tapeout Template Hammer) tt_um_wokwi_442979151350678529 (TestGDS) tt_um_wokwi_442982637762839553 (Arjun's First Template Copy) tt_um_tnt_mosbius (tnt's variant of SKY130 mini-MOSbius) tt_um_project (in-81004-1 silicon) tt_um_wokwi_442977548950021121 (Digital_gate) tt_um_wokwi_442987226036856833 (TinyTapeoutTest) tt_um_wokwi_442987174502478849 (4 bit adder) tt_um_wokwi_442984695522496513 (Test) tt_um_wokwi_442977682425413633 (JKU Matt Venn workshop simple project) tt_um_wokwi_442987801460891649 (Tiny Tapeout Template Copy) tt_um_rh_bf_top (TinyBF) tt_um_wokwi_442977585335625729 (WokWi Test) tt_um_wokwi_442977456053457921 (Wokwi Template) tt_um_wokwi_442979336364610561 (ShilpaTinytapeout) tt_um_kianv_rv32_regfile (KianV uLinux RISC-V regfile edition) tt_um_PWM (PWM_selector) tt_um_wokwi_445338187869298689 (WokwiPWM) tt_um_wokwi_447051835034957825 (TicTacToe) tt_um_chrimenz_tinyturing (Tiny Turing Machine) tt_um_emilian_opamp_3v3 (3V3 Opamp and DRAM cell) tt_um_jakedrew_qei (QEI (Quadrature Encoder Interface)) tt_um_wokwi_442977503814034433 (Tiny Tapeout Test Gates) tt_um_wokwi_442978871257096193 (fdfs) tt_um_wokwi_445163636148924417 (not a dumpster fire ) tt_um_wokwi_445175272109059073 (Tiny Takeout Test Gates) tt_um_wokwi_445163800203964417 (Four-bit adder tiny tapeout) tt_um_wokwi_445163606906219521 (Secret Password) tt_um_wokwi_445172222101072897 (Tiny Tapeout Template Project) tt_um_wokwi_445163763917969409 (Tiny Tapeout Binary to 7SD) tt_um_wokwi_445172941748296705 (Anushka and Tina Wokwi) tt_um_wokwi_445163964149915649 (Tahmid and Sunny's First Wokwi Design) tt_um_verilog_meetup_template_project_example (Verilog Meetup Template Project Example) tt_um_brainfck_asic (Brainf*ck ASIC) tt_um_wokwi_446363834407809025 (RHYTHM LOOPER and RANDOMIZER 9000) tt_um_technology_characterization (SKY130 technology characterization) tt_um_mosbius (mini mosbius) tt_um_bouncing_squares (Bouncing squares) tt_um_PseudoSM_ASIC (PSM_asic) tt_um_enjimneering_tts_top (TinyTapeStation) tt_um_morse_it (MORSEASCII) tt_um_vga_projekt_ed_nkpng (vga_projekt_ed_nkpng) tt_um_uart_temp_sens (Uart and Temperature sensor) tt_um_ragnar_lucasnilsson954 (RagnarMegaRaknare) tt_um_react_test_saksh156 (React Chip) tt_um_mastermind (Mastermind) tt_um_synth_magmusson (hardcoded sequencer) tt_um_hammal_fir_filter (FIR Filter) tt_um_tinytone (tt-tinytone) tt_um_julke_gussinatorn2 (JulkeGussinatorn 2.0) tt_um_se_opamps (ttsky25_se_opamps) tt_um_unclegravity_7seg_counter (7-Segment Counter) tt_um_wokwi_445256658591419393 (Andrew chip design) tt_um_counter_isaharp (Counter) tt_um_wokwi_445254959452357633 (Anton's-Hardware-Hack) tt_um_wokwi_445256643197274113 (SignalSorter) tt_um_wokwi_445265826672030721 (The Adder) tt_um_wokwi_445175605912766465 (Tiny Tapeout Hradware Workshop Vaibhav) tt_um_fkd_xorshift (xorshift) tt_um_wokwi_445255035084055553 (Tiny Tapeouts Chip Design) tt_um_wokwi_445254913718704129 (Tiny Tapeout Test Gates) tt_um_wokwi_445254916601240577 (cirucuit) tt_um_wokwi_442988784492711937 (test) tt_um_rejunity_ym2413_ika_opll (YM2413 FM synthesis audio chip) tt_um_top_general (Dual-Channel PWM with SPI Control + Extra Test Logic) tt_um_proppy_megabytebeat (megabytebeat) tt_um_rom_vga_screensaver (VGA Screensaver with embedded bitmap ROM) tt_um_sky25a_nurirfansyah_nauta (Nauta OTA with digital trimming) tt_um_mattvenn_relax_osc (Relaxation oscillator) tt_um_pantelis300_nco (NCO) tt_um_ieeeuoftasic_simproc (SimProc (Simple Processor)) tt_um_rejunity_vga_playground (My (S)VGA Playground) tt_um_Onchip_VCOx2 (Onchip - Ring VCO 11 stages x2) tt_um_dlmiles_dffram32x8_2r1w (Tiny RAM DFF 2r1w) tt_um_Onchip_BandGap (OnChip - Bandgap Reference) tt_um_kianv_bare_metal (KianV RISC-V RV32E Baremetal SoC) tt_um_pommarkus_i2c_slave (I2C Slave) tt_um_MichaelBell_tinyQV (TinyQV Risc-V SoC) tt_um_reservoir (EZ Reservoir) tt_um_morse_w_serial (Morse Code Detector (With Serial RX)) tt_um_dyno (dyno-tt) tt_um_libokuohai_asap_cpu_v1 (ASAP CPU v1) tt_um_2048_vga_game (2048 sliding tile puzzle game (VGA)) tt_um_quick_cpu (4 hour CPU) tt_um_tv_b_gone_rom (TV-B-Gone-EU (ROM Macro variant)) tt_um_flappy_vga_cutout1 (Flappy VGA) tt_um_Sai222777 (XOR Stream Cipher) tt_um_ring_osc3 (Verilog Multistage Oscillator with Enable and Counter) Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available