Skip to content

Complete eSim 2.6 modernization with a new UI, HDL workflows, and installers - #644

Open
VaradhaCodes wants to merge 11 commits into
FOSSEE:masterfrom
VaradhaCodes:upstream/esim-2.6-modernization
Open

Complete eSim 2.6 modernization with a new UI, HDL workflows, and installers#644
VaradhaCodes wants to merge 11 commits into
FOSSEE:masterfrom
VaradhaCodes:upstream/esim-2.6-modernization

Conversation

@VaradhaCodes

Copy link
Copy Markdown
Contributor

eSim 2.6

This PR brings the eSim desktop application, simulation workflows, and release tooling together as one modernized 2.6 release. It introduces a new PyQt6 workspace, a proper project editor, rebuilt model and subcircuit tools, integrated Verilog and VHDL flows, mixed-signal waveform support, direct KiCad 7 to 10 conversion, and native delivery paths for Ubuntu and Windows.

Light mode Dark mode
eSim 2.6 in the Aurora light theme eSim 2.6 in the Aurora dark theme

A new application workspace

The interface now follows one visual and interaction system across the welcome page, project explorer, editors, docks, dialogs, waveform windows, and engineering tools. Aurora supports live light and dark themes, screen-aware scaling, persistent zoom, clearer tooltips, consistent icons, resizable workspaces, fullscreen tools, and reliable window ownership.

Projects no longer feel like a collection of separate popups. Source files, generated files, models, simulation output, snapshots, and tools remain attached to the project that owns them.

Project workspace Integrated source editor
Project explorer with files, tools, and project state Integrated tabbed editor with syntax highlighting

The editor adds syntax highlighting, find and replace, line numbers, wrapping, whitespace controls, external-change detection, and draggable tabs for SPICE, Verilog, VHDL, Python, JSON, Markdown, and plain-text project files.

Subcircuits and device models rebuilt

Two of eSim's oldest utilities are now first-class project tools instead of small modal forms.

Subcircuit Builder

Previous interface eSim 2.6
Previous Subcircuit Builder interface New Subcircuit Builder workspace

The new builder makes the source, symbol, model, and output paths visible in one place. It understands modern KiCad projects, keeps the legacy circuit fallback, validates the selected target before conversion, and prevents overlapping conversion jobs from corrupting generated output.

Model Editor

Previous interface eSim 2.6
Previous Model Editor interface New Model Editor workspace

The Model Editor now uses an expanding parameter table, clearer model categories, searchable device definitions, explicit save state, and project-aware model paths. Large models are readable without squeezing every parameter into a fixed dialog.

HDL from source to waveform

Maker now connects HDL authoring, verification, model generation, placement, and simulation inside eSim. Each stage passes an explicit source revision, diagnostics, generated model, and waveform forward, so the result belongs to the design the user actually ran.

Author and build Verify inside eSim
HDL Author workspace with source and build actions Verilog verification waveform inside eSim

The workflow includes:

  • Verilog compilation and functional verification with Icarus Verilog
  • diagnostics mapped back to the relevant source line
  • VCD parsing and an integrated digital waveform viewer
  • NgVeri model generation through Verilator
  • NGHDL model generation through GHDL and ngspice
  • Makerchip integration through an isolated local session bridge
  • atomic symbol-library updates and exact model removal

Mixed-signal simulation that stays understandable

The d_cosim, NgVeri, and NGHDL paths now converge on the same project and plotting model. Analog and digital traces retain their full names, multiple digital blocks can coexist in one design, and generated simulator state is kept separate for each backend.

Analog and digital signals from an eSim mixed-signal simulation

The plotting workspace was also decomposed into dedicated data, trace, rendering, cursor, pane, palette, and expression layers. Normal, stacked, timing, and X-Y plots now share the same trace model. Large results use bounded drawing without reducing the full-resolution data used for cursors, measurements, or statistics.

Stacked waveform view with independent panes and shared controls

KiCad 7 to 10 conversion

eSim no longer depends on the legacy KiCad SPICE exporter that disappeared from newer releases. A direct schematic netlister now reads modern KiCad schematics and produces the simulation input while preserving node order, model fields, subcircuit identity, and mixed-signal blocks.

KiCad schematic analysis and conversion inside eSim

The converter keeps the last usable circuit when a new conversion fails, reports the rejected boundary clearly, and supports migrated projects without silently choosing an obsolete schematic beside the current one.

Ubuntu and Windows delivery

The repository now contains the complete installation and release path for both supported platforms.

Ubuntu installer Windows installer Toolchain doctor
Ubuntu installer with visible progress and diagnostics Windows installer component selection Shared eSim toolchain doctor

