An open API service indexing awesome lists of open source software.

https://github.com/prideout/layout-viewer

WebGL renderer for chip layouts
https://github.com/prideout/layout-viewer

Last synced: 5 months ago
JSON representation

WebGL renderer for chip layouts

Awesome Lists containing this project

README

          

# Layout Viewer

Rust library and CLI tool for rendering GDSII layouts with OpenGL / WebGL or
converting them to SVG format.

Includes a [web app](https://prideout.net/layout-viewer/) that allows users
to drop a GDSII file for local viewing. All work is performed in the browser
and no data is sent to the server. In fact there is no server, it's just
a static site hosted with GitHub Pages.

## Modules

- `core` contains the data model and core logic.
- Defines a set of ECS components.
- `graphics` is a simple WebGL rendering library.
- Provides abstractions similar to libraries like THREE and Filament.
- Knows nothing about circuits or app behavior.
- All objects except **Renderer** can be constructed without a WebGL
context.
- `webui` defines a set of Yew components.
- The UI for the web application lives here.
- Components with the **Page** suffix are navigation targets.
- `cli` provides a command-line interface and simple native window target.
- `rsutils` are utilities that you could imagine being a part of **std**.
- Nothing here should know about circuits or the app.

## Usage examples

```bash
# Open a GL window with the Intel 4004 chip:
cargo run --quiet --bin layout-viewer -- --gl assets/gds/intel-4004.gds

# Open a much larger GDS file using a release build:
cargo run --release --quiet --bin layout-viewer -- --gl assets/gds/caravel.gds

# Generate a SVG file:
cargo run --quiet --bin layout-viewer -- --gl assets/gds/mos-6502.gds mos-6502.svg

# Deploy a local web server:
trunk serve --open
```

## Limitations

- Arefs are ignored (but we might fix this)
- Magnification of elements is ignored.
- The "absolute" flag is ignored for magnitudes and angles.
- Text, Nodes, and Boxes are ignored.

## Dependencies

- bevy_ecs: Entity-component-system
- gds21: GDSII parser
- svg: SVG generation
- wasm-bindgen: WebAssembly bindings
- anyhow: Error handling