Graphical interface¶
reASITIC ships with an optional desktop GUI that mirrors the
original ASITIC X11 front-end: a 2-D top-down layout view (pan,
zoom, chip outline, substrate grid, click-to-select) over an
embedded REPL pane that drives every one of the 117 binary commands.
reasitic-gui # empty workspace
reasitic-gui -t run/tek/BiCMOS.tek # auto-load tech
reasitic-gui -s mysession.json # auto-load saved session
python -m reasitic.gui # equivalent invocation
The GUI uses Tkinter (Python standard library) so no extra
runtime dependency is required on most platforms. On Linux you may
need the python3-tk system package; on macOS a built-in
ActiveState Tk is shipped with the python.org installers.
Layout¶
┌──────────────────────────────────────────────────────────────┐
│ File View Help menu bar │
├──────────────────────────────────────────────────────────────┤
│ [Fit] [Zoom +] [Zoom −] [Reset] [Grid] [Redraw] toolbar │
├──────────────────────────────────────────────────────────────┤
│ │
│ Top-down layout view (pan / zoom) │
│ Tk Canvas — chip outline, grid, shapes │
│ │
├──────────────────────────────────────────────────────────────┤
│ reasitic> SQ NAME=L1:LEN=170:W=10:S=3:N=2:METAL=m3 │
│ reasitic> ... console pane │
├──────────────────────────────────────────────────────────────┤
│ x= 100.5 μm y= -75.0 μm zoom=1.4 px/μm selected=L1 │
└──────────────────────────────────────────────────────────────┘
Mouse and keyboard¶
Action |
Effect |
|---|---|
Drag (left mouse button) |
Pan the view |
Scroll wheel |
Zoom in/out around the cursor |
Click on a shape |
Select it (highlights its bounding box) |
|
Fit all shapes to the canvas |
|
Toggle the substrate grid overlay |
|
Force-redraw the layout |
|
Clear the current selection |
|
Quit |
|
Walk the command history |
Console pane¶
Every line typed into the input row at the bottom is forwarded
verbatim to the embedded :class:reasitic.cli.Repl. Output from
the REPL is captured and printed into the scrollback above.
This means:
Every CLI command works in the GUI, with identical syntax and output.
After a
SQ/SP/LOAD/OPTSQcommand, the layout view automatically refreshes.quit/exitcloses the GUI cleanly.
Programmatic API¶
from reasitic.gui import run
run(tech_path="run/tek/BiCMOS.tek")
Or for finer control:
from reasitic.gui.app import GuiApp
from reasitic.cli import Repl
repl = Repl()
app = GuiApp(repl=repl)
app._run("load-tech run/tek/BiCMOS.tek")
app._run("SQ NAME=L1:LEN=170:W=10:S=3:N=2:METAL=m3")
app.action_fit()
app.mainloop()
Testing without a display¶
The viewport math (reasitic.gui.viewport.Viewport) is decoupled
from Tk and fully unit-tested headlessly. The Tk-bound smoke tests
(tests/gui/test_app_smoke.py) probe for a usable display and
auto-skip when none is available, so they’re CI-safe.