Repository navigation
Conversation
… API A design can now be given as Python scripts, the way py_tech_files give primitives. Each script defines constructLibrary(lib) and creates the design's modules, instances and nets with the naja module; the scripts of a design run in order against the same library. Primitives come from py_tech_files or Liberty as in every other mode, and a script looks a cell up in the database's primitive libraries, since a Liberty library keeps the name declared in its file. CLI: -python / -py with --python_design1_top / --python_design2_top. YAML: format: python (or py) with python_design1_top / python_design2_top. The format is valid for LEC and SEC. The loader interface gains loadDesignLibrary, which the standalone driver maps to SNLPyLoader::loadLibrary and the in-process driver rejects, as it already does for py_tech_files. Tests cover an equivalent and a different pair built from Python primitives, named and ambiguous tops, a missing constructLibrary, a sequential pair built from Nangate cells in normal and compact SEC, and the top options being refused with other formats. docs/python-design-input.md documents the contract.
regress/sky130hd_gcd_py repeats the sky130hd_gcd CNF regression with both netlists given as python-format scripts. verilog_to_naja_py.py generated them from the Verilog netlists of kepler-formal-regress/sky130hd_gcd: it reads a netlist with the Naja Python module and emits one call per term, net, connection and instance in the order the Verilog reader created them, so the loaded design is the same object for object. The case compares against the sky130hd_gcd golden archives, linked rather than copied. Locally the run reports Circuits are IDENTICAL and both miter.cnf and the PO CNFs are byte identical to the Verilog run. The LEC workflow runs the case after sky130hd_gcd with leak detection off, since the embedded Python interpreter leaks at exit by design.
The REUSE check requires a copyright and license notice on every file. The generator now emits the header at the top of each script it writes, and the case config carries one too. The regenerated scripts still give identical CNF files.
reuse 3.0, which the compliance action runs, reads the generator's header and then meets the same tag again inside the string the generator emits, and reports the file as having no licensing information. Building the emitted tag from two string pieces leaves the file's own header as the only occurrence. The generated scripts are unchanged.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.