Skip to main content

Standalone web-based layout viewer using KLayout

Project description

kwasm

Standalone wasm-based client-only layout viewer for semiconductor designs, powered by KLayout.

kwasm compiles KLayout's layout rendering engine to WebAssembly via Emscripten, wrapped in a Rust FFI layer. The result is an interactive GDS2/OASIS viewer that runs entirely in the browser — no install required.

Features

  • View GDS2 and OASIS layout files in the browser
  • Pan, zoom, select, measure, and draw annotations
  • Layer panel with per-layer visibility toggling and color display
  • Toolbar with switchable interaction modes
  • Dark and light theme
  • Load layouts via drag & drop or ?url= query parameter
  • Configurable toolbar via ?tools= query parameter
  • Python package with embeddable Jupyter viewer
  • CLI for bundling layouts into self-contained HTML files

Quick Start

# Build all WASM artifacts
just build

# Build docs site and serve at http://localhost:8080
just serve

Available Commands

Command Description
just build [mode] Build WASM artifacts (all by default)
just dev [mode] Copy bundled HTML from dist/ into the Python package
just wheel Build Python wheel
just dist Build everything (WASM + wheel)
just check [mode] Check WASM compilation (no link)
just docs [mode] Build versioned documentation pages in site/
just serve [mode] [port] Build docs and serve
just clean Clean build artifacts

Query Parameters

Parameter Description
?url= Load a layout file from a URL (e.g. ?url=https://example.com/chip.gds)
?tools= Comma-separated list of toolbar tools to show. All tools are shown by default.
?lyp= Load a .lyp layer properties file from a URL (e.g. ?lyp=layers.lyp)
?drop= Enable/disable drag & drop (true/false). Default: true.
?layers= Show/hide the layer panel (true/false). Default: true.

Available tool names for ?tools=:

Name Description
select Pointer/select mode
move Pan mode
ruler Ruler/measure mode
draw-polyline Draw polyline annotations
draw-manhattan Draw manhattan route
draw-freehand Draw freehand annotations
clear-all Erase all annotations
fit-all Zoom to fit layout
reload Reload layout
top-ports Toggle top-level port markers
instance-ports Toggle instance port markers
dangling-ports Toggle dangling port markers
text Toggle text labels
theme Light/dark mode toggle

Example: ?tools=ruler,top-ports,instance-ports shows only the ruler, top-level ports, and instance ports buttons.

Python Package

kwasm is available as a Python package that bundles the WASM viewer:

pip install kwasm

Jupyter Notebook

import kwasm

kwasm.show("my_chip.gds")
kwasm.show("my_chip.gds", lyp="layers.lyp", tools=("ruler", "fit-all"))

When used with gdsfactory, you can pass components directly:

import gdsfactory as gf
import kwasm

c = gf.components.mzi()
kwasm.show(c)

CLI

# Bundle a GDS into a self-contained HTML file
kwasm bundle my_chip.gds --output viewer.html --lyp layers.lyp

# Bundle and open in the default browser
kwasm view my_chip.gds

License

GPL-3.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kwasm-0.2.6-py3-none-any.whl (6.9 MB view details)

Uploaded Python 3

File details

Details for the file kwasm-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: kwasm-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 6.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kwasm-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 579387c48c8ba36506c96bf8c35059045f9ba46016439bea76216d661f59565c
MD5 4c0ba4a9140843525690f84a16e20ae0
BLAKE2b-256 43c9855710a1dc323b84f5e40a086e6bee96e0920d0fb497a03836e4fa30e7f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for kwasm-0.2.6-py3-none-any.whl:

Publisher: release.yml on doplaydo/kwasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page