Electronics design suite · Web and Windows

Design electronics in the browser, from schematic to Gerber.

FalCAD draws the schematic, simulates it while you flip its switches, lays out the board and writes the fabrication files. Firmware and Verilog live in the same project, a folder of plain files you can keep in Git.

No install. Local projects need no account.

A 555 LED blinker running live in FalCAD, with wires coloured by voltage, the LED lit and a voltmeter reading
Live mode. Wire colour follows the voltage and the LED glows with its current.

Board workflow

From schematic to fabrication files

One project carries the circuit through every step. A net you draw on the schematic is the same net in the simulator, on the board and in the bill of materials.

  1. 01Schematic

    Draw the circuit

    Place parts from a library with real simulation models, such as 74HC logic, the NE555, LM358 and LM7805. The electrical rule check runs on every edit and lists what is still open.

    An op-amp inverting amplifier on ±12 V rails drawn in the schematic editor
  2. 02Simulate

    Run it live and probe it

    Simulate a 555 astable live and watch the timing capacitor on the scope while you turn the rate potentiometer. Operating point, DC sweep, transient, AC and noise analyses run in the simulation workbench.

    A 555 blinker running live with wires coloured by voltage, and the scope showing the capacitor and output voltages
  3. 03Board

    Place and route the board

    Create the board from the schematic. Footprints land on the outline with ratsnest lines to every pad they connect to, and the design rule check lists each unrouted connection with its location.

    The 555 blinker's footprints placed on a 50 by 40 mm board outline with ratsnest lines and the layers panel
  4. 043D

    Check it in 3D

    Orbit the board with its solder mask, copper, drilled holes and the component bodies from the footprints.

    The 555 blinker board in 3D with the NE555, the potentiometer and the passives
  5. 05Fabricate

    Export for the fab

    Gerber X2, Excellon, BOM and pick-and-place come out in one .zip. Each file is listed with its size and SHA-256 checksum, and a manifest records them all.

    The fabrication export listing Gerber layers, drill files, BOM and placement files with their SHA-256 checksums

HDL and FPGA

Verilog to waveform, with nothing to install

Verilog, SystemVerilog and VHDL open in the same project as the board. Yosys synthesis and iCE40 place and route run in WebAssembly inside FalCAD.

  1. A parameterized Verilog counter in the editor

    01Write

    The editor reads your design as you type. You get the module outline with port widths, go to definition and the hierarchy with its top module.

  2. Synthesis result for iCE40: 4 SB_DFFSR, 4 SB_LUT4 and 2 SB_CARRY cells

    02Synthesize

    Yosys targets iCE40, ECP5 or generic gates and reports the cells it used.

  3. Waveform of clock, reset and the counter value over 24 cycles

    03Simulate

    Run the synthesized design for as many clock cycles as you need and read values with cursors in the waveform viewer.

An Arduino Uno co-simulated with an LED circuit: the LED lit through an ammeter reading 12.3 mA, pin D13 high and the serial monitor printing LED on and off

Firmware

Firmware runs inside the circuit

FalCAD emulates the microcontroller and steps it together with the analog simulation. When your code drives D13 high, current flows through the resistor and the LED on the schematic lights up.

MCU
ATmega328P at 16 MHz, as on the Arduino Uno
Peripherals
Timers 0 to 2, GPIO ports B, C and D, ADC, USART0
Firmware
Built-in AVR assembler, or load an Intel HEX file
I/O
Pin states and a serial monitor you can type into

Circuits as code

Describe a circuit in Python and review the diff

Scripts in Python, JavaScript, TypeScript, Verilog or SPICE generate and update schematics. Each run lists the parts it will create, change or delete and checks the result against the script's own netlist. You apply it as one undo step.

Change a parameter and run it again. Here a new LED current changes eight resistor values from 330 to 560 Ω, and every part keeps its identity and its place on the sheet.

A Python script for an eight-LED bar graph next to the verified change list updating eight resistor values

Teams and tools

Work with other people and other programs

A shared schematic showing the other editor's cursor and name on the canvas

Edit together in real time

Upload a project to the cloud, then invite people or share a link. Everyone sees the others' cursors and edits as they happen. The server validates every change before it reaches anyone else.

An extension's proposed change: six net labels to create, with connectivity unchanged and ERC still clean

Extensions you can audit

Extensions run in a sandbox and declare what they may read or change. When one proposes an edit, you see the exact operations and their effect on connectivity before you approve it.

Command line and CI

The falcad command runs the same engines without the editor. Use it to fail a pull request when the ERC, the DRC or a simulation assertion fails. A local MCP server lets MCP clients inspect a project and propose edits for you to review.

Command line guide
$ falcad erc ./blinker
$ falcad sim ./blinker   # checks the simulation assertions
$ falcad drc ./blinker && falcad fab ./blinker --out fab/
$ falcad hdl-synth ./fpga --top counter --target ice40

The .falcad format

Your projects are files

A FalCAD project is a folder of JSON and source files with one manifest. It opens the same in the browser, the desktop app and the command line. Pack it into a single .falcadpack archive when you want to send it to someone.

Read the format specification
blinky/  blinky.falcadmanifest  falcad.lockpinned engines and libraries  schematics/main.sch.json  pcb/main.pcb.json  simulation/main.sim.jsonanalyses and assertions  firmware/src/blinky.ino  rtl/counter.v  scripts/led_bar.pycircuit script
Diffable
Saving an unchanged design writes the same bytes. A Git diff shows your change and nothing else.
Stable ids
Every part, pin and net has a random UUID that survives renames, re-ordering and merges.
Exact geometry
Lengths are integer nanometres. Nothing drifts between saves.
Safe to open
Loaders cap file sizes, refuse paths outside the project and never run project content.

Open a template and press Live

The 555 blinker, the Arduino Uno blink and the 74HC161 counter are ready to run in your browser.