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 --releasein 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. Folderc8f1111-drc/adds one change inmain.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.patchandopenroad-6f3f28c-rcx-psm.patch. For 61932e8:openroad-61932e8-wasm.patch. All in nishkam-openroad-6f3f28c-wasm-build.tar.gz (foldertools/openroad-pnr). - Build steps
BUILD.mdin 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.htmlthat 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(branchwasi/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 itsinclude/*.hheaders and alibverilated.awe compiled from itsverilated*.cppfiles, fromweb/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 fordup/dup2and athread_localdestructor hook (WASI lacks both); the generatedmain()is rewritten from three to two arguments at run time. - Build steps
- In
web/vendor/verilator-sim/5.051-e6cee9d/SOURCE.mdandtools/vsim-spike/(-std=c++20 -O1 -fno-exceptions). - Licence text
- Verilator:
LICENSES/LGPL-3.0-only.txtin the verilator-wasm package; LLVM: llvm.org/LICENSE.txt