Ubuntu

  • one profile-driven installer for supported Ubuntu releases through 26.04
  • dry-run, progress display, logging, doctor, uninstall, and legacy cleanup modes
  • installation of ngspice 45.2, GHDL, Verilator, Icarus Verilog, NGHDL, and required patches
  • a release workflow that builds the Linux zip from the selected Git revision and publishes its SHA-256 checksum
  • a clean archive gate that rejects development-only files, generated simulator output, and incomplete payloads

Windows

  • a native Inno Setup installer built entirely from repository scripts
  • private Python runtime and pruned KiCad payload
  • ngspice, Icarus, GHDL, Verilator, NGHDL, and required runtime libraries
  • per-user configuration, shortcuts, logs, repairable bootstrap, clean uninstall, and SKY130 support

Maintainers and contributors can build the same deliverables from the checked-out source:

./make-release.sh
pwsh -ExecutionPolicy Bypass -File windows/build-windows.ps1

What changed under the interface

  • application paths, preferences, dialogs, and tool discovery now have shared owners
  • simulator and converter jobs have bounded lifetimes, cancellation, and output gates
  • project files and generated libraries use atomic writes where partial output would be destructive
  • the toolchain doctor checks actual capabilities, not only executable names or version strings
  • packaging is generated from the selected Git revision and excludes caches, local builds, and repository administration files
  • the completed work spans 412 files and is presented as eleven reviewable release slices

This is the completed eSim modernization work from the 2026 FOSSEE Summer Fellowship at IIT Bombay.

Read the full implementation report

Remove generated caches, converter outputs, prebuilt legacy binaries,
misplaced test projects, and retired packaging from version control.
Extend ignore rules so local build and simulation products stay out of
future contributions.

Relocate the MC1496 MOS example into the maintained subcircuit library.
Make configuration loading explicit and side-effect free. Resolve user,
workspace, and preference paths through shared helpers; merge preference
writes atomically; and give application dialogs reliable parent windows.

Add isolated configuration tests so the suite cannot modify the real user
profile or depend on machine-specific state.
Add reusable light/dark theme tokens, scalable controls, motion, tooltip,
icon, font, and stylesheet foundations. Keep this layer independent from
the application shell so subsystem code can adopt one visual contract.

Add a tabbed QScintilla project editor with syntax-aware highlighting,
find and status bars, plus a plain-text fallback.
Replace per-release installation scripts with one profile-driven Ubuntu
installer and a bootstrap entry point supporting doctor, dry-run,
uninstall, and legacy cleanup modes for Ubuntu 24.04 through 26.04.

Upgrade the NGHDL stack to ngspice 45.2, harden GHDL and Verilator setup,
add the d_cosim operating-point patch, and make headless and IHP launches
use the supported runtime paths.
Replace the removed legacy SPICE exporter with a direct KiCad schematic
netlister. Preserve node order, subcircuit identity, and NgVeri/NGHDL
model blocks while producing the circuit format expected downstream.

Cover generation, write safety, and mixed-signal netlist behavior with
focused regression tests and a developer guide.
Anchor project identity to project files instead of folder names, preserve
cross-project model choices, and make asynchronous conversion lifecycle
state explicit and bounded.

Group shared device and subcircuit models, regenerate netlists safely,
improve conversion failure handling, and add regression coverage across
project management, converters, subcircuits, and Modelica export.
Extract a testable Qt-free HDL core and one toolchain resolver, then build
the Author, Verify, Convert, and Place workflow around a shared design.
Support Icarus d_cosim, Verilator NgVeri, NGHDL, and Makerchip without
silent failures or ambiguous model ownership.

Use atomic symbol and model registration, asynchronous removal, isolated
backend outputs, structural port parsing, and comprehensive workflow and
simulation tests.
Recover complete rawfile node names, separate extraction from rendering,
and incrementally update stacked plots without layout collapse or stale
empty-state output.

Add theme-aware, high-DPI-safe canvases and regression tests for data,
math, cursor, pane, console, and d_cosim restaging behavior.
Add the PowerShell build pipeline, native launcher, Inno Setup installer,
dependency manifest, bundled KiCad integration, log collection, and clean
uninstall support needed for a self-contained Windows 10/11 release.

Pin the packaged runtime, verify DLL and dependency closure, seed disabled
KiCad libraries safely, and prepare SKY130 so the installed PDK works away
from the build machine.
Wire the shared visual system through the main window, project explorer,
workspace, welcome screen, dialogs, docks, and console. Add first-run zoom,
live theme transitions, fullscreen tools, snapshots, and single-instance
dock behavior.

Harden startup and teardown, parent transient windows, preserve actions
across garbage collection, and cover motion, scaling, lifecycle, and
fullscreen behavior with focused tests.
Set the 2.6 product identity and define one clean export contract for the
Ubuntu archive and Windows installer. Publish the Ubuntu artifact through
CI and document reproducible build, packaging, install, and maintenance
procedures.

Record architecture, upstream compatibility decisions, NgVeri accuracy,
Makerchip integration, contributor expectations, and supported platform
quickstarts for reviewers and future maintainers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant