WritingRSSBuild notes from the bench — grouped by project; the freshest section rises to the top.Tomato CPU — SeptemberSep 15, 2026SiteGitHubVirtual Fallback vs AII wondered, what is the use of saying hello to tomato and getting a reponse, Hello {firstname}? It is cool, but withers too quickly. It would be completely orthogonal to build a...Sep 15, 2026SiteGitHubDiscard Previewer or IntegrateThere was an enormous wait time to get the fresh bitstream from each iteration, and I thought to instead build a Python previewer which takes that assembly source file, Tomato O...Sep 14, 2026SiteGitHubSynthesis BypassI have spent the entire day, and much of that was waiting on synthesis, routing, and bitstream generation! In one case, I took a walk to bike around and after 36 mins, it was st...Sep 14, 2026SiteGitHubMultiple ParticipantsWhy should a messaging app exist only for two participants at a time? I am expanding so Tomato can connect with other users and participate in a conversation! It's just a few li...Sep 14, 2026SiteGitHubEnvelop - Tomato gets a message appIn fact, this is the moment that makes me happiest. When Tomato first came to mind, I set a few benchmarks — and today, I have built one fully: Envelop! The goals were to connec...Sep 13, 2026SiteGitHubISA UpgradeNine new instructions in one evening — naming the three-input ALU operations Tomato could always do, from 52 opcodes to 61.Sep 11, 2026SiteGitHubWallpaper, Polish, and the Rest of the ComputerSemester crunch, website polish, and TomatoOS gaining a Ghana wallpaper—2,987 lines locked as a stable desktop.Sep 11, 2026SiteGitHubOf Course Tomato Needs SudokuSudoku on TomatoOS with arrow keys and a digit-cycle button—no full keyboard matrix required yet.Sep 11, 2026SiteGitHubHDMI, Properly CapturedHDMI capture card + OBS — clean TomatoOS recordings instead of phone-at-monitor.Sep 11, 2026SiteGitHubWhen assembly is still too high-level for TomatoExpanding beyond 52 opcodes—assembly can hide native Dual-LUT datapath operations Tomato already computes in one cycle.Mango ToolsAug 27, 2026ProjectImages to PDF and UninstallMulti-select images → one PDF, dated default names, and a full uninstall path so installs stay honest.Aug 11, 2026ProjectSystem-Wide CallSystem-wide `mango` invocation — call the toolbox from any working directory.Aug 03, 2026ProjectMango — Arrow Navigation & Video PipelineArrow keys replace “Enter choice.” Video → GIF and extract-audio land in the registry; Mango marks tools ready only when the binaries exist.Aug 01, 2026ProjectToolsThis project is a centralized, offline repository designed to replace SaaS platforms (like iLovePDF and online image compressors) entirely. By housing my most frequently used ut...Aug 01, 2026ProjectShell UI - MangoAs the toolkit expands, remembering individual script paths, names, and arguments becomes cumbersome. To solve this, I am introducing Mango—a centralized, interactive shell inte...EnvelopSep 15, 2026ProjectScope OptimizationWhenever I am working on a main proejct, I choose to spend less time turning the other problems into another main proejct. With that, I have observed that the main issue that pr...Sep 15, 2026ProjectParsing - SimplestThe question arose: how do I meaningfully extract the right expression from something that is almost natural language? That conversation naturally opened into compiler design — ...Sep 14, 2026ProjectWebsite and World Connect!This log is meant to ground Envelop. It is not just a lightweight app, is meant to be one where multiple people joining adds them as contacts, wehre they can then text tomato an...Sep 14, 2026ProjectNative, time consuming but best!I have considered all the ways to reliably build envelop so that my attention doesn't move away. As, native wins. Website form factor will not have the needed permissions to blu...Sep 14, 2026ProjectEnvelop!Envelop will be a repo to hold the chat build for tomato! Think of it as the first bridge to connect tomato to the rest of the world! The name is the point: an envelope is how y...FramePortSep 13, 2026SiteGitHubWelcome, FramePortI built FramePort because I wanted to see my FPGA's HDMI output while working on its code. At first, that meant keeping an external monitor nearby. A USB capture card was a more...Sep 13, 2026SiteGitHubScreenshots and RecordingThe features I care about most, after the live view, are screenshots and recordings of the FPGA output. I want as little friction as possible between noticing something and savi...Sep 13, 2026SiteGitHubOther Device StreamFramePort beyond HDMI capture cards — cameras and screen sources on macOS, without phone-mirroring claims.Tomato CPU — AugustAug 29, 2026SiteGitHubRegister UpgradeAS6C62256 has 15 address bits — Tomato exposes all of them: 32,768 GPR. Half a Blackwell SM.Aug 29, 2026SiteGitHubTomato works beautifully!HDMI GUI on the TV — 2,300+ lines of TomatoOS. Tetris, Snake, Racer, Fibonacci. Keyboard matrix next; chip tapeout on the horizon.Aug 28, 2026SiteGitHubSuccessful Video — FPGA + PMODPMOD 12-bit DVI soldered and flashed. Red, green, blue, gray bars on HDMI. Pixels on the glass.Aug 28, 2026SiteGitHubPixels on the GlassThe PMOD 12-bit DVI V1.1b module finally arrived, and I went straight to work soldering the pins. This interface is designed to make VGA and HDMI output straightforward directly...Aug 28, 2026SiteGitHubOne Press, One KeyMenu skipped four entries per tap — not bounce, arithmetic. One-cycle press edges, pseudo-ops, and a color What is Tomato screen.Aug 28, 2026SiteGitHubExploring Beyond Vivado — Open-Source Synthesis PivotopenXC7 is Linux-only. On Mac: OSS CAD Suite, nixpkgs nextpnr-xilinx, local Project X-Ray. Vivado taught the cycle; FOSS owns the loop.Aug 26, 2026SiteGitHubThe PMOD Pivot: Chasing Pixels on the FPGAVGA→HDMI adapters stayed mute. PMOD in transit — drive pixels from other pins and keep moving.Aug 23, 2026SiteGitHubThe Invisible Logic: Driving the DatapathNo FSM on the board — so something else has to drive ~40 parallel pins. ATmega328PB at ~1 Hz, not ESP32 at 3.3 V.Aug 21, 2026SiteGitHubFirst Lights and Flux: Assembly on the BenchMuxes, adders, LEDs, headers — soldered. Board lights up. No shorts. Capacitors can wait.Aug 20, 2026SiteGitHubThe Gallery Paradox: Simplicity Over ScopeGallery as slideshow, not a second site. Magazine layouts and save-scroll felt great — then wrong. Simplicity won.Aug 18, 2026SiteGitHubFirst Phase of AssemblyDigiKey overnight, then flux and tweezers. All 74ACT151s and the adders on one board, seven LEDs down — copper lining up with the pins, beside the Digital sim.Aug 16, 2026SiteGitHubTomato Web OptimizationVanilla HTML/CSS/JS and raw Three.js — no React, no bundler. A 31 MB KiCad GLB becomes 1.26 MB Draco, nine meshes, and the 3.5s main-thread freeze is gone.Aug 15, 2026SiteGitHubPCBs Arrive!Five 07_alu boards on the desk. Continuity on the power rails — no islands. Copper I placed, in the flesh.Aug 15, 2026SiteGitHubISA as a WireTomato is a parametric datapath, not an emulator. An ISA is a mapping from someone else’s bits onto the muxes already sitting in copper — decode, not an interpreter.Aug 13, 2026SiteGitHubFront-Page News in Ashtown ValleyTomato is not a product page. It is a 32-bit machine from the 74xx years — so the site is a broadsheet: nameplate, copper plate, and a door back to now.Aug 13, 2026SiteGitHubSolder Station ArrivesThe WEP 926LED V3 is on the desk at 480 °C. Tomato waits on the custom PCB and DigiKey parts — a long way from a nail heated in a fire.Aug 07, 2026SiteGitHubOrdered TomatoAfter months of schematic churn, opcode tables, and the occasional 40b detour, Tomato has left the screen. Bare boards on JLCPCB; every IC, cap, LED, and SIP resistor network on...Aug 02, 2026SiteGitHubDesigning Additional BoardsI am pushing to design the remaining boards. I had assumed that the most complicated one to design was the main board — the ALU — which is done and routed (07_alu). The next thi...8-bit Discrete Transistor ALUAug 25, 2026ProjectFab OverheadCMOS story stayed. NMOS+pull-up skipped on purpose. PMOS fab cost blew up — discrete still wins the narrative.Jun 26, 2026ProjectALU - Redesign with 74251In routing the ALU, I came across a realization that the fact that the 125 + 138 combination defeats the optimization i was looking for. In fact, I need 3 chips for a single ALU...Jun 26, 2026ProjectALU Architecture Refinement & Logic OptimizationRefinement of Generate ($G$) and Propagate ($P$) Signals In the initial architecture, the logic generation for the 74182 look-ahead unit was bottlenecked by a naïve implementati...Jun 19, 2026ProjectALU segment display designFour 32-bit values on screen at once—the three LUT3 operand buses plus the ALU writeback. Each row is eight hex digits; thirty-two seven-segment displays total, live as the data...Open SourceAug 15, 2026ProjectLibreLane, Verilator, OpenFPGA, OpenROADLibreLane #1016 shipped as 3.0.10 — pre- and post-synth check errors both count — plus OpenROAD, LibreLane 3.0.8, Verilator, and OpenFPGA.Aug 09, 2026ProjectOpen Source ContributionsFirst steps into open source: two OpenFPGA docs PRs and a Verilator fix so Linux peak memory matches what the sim actually used.100 Mbps UDP/IP StackAug 08, 2026ProjectUnderstanding the UDP Stack and Connecting to ITCHWhy market-data pipelines need UDP over TCP — from ITCH ingestion on the FPGA to building a custom 100 Mbps stack.Orange Metrics APIAug 08, 2026ProjectAutomating Vivado + OpenLane PPA ExtractionWhy manual Vivado and OpenLane report scraping does not scale — and building a FastAPI + PostgreSQL pipeline to ingest PPA metrics automatically.SPICE Automation FrameworkAug 08, 2026ProjectFormalizing the SPICE Automation FrameworkFormalizing one-off NGSpice scripts from the SRAM tapeout into a reusable Python package — dynamic deck rewriting, F_max binary search, and JSON/CSV/Markdown PPA reports.16-bit MAC Unit (Sky130)Aug 03, 2026ProjectReassessing Mac for optimizationReturning to the MAC tapeout path after months on Tomato — planning LibreLane flow, cross-verification, and timing closure.NASDAQ ITCH Hardware ParserAug 02, 2026ProjectSuccessful Synthesis - Implementation - BitstreamFirst clean Vivado build for the Nexys A7 ITCH pipeline — synthesis, implementation, and bitstream with USE_ETH=1.Aug 01, 2026ProjectITCH Ethernet Lab Bring-UpPreparing Nexys A7 Ethernet ingress for end-to-end Mold/ITCH UDP testing on the FPGA market-data pipeline.Tomato CPU — JulyJul 31, 2026SiteGitHubThe lingering thoughtsThe ALU is routed and ready for PCB fabrication. That was the hardest slice of the datapath — three-operand LUT3, carry select, the full combinational core. The lingering proble...Jul 31, 2026SiteGitHubFalling back to 32bIn a rather if not seemingly swing between implementations, I have reconsidered and am falling back to the 32b design. The 40b redesign was intellectually clean — one word type,...Jul 30, 2026SiteGitHubRedesign into 40b (Old design = 32b)After roughly three months working on Tomato32, the recurring bottleneck has been instruction width, not the ALU itself. Convention says a 32-bit machine gets a 32-bit instructi...Jul 13, 2026SiteGitHubTruth Table LatchIn the current design, the individual cells of tomato may not seem to undergo reprogramming for each operation, given the philosophy it was based off of: what if computers had t...Jul 13, 2026SiteGitHubPipelined FPGA - What if...After observing, time is but a monotonic quantity and universal. In current FPGA designs, we program and use, and for another use case, we repeat, In future tomato designs, I am...Jul 13, 2026SiteGitHubDowngrade for an upgrade - 32b to 16b x 4This ALU has taken several routes since the first abstractions. In the most recent version before this change, I wanted to wire 8 cells of 4b each into a 32b cell. The catch is ...Jul 13, 2026SiteGitHubDemo IdeasIt quickly gets abstracted and perhaps indistinguishable from a black box if the final design has no reasonably impressive demo. I've considered a lot of ideas ranging from mode...Jul 13, 2026SiteGitHubArchitecture UpgradeThe sheer constraint posed by area and available hardware imply that designs that offer more for less are favourable, unlike conventional metrics like parasitic and wiring budge...Tomato CPU — EarlierJun 27, 2026SiteGitHubElimination of Mode MultiplexersInitial State & Bottleneck: The previous ALU design utilized a parallel execution model. An incoming signal would split: one path raced through the A/B masking logic into the 74...Jun 16, 2026SiteGitHubMicrocode Control ModularizationThe microcode ROM was always going to be a wiring problem. Every instruction looks up a 64-bit control word: what the ALU should do, whether to write a register, read memory, ju...Jun 15, 2026SiteGitHubMultiplication and DivisionOne of the biggest hurdles in this build has been implementing hardware multiplication and division. The standard naive approach—sequencing operations to `shift -> add -> accumu...Jun 11, 2026SiteGitHubLoad Store Pipeline AnalysisEvery opcode indexes a 48-bit word in the microcode ROM (`DIG_ROM_256X48_microcodeeeprom`). The fields, confirmed from `main.v:2087–2106`: | Bits | Field | Notes | |------|-----...Jun 10, 2026SiteGitHubImplementing Mul-Div EngineToday's goal is integrating the multiply-divide engine. I am considering a few ideas. 74xx284/85 can compute the lower and upper products, so I will use them and sequence to com...Aug 01, 2025SiteGitHubWelcome to Tomato 32This is a build log for Tomato 32. It will keep track of the questions that come up and the answers I settled for. It focussed on build log, the constraints explored and the jou...
Sep 15, 2026SiteGitHubVirtual Fallback vs AII wondered, what is the use of saying hello to tomato and getting a reponse, Hello {firstname}? It is cool, but withers too quickly. It would be completely orthogonal to build a...
Sep 15, 2026SiteGitHubDiscard Previewer or IntegrateThere was an enormous wait time to get the fresh bitstream from each iteration, and I thought to instead build a Python previewer which takes that assembly source file, Tomato O...
Sep 14, 2026SiteGitHubSynthesis BypassI have spent the entire day, and much of that was waiting on synthesis, routing, and bitstream generation! In one case, I took a walk to bike around and after 36 mins, it was st...
Sep 14, 2026SiteGitHubMultiple ParticipantsWhy should a messaging app exist only for two participants at a time? I am expanding so Tomato can connect with other users and participate in a conversation! It's just a few li...
Sep 14, 2026SiteGitHubEnvelop - Tomato gets a message appIn fact, this is the moment that makes me happiest. When Tomato first came to mind, I set a few benchmarks — and today, I have built one fully: Envelop! The goals were to connec...
Sep 13, 2026SiteGitHubISA UpgradeNine new instructions in one evening — naming the three-input ALU operations Tomato could always do, from 52 opcodes to 61.
Sep 11, 2026SiteGitHubWallpaper, Polish, and the Rest of the ComputerSemester crunch, website polish, and TomatoOS gaining a Ghana wallpaper—2,987 lines locked as a stable desktop.
Sep 11, 2026SiteGitHubOf Course Tomato Needs SudokuSudoku on TomatoOS with arrow keys and a digit-cycle button—no full keyboard matrix required yet.
Sep 11, 2026SiteGitHubHDMI, Properly CapturedHDMI capture card + OBS — clean TomatoOS recordings instead of phone-at-monitor.
Sep 11, 2026SiteGitHubWhen assembly is still too high-level for TomatoExpanding beyond 52 opcodes—assembly can hide native Dual-LUT datapath operations Tomato already computes in one cycle.
Aug 27, 2026ProjectImages to PDF and UninstallMulti-select images → one PDF, dated default names, and a full uninstall path so installs stay honest.
Aug 11, 2026ProjectSystem-Wide CallSystem-wide `mango` invocation — call the toolbox from any working directory.
Aug 03, 2026ProjectMango — Arrow Navigation & Video PipelineArrow keys replace “Enter choice.” Video → GIF and extract-audio land in the registry; Mango marks tools ready only when the binaries exist.
Aug 01, 2026ProjectToolsThis project is a centralized, offline repository designed to replace SaaS platforms (like iLovePDF and online image compressors) entirely. By housing my most frequently used ut...
Aug 01, 2026ProjectShell UI - MangoAs the toolkit expands, remembering individual script paths, names, and arguments becomes cumbersome. To solve this, I am introducing Mango—a centralized, interactive shell inte...
Sep 15, 2026ProjectScope OptimizationWhenever I am working on a main proejct, I choose to spend less time turning the other problems into another main proejct. With that, I have observed that the main issue that pr...
Sep 15, 2026ProjectParsing - SimplestThe question arose: how do I meaningfully extract the right expression from something that is almost natural language? That conversation naturally opened into compiler design — ...
Sep 14, 2026ProjectWebsite and World Connect!This log is meant to ground Envelop. It is not just a lightweight app, is meant to be one where multiple people joining adds them as contacts, wehre they can then text tomato an...
Sep 14, 2026ProjectNative, time consuming but best!I have considered all the ways to reliably build envelop so that my attention doesn't move away. As, native wins. Website form factor will not have the needed permissions to blu...
Sep 14, 2026ProjectEnvelop!Envelop will be a repo to hold the chat build for tomato! Think of it as the first bridge to connect tomato to the rest of the world! The name is the point: an envelope is how y...
Sep 13, 2026SiteGitHubWelcome, FramePortI built FramePort because I wanted to see my FPGA's HDMI output while working on its code. At first, that meant keeping an external monitor nearby. A USB capture card was a more...
Sep 13, 2026SiteGitHubScreenshots and RecordingThe features I care about most, after the live view, are screenshots and recordings of the FPGA output. I want as little friction as possible between noticing something and savi...
Sep 13, 2026SiteGitHubOther Device StreamFramePort beyond HDMI capture cards — cameras and screen sources on macOS, without phone-mirroring claims.
Aug 29, 2026SiteGitHubRegister UpgradeAS6C62256 has 15 address bits — Tomato exposes all of them: 32,768 GPR. Half a Blackwell SM.
Aug 29, 2026SiteGitHubTomato works beautifully!HDMI GUI on the TV — 2,300+ lines of TomatoOS. Tetris, Snake, Racer, Fibonacci. Keyboard matrix next; chip tapeout on the horizon.
Aug 28, 2026SiteGitHubSuccessful Video — FPGA + PMODPMOD 12-bit DVI soldered and flashed. Red, green, blue, gray bars on HDMI. Pixels on the glass.
Aug 28, 2026SiteGitHubPixels on the GlassThe PMOD 12-bit DVI V1.1b module finally arrived, and I went straight to work soldering the pins. This interface is designed to make VGA and HDMI output straightforward directly...
Aug 28, 2026SiteGitHubOne Press, One KeyMenu skipped four entries per tap — not bounce, arithmetic. One-cycle press edges, pseudo-ops, and a color What is Tomato screen.
Aug 28, 2026SiteGitHubExploring Beyond Vivado — Open-Source Synthesis PivotopenXC7 is Linux-only. On Mac: OSS CAD Suite, nixpkgs nextpnr-xilinx, local Project X-Ray. Vivado taught the cycle; FOSS owns the loop.
Aug 26, 2026SiteGitHubThe PMOD Pivot: Chasing Pixels on the FPGAVGA→HDMI adapters stayed mute. PMOD in transit — drive pixels from other pins and keep moving.
Aug 23, 2026SiteGitHubThe Invisible Logic: Driving the DatapathNo FSM on the board — so something else has to drive ~40 parallel pins. ATmega328PB at ~1 Hz, not ESP32 at 3.3 V.
Aug 21, 2026SiteGitHubFirst Lights and Flux: Assembly on the BenchMuxes, adders, LEDs, headers — soldered. Board lights up. No shorts. Capacitors can wait.
Aug 20, 2026SiteGitHubThe Gallery Paradox: Simplicity Over ScopeGallery as slideshow, not a second site. Magazine layouts and save-scroll felt great — then wrong. Simplicity won.
Aug 18, 2026SiteGitHubFirst Phase of AssemblyDigiKey overnight, then flux and tweezers. All 74ACT151s and the adders on one board, seven LEDs down — copper lining up with the pins, beside the Digital sim.
Aug 16, 2026SiteGitHubTomato Web OptimizationVanilla HTML/CSS/JS and raw Three.js — no React, no bundler. A 31 MB KiCad GLB becomes 1.26 MB Draco, nine meshes, and the 3.5s main-thread freeze is gone.
Aug 15, 2026SiteGitHubPCBs Arrive!Five 07_alu boards on the desk. Continuity on the power rails — no islands. Copper I placed, in the flesh.
Aug 15, 2026SiteGitHubISA as a WireTomato is a parametric datapath, not an emulator. An ISA is a mapping from someone else’s bits onto the muxes already sitting in copper — decode, not an interpreter.
Aug 13, 2026SiteGitHubFront-Page News in Ashtown ValleyTomato is not a product page. It is a 32-bit machine from the 74xx years — so the site is a broadsheet: nameplate, copper plate, and a door back to now.
Aug 13, 2026SiteGitHubSolder Station ArrivesThe WEP 926LED V3 is on the desk at 480 °C. Tomato waits on the custom PCB and DigiKey parts — a long way from a nail heated in a fire.
Aug 07, 2026SiteGitHubOrdered TomatoAfter months of schematic churn, opcode tables, and the occasional 40b detour, Tomato has left the screen. Bare boards on JLCPCB; every IC, cap, LED, and SIP resistor network on...
Aug 02, 2026SiteGitHubDesigning Additional BoardsI am pushing to design the remaining boards. I had assumed that the most complicated one to design was the main board — the ALU — which is done and routed (07_alu). The next thi...
Aug 25, 2026ProjectFab OverheadCMOS story stayed. NMOS+pull-up skipped on purpose. PMOS fab cost blew up — discrete still wins the narrative.
Jun 26, 2026ProjectALU - Redesign with 74251In routing the ALU, I came across a realization that the fact that the 125 + 138 combination defeats the optimization i was looking for. In fact, I need 3 chips for a single ALU...
Jun 26, 2026ProjectALU Architecture Refinement & Logic OptimizationRefinement of Generate ($G$) and Propagate ($P$) Signals In the initial architecture, the logic generation for the 74182 look-ahead unit was bottlenecked by a naïve implementati...
Jun 19, 2026ProjectALU segment display designFour 32-bit values on screen at once—the three LUT3 operand buses plus the ALU writeback. Each row is eight hex digits; thirty-two seven-segment displays total, live as the data...
Aug 15, 2026ProjectLibreLane, Verilator, OpenFPGA, OpenROADLibreLane #1016 shipped as 3.0.10 — pre- and post-synth check errors both count — plus OpenROAD, LibreLane 3.0.8, Verilator, and OpenFPGA.
Aug 09, 2026ProjectOpen Source ContributionsFirst steps into open source: two OpenFPGA docs PRs and a Verilator fix so Linux peak memory matches what the sim actually used.
Aug 08, 2026ProjectUnderstanding the UDP Stack and Connecting to ITCHWhy market-data pipelines need UDP over TCP — from ITCH ingestion on the FPGA to building a custom 100 Mbps stack.
Aug 08, 2026ProjectAutomating Vivado + OpenLane PPA ExtractionWhy manual Vivado and OpenLane report scraping does not scale — and building a FastAPI + PostgreSQL pipeline to ingest PPA metrics automatically.
Aug 08, 2026ProjectFormalizing the SPICE Automation FrameworkFormalizing one-off NGSpice scripts from the SRAM tapeout into a reusable Python package — dynamic deck rewriting, F_max binary search, and JSON/CSV/Markdown PPA reports.
Aug 03, 2026ProjectReassessing Mac for optimizationReturning to the MAC tapeout path after months on Tomato — planning LibreLane flow, cross-verification, and timing closure.
Aug 02, 2026ProjectSuccessful Synthesis - Implementation - BitstreamFirst clean Vivado build for the Nexys A7 ITCH pipeline — synthesis, implementation, and bitstream with USE_ETH=1.
Aug 01, 2026ProjectITCH Ethernet Lab Bring-UpPreparing Nexys A7 Ethernet ingress for end-to-end Mold/ITCH UDP testing on the FPGA market-data pipeline.
Jul 31, 2026SiteGitHubThe lingering thoughtsThe ALU is routed and ready for PCB fabrication. That was the hardest slice of the datapath — three-operand LUT3, carry select, the full combinational core. The lingering proble...
Jul 31, 2026SiteGitHubFalling back to 32bIn a rather if not seemingly swing between implementations, I have reconsidered and am falling back to the 32b design. The 40b redesign was intellectually clean — one word type,...
Jul 30, 2026SiteGitHubRedesign into 40b (Old design = 32b)After roughly three months working on Tomato32, the recurring bottleneck has been instruction width, not the ALU itself. Convention says a 32-bit machine gets a 32-bit instructi...
Jul 13, 2026SiteGitHubTruth Table LatchIn the current design, the individual cells of tomato may not seem to undergo reprogramming for each operation, given the philosophy it was based off of: what if computers had t...
Jul 13, 2026SiteGitHubPipelined FPGA - What if...After observing, time is but a monotonic quantity and universal. In current FPGA designs, we program and use, and for another use case, we repeat, In future tomato designs, I am...
Jul 13, 2026SiteGitHubDowngrade for an upgrade - 32b to 16b x 4This ALU has taken several routes since the first abstractions. In the most recent version before this change, I wanted to wire 8 cells of 4b each into a 32b cell. The catch is ...
Jul 13, 2026SiteGitHubDemo IdeasIt quickly gets abstracted and perhaps indistinguishable from a black box if the final design has no reasonably impressive demo. I've considered a lot of ideas ranging from mode...
Jul 13, 2026SiteGitHubArchitecture UpgradeThe sheer constraint posed by area and available hardware imply that designs that offer more for less are favourable, unlike conventional metrics like parasitic and wiring budge...
Jun 27, 2026SiteGitHubElimination of Mode MultiplexersInitial State & Bottleneck: The previous ALU design utilized a parallel execution model. An incoming signal would split: one path raced through the A/B masking logic into the 74...
Jun 16, 2026SiteGitHubMicrocode Control ModularizationThe microcode ROM was always going to be a wiring problem. Every instruction looks up a 64-bit control word: what the ALU should do, whether to write a register, read memory, ju...
Jun 15, 2026SiteGitHubMultiplication and DivisionOne of the biggest hurdles in this build has been implementing hardware multiplication and division. The standard naive approach—sequencing operations to `shift -> add -> accumu...
Jun 11, 2026SiteGitHubLoad Store Pipeline AnalysisEvery opcode indexes a 48-bit word in the microcode ROM (`DIG_ROM_256X48_microcodeeeprom`). The fields, confirmed from `main.v:2087–2106`: | Bits | Field | Notes | |------|-----...
Jun 10, 2026SiteGitHubImplementing Mul-Div EngineToday's goal is integrating the multiply-divide engine. I am considering a few ideas. 74xx284/85 can compute the lower and upper products, so I will use them and sequence to com...
Aug 01, 2025SiteGitHubWelcome to Tomato 32This is a build log for Tomato 32. It will keep track of the questions that come up and the answers I settled for. It focussed on build log, the constraints explored and the jou...