Loading and Saving

The top-level load and dump functions live in najaeda.netlist.

Session lifecycle

from najaeda import netlist

netlist.reset()
top = netlist.create_top("top")

Call najaeda.netlist.reset() at the beginning of scripts and tests when you need an empty universe. Loading a design returns the top najaeda.netlist.Instance wrapper.

Verilog

from najaeda import netlist

config = netlist.VerilogConfig()
top = netlist.load_verilog(["cells.v", "design.v"], config)

Use Verilog loading for structural Verilog netlists. Load Liberty or primitive libraries first when the design instantiates standard cells or technology primitives.

SystemVerilog

from najaeda import netlist

config = netlist.SystemVerilogConfig()
top = netlist.load_system_verilog(["pkg.sv", "rtl.sv"], config)

SystemVerilog loading elaborates the design through the native frontend and then builds SNL objects. Frontend diagnostics are raised as native SystemVerilog* exceptions from najaeda.naja.

By default, an incremental diagnostics report is written to naja_sv_diagnostics.log. Set diagnostics_report_path=None in najaeda.netlist.SystemVerilogConfig to disable that file and retain console diagnostics only.

Liberty and primitive libraries

from najaeda import netlist

netlist.load_liberty(["NangateOpenCellLibrary_typical.lib"])
netlist.load_primitives("xilinx")

The primitives library is available through najaeda.netlist.get_primitives_library() for scripts that need to inspect or create primitive-backed models.

Naja interchange

from najaeda import netlist

top = netlist.load_naja_if("design.naja")
netlist.dump_naja_if("roundtrip.naja")

Naja interchange preserves the SNL database more directly than Verilog and is useful for round-tripping internal analyses and transformations.

Verilog output

Use native dump methods when you need Verilog output from the underlying SNL database. The high-level package currently exposes Naja interchange directly; for raw Verilog dump control, see Expert Raw API.