{"version":3,"id":"ttihp0p4","name":"Tiny Tapeout IHP 0p4","repo":"https://github.com/TinyTapeout/tinytapeout-ihp-0p4","commit":"dae4c4eaf3a404a4ba5ecf4cd8b65d01e85294a2","updated":"2026-04-01T19:39:55Z","projects":[{"macro":"tt_um_2048_vga_game","address":516,"title":"2048 sliding tile puzzle game (VGA)","author":"Uri Shaked","description":"Slide numbered tiles on a grid to combine them to create a tile with the number 2048.","clock_hz":25175000,"tiles":"3x2","analog_pins":[],"repo":"https://github.com/urish/tt-2048-game","commit":"711b9e1a508345880695567444fc7c26859f924b","pinout":{"ui[0]":"btn_up","ui[1]":"btn_down","ui[2]":"btn_left","ui[3]":"btn_right","ui[4]":"gamepad_latch","ui[5]":"gamepad_clk","ui[6]":"gamepad_data","ui[7]":"debug_mode","uo[0]":"R1","uo[1]":"G1","uo[2]":"B1","uo[3]":"VSync","uo[4]":"R0","uo[5]":"G0","uo[6]":"B0","uo[7]":"HSync","uio[0]":"debug_cmd","uio[1]":"debug_cmd","uio[2]":"debug_cmd","uio[3]":"debug_cmd","uio[4]":"debug_data","uio[5]":"debug_data","uio[6]":"debug_data","uio[7]":"debug_data"}},{"macro":"tt_um_MichaelBell_photo_frame","address":513,"title":"Photo Frame","author":"Mike Bell","description":"Display images from flash","clock_hz":25000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/MichaelBell/ttihp26a-photo-frame","commit":"53cfb47a6e884e26c7f63508ee5dfe1921120ab2","pinout":{"ui[0]":"Config clk","ui[1]":"Config data","ui[2]":"Display enable","ui[3]":"Select QSPI pinout","ui[4]":"QSPI latency 0","ui[5]":"QSPI latency 1","ui[6]":"QSPI latency 2","ui[7]":"Config register selection","uo[0]":"R[1]","uo[1]":"G[1]","uo[2]":"B[1]","uo[3]":"vsync","uo[4]":"R[0]","uo[5]":"G[0]","uo[6]":"B[0]","uo[7]":"hsync","uio[0]":"CS","uio[1]":"SD0 / SCK","uio[2]":"SD1 / SD0","uio[3]":"SCK / SD1","uio[4]":"SD2","uio[5]":"SD3","uio[6]":"Unused CS","uio[7]":"Unused CS"}},{"macro":"tt_um_SotaSoC","address":490,"title":"SotaSoC","author":"SotaTek","description":"RISC-V 32-bit embedded SoC with RV32IC_Zicsr_Zifencei core featuring SPI, I2C, UART, PWM, and GPIO peripherals","clock_hz":64000000,"tiles":"6x2","analog_pins":[],"repo":"https://github.com/sotatek-dev/ttihp-SotaSoC","commit":"01ed908d67192cd6c7a75bbecdff64b965e1db55","pinout":{"ui[0]":"SPI_MISO","ui[1]":"GPIO_IN[0]","ui[2]":"GPIO_IN[1]","ui[3]":"GPIO_IN[2]","ui[4]":"GPIO_IN[3]","ui[5]":"GPIO_IN[4]","ui[6]":"GPIO_IN[5]","ui[7]":"UART0_RX","uo[0]":"UART0_TX","uo[1]":"ERROR_FLAG","uo[2]":"GPIO_OUT[0]/I2C_SCL","uo[3]":"GPIO_OUT[1]/SPI_CS_N","uo[4]":"GPIO_OUT[2]/SPI_SCLK","uo[5]":"GPIO_OUT[3]/SPI_MOSI","uo[6]":"GPIO_OUT[4]/PWM[0]","uo[7]":"GPIO_OUT[5]/PWM[1]","uio[0]":"FLASH_CS_N","uio[1]":"BUS_IO[0]","uio[2]":"BUS_IO[1]","uio[3]":"BUS_SPI_SCLK","uio[4]":"BUS_IO[2]","uio[5]":"BUS_IO[3]","uio[6]":"RAM_CS_N","uio[7]":"GPIO_IO[0]/I2C_SDA"}},{"macro":"tt_um_YannGuidon_TinyScanChain","address":515,"title":"TinyScanChain5L","author":"Yann Guidon","description":"Low footprint scan chain for iHP PDK / SG13CMOS5L","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/ygdes/TinyScanChain5L","commit":"c1db7c3f417fc1bdbf4af7192ea8ab4f015753ab","pinout":{"ui[0]":"DI0","ui[1]":"DI1","ui[2]":"DI2","ui[3]":"DI3","ui[4]":"DI4","ui[5]":"DI5","ui[6]":"DI6","ui[7]":"DI7","uo[0]":"DO0","uo[1]":"DO1","uo[2]":"DO2","uo[3]":"DO3","uo[4]":"DO4","uo[5]":"DO5","uo[6]":"DO6","uo[7]":"DO7","uio[0]":"SC_RESET","uio[1]":"SC_CLK","uio[2]":"SC_GET","uio[3]":"SC_SET","uio[4]":"SC_DIN","uio[5]":"SC_DOUT","uio[6]":"DO8","uio[7]":"Count_Enable"}},{"macro":"tt_um_algofoogle_raybox_zero","address":235,"title":"raybox-zero TTIHP0p4 edition","author":"algofoogle (Anton Maurovic)","description":"TTIHP0p4 v1.8-dev submission of 'simple VGA ray caster game demo'","clock_hz":25175000,"tiles":"6x2","analog_pins":[],"repo":"https://github.com/algofoogle/ttihp0p4-raybox-zero","commit":"029b0a4472196839b125e7ae2acbe930cd458761","pinout":{"ui[0]":"spi_sck","ui[1]":"spi_sdi","ui[2]":"spi_csb","ui[3]":"debug","ui[4]":"inc_px","ui[5]":"inc_py","ui[6]":"reg","ui[7]":"tex_pmod_type","uo[0]":"red[1]","uo[1]":"green[1]","uo[2]":"blue[1]","uo[3]":"vsync_n","uo[4]":"red[0]","uo[5]":"green[0]","uo[6]":"blue[0]","uo[7]":"hsync_n","uio[0]":"Out: digilent_tex_csb   / Out: moser_tex_csb","uio[1]":"I/O: digilent_tex_io0   / I/O: moser_tex_io0","uio[2]":"In:  digilent_tex_io1   / In:  moser_tex_io1","uio[3]":"Out: digilent_tex_sclk  / Out: moser_tex_sclk","uio[4]":"In:  SPARE              / In:  moser_tex_io2","uio[5]":"In:  gen_texb           / In:  moser_tex_io3","uio[6]":"In:  digilent_tex_io2   / N/A: moser_CS1","uio[7]":"In:  digilent_tex_io3   / N/A: moser_CS2"}},{"macro":"tt_um_algofoogle_vgaringosc","address":295,"title":"Ring osc on VGA","author":"algofoogle (Anton Maurovic)","description":"VGA display visualisation of a ring oscillator doing work","clock_hz":25175000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/algofoogle/ttihp0p4-vga-ring-osc","commit":"624d589122ff12a959be09500e2efbe418b6cc22","pinout":{"ui[0]":"clksel[0]","ui[1]":"clksel[1]","ui[2]":"clksel[2]","ui[3]":"clksel[3]","ui[4]":"altclk","ui[5]":"mode[0]","ui[6]":"mode[1]","ui[7]":"vga_mode","uo[0]":"r7","uo[1]":"g7","uo[2]":"b7","uo[3]":"vsync","uo[4]":"r6","uo[5]":"g6","uo[6]":"b6","uo[7]":"hsync","uio[0]":"IN: clksel2[0]","uio[1]":"IN: clksel2[1]","uio[2]":"","uio[3]":"","uio[4]":"OUT: osc","uio[5]":"OUT: div2","uio[6]":"OUT: div4","uio[7]":"OUT: div8"}},{"macro":"tt_um_calonso88_spi_i2c_reg_bank","address":583,"title":"Register bank accessible through SPI and I2C","author":"Caio Alonso da Costa","description":"Register bank accessible through SPI and I2C","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/calonso88/dtu_tt_workshop","commit":"8cbd4fa4de90ff2795e1aea408af2bf58e4fc469","pinout":{"ui[0]":"cpol","ui[1]":"cpha","ui[2]":"i2c_addr[0}","ui[3]":"i2c_addr[1}","ui[4]":"i2c_addr[2}","ui[5]":"","ui[6]":"","ui[7]":"peripheral selector (SPI=0/I2C=1)","uo[0]":"spare[0]","uo[1]":"spare[1]","uo[2]":"spare[2]","uo[3]":"spare[3]","uo[4]":"spare[4]","uo[5]":"spare[5]","uo[6]":"spare[6]","uo[7]":"spare[7]","uio[0]":"","uio[1]":"i2c_sda","uio[2]":"i2c_scl","uio[3]":"spi_miso","uio[4]":"spi_cs_n","uio[5]":"spi_clk","uio[6]":"spi_mosi","uio[7]":""}},{"macro":"tt_um_chatelao_fp8_multiplier","address":38,"title":"OCP MXFP8 Streaming MAC Unit","author":"Olivier Chatelain","description":"Streaming MAC unit supporting OCP MXFP8 (E4M3/E5M2) with shared scaling","clock_hz":20000000,"tiles":"2x2","analog_pins":[],"repo":"https://github.com/chatelao/ttihp-fp8-mul","commit":"e66cd59e518b697d2409e0e81a05c0e447ba6139","pinout":{"ui[0]":"data_in_a[0]","ui[1]":"data_in_a[1]","ui[2]":"data_in_a[2]","ui[3]":"data_in_a[3]","ui[4]":"data_in_a[4]","ui[5]":"data_in_a[5]","ui[6]":"data_in_a[6]","ui[7]":"data_in_a[7]","uo[0]":"data_out[0]","uo[1]":"data_out[1]","uo[2]":"data_out[2]","uo[3]":"data_out[3]","uo[4]":"data_out[4]","uo[5]":"data_out[5]","uo[6]":"data_out[6]","uo[7]":"data_out[7]","uio[0]":"data_in_b[0]","uio[1]":"data_in_b[1]","uio[2]":"data_in_b[2]","uio[3]":"data_in_b[3]","uio[4]":"data_in_b[4]","uio[5]":"data_in_b[5]","uio[6]":"data_in_b[6]","uio[7]":"data_in_b[7]"}},{"macro":"tt_um_chip_rom","address":0,"title":"Chip ROM","author":"Uri Shaked","description":"ROM with information about the chip","clock_hz":0,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/TinyTapeout/tt-chip-rom","commit":"bb743722e70e5313617c15b7d6f487745634a0fa","pinout":{"ui[0]":"addr[0]","ui[1]":"addr[1]","ui[2]":"addr[2]","ui[3]":"addr[3]","ui[4]":"addr[4]","ui[5]":"addr[5]","ui[6]":"addr[6]","ui[7]":"addr[7]","uo[0]":"data[0]","uo[1]":"data[1]","uo[2]":"data[2]","uo[3]":"data[3]","uo[4]":"data[4]","uo[5]":"data[5]","uo[6]":"data[6]","uo[7]":"data[7]","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_digital_clock_example","address":577,"title":"7-Segment Digital Desk Clock","author":"Samuel Ellicott","description":"7-Segment Desk Clock","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/sellicott/digital_clock_ihp03","commit":"13768a12446ed9611b352fd07a2631bdc1d93d97","pinout":{"ui[0]":"refclk","ui[1]":"","ui[2]":"Fast/Slow Set","ui[3]":"Set Hours","ui[4]":"Set Minutes","ui[5]":"12-Hour Mode","ui[6]":"","ui[7]":"","uo[0]":"","uo[1]":"","uo[2]":"","uo[3]":"","uo[4]":"","uo[5]":"","uo[6]":"","uo[7]":"","uio[0]":"Display CS","uio[1]":"Display MOSI","uio[2]":"","uio[3]":"Display SCK","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_essen","address":581,"title":"Fast bfloat multiplication","author":"Julia Desmazes","description":"Uselessly fast bfloat16 multiplication","clock_hz":454545,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/Essenceia/uselessly_fast_bfloat16_multiplier","commit":"994a932f97c2c32f645278f3fbfa549e4655766f","pinout":{"ui[0]":"data_i[0]","ui[1]":"data_i[1]","ui[2]":"data_i[2]","ui[3]":"data_i[3]","ui[4]":"data_i[4]","ui[5]":"data_i[5]","ui[6]":"data_i[6]","ui[7]":"data_i[7]","uo[0]":"res_o[0]","uo[1]":"res_o[1]","uo[2]":"res_o[2]","uo[3]":"res_o[3]","uo[4]":"res_o[4]","uo[5]":"res_o[5]","uo[6]":"res_o[6]","uo[7]":"res_o[7]","uio[0]":"data_v_i","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"res_v_o","uio[7]":"res_v_early_o"}},{"macro":"tt_um_factory_test","address":1,"title":"Tiny Tapeout Factory Test","author":"Tiny Tapeout","description":"Factory test module","clock_hz":0,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/TinyTapeout/ttihp0p4-factory-test","commit":"06e6e3630111adfc6aeea075356362f21f8f01ff","pinout":{"ui[0]":"sel / in_a[0]","ui[1]":"in_a[1]","ui[2]":"in_a[2]","ui[3]":"in_a[3]","ui[4]":"in_a[4]","ui[5]":"in_a[5]","ui[6]":"in_a[6]","ui[7]":"in_a[7]","uo[0]":"output[0] / counter[0]","uo[1]":"output[1] / counter[1]","uo[2]":"output[2] / counter[2]","uo[3]":"output[3] / counter[3]","uo[4]":"output[4] / counter[4]","uo[5]":"output[5] / counter[5]","uo[6]":"output[6] / counter[6]","uo[7]":"output[7] / counter[7]","uio[0]":"in_b[0] / counter[0]","uio[1]":"in_b[1] / counter[1]","uio[2]":"in_b[2] / counter[2]","uio[3]":"in_b[3] / counter[3]","uio[4]":"in_b[4] / counter[4]","uio[5]":"in_b[5] / counter[5]","uio[6]":"in_b[6] / counter[6]","uio[7]":"in_b[7] / counter[7]"}},{"macro":"tt_um_float_synth_nikleberg","address":32,"title":"float_synth","author":"Niklaus Leuenberger","description":"Synthesizing the VHDL-2008 IEEE.float_pkg","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/NikLeberg/tt_um_float_synth","commit":"038d2fa116a783f5b9d5a4426929ad4dc699bacb","pinout":{"ui[0]":"a0","ui[1]":"a1","ui[2]":"a2","ui[3]":"a3","ui[4]":"a4","ui[5]":"a5","ui[6]":"a6","ui[7]":"a7","uo[0]":"y0","uo[1]":"y1","uo[2]":"y2","uo[3]":"y3","uo[4]":"y4","uo[5]":"y5","uo[6]":"y6","uo[7]":"y7","uio[0]":"b0","uio[1]":"b1","uio[2]":"b2","uio[3]":"b3","uio[4]":"b4","uio[5]":"b5","uio[6]":"b6","uio[7]":"b7"}},{"macro":"tt_um_flummer_ltc","address":258,"title":"Linear Timecode (LTC) generator with I2C control","author":"Thomas Flummer","description":"Timecode generator for audio video syncronization","clock_hz":24000000,"tiles":"1x2","analog_pins":[],"repo":"https://github.com/flummer/tt-um-flummer-ltc","commit":"210a3cd61bf96cbe921d7a770e00e52ede7c0583","pinout":{"ui[0]":"","ui[1]":"","ui[2]":"FRAMERATE_0","ui[3]":"FRAMERATE_1","ui[4]":"DF","ui[5]":"CF","ui[6]":"BGF_0","ui[7]":"BGF_1","uo[0]":"FRAMERATE_DEBUG_7SEG","uo[1]":"FRAMERATE_DEBUG_7SEG","uo[2]":"FRAMERATE_DEBUG_7SEG","uo[3]":"FRAMERATE_DEBUG_7SEG","uo[4]":"FRAMERATE_DEBUG_7SEG","uo[5]":"FRAMERATE_DEBUG_7SEG","uo[6]":"FRAMERATE_DEBUG_7SEG","uo[7]":"REG_CONF_ACTIVE","uio[0]":"I2C_SDA","uio[1]":"I2C_SCL","uio[2]":"","uio[3]":"","uio[4]":"DEBUG_SETTIME_OUT","uio[5]":"DEBUG_I2C_OUT","uio[6]":"DEBUG_I2C_OUT","uio[7]":"LTC_OUT"}},{"macro":"tt_um_glyph_mode_hd","address":579,"title":"Glyph Mode HD","author":"James Ross","description":"Improved Matrix digital rain animation with 4 VGA modes","clock_hz":25175000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/jar/ttihp0p4_glyph_mode_hd","commit":"4e2bdd0fe0953afe09fb8f1bacd062f229187493","pinout":{"ui[0]":"Palette 0","ui[1]":"Palette 1","ui[2]":"","ui[3]":"","ui[4]":"","ui[5]":"","ui[6]":"VGA Mode bit 0","ui[7]":"VGA Mode bit 1","uo[0]":"R1","uo[1]":"G1","uo[2]":"B1","uo[3]":"VSync","uo[4]":"R0","uo[5]":"G0","uo[6]":"B0","uo[7]":"HSync","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_htfab_asicle2","address":330,"title":"Asicle v2","author":"htfab","description":"Wordle clone in raw silicon","clock_hz":25175000,"tiles":"2x2","analog_pins":[],"repo":"https://github.com/htfab/ttihp0p4-asicle2","commit":"e24c8202000405019e4bf85614b70d81fca0dd38","pinout":{"ui[0]":"up","ui[1]":"down","ui[2]":"left","ui[3]":"right","ui[4]":"guess / gamepad: latch","ui[5]":"new game / gamepad: clock","ui[6]":"peek (debug) / gamepad: data","ui[7]":"roll (debug)","uo[0]":"tinyvga: r1","uo[1]":"tinyvga: g1","uo[2]":"tinyvga: b1","uo[3]":"tinyvga: vsync","uo[4]":"tinyvga: r0","uo[5]":"tinyvga: g0","uo[6]":"tinyvga: b0","uo[7]":"tinyvga: hsync","uio[0]":"qspi: cs0 (flash)","uio[1]":"qspi: sd0/mosi","uio[2]":"qspi: sd1/miso","uio[3]":"qspi: sck","uio[4]":"qspi: sd2","uio[5]":"qspi: sd3","uio[6]":"qspi: cs1 (unused)","uio[7]":"qspi: cs2 (unused)"}},{"macro":"tt_um_htfab_caterpillar","address":34,"title":"Simon's Caterpillar","author":"htfab","description":"Port of Caterpillar Logic to Simon Says PMOD","clock_hz":50000,"tiles":"1x2","analog_pins":[],"repo":"https://github.com/htfab/ttihp0p4-caterpillar","commit":"c79f855fb3185e0991c93c82016d8d6b49132677","pinout":{"ui[0]":"red button","ui[1]":"green button","ui[2]":"blue button","ui[3]":"yellow button","ui[4]":"display polarity","ui[5]":"","ui[6]":"","ui[7]":"","uo[0]":"red led","uo[1]":"green led","uo[2]":"yellow led","uo[3]":"blue led","uo[4]":"speaker","uo[5]":"digit 1","uo[6]":"digit 2","uo[7]":"","uio[0]":"segment A","uio[1]":"segment B","uio[2]":"segment C","uio[3]":"segment D","uio[4]":"segment E","uio[5]":"segment F","uio[6]":"segment G","uio[7]":""}},{"macro":"tt_um_htfab_rotfpga2","address":262,"title":"ROTFPGA v2","author":"htfab","description":"A reconfigurable logic circuit made of identical rotatable tiles","clock_hz":10000000,"tiles":"1x2","analog_pins":[],"repo":"https://github.com/htfab/ttihp0p4-rotfpga","commit":"73afdb09a37ff5d1caf9d7f69fa075d96dac9a30","pinout":{"ui[0]":"tile(0,0) left in","ui[1]":"tile(0,1) left in","ui[2]":"tile(0,2) left in","ui[3]":"tile(0,3) left in","ui[4]":"tile(0,4) left in","ui[5]":"tile(0,5) left in","ui[6]":"tile(0,6) left in","ui[7]":"tile(0,7) left in","uo[0]":"tile(7,0) right out","uo[1]":"tile(7,1) right out","uo[2]":"tile(7,2) right out","uo[3]":"tile(7,3) right out","uo[4]":"tile(7,4) right out","uo[5]":"tile(7,5) right out","uo[6]":"tile(7,6) right out","uo[7]":"tile(7,7) right out","uio[0]":"_scan enable_ input","uio[1]":"_scan chain_ input","uio[2]":"_configuration_ input bit 0","uio[3]":"_configuration_ input bit 1","uio[4]":"_loop breaker enable_ input","uio[5]":"_loop breaker class_ input bit 0","uio[6]":"_loop breaker class_ input bit 1","uio[7]":"_scan chain_ output"}},{"macro":"tt_um_lisa","address":326,"title":"LISA 8-Bit Microcontroller","author":"Ken Pettit","description":"8-Bit Microcontroller SOC with 128 bytes Flop based RAM","clock_hz":18000000,"tiles":"4x4","analog_pins":[],"repo":"https://github.com/kdp1965/ihp-cmos5l-um-lisa","commit":"c5a6e0ff719aa83fa2916c367fc0ddcf824ecb87","pinout":{"ui[0]":"pa[0]/b_div[0]/rx2","ui[1]":"pa[1]/b_div[1]/rx2","ui[2]":"pa[2]/b_div[2]/rx2","ui[3]":"pa[3]/b_div[3]/rx","ui[4]":"pa[4]/b_div[4]","ui[5]":"pa[5]/b_div[5]","ui[6]":"pa[6]/b_div[6]","ui[7]":"pa[7]/b_set(autobaud_disable)","uo[0]":"pb[0]/tx2","uo[1]":"pb[1]/tx2","uo[2]":"pb[2]/tx2","uo[3]":"pb[3]","uo[4]":"pb[4]/tx","uo[5]":"pb[5]","uo[6]":"pb[6]","uo[7]":"pb[7]/baud_clk","uio[0]":"ce0/ce_latch","uio[1]":"mosi/dq1/ce0_latch","uio[2]":"miso/dq2/ce1_latch","uio[3]":"sclk","uio[4]":"rx  /pc_io[0]/scl/ce1","uio[5]":"tx  /pc_io[1]/sda","uio[6]":"scl /pc_io[2]/dq2/rx","uio[7]":"sda/pc_io[3]/dq3"}},{"macro":"tt_um_lledoux_bf16_diminished_kulisch","address":261,"title":"Pattern-Guided Arithmetic Optimizations with MLIR kulisch bf16","author":"L. Ledoux","description":"Streaming byte-fed S3FDP seq+comb accumulator generated from MLIR for-loop.","clock_hz":500000,"tiles":"3x2","analog_pins":[],"repo":"https://github.com/Bynaryman/ttihp04","commit":"3d09ea34a07a1ea99f86396fd467492ede94ea61","pinout":{"ui[0]":"in_byte[0]","ui[1]":"in_byte[1]","ui[2]":"in_byte[2]","ui[3]":"in_byte[3]","ui[4]":"in_byte[4]","ui[5]":"in_byte[5]","ui[6]":"in_byte[6]","ui[7]":"in_byte[7]","uo[0]":"out_byte[0]","uo[1]":"out_byte[1]","uo[2]":"out_byte[2]","uo[3]":"out_byte[3]","uo[4]":"out_byte[4]","uo[5]":"out_byte[5]","uo[6]":"out_byte[6]","uo[7]":"out_byte[7]","uio[0]":"unused","uio[1]":"unused","uio[2]":"unused","uio[3]":"unused","uio[4]":"unused","uio[5]":"unused","uio[6]":"unused","uio[7]":"unused"}},{"macro":"tt_um_lledoux_s3fdp_seqcomb","address":98,"title":"Pattern-Guided Arithmetic Optimizations with MLIR per-op","author":"L. Ledoux","description":"Streaming byte-fed IEEE754 per-op seq+comb accumulation core generated from MLIR for-loop.","clock_hz":500000,"tiles":"2x2","analog_pins":[],"repo":"https://github.com/Bynaryman/ttihp04_ieee754_perop","commit":"98097f9ef0c98ebe1fdd838e27f3643b78983e3f","pinout":{"ui[0]":"in_byte[0]","ui[1]":"in_byte[1]","ui[2]":"in_byte[2]","ui[3]":"in_byte[3]","ui[4]":"in_byte[4]","ui[5]":"in_byte[5]","ui[6]":"in_byte[6]","ui[7]":"in_byte[7]","uo[0]":"out_byte[0]","uo[1]":"out_byte[1]","uo[2]":"out_byte[2]","uo[3]":"out_byte[3]","uo[4]":"out_byte[4]","uo[5]":"out_byte[5]","uo[6]":"out_byte[6]","uo[7]":"out_byte[7]","uio[0]":"unused","uio[1]":"unused","uio[2]":"unused","uio[3]":"unused","uio[4]":"unused","uio[5]":"unused","uio[6]":"unused","uio[7]":"unused"}},{"macro":"tt_um_microlane_demo","address":521,"title":"microlane demo project","author":"htfab","description":"Scrolls a message on the 7-segment display. Hardened using microlane.","clock_hz":5,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/htfab/ttihp0p4-microlane-demo","commit":"b7245fca76d2cda636e8c67700618aa761c2bb8b","pinout":{"ui[0]":"","ui[1]":"","ui[2]":"","ui[3]":"","ui[4]":"","ui[5]":"","ui[6]":"","ui[7]":"","uo[0]":"segment A","uo[1]":"segment B","uo[2]":"segment C","uo[3]":"segment D","uo[4]":"segment E","uo[5]":"segment F","uo[6]":"segment G","uo[7]":"","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_miniMAC","address":266,"title":"miniMAC_5L","author":"Yann Guidon","description":"16-bit Scrambler/Framer/Error detector for IHP SG2CMOS5L PDK","clock_hz":100000000,"tiles":"1x2","analog_pins":[],"repo":"https://github.com/ygdes/miniMAC_5L","commit":"939f5d04285ff048b3a1bbaef01a0431b77da7a3","pinout":{"ui[0]":"DI0","ui[1]":"DI1","ui[2]":"DI2","ui[3]":"DI3","ui[4]":"DI4","ui[5]":"DI5","ui[6]":"DI6","ui[7]":"DI7","uo[0]":"DO0","uo[1]":"DO1","uo[2]":"DO2","uo[3]":"DO3","uo[4]":"DO4","uo[5]":"DO5","uo[6]":"DO6","uo[7]":"DO7","uio[0]":"D08","uio[1]":"QEN","uio[2]":"CLK_out","uio[3]":"Zero","uio[4]":"Enc","uio[5]":"Dec","uio[6]":"DEN","uio[7]":"DI8"}},{"macro":"tt_um_nicklausthompson_twi_monitor","address":291,"title":"TWI Monitor","author":"Nicklaus Thompson","description":"A Two Wire Interface (I2C) bus monitor","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/FangameEmpire/ttihp0p4-twi-monitor","commit":"5eec0423b9f2026b00bb75742d56079b8a04289f","pinout":{"ui[0]":"SDA_in","ui[1]":"SCL_in","ui[2]":"","ui[3]":"","ui[4]":"","ui[5]":"","ui[6]":"","ui[7]":"","uo[0]":"TX_out","uo[1]":"","uo[2]":"","uo[3]":"","uo[4]":"","uo[5]":"","uo[6]":"","uo[7]":"","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_pakesson_glitcher","address":587,"title":"Glitcher","author":"Philip Åkesson","description":"Fault injection pulse generator with trigger input and configurable parameters, controllable over UART.","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/pakesson/tt_glitcher","commit":"42db112b55c28f35952d04d4df22c80478c0578e","pinout":{"ui[0]":"Trigger Input","ui[1]":"UART RX","ui[2]":"","ui[3]":"","ui[4]":"","ui[5]":"","ui[6]":"","ui[7]":"","uo[0]":"UART TX","uo[1]":"Pulse Out","uo[2]":"Target Reset","uo[3]":"Pulse EN","uo[4]":"Busy","uo[5]":"Armed","uo[6]":"Pulse Out or Target Reset","uo[7]":"","uio[0]":"Pulse Out (Inverted)","uio[1]":"Target Reset (Inverted)","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_prism_lite","address":264,"title":"ihp_cmos51_prism","author":"Ken Pettit","description":"A programmable FSM","clock_hz":64000000,"tiles":"1x2","analog_pins":[],"repo":"https://github.com/kdp1965/ihp-cmos5l-prism-lite","commit":"3f36ddcde5075766600ebad0e0a2150e726285b9","pinout":{"ui[0]":"UART RX","ui[1]":"fsm_in0","ui[2]":"fsm_in1","ui[3]":"fsm_in2","ui[4]":"fsm_in3","ui[5]":"fsm_in4","ui[6]":"fsm_in5","ui[7]":"fsm_in6","uo[0]":"fsm_out0","uo[1]":"fsm_out1","uo[2]":"fsm_out2","uo[3]":"fsm_out3","uo[4]":"fsm_out4","uo[5]":"fsm_out5","uo[6]":"fsm_out6","uo[7]":"UART TX","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"spi_miso","uio[4]":"spi_cs_n","uio[5]":"spi_clk","uio[6]":"spi_mosi","uio[7]":""}},{"macro":"tt_um_silicon_strummer","address":299,"title":"Silicon Strummer","author":"Pranav M","description":"VGA fretboard guitar","clock_hz":0,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/pranav0x0112/Silicon-Strummer","commit":"08a571dffb38a8dae9f6c1c65eab8d930f61295e","pinout":{"ui[0]":"Move right (fret +)","ui[1]":"Move left (fret -)","ui[2]":"Move up (string -)","ui[3]":"Move down (string +)","ui[4]":"Enable audio","ui[5]":"","ui[6]":"","ui[7]":"","uo[0]":"R1 (TinyVGA)","uo[1]":"G1 (TinyVGA)","uo[2]":"B1 (TinyVGA)","uo[3]":"vsync (TinyVGA)","uo[4]":"R0 (TinyVGA)","uo[5]":"G0 (TinyVGA)","uo[6]":"B0 (TinyVGA)","uo[7]":"hsync (TinyVGA)","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":"Audio out (square wave)"}},{"macro":"tt_um_snake_game","address":102,"title":"SnakeGame","author":"stacu","description":"Game of Snake","clock_hz":25175000,"tiles":"2x2","analog_pins":[],"repo":"https://github.com/StaCu/ttihp-snake-game","commit":"fa0222c52872584f26b35ee3c4128b75b6d31ba1","pinout":{"ui[0]":"up","ui[1]":"down","ui[2]":"left","ui[3]":"right","ui[4]":"pause","ui[5]":"restart","ui[6]":"","ui[7]":"","uo[0]":"vga r1","uo[1]":"vga g1","uo[2]":"vga b1","uo[3]":"vga vsync","uo[4]":"vga r0","uo[5]":"vga g0","uo[6]":"vga b0","uo[7]":"vga hsync","uio[0]":"failure","uio[1]":"success","uio[2]":"eat","uio[3]":"tick","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":"audio"}},{"macro":"tt_um_spongent88","address":106,"title":"Spongent-88 Hash Accelerator","author":"Stefan Aeschbacher","description":"Hardware accelerator for the Spongent-88/80/8 lightweight hash function.","clock_hz":50000000,"tiles":"2x2","analog_pins":[],"repo":"https://github.com/imix/ttihp-spongent88","commit":"685ceaec096a8ee4e00830d349ae9d38f50842ee","pinout":{"ui[0]":"data_in[0]","ui[1]":"data_in[1]","ui[2]":"data_in[2]","ui[3]":"data_in[3]","ui[4]":"data_in[4]","ui[5]":"data_in[5]","ui[6]":"data_in[6]","ui[7]":"data_in[7]","uo[0]":"data_out[0]","uo[1]":"data_out[1]","uo[2]":"data_out[2]","uo[3]":"data_out[3]","uo[4]":"data_out[4]","uo[5]":"data_out[5]","uo[6]":"data_out[6]","uo[7]":"data_out[7]","uio[0]":"busy","uio[1]":"out_valid","uio[2]":"addr[0]","uio[3]":"addr[1] / wr_strobe","uio[4]":"addr[2] / rd_strobe","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_tinymoa_ihp0p4_16x16","address":75,"title":"TinyMOA-IHP0P4-16x16","author":"Ezra Wolf","description":"16x16 digital compute-in-memory (DCIM) core on an experimental IHP SG13G2 CMOS5L shuttle.","clock_hz":50000000,"tiles":"2x2","analog_pins":[],"repo":"https://github.com/EzraWolf/TinyMOA-IHP0P4-16x16","commit":"3b0ea7bf842e68255ebc17230913eb953977dfdb","pinout":{"ui[0]":"data_in[0]","ui[1]":"data_in[1]","ui[2]":"data_in[2]","ui[3]":"data_in[3]","ui[4]":"data_in[4]","ui[5]":"data_in[5]","ui[6]":"data_in[6]","ui[7]":"data_in[7]","uo[0]":"result[0]","uo[1]":"result[1]","uo[2]":"result[2]","uo[3]":"result[3]","uo[4]":"result[4]","uo[5]":"result[5]","uo[6]":"result[6] (zero)","uo[7]":"result[7] (zero)","uio[0]":"wen (in)","uio[1]":"execute (in)","uio[2]":"read_next (in)","uio[3]":"acc_clear (in)","uio[4]":"col_sel[0] (out)","uio[5]":"col_sel[1] (out)","uio[6]":"col_sel[2] (out)","uio[7]":"done (out)"}},{"macro":"tt_um_tinymoa_ihp0p4_8x8","address":293,"title":"TinyMOA-IHP0P4-8x8","author":"Ezra Wolf","description":"8x8 digital compute-in-memory (DCIM) core on an experimental IHP SG13G2 CMOS5L shuttle.","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/EzraWolf/TinyMOA-IHP0P4-8x8","commit":"1bc9f820917768bf302ba2dcf1defaaaf45e6b9c","pinout":{"ui[0]":"data_in[0]","ui[1]":"data_in[1]","ui[2]":"data_in[2]","ui[3]":"data_in[3]","ui[4]":"data_in[4]","ui[5]":"data_in[5]","ui[6]":"data_in[6]","ui[7]":"data_in[7]","uo[0]":"result[0]","uo[1]":"result[1]","uo[2]":"result[2]","uo[3]":"result[3]","uo[4]":"result[4]","uo[5]":"result[5]","uo[6]":"result[6] (zero)","uo[7]":"result[7] (zero)","uio[0]":"wen (in)","uio[1]":"execute (in)","uio[2]":"read_next (in)","uio[3]":"acc_clear (in)","uio[4]":"col_sel[0] (out)","uio[5]":"col_sel[1] (out)","uio[6]":"col_sel[2] (out)","uio[7]":"done (out)"}},{"macro":"tt_um_tinytapeout_logo_screensaver","address":256,"title":"VGA Screensaver with Tiny Tapeout Logo","author":"Uri Shaked","description":"Tiny Tapeout Logo bouncing around the screen (640x480, TinyVGA Pmod)","clock_hz":25175000,"tiles":"1x2","analog_pins":[],"repo":"https://github.com/TinyTapeout/tt-logo-screensaver","commit":"be02f00ad687de12b2fd4b7a86ceef4aceb02c39","pinout":{"ui[0]":"tile","ui[1]":"solid_color","ui[2]":"","ui[3]":"","ui[4]":"gamepad_latch","ui[5]":"gamepad_clk","ui[6]":"gamepad_data","ui[7]":"","uo[0]":"R1","uo[1]":"G1","uo[2]":"B1","uo[3]":"VSync","uo[4]":"R0","uo[5]":"G0","uo[6]":"B0","uo[7]":"HSync","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_toivoh_demo","address":260,"title":"Orion Iron Ion [TT08 demo competition]","author":"Toivo Henningsson","description":"My contribution to the TT10 demo competition","clock_hz":50400000,"tiles":"1x2","analog_pins":[],"repo":"https://github.com/MichaelBell/ttihp-orion-iron-ion","commit":"4dd1164a6c2d2d19b1526d28be416c56757481fa","pinout":{"ui[0]":"","ui[1]":"","ui[2]":"","ui[3]":"","ui[4]":"","ui[5]":"","ui[6]":"advance[0]","ui[7]":"advance[1]","uo[0]":"R1","uo[1]":"G1","uo[2]":"B1","uo[3]":"vsync","uo[4]":"R0","uo[5]":"G0","uo[6]":"B0","uo[7]":"hsync","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":"audio_out"}},{"macro":"tt_um_urish_rings","address":585,"title":"VGA Rings","author":"Uri Shaked","description":"Hypnotic concentric rings effect","clock_hz":0,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/urish/tt-rings","commit":"c6b43450f809a960bf4d06aea370c21fc5aea70d","pinout":{"ui[0]":"speed","ui[1]":"direction","ui[2]":"","ui[3]":"","ui[4]":"","ui[5]":"","ui[6]":"","ui[7]":"","uo[0]":"R1","uo[1]":"G1","uo[2]":"B1","uo[3]":"VSync","uo[4]":"R0","uo[5]":"G0","uo[6]":"B0","uo[7]":"HSync","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_urish_sic1","address":522,"title":"SIC-1 8-bit SUBLEQ Single Instruction Computer","author":"Uri Shaked","description":"Hardware implementation of the 8-bit Single Instruction Computer","clock_hz":0,"tiles":"3x4","analog_pins":[],"repo":"https://github.com/urish/tt-subleq-sic1","commit":"27ee6975c08b04fb0ba367adf52afa66635e334d","pinout":{"ui[0]":"in[0]","ui[1]":"in[1]","ui[2]":"in[2]","ui[3]":"in[3]","ui[4]":"in[4]","ui[5]":"in[5]","ui[6]":"in[6]","ui[7]":"in[7]","uo[0]":"out[0]","uo[1]":"out[1]","uo[2]":"out[2]","uo[3]":"out[3]","uo[4]":"out[4]","uo[5]":"out[5]","uo[6]":"out[6]","uo[7]":"out[7]","uio[0]":"run","uio[1]":"halted","uio[2]":"set_pc","uio[3]":"load_data","uio[4]":"out_strobe","uio[5]":"dbg[0]","uio[6]":"dbg[1]","uio[7]":"dbg[2]"}},{"macro":"tt_um_urish_simon","address":523,"title":"Simon Says memory game","author":"Uri Shaked","description":"Repeat the sequence of colors and sounds to win the game","clock_hz":50000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/urish/tt-simon-game","commit":"a3c405c62e63701978cb67e9c8f641f15a0e2907","pinout":{"ui[0]":"btn1","ui[1]":"btn2","ui[2]":"btn3","ui[3]":"btn4","ui[4]":"seginv","ui[5]":"","ui[6]":"","ui[7]":"clk_sel","uo[0]":"led1","uo[1]":"led2","uo[2]":"led3","uo[3]":"led4","uo[4]":"speaker","uo[5]":"dig1","uo[6]":"dig2","uo[7]":"clk_internal","uio[0]":"seg_a","uio[1]":"seg_b","uio[2]":"seg_c","uio[3]":"seg_d","uio[4]":"seg_e","uio[5]":"seg_f","uio[6]":"seg_g","uio[7]":""}},{"macro":"tt_um_urish_usb_cdc","address":42,"title":"USB CDC (Serial) Device","author":"Uri Shaked","description":"USB to UART bridge, 115200 baud rate","clock_hz":48000000,"tiles":"2x2","analog_pins":[],"repo":"https://github.com/urish/tt-usbcdc-device","commit":"0a6f24a3d8cc5fd27eb6ac649591f30758c2a313","pinout":{"ui[0]":"demo_mode","ui[1]":"","ui[2]":"","ui[3]":"RX","ui[4]":"","ui[5]":"","ui[6]":"","ui[7]":"","uo[0]":"","uo[1]":"","uo[2]":"","uo[3]":"","uo[4]":"TX","uo[5]":"","uo[6]":"","uo[7]":"configured","uio[0]":"usb_p","uio[1]":"usb_n","uio[2]":"dp_pu_o","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_vga_clock","address":297,"title":"VGA clock","author":"Matt Venn","description":"Shows the time on a VGA screen","clock_hz":31500000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/mattvenn/ttihp0p4-vga-clock","commit":"a30e49fc3c6ea6cfeedc5e3c30a8b10410e771aa","pinout":{"ui[0]":"adjust hours","ui[1]":"adjust minutes","ui[2]":"adjust seconds","ui[3]":"PMOD type select","ui[4]":"","ui[5]":"","ui[6]":"","ui[7]":"","uo[0]":"hsync / R1","uo[1]":"vsync / G1","uo[2]":"B0 / B1","uo[3]":"B1 / VS","uo[4]":"G0 / R0","uo[5]":"G1 / G0","uo[6]":"R0 / B0","uo[7]":"R1 / HS","uio[0]":"","uio[1]":"","uio[2]":"","uio[3]":"","uio[4]":"","uio[5]":"","uio[6]":"","uio[7]":""}},{"macro":"tt_um_ygdes_hdsiso8_dlhq","address":519,"title":"ttihp-HDSISO8","author":"Yann Guidon","description":"High density Shift register - DLHQ","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/YannGuidon/ttihp-HDSISO8_5L","commit":"a17a61b141c512885fcc678fa8b2db13c2e0fa1f","pinout":{"ui[0]":"CLK_SEL","ui[1]":"EXT_CLK","ui[2]":"EXT_RST","ui[3]":"D_IN","ui[4]":"","ui[5]":"SHOW_LFSR","ui[6]":"LFSR_EN","ui[7]":"DIN_SEL","uo[0]":"D_OUT","uo[1]":"CLK_OUT","uo[2]":"Johnson #0","uo[3]":"Johnson #1","uo[4]":"Johnson #2","uo[5]":"Johnson #3","uo[6]":"LFSR_PERIOD","uo[7]":"LFSR_BIT","uio[0]":"PULSE #0","uio[1]":"PULSE #1","uio[2]":"PULSE #2","uio[3]":"PULSE #3","uio[4]":"PULSE #4","uio[5]":"PULSE #5","uio[6]":"PULSE #6","uio[7]":"PULSE #7"}},{"macro":"tt_um_ygdes_hdsiso8_rs","address":517,"title":"ttihp-HDSISO8RS","author":"Yann Guidon","description":"Higher density Shift register - RS version","clock_hz":50000000,"tiles":"1x1","analog_pins":[],"repo":"https://github.com/YannGuidon/ttihp-HDSISO8RS_5L","commit":"ec22ebc2346c574e382c66c89cfbeab363e5f55a","pinout":{"ui[0]":"CLK_SEL","ui[1]":"EXT_CLK","ui[2]":"EXT_RST","ui[3]":"D_IN","ui[4]":"","ui[5]":"SHOW_LFSR","ui[6]":"LFSR_EN","ui[7]":"DIN_SEL","uo[0]":"D_OUT","uo[1]":"CLK_OUT","uo[2]":"Johnson #0","uo[3]":"Johnson #1","uo[4]":"Johnson #2","uo[5]":"Johnson #3","uo[6]":"LFSR_PERIOD","uo[7]":"LFSR_BIT","uio[0]":"PULSE #0","uio[1]":"PULSE #1","uio[2]":"PULSE #2","uio[3]":"PULSE #3","uio[4]":"PULSE #4","uio[5]":"PULSE #5","uio[6]":"PULSE #6","uio[7]":"PULSE #7"}}]}