Skip to content

VHDL, mux/operator symbols, najaeda 0.7.33+ (merge after next najaeda release) - #33

Merged
xtofalex merged 3 commits into
mainfrom
naja-0.7.33
Nov 1, 2026
Merged

xtofalex merged 3 commits into
mainfrom
naja-0.7.33

Conversation

@xtofalex

Copy link
Copy Markdown
Contributor

Do not merge until the next najaeda release (after 0.7.33) is on PyPI. --top for SystemVerilog goes through frontend_options={"slang": ["--top", name]}, which needs a najaeda newer than 0.7.33. When it's published, bump the minimum in python/pyproject.toml and the oldest version in the python-package.yml matrix, then mark the PR ready.

Changes

  • VHDL through naja's experimental frontend:

    • native: positional .vhd/.vhdl files, in any order, plus File > Open VHDL...
    • server: --vhdl, via NLDB.loadVHDL().

    --top works with SV and VHDL. --liberty and --yosys-src are rejected with both, the same rule on both CLIs.

  • Python loaders use only najaeda's raw naja API (loadGateLevelVerilog, loadSystemVerilog, loadVHDL, loadLibertyPrimitives).

  • Symbols: muxes are drawn as trapezoids. The word-level operators SystemVerilog lowers to (add, sub, mul, shl/shr/ashr, divmod) are drawn as boxes with a circled operator glyph. Types come from naja's modeling checks (isMux, isAddSub, isMultiply, isShift, isDivMod), never from names.

  • Python API takes and returns naja SNLPath for instances.

  • Dependencies and tests: the naja submodule is bumped and the package requires najaeda>=0.7.33. New SV/VHDL test designs are under tests/data/.

Test plan

  • pytest python/tests against the new najaeda release
  • native ctest (LocalSNLProviderProtocolTest, SchematicLayoutTest)
  • CI green with the bumped najaeda minimum

- Load VHDL through naja's experimental frontend: native positional
  .vhd/.vhdl files (any order), File > Open VHDL..., and --vhdl on the
  naja-schematic server (NLDB.loadVHDL()). --top applies to SystemVerilog
  and VHDL; --liberty/--yosys-src are rejected with both.
- Python loaders use najaeda's raw naja API only
  (loadGateLevelVerilog/loadSystemVerilog/loadVHDL/loadLibertyPrimitives);
  --top reaches slang through frontend_options.
- Draw muxes as trapezoids and the word-level operators SystemVerilog
  lowers to (add, sub, mul, shifts, divmod) as boxes with an operator
  glyph, typed from naja's modeling checks, never from names.
- Python API takes and returns naja SNLPath for instances.
- Require najaeda >= 0.7.33, bump the naja submodule, add SV/VHDL test
  designs.
…ptions aren't in 0.7.33; time out hung test jobs
@xtofalex
xtofalex marked this pull request as ready for review November 1, 2026 00:00
@xtofalex
xtofalex merged commit 7a48835 into main Nov 1, 2026
15 checks passed
@xtofalex
xtofalex deleted the naja-0.7.33 branch November 1, 2026 00:01
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