Open Studio

Licences

Studio runs open-source tools inside your browser. Several are under the GPL or LGPL. This page says where to get the exact source of each one, what we changed, and how it was built.

All source is public. Every upstream commit below is on its own project site. Our patches and build files, and copies of the upstream source for the larger tools, are on one release: source-2026-10-20. Checksums are in SHA256SUMS.txt. Each tool runs in its own Web Worker or frame and talks to the rest of Studio only by messages.

Other tools, such as Yosys (ISC), netlistsvg (MIT), elkjs (EPL-2.0) and the gf180mcu cell data (Apache-2.0), are listed with their pinned versions in THIRD_PARTY.md.

To get source we have not listed, or if something here looks wrong, write to [email protected].

Icarus Verilog (simulation)

GPL-2.0

Source
VeriSim commit a275a9ac28c59db1130505973644c9a3754ec1d7 (Icarus compiled to WebAssembly). Original: https://github.com/steveicarus/iverilog
Our patches
None. The files are used as built.
Build steps
In the VeriSim repo; our copy in nishkam-icarus-wasm-build.tar.gz
Licence text
vendor/icarus/a275a9a/LICENSE

Magic (layout, DRC, GDS)

GPL-2.0

Source
https://github.com/RTimothyEdwards/magic commit bed8d4f
Our patches
None. Linked with two extra flags (function pointer casts, 10 MB stack).
Build steps
npm/build.sh --variant=notcl --release in emscripten/emsdk 3.1.74, then relink; see SOURCE.md
Licence text
vendor/magic/bed8d4f/LICENSE

Netgen (LVS) with Tcl 8.6.14

GPL (Netgen), BSD-style (Tcl)

Source
https://github.com/RTimothyEdwards/netgen commit 3cb047b (1.5.324); Tcl tag core-8-6-14
Our patches
One fix, a read after free in base/netcmp.c: netcmp-uaf.patch
Build steps
SOURCE.md
Licence text
vendor/netgen/3cb047b/LICENSE, vendor/netgen/3cb047b/TCL_LICENSE

qrouter, vlog2Cel, addspacers (routing)

GPL-2.0

Source
https://github.com/RTimothyEdwards/qrouter commit c8f1111; qflow commit 52ecda1
Our patches
Folder c8f1111/ is unmodified. Folder c8f1111-drc/ adds one change in main.c: drc-blocks.patch
Build steps
build.sh, SOURCE.md
Licence text
vendor/qrouter/c8f1111/LICENSE

graywolf (placement)

GPL-2.0-or-later with Yale conditions

Source
https://github.com/RTimothyEdwards/graywolf commit 33fbcaa
Our patches
wasm.patch (integer types, prototypes, in-process replacement for system())
Build steps
build.sh, SOURCE.md
Licence text
vendor/graywolf/33fbcaa/LICENSE, vendor/graywolf/33fbcaa/COPYING

OpenSTA (timing and power)

GPL-3.0

Source
https://github.com/parallaxsw/OpenSTA commit defec0bda32fe6c95074e8da417cb56e344874b5; CUDD https://github.com/The-OpenROAD-Project/cudd commit d47718f
Our patches
None to OpenSTA. Our own start-up file: vendor/opensta/defec0b/main_wasm.cc
Build steps
SOURCE.md lists every command
Licence text
vendor/opensta/defec0b/LICENSE

OpenROAD (place, route, clock tree, parasitics) with OpenSTA inside

BSD-3-Clause; GPL-3.0 because OpenSTA is linked in, so we treat the whole file as GPL-3.0

Source (current)
https://github.com/The-OpenROAD-Project/OpenROAD commit 6f3f28cc85407d71ba64a550cca194d8a6a01c1c, with its OpenSTA at 84c4d7e133d3b1a54352c97c6a5df3140c71c78c
Source (older, still served)
Same repo, commit 61932e897ed1171d85734f2a54064965f691d758, OpenSTA defec0b. Full tarball: https://github.com/yashv373/nishkam-tool/releases/download/source-2026-10-20/OpenROAD-61932e8.tar.gz
Our patches
For 6f3f28c: openroad-6f3f28c-wasm.patch and openroad-6f3f28c-rcx-psm.patch. For 61932e8: openroad-61932e8-wasm.patch. All in nishkam-openroad-6f3f28c-wasm-build.tar.gz (folder tools/openroad-pnr).
Build steps
BUILD.md in that archive (written for 61932e8; 6f3f28c uses the same libraries plus a small Boost serialization library), and SOURCE.md
Licence text
vendor/openroad-pnr/61932e8/LICENSE.OpenROAD and the other LICENSE.* files in that folder

KLayout through kwasm (GDS viewer)

GPL-3.0

Source
Python wheel kwasm 0.3.1 (sha256 4cbd66d752c577f11277a6259bdcf390462f392e1518f66ca9473363f75db13a); copy at https://github.com/yashv373/nishkam-tool/releases/download/source-2026-10-20/kwasm-0.3.1-py3-none-any.whl
Our patches
None. Our page around it (host.html) is separate code that talks to it by messages.
Build steps
nishkam-kwasm-wasm-build.tar.gz
Licence text
vendor/kwasm/0.3.1/LICENSE

Surfer (waveforms)

EUPL-1.2

Source
https://gitlab.com/surfer-project/surfer commit 1cdbaa9514ea15b06a186d23979dbb38ab774ad1; copy at https://github.com/yashv373/nishkam-tool/releases/download/source-2026-10-20/surfer-1cdbaa9.tar.gz
Our patches
One line in index.html that turns the service worker off.
Build steps
nishkam-surfer-wasm-build.tar.gz, SOURCE.md
Licence text
vendor/surfer/20261009/LICENSE

Verilator through verilator-wasm (lint)

LGPL-3.0 or Artistic-2.0 (Verilator); MIT (wrapper)

Source
Not served by us: the browser loads the npm package verilator-wasm 1.0.0 from jsDelivr. Its source is https://github.com/wavedrom/verilator-wasm and the Verilator fork pinned in its verilator.json (branch wasi/pr-wasi-support; revision e6cee9d54 on the main branch today. We have not confirmed the revision used for 1.0.0).
Our patches
None.
Build steps
In the verilator-wasm repo.
Licence text
Inside the npm package: LICENSES/LGPL-3.0-only.txt

Verilator simulation runtime and @yowasp/clang (Verilator simulation)

LGPL-3.0-only OR Artistic-2.0 (Verilator headers and runtime); ISC (@yowasp/clang packaging); Apache-2.0 with LLVM exception (LLVM, Clang, LLD); Apache-2.0 / MIT (libc++, libc++abi, wasi-libc)

Source
Verilator: github.com/verilator/verilator commit e6cee9d54c8af74fbf1ade07aac4f4343249acbd (5.051 devel, the commit [email protected] is built from). We serve its include/*.h headers and a libverilated.a we compiled from its verilated*.cpp files, from web/vendor/verilator-sim/5.051-e6cee9d/. The compiler is not served by us: the browser loads @yowasp/clang 22.0.0-git20542-10 from jsDelivr; source github.com/YoWASP/clang (pins llvm-project).
Our patches
None to Verilator or LLVM. Two small files only we wrote are linked into libverilated.a: a stub for dup/dup2 and a thread_local destructor hook (WASI lacks both); the generated main() is rewritten from three to two arguments at run time.
Build steps
In web/vendor/verilator-sim/5.051-e6cee9d/SOURCE.md and tools/vsim-spike/ (-std=c++20 -O1 -fno-exceptions).
Licence text
Verilator: LICENSES/LGPL-3.0-only.txt in the verilator-wasm package; LLVM: llvm.org/LICENSE.txt