diff --git a/.github/workflows/regress-lec.yml b/.github/workflows/regress-lec.yml index 88371fb0..652247c3 100644 --- a/.github/workflows/regress-lec.yml +++ b/.github/workflows/regress-lec.yml @@ -82,6 +82,22 @@ jobs: expect-identical \ po-cnfs + # The same gcd netlists built by Python scripts through the Naja Python + # API must give the same verdict and the same CNF files. The Python + # interpreter leaks by design at exit, which the sanitizer must ignore. + - name: Run sky130hd_gcd_py + working-directory: ${{github.workspace}} + env: + ASAN_OPTIONS: detect_leaks=0 + run: | + bash regress/run_cnf_regress.sh \ + sky130hd_gcd_py \ + "${{github.workspace}}/regress/sky130hd_gcd_py" \ + "${{github.workspace}}/build/src/bin/kepler-formal" \ + config.yaml \ + expect-identical \ + po-cnfs + - name: Run nangate45_black_parrot working-directory: ${{github.workspace}} run: | diff --git a/README.md b/README.md index 7d63acff..727e157d 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ or runtime errors are execution failures rather than SEC verdicts. ```bash # Single file per design -build/src/bin/kepler-formal <-verilog/-naja_if/-systemverilog/-sv/-sv2v/-vhdl> [options] \ +build/src/bin/kepler-formal <-verilog/-naja_if/-systemverilog/-sv/-sv2v/-vhdl/-python> [options] \ [...] # Multi-file Verilog @@ -186,10 +186,12 @@ build/src/bin/kepler-formal -vhdl -v sec \ | `-systemverilog`, `-sv` | Parse both designs as SystemVerilog. Requires SEC. | | `-sv2v` | Parse design 1 as SystemVerilog and design 2 as Verilog for SEC RTL-vs-gate comparison. | | `-vhdl` | Parse both designs as VHDL. Requires SEC. Experimental; see [VHDL support](docs/vhdl/README.md). | +| `-python`, `-py` | Build both designs from Python scripts through the Naja Python API; see [Python design input](docs/python-design-input.md). | | `--design1 ` | Explicit source list for design 1 in multi-file Verilog mode. | | `--design2 ` | Explicit source list for design 2 in multi-file Verilog mode. | | `--verilog_design1_top `, `--verilog_design2_top ` | Select the top module for each Verilog design. In `sv2v` mode, only design 2 is Verilog. | | `--vhdl_design1_top `, `--vhdl_design2_top ` | Select the top entity for each VHDL design. | +| `--python_design1_top `, `--python_design2_top ` | Select the top module for each Python-built design. | | `-sv`, `-systemverilog` | Use SystemVerilog input mode. | | `--liberty `, `--lib ` | Liberty library files. | | `--verilog_preprocessing` | Enable preprocessing for Verilog inputs. | @@ -210,7 +212,7 @@ build/src/bin/kepler-formal --config | Key | Type | Meaning | | --- | --- | --- | -| `format` | string | `verilog`, `v`, `naja_if`, `systemverilog`, `sv`, `sv2v`, `vhdl`, or `vhd`. Defaults to `verilog` if omitted. | +| `format` | string | `verilog`, `v`, `naja_if`, `systemverilog`, `sv`, `sv2v`, `vhdl`, `vhd`, `python`, or `py`. Defaults to `verilog` if omitted. | | `verification` | string | `lec` or `sec`. Defaults to `lec`. | | `btor2_export` | bool | Enable BTOR2 export before solving; SEC only. Defaults to `false`. | | `btor2_export_path` | string | BTOR2 destination; defaults to `miter.btor2` when enabled. Requires `btor2_export: true`. | diff --git a/docs/flags-spec.md b/docs/flags-spec.md index dd79acfc..358ba618 100644 --- a/docs/flags-spec.md +++ b/docs/flags-spec.md @@ -18,6 +18,7 @@ The SEC-specific flag surface is documented separately in | `sec` | RTL-level sequential equivalence checking | RTL Verilog/SystemVerilog sources, including SystemVerilog flists with explicit tops. | | `sec` | SystemVerilog-to-Verilog RTL-vs-gate checking (`sv2v`) | SystemVerilog design 1 and Verilog design 2, plus Liberty/Python primitive libraries as needed. | | `sec` | VHDL RTL-level sequential equivalence checking (`vhdl`) | VHDL sources for both designs, in compile order. Experimental; see [VHDL support](vhdl/README.md). | +| `lec`, `sec` | Designs built by Python scripts (`python`) | One or more scripts per design that create the design with the Naja Python API, plus Liberty/Python primitive libraries. See [Python design input](python-design-input.md). | LEC is the default. Select SEC with `-v sec`, `--verification sec`, or `verification: sec` in YAML. @@ -43,6 +44,7 @@ LEC is the default. Select SEC with `-v sec`, `--verification sec`, or | `-systemverilog`, `-sv` | Use SystemVerilog format for both designs. Requires SEC verification. | | `-sv2v` | Use mixed SystemVerilog-to-Verilog format for SEC RTL-vs-gate comparison: design 1 is parsed as SystemVerilog, design 2 is parsed as Verilog. | | `-vhdl` | Use VHDL format for both designs. Requires SEC verification. | +| `-python`, `-py` | Build both designs from Python scripts through the Naja Python API. | | `--help`, `-h` | Print usage and exit. | | `--version`, `-V` | Print the embedded Kepler Formal and Naja versions and Git hashes to stdout and exit successfully. Use as a standalone option. | | `--config `, `-c ` | Load a YAML config file. Config mode cannot be combined with other command-line options. | @@ -54,6 +56,7 @@ LEC is the default. Select SEC with `-v sec`, `--verification sec`, or | `--sv_design1_top `, `--sv_design2_top ` | Per-design SystemVerilog top modules. Only design 1 is valid in `sv2v` mode. | | `--verilog_design1_top `, `--verilog_design2_top ` | Per-design Verilog top modules. Only design 2 is valid in `sv2v` mode. | | `--vhdl_design1_top `, `--vhdl_design2_top ` | Per-design VHDL top entities. Only valid in `vhdl` mode. | +| `--python_design1_top `, `--python_design2_top ` | Per-design top modules of Python-built designs. Only valid in `python` mode. | | `--compact` | Reduce peak memory. In SEC, extract and release design 1 before loading design 2. | | `--report-skipped-pos` | Emit skipped-PO reports in the current working directory. | @@ -61,7 +64,7 @@ LEC is the default. Select SEC with `-v sec`, `--verification sec`, or | Key | Type | Meaning | | --- | --- | --- | -| `format` | string | Input format: `verilog`, `v`, `naja_if`, `systemverilog`, `sv`, `sv2v`, `vhdl`, or `vhd`. If omitted, the implementation defaults to `verilog`. | +| `format` | string | Input format: `verilog`, `v`, `naja_if`, `systemverilog`, `sv`, `sv2v`, `vhdl`, `vhd`, `python`, or `py`. If omitted, the implementation defaults to `verilog`. | | `verification` | string | `lec` or `sec`. Defaults to `lec`. | | `max_k` | integer | SEC proof/search bound. Defaults to `32`. | | `sec_engine` | string | `k_induction`, `imc`, or `pdr`. Defaults to `pdr`. | @@ -92,6 +95,7 @@ LEC is the default. Select SEC with `-v sec`, `--verification sec`, or | `sv_design1_top`, `sv_design2_top` | string | Per-design SystemVerilog top modules. Only design 1 is valid in `sv2v` mode. | | `verilog_design1_top`, `verilog_design2_top` | string | Per-design Verilog top modules. Only design 2 is valid in `sv2v` mode. | | `vhdl_design1_top`, `vhdl_design2_top` | string | Per-design VHDL top entities. Only valid in `vhdl` mode. | +| `python_design1_top`, `python_design2_top` | string | Per-design top modules of Python-built designs. Only valid in `python` mode. | | `solver` | string | SAT solver selection: `kissat`, `glucose`, or `cadical`. Defaults to `kissat`. | Example: diff --git a/docs/python-design-input.md b/docs/python-design-input.md new file mode 100644 index 00000000..f6b79eef --- /dev/null +++ b/docs/python-design-input.md @@ -0,0 +1,87 @@ +# Python Design Input + +A design can be given as a Python script instead of a netlist file. The script +builds the design with the Naja Python API, the same API that +[Python primitive files](python-primitives.md) use for technology cells. The +mode is for netlists produced or transformed by a program: every module, +instance, net and connection is created by calling the API. + +## Usage + +CLI flag: `-python` (or `-py`). YAML: `format: python` (or `py`). The mode +works for LEC and SEC. + +```bash +build/src/bin/kepler-formal -python -v sec \ + --design1 --design2 \ + --liberty \ + [--python_design1_top ] [--python_design2_top ] +``` + +```yaml +format: python +verification: lec +input_paths: + - [design1/cells.py, design1/top.py] + - [design2/top.py] +py_tech_files: + - ./my_primitives.py +python_design1_top: top +python_design2_top: top +``` + +## Script contract + +Each script defines `constructLibrary(lib)`. Kepler-formal calls it with the +design library of one side, after the technology primitives are loaded. The +scripts of a design run in the listed order against the same library, so a +design may be split over several files. + +```python +import naja + + +def constructLibrary(lib): + inv = primitive(lib, "INV") + top = naja.SNLDesign.create(lib, "top") + a = naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, "a") + y = naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Output, "y") + net_a = naja.SNLScalarNet.create(top, "a") + net_y = naja.SNLScalarNet.create(top, "y") + a.setNet(net_a) + y.setNet(net_y) + gate = naja.SNLInstance.create(top, inv, "u_inv") + gate.getInstTerm(inv.getScalarTerm("A")).setNet(net_a) + gate.getInstTerm(inv.getScalarTerm("Y")).setNet(net_y) +``` + +Primitive cells come from `py_tech_files` or `--liberty`, as in every other +mode. They live in the primitive libraries of the design's database. A Liberty +library keeps the name declared in the file, so look a cell up in every +primitive library rather than by library name: + +```python +def primitive(lib, name): + for primitives in lib.getDB().getPrimitiveLibraries(): + model = primitives.getSNLDesign(name) + if model is not None: + return model + raise RuntimeError("primitive %s was not loaded" % name) +``` + +## Top selection + +`python_design1_top` and `python_design2_top` name the top module of each +design. Without them the top is the module that no other module instantiates. +When several modules qualify, name the top explicitly; the run stops with +`No top design was found` otherwise. A named top that the script did not +create stops the run with an error. + +## Notes + +- The script's `print` output is only shown when written to `sys.stderr` or + flushed; a run that stops on an error does not flush Python's `stdout`. +- `naja.so` must be importable, as for Python primitive files; see + [How `naja.so` is found](python-primitives.md#how-najaso-is-found). +- The in-process `kepler_formal` Python API does not accept this format. It + borrows live NajaEDA designs instead; see [Python API](python-api.md). diff --git a/regress/sky130hd_gcd_py/config.yaml b/regress/sky130hd_gcd_py/config.yaml new file mode 100644 index 00000000..d451da10 --- /dev/null +++ b/regress/sky130hd_gcd_py/config.yaml @@ -0,0 +1,13 @@ +# Copyright 2026 keplertech.io +# SPDX-License-Identifier: Apache-2.0 +# The sky130hd_gcd LEC regression with both netlists given as Python scripts +# (format: python). The scripts were generated from the Verilog netlists of +# kepler-formal-regress/sky130hd_gcd by verilog_to_naja_py.py, so the loaded +# designs, the verdict and the exported CNF are the same as for the Verilog +# inputs; the golden archives are those of sky130hd_gcd. +format: python +input_paths: + - ./gcd_before.py + - ./gcd_after.py +liberty_files: + - ../../kepler-formal-regress/sky130hd_gcd/sky130_fd_sc_hd__tt_025C_1v80.lib diff --git a/regress/sky130hd_gcd_py/gcd_after.py b/regress/sky130hd_gcd_py/gcd_after.py new file mode 100644 index 00000000..37f62354 --- /dev/null +++ b/regress/sky130hd_gcd_py/gcd_after.py @@ -0,0 +1,2026 @@ +# Copyright 2026 keplertech.io +# SPDX-License-Identifier: Apache-2.0 + +import naja + + +def primitive(lib, name): + for primitives in lib.getDB().getPrimitiveLibraries(): + model = primitives.getSNLDesign(name) + if model is not None: + return model + raise RuntimeError('primitive %s was not loaded' % name) + + +def constructLibrary(lib): + top = naja.SNLDesign.create(lib, 'gcd') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, 'clk') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Output, 'req_rdy') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, 'req_val') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, 'reset') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, 'resp_rdy') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Output, 'resp_val') + naja.SNLBusTerm.create(top, naja.SNLTerm.Direction.Input, 31, 0, 'req_msg') + naja.SNLBusTerm.create(top, naja.SNLTerm.Direction.Output, 15, 0, 'resp_msg') + n0 = naja.SNLScalarNet.create(top) + n0.setType(naja.SNLNet.Type.Assign0) + n1 = naja.SNLScalarNet.create(top) + n1.setType(naja.SNLNet.Type.Assign1) + n2 = naja.SNLScalarNet.create(top, 'clk') + n3 = naja.SNLScalarNet.create(top, 'req_rdy') + n4 = naja.SNLScalarNet.create(top, 'req_val') + n5 = naja.SNLScalarNet.create(top, 'reset') + n6 = naja.SNLScalarNet.create(top, 'resp_rdy') + n7 = naja.SNLScalarNet.create(top, 'resp_val') + n8 = naja.SNLBusNet.create(top, 31, 0, 'req_msg') + n9 = naja.SNLBusNet.create(top, 15, 0, 'resp_msg') + n10 = naja.SNLScalarNet.create(top, '_000_') + n11 = naja.SNLScalarNet.create(top, '_001_') + n12 = naja.SNLScalarNet.create(top, '_002_') + n13 = naja.SNLScalarNet.create(top, '_004_') + n14 = naja.SNLScalarNet.create(top, '_005_') + n15 = naja.SNLScalarNet.create(top, '_006_') + n16 = naja.SNLScalarNet.create(top, '_007_') + n17 = naja.SNLScalarNet.create(top, '_008_') + n18 = naja.SNLScalarNet.create(top, '_009_') + n19 = naja.SNLScalarNet.create(top, '_010_') + n20 = naja.SNLScalarNet.create(top, '_011_') + n21 = naja.SNLScalarNet.create(top, '_012_') + n22 = naja.SNLScalarNet.create(top, '_013_') + n23 = naja.SNLScalarNet.create(top, '_014_') + n24 = naja.SNLScalarNet.create(top, '_015_') + n25 = naja.SNLScalarNet.create(top, '_016_') + n26 = naja.SNLScalarNet.create(top, '_017_') + n27 = naja.SNLScalarNet.create(top, '_018_') + n28 = naja.SNLScalarNet.create(top, '_019_') + n29 = naja.SNLScalarNet.create(top, '_020_') + n30 = naja.SNLScalarNet.create(top, '_021_') + n31 = naja.SNLScalarNet.create(top, '_022_') + n32 = naja.SNLScalarNet.create(top, '_023_') + n33 = naja.SNLScalarNet.create(top, '_024_') + n34 = naja.SNLScalarNet.create(top, '_025_') + n35 = naja.SNLScalarNet.create(top, '_026_') + n36 = naja.SNLScalarNet.create(top, '_027_') + n37 = naja.SNLScalarNet.create(top, '_028_') + n38 = naja.SNLScalarNet.create(top, '_029_') + n39 = naja.SNLScalarNet.create(top, '_030_') + n40 = naja.SNLScalarNet.create(top, '_031_') + n41 = naja.SNLScalarNet.create(top, '_032_') + n42 = naja.SNLScalarNet.create(top, '_033_') + n43 = naja.SNLScalarNet.create(top, '_034_') + n44 = naja.SNLScalarNet.create(top, '_035_') + n45 = naja.SNLScalarNet.create(top, '_036_') + n46 = naja.SNLScalarNet.create(top, '_037_') + n47 = naja.SNLScalarNet.create(top, '_038_') + n48 = naja.SNLScalarNet.create(top, '_039_') + n49 = naja.SNLScalarNet.create(top, '_040_') + n50 = naja.SNLScalarNet.create(top, '_041_') + n51 = naja.SNLScalarNet.create(top, '_042_') + n52 = naja.SNLScalarNet.create(top, '_043_') + n53 = naja.SNLScalarNet.create(top, '_044_') + n54 = naja.SNLScalarNet.create(top, '_045_') + n55 = naja.SNLScalarNet.create(top, '_046_') + n56 = naja.SNLScalarNet.create(top, '_047_') + n57 = naja.SNLScalarNet.create(top, '_048_') + n58 = naja.SNLScalarNet.create(top, '_049_') + n59 = naja.SNLScalarNet.create(top, '_050_') + n60 = naja.SNLScalarNet.create(top, '_051_') + n61 = naja.SNLScalarNet.create(top, '_052_') + n62 = naja.SNLScalarNet.create(top, '_053_') + n63 = naja.SNLScalarNet.create(top, '_054_') + n64 = naja.SNLScalarNet.create(top, '_055_') + n65 = naja.SNLScalarNet.create(top, '_056_') + n66 = naja.SNLScalarNet.create(top, '_057_') + n67 = naja.SNLScalarNet.create(top, '_058_') + n68 = naja.SNLScalarNet.create(top, '_059_') + n69 = naja.SNLScalarNet.create(top, '_060_') + n70 = naja.SNLScalarNet.create(top, '_061_') + n71 = naja.SNLScalarNet.create(top, '_062_') + n72 = naja.SNLScalarNet.create(top, '_063_') + n73 = naja.SNLScalarNet.create(top, '_064_') + n74 = naja.SNLScalarNet.create(top, '_065_') + n75 = naja.SNLScalarNet.create(top, '_066_') + n76 = naja.SNLScalarNet.create(top, '_067_') + n77 = naja.SNLScalarNet.create(top, '_068_') + n78 = naja.SNLScalarNet.create(top, '_069_') + n79 = naja.SNLScalarNet.create(top, '_070_') + n80 = naja.SNLScalarNet.create(top, '_071_') + n81 = naja.SNLScalarNet.create(top, '_072_') + n82 = naja.SNLScalarNet.create(top, '_073_') + n83 = naja.SNLScalarNet.create(top, '_074_') + n84 = naja.SNLScalarNet.create(top, '_075_') + n85 = naja.SNLScalarNet.create(top, '_076_') + n86 = naja.SNLScalarNet.create(top, '_077_') + n87 = naja.SNLScalarNet.create(top, '_078_') + n88 = naja.SNLScalarNet.create(top, '_079_') + n89 = naja.SNLScalarNet.create(top, '_080_') + n90 = naja.SNLScalarNet.create(top, '_081_') + n91 = naja.SNLScalarNet.create(top, '_082_') + n92 = naja.SNLScalarNet.create(top, '_083_') + n93 = naja.SNLScalarNet.create(top, '_084_') + n94 = naja.SNLScalarNet.create(top, '_085_') + n95 = naja.SNLScalarNet.create(top, '_086_') + n96 = naja.SNLScalarNet.create(top, '_087_') + n97 = naja.SNLScalarNet.create(top, '_088_') + n98 = naja.SNLScalarNet.create(top, '_089_') + n99 = naja.SNLScalarNet.create(top, '_090_') + n100 = naja.SNLScalarNet.create(top, '_091_') + n101 = naja.SNLScalarNet.create(top, '_092_') + n102 = naja.SNLScalarNet.create(top, '_093_') + n103 = naja.SNLScalarNet.create(top, '_094_') + n104 = naja.SNLScalarNet.create(top, '_095_') + n105 = naja.SNLScalarNet.create(top, '_096_') + n106 = naja.SNLScalarNet.create(top, '_097_') + n107 = naja.SNLScalarNet.create(top, '_098_') + n108 = naja.SNLScalarNet.create(top, '_099_') + n109 = naja.SNLScalarNet.create(top, '_100_') + n110 = naja.SNLScalarNet.create(top, '_103_') + n111 = naja.SNLScalarNet.create(top, '_105_') + n112 = naja.SNLScalarNet.create(top, '_106_') + n113 = naja.SNLScalarNet.create(top, '_107_') + n114 = naja.SNLScalarNet.create(top, '_108_') + n115 = naja.SNLScalarNet.create(top, '_109_') + n116 = naja.SNLScalarNet.create(top, '_112_') + n117 = naja.SNLScalarNet.create(top, '_113_') + n118 = naja.SNLScalarNet.create(top, '_114_') + n119 = naja.SNLScalarNet.create(top, '_115_') + n120 = naja.SNLScalarNet.create(top, '_116_') + n121 = naja.SNLScalarNet.create(top, '_117_') + n122 = naja.SNLScalarNet.create(top, '_118_') + n123 = naja.SNLScalarNet.create(top, '_119_') + n124 = naja.SNLScalarNet.create(top, '_120_') + n125 = naja.SNLScalarNet.create(top, '_121_') + n126 = naja.SNLScalarNet.create(top, '_122_') + n127 = naja.SNLScalarNet.create(top, '_123_') + n128 = naja.SNLScalarNet.create(top, '_124_') + n129 = naja.SNLScalarNet.create(top, '_125_') + n130 = naja.SNLScalarNet.create(top, '_126_') + n131 = naja.SNLScalarNet.create(top, '_127_') + n132 = naja.SNLScalarNet.create(top, '_128_') + n133 = naja.SNLScalarNet.create(top, '_129_') + n134 = naja.SNLScalarNet.create(top, '_130_') + n135 = naja.SNLScalarNet.create(top, '_131_') + n136 = naja.SNLScalarNet.create(top, '_132_') + n137 = naja.SNLScalarNet.create(top, '_133_') + n138 = naja.SNLScalarNet.create(top, '_134_') + n139 = naja.SNLScalarNet.create(top, '_135_') + n140 = naja.SNLScalarNet.create(top, '_136_') + n141 = naja.SNLScalarNet.create(top, '_137_') + n142 = naja.SNLScalarNet.create(top, '_138_') + n143 = naja.SNLScalarNet.create(top, '_139_') + n144 = naja.SNLScalarNet.create(top, '_140_') + n145 = naja.SNLScalarNet.create(top, '_141_') + n146 = naja.SNLScalarNet.create(top, '_142_') + n147 = naja.SNLScalarNet.create(top, '_143_') + n148 = naja.SNLScalarNet.create(top, '_144_') + n149 = naja.SNLScalarNet.create(top, '_146_') + n150 = naja.SNLScalarNet.create(top, '_147_') + n151 = naja.SNLScalarNet.create(top, '_148_') + n152 = naja.SNLScalarNet.create(top, '_149_') + n153 = naja.SNLScalarNet.create(top, '_150_') + n154 = naja.SNLScalarNet.create(top, '_151_') + n155 = naja.SNLScalarNet.create(top, '_152_') + n156 = naja.SNLScalarNet.create(top, '_153_') + n157 = naja.SNLScalarNet.create(top, '_154_') + n158 = naja.SNLScalarNet.create(top, '_155_') + n159 = naja.SNLScalarNet.create(top, 'ctrl$a_reg_en[0]') + n160 = naja.SNLScalarNet.create(top, 'ctrl$b_reg_en[0]') + n161 = naja.SNLScalarNet.create(top, 'ctrl.state.out[1]') + n162 = naja.SNLScalarNet.create(top, 'ctrl.state.out[2]') + n163 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[0]') + n164 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[10]') + n165 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[11]') + n166 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[12]') + n167 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[13]') + n168 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[14]') + n169 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[15]') + n170 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[1]') + n171 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[2]') + n172 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[3]') + n173 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[4]') + n174 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[5]') + n175 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[6]') + n176 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[7]') + n177 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[8]') + n178 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[9]') + n179 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[0]') + n180 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[10]') + n181 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[11]') + n182 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[12]') + n183 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[13]') + n184 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[14]') + n185 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[15]') + n186 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[1]') + n187 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[2]') + n188 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[3]') + n189 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[4]') + n190 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[5]') + n191 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[6]') + n192 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[7]') + n193 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[8]') + n194 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[9]') + n195 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[0]') + n196 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[10]') + n197 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[11]') + n198 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[12]') + n199 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[13]') + n200 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[14]') + n201 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[15]') + n202 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[1]') + n203 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[2]') + n204 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[3]') + n205 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[4]') + n206 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[5]') + n207 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[6]') + n208 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[7]') + n209 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[8]') + n210 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[9]') + n211 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[0]') + n212 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[10]') + n213 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[11]') + n214 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[12]') + n215 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[13]') + n216 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[14]') + n217 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[15]') + n218 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[1]') + n219 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[2]') + n220 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[3]') + n221 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[4]') + n222 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[5]') + n223 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[6]') + n224 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[7]') + n225 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[8]') + n226 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[9]') + n227 = naja.SNLScalarNet.create(top, 'net1') + n228 = naja.SNLScalarNet.create(top, 'net2') + n229 = naja.SNLScalarNet.create(top, 'net3') + n230 = naja.SNLScalarNet.create(top, 'net4') + n231 = naja.SNLScalarNet.create(top, 'net5') + n232 = naja.SNLScalarNet.create(top, 'net6') + n233 = naja.SNLScalarNet.create(top, 'net7') + n234 = naja.SNLScalarNet.create(top, 'net8') + n235 = naja.SNLScalarNet.create(top, 'net9') + n236 = naja.SNLScalarNet.create(top, 'net10') + n237 = naja.SNLScalarNet.create(top, 'net11') + n238 = naja.SNLScalarNet.create(top, 'net12') + n239 = naja.SNLScalarNet.create(top, 'net13') + n240 = naja.SNLScalarNet.create(top, 'net14') + n241 = naja.SNLScalarNet.create(top, 'net15') + n242 = naja.SNLScalarNet.create(top, 'net16') + n243 = naja.SNLScalarNet.create(top, 'net17') + n244 = naja.SNLScalarNet.create(top, 'net18') + n245 = naja.SNLScalarNet.create(top, 'net19') + n246 = naja.SNLScalarNet.create(top, 'net20') + n247 = naja.SNLScalarNet.create(top, 'net21') + n248 = naja.SNLScalarNet.create(top, 'net22') + n249 = naja.SNLScalarNet.create(top, 'net23') + n250 = naja.SNLScalarNet.create(top, 'net24') + n251 = naja.SNLScalarNet.create(top, 'net25') + n252 = naja.SNLScalarNet.create(top, 'net26') + n253 = naja.SNLScalarNet.create(top, 'net27') + n254 = naja.SNLScalarNet.create(top, 'net28') + n255 = naja.SNLScalarNet.create(top, 'net29') + n256 = naja.SNLScalarNet.create(top, 'net30') + n257 = naja.SNLScalarNet.create(top, 'net31') + n258 = naja.SNLScalarNet.create(top, 'net32') + n259 = naja.SNLScalarNet.create(top, 'net36') + n260 = naja.SNLScalarNet.create(top, 'net33') + n261 = naja.SNLScalarNet.create(top, 'net34') + n262 = naja.SNLScalarNet.create(top, 'net37') + n263 = naja.SNLScalarNet.create(top, 'net38') + n264 = naja.SNLScalarNet.create(top, 'net39') + n265 = naja.SNLScalarNet.create(top, 'net40') + n266 = naja.SNLScalarNet.create(top, 'net41') + n267 = naja.SNLScalarNet.create(top, 'net42') + n268 = naja.SNLScalarNet.create(top, 'net43') + n269 = naja.SNLScalarNet.create(top, 'net44') + n270 = naja.SNLScalarNet.create(top, 'net45') + n271 = naja.SNLScalarNet.create(top, 'net46') + n272 = naja.SNLScalarNet.create(top, 'net47') + n273 = naja.SNLScalarNet.create(top, 'net48') + n274 = naja.SNLScalarNet.create(top, 'net49') + n275 = naja.SNLScalarNet.create(top, 'net50') + n276 = naja.SNLScalarNet.create(top, 'net51') + n277 = naja.SNLScalarNet.create(top, 'net52') + n278 = naja.SNLScalarNet.create(top, 'net35') + n279 = naja.SNLScalarNet.create(top, 'net53') + n280 = naja.SNLScalarNet.create(top, 'net150') + n281 = naja.SNLScalarNet.create(top, 'net126') + n282 = naja.SNLScalarNet.create(top, 'net245') + n283 = naja.SNLScalarNet.create(top, 'net128') + n284 = naja.SNLScalarNet.create(top, 'net149') + n285 = naja.SNLScalarNet.create(top, 'net129') + n286 = naja.SNLScalarNet.create(top, 'net130') + n287 = naja.SNLScalarNet.create(top, 'net131') + n288 = naja.SNLScalarNet.create(top, 'net132') + n289 = naja.SNLScalarNet.create(top, 'net133') + n290 = naja.SNLScalarNet.create(top, 'net134') + n291 = naja.SNLScalarNet.create(top, 'net148') + n292 = naja.SNLScalarNet.create(top, 'net135') + n293 = naja.SNLScalarNet.create(top, 'net136') + n294 = naja.SNLScalarNet.create(top, 'net147') + n295 = naja.SNLScalarNet.create(top, 'net141') + n296 = naja.SNLScalarNet.create(top, 'net138') + n297 = naja.SNLScalarNet.create(top, 'net137') + n298 = naja.SNLScalarNet.create(top, 'net139') + n299 = naja.SNLScalarNet.create(top, 'net140') + n300 = naja.SNLScalarNet.create(top, 'net145') + n301 = naja.SNLScalarNet.create(top, 'net143') + n302 = naja.SNLScalarNet.create(top, 'net142') + n303 = naja.SNLScalarNet.create(top, 'net144') + n304 = naja.SNLScalarNet.create(top, 'net146') + n305 = naja.SNLScalarNet.create(top, 'net152') + n306 = naja.SNLScalarNet.create(top, 'net153') + n307 = naja.SNLScalarNet.create(top, 'net154') + n308 = naja.SNLScalarNet.create(top, 'net156') + n309 = naja.SNLScalarNet.create(top, 'net159') + n310 = naja.SNLScalarNet.create(top, 'net160') + n311 = naja.SNLScalarNet.create(top, 'net313') + n312 = naja.SNLScalarNet.create(top, 'net164') + n313 = naja.SNLScalarNet.create(top, 'net165') + n314 = naja.SNLScalarNet.create(top, 'net166') + n315 = naja.SNLScalarNet.create(top, 'net167') + n316 = naja.SNLScalarNet.create(top, 'net169') + n317 = naja.SNLScalarNet.create(top, 'net170') + n318 = naja.SNLScalarNet.create(top, 'net171') + n319 = naja.SNLScalarNet.create(top, 'net174') + n320 = naja.SNLScalarNet.create(top, 'net175') + n321 = naja.SNLScalarNet.create(top, 'net177') + n322 = naja.SNLScalarNet.create(top, 'net182') + n323 = naja.SNLScalarNet.create(top, 'net179') + n324 = naja.SNLScalarNet.create(top, 'net180') + n325 = naja.SNLScalarNet.create(top, 'net181') + n326 = naja.SNLScalarNet.create(top, 'net296') + n327 = naja.SNLScalarNet.create(top, 'net184') + n328 = naja.SNLScalarNet.create(top, 'net185') + n329 = naja.SNLScalarNet.create(top, 'net191') + n330 = naja.SNLScalarNet.create(top, 'net186') + n331 = naja.SNLScalarNet.create(top, 'net187') + n332 = naja.SNLScalarNet.create(top, 'net188') + n333 = naja.SNLScalarNet.create(top, 'net293') + n334 = naja.SNLScalarNet.create(top, 'net190') + n335 = naja.SNLScalarNet.create(top, 'net192') + n336 = naja.SNLScalarNet.create(top, 'net193') + n337 = naja.SNLScalarNet.create(top, 'net194') + n338 = naja.SNLScalarNet.create(top, 'net196') + n339 = naja.SNLScalarNet.create(top, 'net197') + n340 = naja.SNLScalarNet.create(top, 'net200') + n341 = naja.SNLScalarNet.create(top, 'net199') + n342 = naja.SNLScalarNet.create(top, 'clknet_2_1__leaf_clk') + n343 = naja.SNLScalarNet.create(top, 'clknet_2_0__leaf_clk') + n344 = naja.SNLScalarNet.create(top, 'clknet_0_clk') + n345 = naja.SNLScalarNet.create(top, 'net121') + n346 = naja.SNLScalarNet.create(top, 'net122') + n347 = naja.SNLScalarNet.create(top, 'net123') + n348 = naja.SNLScalarNet.create(top, 'net124') + n349 = naja.SNLScalarNet.create(top, 'net125') + n350 = naja.SNLScalarNet.create(top, 'net151') + n351 = naja.SNLScalarNet.create(top, 'net155') + n352 = naja.SNLScalarNet.create(top, 'net157') + n353 = naja.SNLScalarNet.create(top, 'net158') + n354 = naja.SNLScalarNet.create(top, 'net314') + n355 = naja.SNLScalarNet.create(top, 'net163') + n356 = naja.SNLScalarNet.create(top, 'net168') + n357 = naja.SNLScalarNet.create(top, 'net172') + n358 = naja.SNLScalarNet.create(top, 'net176') + n359 = naja.SNLScalarNet.create(top, 'net178') + n360 = naja.SNLScalarNet.create(top, 'net198') + n361 = naja.SNLScalarNet.create(top, 'clknet_2_2__leaf_clk') + n362 = naja.SNLScalarNet.create(top, 'clknet_2_3__leaf_clk') + n363 = naja.SNLScalarNet.create(top, 'net201') + n364 = naja.SNLScalarNet.create(top, 'net202') + n365 = naja.SNLScalarNet.create(top, 'net203') + n366 = naja.SNLScalarNet.create(top, 'net204') + n367 = naja.SNLScalarNet.create(top, 'net205') + n368 = naja.SNLScalarNet.create(top, 'net206') + n369 = naja.SNLScalarNet.create(top, 'net207') + n370 = naja.SNLScalarNet.create(top, 'net208') + n371 = naja.SNLScalarNet.create(top, 'net209') + n372 = naja.SNLScalarNet.create(top, 'net210') + n373 = naja.SNLScalarNet.create(top, 'net211') + n374 = naja.SNLScalarNet.create(top, 'net212') + n375 = naja.SNLScalarNet.create(top, 'net239') + n376 = naja.SNLScalarNet.create(top, 'net240') + n377 = naja.SNLScalarNet.create(top, 'net241') + n378 = naja.SNLScalarNet.create(top, 'net243') + n379 = naja.SNLScalarNet.create(top, 'net246') + n380 = naja.SNLScalarNet.create(top, 'net251') + n381 = naja.SNLScalarNet.create(top, 'net275') + n382 = naja.SNLScalarNet.create(top, 'net276') + n383 = naja.SNLScalarNet.create(top, 'net291') + n384 = naja.SNLScalarNet.create(top, 'net292') + top.getScalarTerm('clk').setNet(n2) + top.getScalarTerm('req_rdy').setNet(n3) + top.getScalarTerm('req_val').setNet(n4) + top.getScalarTerm('reset').setNet(n5) + top.getScalarTerm('resp_rdy').setNet(n6) + top.getScalarTerm('resp_val').setNet(n7) + top.getBusTerm('req_msg').getBusTermBit(31).setNet(n8.getBit(31)) + top.getBusTerm('req_msg').getBusTermBit(30).setNet(n8.getBit(30)) + top.getBusTerm('req_msg').getBusTermBit(29).setNet(n8.getBit(29)) + top.getBusTerm('req_msg').getBusTermBit(28).setNet(n8.getBit(28)) + top.getBusTerm('req_msg').getBusTermBit(27).setNet(n8.getBit(27)) + top.getBusTerm('req_msg').getBusTermBit(26).setNet(n8.getBit(26)) + top.getBusTerm('req_msg').getBusTermBit(25).setNet(n8.getBit(25)) + top.getBusTerm('req_msg').getBusTermBit(24).setNet(n8.getBit(24)) + top.getBusTerm('req_msg').getBusTermBit(23).setNet(n8.getBit(23)) + top.getBusTerm('req_msg').getBusTermBit(22).setNet(n8.getBit(22)) + top.getBusTerm('req_msg').getBusTermBit(21).setNet(n8.getBit(21)) + top.getBusTerm('req_msg').getBusTermBit(20).setNet(n8.getBit(20)) + top.getBusTerm('req_msg').getBusTermBit(19).setNet(n8.getBit(19)) + top.getBusTerm('req_msg').getBusTermBit(18).setNet(n8.getBit(18)) + top.getBusTerm('req_msg').getBusTermBit(17).setNet(n8.getBit(17)) + top.getBusTerm('req_msg').getBusTermBit(16).setNet(n8.getBit(16)) + top.getBusTerm('req_msg').getBusTermBit(15).setNet(n8.getBit(15)) + top.getBusTerm('req_msg').getBusTermBit(14).setNet(n8.getBit(14)) + top.getBusTerm('req_msg').getBusTermBit(13).setNet(n8.getBit(13)) + top.getBusTerm('req_msg').getBusTermBit(12).setNet(n8.getBit(12)) + top.getBusTerm('req_msg').getBusTermBit(11).setNet(n8.getBit(11)) + top.getBusTerm('req_msg').getBusTermBit(10).setNet(n8.getBit(10)) + top.getBusTerm('req_msg').getBusTermBit(9).setNet(n8.getBit(9)) + top.getBusTerm('req_msg').getBusTermBit(8).setNet(n8.getBit(8)) + top.getBusTerm('req_msg').getBusTermBit(7).setNet(n8.getBit(7)) + top.getBusTerm('req_msg').getBusTermBit(6).setNet(n8.getBit(6)) + top.getBusTerm('req_msg').getBusTermBit(5).setNet(n8.getBit(5)) + top.getBusTerm('req_msg').getBusTermBit(4).setNet(n8.getBit(4)) + top.getBusTerm('req_msg').getBusTermBit(3).setNet(n8.getBit(3)) + top.getBusTerm('req_msg').getBusTermBit(2).setNet(n8.getBit(2)) + top.getBusTerm('req_msg').getBusTermBit(1).setNet(n8.getBit(1)) + top.getBusTerm('req_msg').getBusTermBit(0).setNet(n8.getBit(0)) + top.getBusTerm('resp_msg').getBusTermBit(15).setNet(n9.getBit(15)) + top.getBusTerm('resp_msg').getBusTermBit(14).setNet(n9.getBit(14)) + top.getBusTerm('resp_msg').getBusTermBit(13).setNet(n9.getBit(13)) + top.getBusTerm('resp_msg').getBusTermBit(12).setNet(n9.getBit(12)) + top.getBusTerm('resp_msg').getBusTermBit(11).setNet(n9.getBit(11)) + top.getBusTerm('resp_msg').getBusTermBit(10).setNet(n9.getBit(10)) + top.getBusTerm('resp_msg').getBusTermBit(9).setNet(n9.getBit(9)) + top.getBusTerm('resp_msg').getBusTermBit(8).setNet(n9.getBit(8)) + top.getBusTerm('resp_msg').getBusTermBit(7).setNet(n9.getBit(7)) + top.getBusTerm('resp_msg').getBusTermBit(6).setNet(n9.getBit(6)) + top.getBusTerm('resp_msg').getBusTermBit(5).setNet(n9.getBit(5)) + top.getBusTerm('resp_msg').getBusTermBit(4).setNet(n9.getBit(4)) + top.getBusTerm('resp_msg').getBusTermBit(3).setNet(n9.getBit(3)) + top.getBusTerm('resp_msg').getBusTermBit(2).setNet(n9.getBit(2)) + top.getBusTerm('resp_msg').getBusTermBit(1).setNet(n9.getBit(1)) + top.getBusTerm('resp_msg').getBusTermBit(0).setNet(n9.getBit(0)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor4_4'), '_157_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n314) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n315) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n13) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor4_4'), '_158_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n333) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n318) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n357) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n316) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n14) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor4_4'), '_159_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n319) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n312) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n359) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n358) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n15) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor4_4'), '_160_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n322) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n324) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n323) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n355) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n16) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand4_1'), '_161_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n13) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n16) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n15) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n14) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n17) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a22oi_1'), '_162_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n340) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n17) + inst.getInstTerm(inst.getModel().getScalarTerm('B2')).setNet(n338) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n18) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_163_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n18) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n12) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_164_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n161) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n19) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__or2_4'), '_165_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n162) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n259) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n159) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_4'), '_166_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n159) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n19) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n279) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_167_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n278) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n20) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_168_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n20) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n161) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n21) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21bo_2'), '_169_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n17) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n310) + inst.getInstTerm(inst.getModel().getScalarTerm('B1_N')).setNet(n338) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n22) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_2'), '_170_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n21) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n22) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n11) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_171_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n260) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n23) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a221o_1'), '_172_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n23) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n278) + inst.getInstTerm(inst.getModel().getScalarTerm('B2')).setNet(n279) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n261) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n10) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_2'), '_173_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n326) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n262) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_4'), '_174_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n163) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n179) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n24) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_2'), '_175_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n333) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n384) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n25) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_176_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n25) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n353) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n269) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_177_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n170) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n26) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_2'), '_178_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n24) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n186) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n26) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n27) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_179_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n357) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n332) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n28) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_2'), '_180_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n28) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n298) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n270) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_181_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n172) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n188) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n29) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_182_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n188) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n172) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n30) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_183_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n29) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n30) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n31) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_184_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n171) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n32) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_4'), '_185_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n27) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n187) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n32) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n33) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_2'), '_186_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n31) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n365) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n271) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_4'), '_187_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n30) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n33) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n29) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n34) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_188_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n316) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n331) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n35) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_2'), '_189_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n35) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n292) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n272) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_190_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n174) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n36) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_191_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n174) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n37) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_192_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n36) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n352) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n38) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_193_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n292) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n331) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n39) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_194_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n331) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n292) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n40) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_195_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n316) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n39) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n40) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n41) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_196_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n289) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n38) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n273) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_197_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n174) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n42) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_198_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n308) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n41) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n352) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n43) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_199_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n191) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n175) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n44) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_200_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n43) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n351) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n274) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_201_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n173) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n45) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand3_1'), '_202_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n36) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n37) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n44) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n46) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_203_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n317) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n45) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n46) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n47) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21bai_1'), '_204_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n330) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n42) + inst.getInstTerm(inst.getModel().getScalarTerm('B1_N')).setNet(n314) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n48) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_205_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n330) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n42) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n49) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o311ai_1'), '_206_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n189) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n45) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n46) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n48) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n49) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n50) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_4'), '_207_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n34) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n47) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n50) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n51) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_208_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n328) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n52) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_2'), '_209_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n52) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n290) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n275) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_210_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n192) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n176) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n53) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_211_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n176) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n54) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_4'), '_212_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n53) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n366) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n54) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n55) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_213_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n312) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n177) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n56) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_214_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n177) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n312) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n57) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_215_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n307) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n306) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n58) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_4'), '_216_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n58) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n373) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n276) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_217_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n194) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n178) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n59) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21boi_2'), '_218_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n376) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n306) + inst.getInstTerm(inst.getModel().getScalarTerm('B1_N')).setNet(n307) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n60) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_4'), '_219_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n286) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n305) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n277) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_220_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n164) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n180) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n61) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_221_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n180) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n164) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n62) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_222_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n61) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n62) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n63) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_223_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n194) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n178) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n64) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_224_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n327) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n355) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n65) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_2'), '_225_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n60) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n284) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n65) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n66) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_226_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n66) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n296) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n263) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_227_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n177) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n193) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n67) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor3_1'), '_228_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n291) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n65) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n350) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n68) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_229_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n327) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n69) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_1'), '_230_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n355) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n69) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n307) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n70) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_231_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n280) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n70) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n350) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n71) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_4'), '_232_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n377) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n68) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n71) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n72) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_2'), '_233_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n72) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n337) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n73) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_234_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n73) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n324) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n264) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_235_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n165) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n181) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n74) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_236_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n181) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n165) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n75) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand4b_1'), '_237_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n74) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n75) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n59) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n63) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n76) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_238_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n291) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n76) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n77) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_239_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n307) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n76) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n78) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_240_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n164) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n79) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_1'), '_241_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n325) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n79) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n64) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n80) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_242_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n75) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n80) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n74) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n81) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a211oi_2'), '_243_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n77) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n55) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n78) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n293) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n82) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_244_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n323) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n336) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n83) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_4'), '_245_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n83) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n285) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n265) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_246_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n166) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n84) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_2'), '_247_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n323) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n82) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n300) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n85) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_2'), '_248_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n85) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n335) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n86) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_249_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n86) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n321) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n266) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_250_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n167) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n87) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_251_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n87) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n84) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n88) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_252_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n183) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n84) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n89) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_253_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n176) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n90) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a2111oi_4'), '_254_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n90) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n76) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n51) + inst.getInstTerm(inst.getModel().getScalarTerm('D1')).setNet(n67) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n91) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_255_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n53) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n57) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n92) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_256_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n56) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n92) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n76) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n93) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a2111oi_2'), '_257_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n88) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n89) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n81) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n91) + inst.getInstTerm(inst.getModel().getScalarTerm('D1')).setNet(n93) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n94) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_258_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n87) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n182) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n95) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_259_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n183) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n182) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n96) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a2111oi_4'), '_260_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n95) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n96) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n91) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n93) + inst.getInstTerm(inst.getModel().getScalarTerm('D1')).setNet(n293) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n97) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_261_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n95) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n96) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n336) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n98) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21o_1'), '_262_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n359) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n303) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n98) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n99) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor3_4'), '_263_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n374) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n99) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n94) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n100) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_264_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n320) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n329) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n101) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_265_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n101) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n100) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n267) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_266_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n185) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n169) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n102) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_267_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n334) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n319) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n103) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_268_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n102) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n103) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n104) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_269_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n168) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n105) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_270_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n184) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n105) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n106) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a2111oi_4'), '_271_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n184) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n105) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n97) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n99) + inst.getInstTerm(inst.getModel().getScalarTerm('D1')).setNet(n94) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n107) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_2'), '_272_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n297) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n370) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n108) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_273_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n104) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n108) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n268) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o31ai_4'), '_274_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n106) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n102) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n370) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n103) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n109) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21o_4'), '_277_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n338) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n368) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n160) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_278_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n338) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n110) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_280_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n326) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n111) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_281_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n368) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n111) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n112) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__or3_1'), '_282_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n111) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n113) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_283_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n234) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n114) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a31oi_2'), '_284_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n113) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n112) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n114) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n195) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_285_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n338) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n115) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_288_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n263) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n325) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n349) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n116) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_289_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n245) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n117) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_290_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n116) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n117) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n196) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_291_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n368) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n283) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n324) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n118) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__or3_1'), '_292_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n324) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n283) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n119) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_293_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n246) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n120) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a31oi_1'), '_294_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n119) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n118) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n120) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n197) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_295_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n378) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n323) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n349) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n121) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_296_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n247) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n122) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_297_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n121) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n122) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n198) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_298_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n367) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n379) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n321) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n123) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__or3_1'), '_299_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n367) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n321) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n124) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_300_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n248) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n125) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a31oi_1'), '_301_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n124) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n123) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n125) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n199) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_302_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n281) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n320) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n348) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n126) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_303_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n250) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n127) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_304_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n126) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n127) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n200) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_305_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n297) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n370) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n334) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n128) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_306_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n319) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n128) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n129) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_307_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n251) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n130) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_308_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n129) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n130) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n201) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_309_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n383) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n333) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n347) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n131) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_310_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n235) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n132) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_311_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n131) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n132) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n202) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_312_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n381) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n357) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n347) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n133) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_313_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n236) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n134) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_314_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n133) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n134) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n203) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_315_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n271) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n318) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n347) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n135) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_316_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n237) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n136) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_317_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n135) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n136) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n204) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_318_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n272) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n316) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n346) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n137) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_319_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n239) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n138) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_320_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n137) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n138) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n205) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_321_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n287) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n356) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n346) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n139) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_322_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n240) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n140) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_323_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n139) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n140) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n206) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_324_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n274) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n314) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n346) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n141) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_325_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n241) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n142) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_326_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n141) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n142) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n207) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_327_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n275) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n379) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n143) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_328_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n242) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n144) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_329_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n143) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n144) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n208) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_330_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n276) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n312) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n145) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_331_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n243) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n146) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_332_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n145) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n146) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n209) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_333_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n375) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n355) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n349) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n147) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_334_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n244) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n148) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_335_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n147) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n148) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n210) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_337_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n227) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n149) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_338_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n111) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n149) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n211) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_339_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n228) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n150) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_340_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n304) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n150) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n212) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_4'), '_341_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n337) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n229) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n213) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_342_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n230) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n151) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_343_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n300) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n151) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n214) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_344_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n231) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n152) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_345_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n303) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n152) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n215) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_346_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n232) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n153) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_347_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n105) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n153) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n216) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_4'), '_348_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n334) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n233) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n217) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_349_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n238) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n154) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_350_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n26) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n154) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n218) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_351_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n249) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n155) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_352_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n32) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n155) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n219) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_4'), '_353_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n172) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n252) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n220) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_354_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n253) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n156) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_355_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n45) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n156) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n221) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_4'), '_356_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n174) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n254) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n222) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_4'), '_357_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n330) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n255) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n223) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_358_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n256) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n157) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_359_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n90) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n157) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n224) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_4'), '_360_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n177) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n257) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n225) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_361_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n258) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n158) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_362_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n294) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n158) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n226) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_0_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n2) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n344) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_2_0__f_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n343) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_2_1__f_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n342) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_2_2__f_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n361) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_2_3__f_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n362) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_1'), 'clkload0') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n342) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkinv_2'), 'clkload1') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n361) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkinvlp_4'), 'clkload2') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o31ai_4'), 'clone206') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n106) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n102) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n369) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n103) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n368) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21o_4'), 'clone245') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n368) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n338) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n282) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__bufbuf_16'), 'clone313') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n259) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n311) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dfxtp_2'), 'ctrl.state.out[0]$_DFF_P_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n10) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n259) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dfxtp_1'), 'ctrl.state.out[1]$_DFF_P_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n11) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n161) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dfxtp_2'), 'ctrl.state.out[2]$_DFF_P_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n12) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n162) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[0]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n195) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n163) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[10]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n196) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n164) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[11]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n197) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n165) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[12]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n198) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n166) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[13]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n199) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n167) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[14]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n200) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n168) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[15]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n201) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n169) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[1]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n202) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n170) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[2]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n203) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n171) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[3]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n204) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n172) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[4]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n205) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n173) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[5]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n206) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n174) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[6]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n207) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n175) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[7]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n208) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n176) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[8]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n209) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n177) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[9]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n210) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n178) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[0]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n211) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n179) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[10]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n212) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n180) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[11]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n213) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n181) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[12]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n214) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n182) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[13]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n215) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n183) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[14]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n216) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n184) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[15]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n217) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n185) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[1]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n218) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n186) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[2]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n219) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n187) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[3]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n220) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n188) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[4]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n221) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n189) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[5]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n222) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n190) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[6]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n223) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n191) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[7]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n224) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n192) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[8]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n225) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n193) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[9]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n226) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n194) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input1') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(0)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n227) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input10') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(18)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n236) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input11') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(19)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n237) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input12') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(1)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n238) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input13') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(20)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n239) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input14') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(21)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n240) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input15') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(22)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n241) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input16') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(23)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n242) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input17') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(24)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n243) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input18') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(25)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n244) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input19') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(26)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n245) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input2') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(10)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n228) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input20') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(27)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n246) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input21') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(28)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n247) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input22') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(29)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n248) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input23') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(2)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n249) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input24') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(30)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n250) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input25') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(31)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n251) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input26') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(3)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n252) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input27') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(4)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n253) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input28') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(5)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n254) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input29') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(6)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n255) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input3') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(11)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n229) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input30') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(7)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n256) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input31') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(8)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n257) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input32') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(9)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n258) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input33') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n4) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n260) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input34') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n5) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n261) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input35') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n6) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n278) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input4') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(12)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n230) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input5') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(13)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n231) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input6') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(14)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n232) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input7') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(15)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n233) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input8') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(16)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n234) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input9') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(17)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n235) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output36') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n360) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n3) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dlygate4sd2_1'), 'output37') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n262) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(0)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output38') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n263) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(10)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output39') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n264) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(11)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output40') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n265) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(12)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output41') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n266) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(13)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output42') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n267) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(14)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output43') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n268) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(15)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output44') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n269) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(1)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dlygate4sd2_1'), 'output45') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n270) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(2)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dlygate4sd2_1'), 'output46') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n271) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(3)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dlygate4sd2_1'), 'output47') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n272) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(4)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dlygate4sd2_1'), 'output48') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n273) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(5)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output49') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n274) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(6)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output50') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n275) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(7)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output51') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n276) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(8)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output52') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n277) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(9)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_2'), 'output53') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n279) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n7) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place121') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n368) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n345) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place122') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n346) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place123') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n347) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place124') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n348) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place125') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n349) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place126') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n372) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n281) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place128') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n371) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n283) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place129') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n82) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n285) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place130') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n60) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n286) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place131') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n273) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n287) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'place132') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n380) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n288) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place133') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n41) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n289) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'place134') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n366) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n290) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place135') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n292) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place136') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n81) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n293) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place137') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n106) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n297) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place138') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n63) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n296) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'place139') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n382) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n298) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place140') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n115) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n299) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place141') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n115) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n295) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place142') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n110) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n302) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place143') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n110) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n301) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place144') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n87) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n303) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place145') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n84) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n300) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place146') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n79) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n304) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place147') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n69) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n294) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place148') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n67) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n291) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place149') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n64) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n284) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place150') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n62) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n280) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place151') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n61) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n350) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place152') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n59) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n305) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place153') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n57) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n306) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place154') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n56) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n307) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place155') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n44) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n351) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place156') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n42) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n308) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place157') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n37) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n352) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place158') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n24) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n353) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'place159') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n159) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n309) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place160') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n19) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n310) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place163') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n194) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n355) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place164') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n193) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n312) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place165') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n192) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n313) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place166') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n191) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n314) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place167') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n315) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place168') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n356) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place169') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n317) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n316) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place170') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n189) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n317) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place171') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n188) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n318) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place172') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n187) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n357) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'place174') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n185) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n319) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place175') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n184) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n320) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place176') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n184) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n358) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place177') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n183) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n321) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'place178') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n183) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n359) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place179') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n182) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n323) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place180') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n181) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n324) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place181') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n180) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n325) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'place182') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n180) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n322) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place184') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n178) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n327) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place185') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n176) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n328) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place186') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n175) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n330) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place187') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n173) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n331) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place188') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n171) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n332) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place190') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n169) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n334) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place191') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n168) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n329) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place192') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n167) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n335) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place193') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n166) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n336) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place194') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n165) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n337) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place196') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n162) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n338) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'place197') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n339) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_12'), 'place198') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n259) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n360) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place199') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n261) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n341) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place200') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n260) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n340) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer201') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n34) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n363) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer202') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n179) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n364) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer203') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n33) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n365) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'rebuffer204') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n51) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n366) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer205') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n86) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n367) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer207') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n107) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n369) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer208') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n107) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n370) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer209') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n73) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n371) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer210') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n267) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n372) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'rebuffer211') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n288) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n373) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer212') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n97) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n374) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer239') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n277) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n375) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'rebuffer240') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n377) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n376) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'rebuffer241') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n288) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n377) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer243') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n265) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n378) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_12'), 'rebuffer246') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n368) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n379) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_6'), 'rebuffer251') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n55) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n380) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer275') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n270) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n381) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer276') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n27) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n382) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer291') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n269) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n383) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer292') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n170) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n384) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer293') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n186) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n333) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'rebuffer296') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n163) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n326) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_12'), 'rebuffer314') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n360) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n354) diff --git a/regress/sky130hd_gcd_py/gcd_before.py b/regress/sky130hd_gcd_py/gcd_before.py new file mode 100644 index 00000000..0627377c --- /dev/null +++ b/regress/sky130hd_gcd_py/gcd_before.py @@ -0,0 +1,1941 @@ +# Copyright 2026 keplertech.io +# SPDX-License-Identifier: Apache-2.0 + +import naja + + +def primitive(lib, name): + for primitives in lib.getDB().getPrimitiveLibraries(): + model = primitives.getSNLDesign(name) + if model is not None: + return model + raise RuntimeError('primitive %s was not loaded' % name) + + +def constructLibrary(lib): + top = naja.SNLDesign.create(lib, 'gcd') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, 'clk') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Output, 'req_rdy') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, 'req_val') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, 'reset') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Input, 'resp_rdy') + naja.SNLScalarTerm.create(top, naja.SNLTerm.Direction.Output, 'resp_val') + naja.SNLBusTerm.create(top, naja.SNLTerm.Direction.Input, 31, 0, 'req_msg') + naja.SNLBusTerm.create(top, naja.SNLTerm.Direction.Output, 15, 0, 'resp_msg') + n0 = naja.SNLScalarNet.create(top) + n0.setType(naja.SNLNet.Type.Assign0) + n1 = naja.SNLScalarNet.create(top) + n1.setType(naja.SNLNet.Type.Assign1) + n2 = naja.SNLScalarNet.create(top, 'clk') + n3 = naja.SNLScalarNet.create(top, 'req_rdy') + n4 = naja.SNLScalarNet.create(top, 'req_val') + n5 = naja.SNLScalarNet.create(top, 'reset') + n6 = naja.SNLScalarNet.create(top, 'resp_rdy') + n7 = naja.SNLScalarNet.create(top, 'resp_val') + n8 = naja.SNLBusNet.create(top, 31, 0, 'req_msg') + n9 = naja.SNLBusNet.create(top, 15, 0, 'resp_msg') + n10 = naja.SNLScalarNet.create(top, '_000_') + n11 = naja.SNLScalarNet.create(top, '_001_') + n12 = naja.SNLScalarNet.create(top, '_002_') + n13 = naja.SNLScalarNet.create(top, '_004_') + n14 = naja.SNLScalarNet.create(top, '_005_') + n15 = naja.SNLScalarNet.create(top, '_006_') + n16 = naja.SNLScalarNet.create(top, '_007_') + n17 = naja.SNLScalarNet.create(top, '_008_') + n18 = naja.SNLScalarNet.create(top, '_009_') + n19 = naja.SNLScalarNet.create(top, '_010_') + n20 = naja.SNLScalarNet.create(top, '_011_') + n21 = naja.SNLScalarNet.create(top, '_012_') + n22 = naja.SNLScalarNet.create(top, '_013_') + n23 = naja.SNLScalarNet.create(top, '_014_') + n24 = naja.SNLScalarNet.create(top, '_015_') + n25 = naja.SNLScalarNet.create(top, '_016_') + n26 = naja.SNLScalarNet.create(top, '_017_') + n27 = naja.SNLScalarNet.create(top, '_018_') + n28 = naja.SNLScalarNet.create(top, '_019_') + n29 = naja.SNLScalarNet.create(top, '_020_') + n30 = naja.SNLScalarNet.create(top, '_021_') + n31 = naja.SNLScalarNet.create(top, '_022_') + n32 = naja.SNLScalarNet.create(top, '_023_') + n33 = naja.SNLScalarNet.create(top, '_024_') + n34 = naja.SNLScalarNet.create(top, '_025_') + n35 = naja.SNLScalarNet.create(top, '_026_') + n36 = naja.SNLScalarNet.create(top, '_027_') + n37 = naja.SNLScalarNet.create(top, '_028_') + n38 = naja.SNLScalarNet.create(top, '_029_') + n39 = naja.SNLScalarNet.create(top, '_030_') + n40 = naja.SNLScalarNet.create(top, '_031_') + n41 = naja.SNLScalarNet.create(top, '_032_') + n42 = naja.SNLScalarNet.create(top, '_033_') + n43 = naja.SNLScalarNet.create(top, '_034_') + n44 = naja.SNLScalarNet.create(top, '_035_') + n45 = naja.SNLScalarNet.create(top, '_036_') + n46 = naja.SNLScalarNet.create(top, '_037_') + n47 = naja.SNLScalarNet.create(top, '_038_') + n48 = naja.SNLScalarNet.create(top, '_039_') + n49 = naja.SNLScalarNet.create(top, '_040_') + n50 = naja.SNLScalarNet.create(top, '_041_') + n51 = naja.SNLScalarNet.create(top, '_042_') + n52 = naja.SNLScalarNet.create(top, '_043_') + n53 = naja.SNLScalarNet.create(top, '_044_') + n54 = naja.SNLScalarNet.create(top, '_045_') + n55 = naja.SNLScalarNet.create(top, '_046_') + n56 = naja.SNLScalarNet.create(top, '_047_') + n57 = naja.SNLScalarNet.create(top, '_048_') + n58 = naja.SNLScalarNet.create(top, '_049_') + n59 = naja.SNLScalarNet.create(top, '_050_') + n60 = naja.SNLScalarNet.create(top, '_051_') + n61 = naja.SNLScalarNet.create(top, '_052_') + n62 = naja.SNLScalarNet.create(top, '_053_') + n63 = naja.SNLScalarNet.create(top, '_054_') + n64 = naja.SNLScalarNet.create(top, '_055_') + n65 = naja.SNLScalarNet.create(top, '_056_') + n66 = naja.SNLScalarNet.create(top, '_057_') + n67 = naja.SNLScalarNet.create(top, '_058_') + n68 = naja.SNLScalarNet.create(top, '_059_') + n69 = naja.SNLScalarNet.create(top, '_060_') + n70 = naja.SNLScalarNet.create(top, '_061_') + n71 = naja.SNLScalarNet.create(top, '_062_') + n72 = naja.SNLScalarNet.create(top, '_063_') + n73 = naja.SNLScalarNet.create(top, '_064_') + n74 = naja.SNLScalarNet.create(top, '_065_') + n75 = naja.SNLScalarNet.create(top, '_066_') + n76 = naja.SNLScalarNet.create(top, '_067_') + n77 = naja.SNLScalarNet.create(top, '_068_') + n78 = naja.SNLScalarNet.create(top, '_069_') + n79 = naja.SNLScalarNet.create(top, '_070_') + n80 = naja.SNLScalarNet.create(top, '_071_') + n81 = naja.SNLScalarNet.create(top, '_072_') + n82 = naja.SNLScalarNet.create(top, '_073_') + n83 = naja.SNLScalarNet.create(top, '_074_') + n84 = naja.SNLScalarNet.create(top, '_075_') + n85 = naja.SNLScalarNet.create(top, '_076_') + n86 = naja.SNLScalarNet.create(top, '_077_') + n87 = naja.SNLScalarNet.create(top, '_078_') + n88 = naja.SNLScalarNet.create(top, '_079_') + n89 = naja.SNLScalarNet.create(top, '_080_') + n90 = naja.SNLScalarNet.create(top, '_081_') + n91 = naja.SNLScalarNet.create(top, '_082_') + n92 = naja.SNLScalarNet.create(top, '_083_') + n93 = naja.SNLScalarNet.create(top, '_084_') + n94 = naja.SNLScalarNet.create(top, '_085_') + n95 = naja.SNLScalarNet.create(top, '_086_') + n96 = naja.SNLScalarNet.create(top, '_087_') + n97 = naja.SNLScalarNet.create(top, '_088_') + n98 = naja.SNLScalarNet.create(top, '_089_') + n99 = naja.SNLScalarNet.create(top, '_090_') + n100 = naja.SNLScalarNet.create(top, '_091_') + n101 = naja.SNLScalarNet.create(top, '_092_') + n102 = naja.SNLScalarNet.create(top, '_093_') + n103 = naja.SNLScalarNet.create(top, '_094_') + n104 = naja.SNLScalarNet.create(top, '_095_') + n105 = naja.SNLScalarNet.create(top, '_096_') + n106 = naja.SNLScalarNet.create(top, '_097_') + n107 = naja.SNLScalarNet.create(top, '_098_') + n108 = naja.SNLScalarNet.create(top, '_099_') + n109 = naja.SNLScalarNet.create(top, '_100_') + n110 = naja.SNLScalarNet.create(top, '_103_') + n111 = naja.SNLScalarNet.create(top, '_105_') + n112 = naja.SNLScalarNet.create(top, '_106_') + n113 = naja.SNLScalarNet.create(top, '_107_') + n114 = naja.SNLScalarNet.create(top, '_108_') + n115 = naja.SNLScalarNet.create(top, '_109_') + n116 = naja.SNLScalarNet.create(top, '_112_') + n117 = naja.SNLScalarNet.create(top, '_113_') + n118 = naja.SNLScalarNet.create(top, '_114_') + n119 = naja.SNLScalarNet.create(top, '_115_') + n120 = naja.SNLScalarNet.create(top, '_116_') + n121 = naja.SNLScalarNet.create(top, '_117_') + n122 = naja.SNLScalarNet.create(top, '_118_') + n123 = naja.SNLScalarNet.create(top, '_119_') + n124 = naja.SNLScalarNet.create(top, '_120_') + n125 = naja.SNLScalarNet.create(top, '_121_') + n126 = naja.SNLScalarNet.create(top, '_122_') + n127 = naja.SNLScalarNet.create(top, '_123_') + n128 = naja.SNLScalarNet.create(top, '_124_') + n129 = naja.SNLScalarNet.create(top, '_125_') + n130 = naja.SNLScalarNet.create(top, '_126_') + n131 = naja.SNLScalarNet.create(top, '_127_') + n132 = naja.SNLScalarNet.create(top, '_128_') + n133 = naja.SNLScalarNet.create(top, '_129_') + n134 = naja.SNLScalarNet.create(top, '_130_') + n135 = naja.SNLScalarNet.create(top, '_131_') + n136 = naja.SNLScalarNet.create(top, '_132_') + n137 = naja.SNLScalarNet.create(top, '_133_') + n138 = naja.SNLScalarNet.create(top, '_134_') + n139 = naja.SNLScalarNet.create(top, '_135_') + n140 = naja.SNLScalarNet.create(top, '_136_') + n141 = naja.SNLScalarNet.create(top, '_137_') + n142 = naja.SNLScalarNet.create(top, '_138_') + n143 = naja.SNLScalarNet.create(top, '_139_') + n144 = naja.SNLScalarNet.create(top, '_140_') + n145 = naja.SNLScalarNet.create(top, '_141_') + n146 = naja.SNLScalarNet.create(top, '_142_') + n147 = naja.SNLScalarNet.create(top, '_143_') + n148 = naja.SNLScalarNet.create(top, '_144_') + n149 = naja.SNLScalarNet.create(top, '_146_') + n150 = naja.SNLScalarNet.create(top, '_147_') + n151 = naja.SNLScalarNet.create(top, '_148_') + n152 = naja.SNLScalarNet.create(top, '_149_') + n153 = naja.SNLScalarNet.create(top, '_150_') + n154 = naja.SNLScalarNet.create(top, '_151_') + n155 = naja.SNLScalarNet.create(top, '_152_') + n156 = naja.SNLScalarNet.create(top, '_153_') + n157 = naja.SNLScalarNet.create(top, '_154_') + n158 = naja.SNLScalarNet.create(top, '_155_') + n159 = naja.SNLScalarNet.create(top, 'ctrl$a_reg_en[0]') + n160 = naja.SNLScalarNet.create(top, 'ctrl$b_reg_en[0]') + n161 = naja.SNLScalarNet.create(top, 'ctrl.state.out[1]') + n162 = naja.SNLScalarNet.create(top, 'ctrl.state.out[2]') + n163 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[0]') + n164 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[10]') + n165 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[11]') + n166 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[12]') + n167 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[13]') + n168 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[14]') + n169 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[15]') + n170 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[1]') + n171 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[2]') + n172 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[3]') + n173 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[4]') + n174 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[5]') + n175 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[6]') + n176 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[7]') + n177 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[8]') + n178 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in0[9]') + n179 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[0]') + n180 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[10]') + n181 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[11]') + n182 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[12]') + n183 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[13]') + n184 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[14]') + n185 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[15]') + n186 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[1]') + n187 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[2]') + n188 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[3]') + n189 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[4]') + n190 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[5]') + n191 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[6]') + n192 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[7]') + n193 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[8]') + n194 = naja.SNLScalarNet.create(top, 'dpath.a_lt_b$in1[9]') + n195 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[0]') + n196 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[10]') + n197 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[11]') + n198 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[12]') + n199 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[13]') + n200 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[14]') + n201 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[15]') + n202 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[1]') + n203 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[2]') + n204 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[3]') + n205 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[4]') + n206 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[5]') + n207 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[6]') + n208 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[7]') + n209 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[8]') + n210 = naja.SNLScalarNet.create(top, 'dpath.a_mux$out[9]') + n211 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[0]') + n212 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[10]') + n213 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[11]') + n214 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[12]') + n215 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[13]') + n216 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[14]') + n217 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[15]') + n218 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[1]') + n219 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[2]') + n220 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[3]') + n221 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[4]') + n222 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[5]') + n223 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[6]') + n224 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[7]') + n225 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[8]') + n226 = naja.SNLScalarNet.create(top, 'dpath.b_mux$out[9]') + n227 = naja.SNLScalarNet.create(top, 'net1') + n228 = naja.SNLScalarNet.create(top, 'net2') + n229 = naja.SNLScalarNet.create(top, 'net3') + n230 = naja.SNLScalarNet.create(top, 'net4') + n231 = naja.SNLScalarNet.create(top, 'net5') + n232 = naja.SNLScalarNet.create(top, 'net6') + n233 = naja.SNLScalarNet.create(top, 'net7') + n234 = naja.SNLScalarNet.create(top, 'net8') + n235 = naja.SNLScalarNet.create(top, 'net9') + n236 = naja.SNLScalarNet.create(top, 'net10') + n237 = naja.SNLScalarNet.create(top, 'net11') + n238 = naja.SNLScalarNet.create(top, 'net12') + n239 = naja.SNLScalarNet.create(top, 'net13') + n240 = naja.SNLScalarNet.create(top, 'net14') + n241 = naja.SNLScalarNet.create(top, 'net15') + n242 = naja.SNLScalarNet.create(top, 'net16') + n243 = naja.SNLScalarNet.create(top, 'net17') + n244 = naja.SNLScalarNet.create(top, 'net18') + n245 = naja.SNLScalarNet.create(top, 'net19') + n246 = naja.SNLScalarNet.create(top, 'net20') + n247 = naja.SNLScalarNet.create(top, 'net21') + n248 = naja.SNLScalarNet.create(top, 'net22') + n249 = naja.SNLScalarNet.create(top, 'net23') + n250 = naja.SNLScalarNet.create(top, 'net24') + n251 = naja.SNLScalarNet.create(top, 'net25') + n252 = naja.SNLScalarNet.create(top, 'net26') + n253 = naja.SNLScalarNet.create(top, 'net27') + n254 = naja.SNLScalarNet.create(top, 'net28') + n255 = naja.SNLScalarNet.create(top, 'net29') + n256 = naja.SNLScalarNet.create(top, 'net30') + n257 = naja.SNLScalarNet.create(top, 'net31') + n258 = naja.SNLScalarNet.create(top, 'net32') + n259 = naja.SNLScalarNet.create(top, 'net36') + n260 = naja.SNLScalarNet.create(top, 'net33') + n261 = naja.SNLScalarNet.create(top, 'net34') + n262 = naja.SNLScalarNet.create(top, 'net37') + n263 = naja.SNLScalarNet.create(top, 'net38') + n264 = naja.SNLScalarNet.create(top, 'net39') + n265 = naja.SNLScalarNet.create(top, 'net40') + n266 = naja.SNLScalarNet.create(top, 'net41') + n267 = naja.SNLScalarNet.create(top, 'net42') + n268 = naja.SNLScalarNet.create(top, 'net43') + n269 = naja.SNLScalarNet.create(top, 'net44') + n270 = naja.SNLScalarNet.create(top, 'net45') + n271 = naja.SNLScalarNet.create(top, 'net46') + n272 = naja.SNLScalarNet.create(top, 'net47') + n273 = naja.SNLScalarNet.create(top, 'net48') + n274 = naja.SNLScalarNet.create(top, 'net49') + n275 = naja.SNLScalarNet.create(top, 'net50') + n276 = naja.SNLScalarNet.create(top, 'net51') + n277 = naja.SNLScalarNet.create(top, 'net52') + n278 = naja.SNLScalarNet.create(top, 'net35') + n279 = naja.SNLScalarNet.create(top, 'net53') + n280 = naja.SNLScalarNet.create(top, 'net150') + n281 = naja.SNLScalarNet.create(top, 'net126') + n282 = naja.SNLScalarNet.create(top, 'net127') + n283 = naja.SNLScalarNet.create(top, 'net128') + n284 = naja.SNLScalarNet.create(top, 'net149') + n285 = naja.SNLScalarNet.create(top, 'net129') + n286 = naja.SNLScalarNet.create(top, 'net130') + n287 = naja.SNLScalarNet.create(top, 'net131') + n288 = naja.SNLScalarNet.create(top, 'net132') + n289 = naja.SNLScalarNet.create(top, 'net133') + n290 = naja.SNLScalarNet.create(top, 'net134') + n291 = naja.SNLScalarNet.create(top, 'net148') + n292 = naja.SNLScalarNet.create(top, 'net135') + n293 = naja.SNLScalarNet.create(top, 'net136') + n294 = naja.SNLScalarNet.create(top, 'net147') + n295 = naja.SNLScalarNet.create(top, 'net141') + n296 = naja.SNLScalarNet.create(top, 'net138') + n297 = naja.SNLScalarNet.create(top, 'net137') + n298 = naja.SNLScalarNet.create(top, 'net139') + n299 = naja.SNLScalarNet.create(top, 'net140') + n300 = naja.SNLScalarNet.create(top, 'net145') + n301 = naja.SNLScalarNet.create(top, 'net143') + n302 = naja.SNLScalarNet.create(top, 'net142') + n303 = naja.SNLScalarNet.create(top, 'net144') + n304 = naja.SNLScalarNet.create(top, 'net146') + n305 = naja.SNLScalarNet.create(top, 'net152') + n306 = naja.SNLScalarNet.create(top, 'net153') + n307 = naja.SNLScalarNet.create(top, 'net154') + n308 = naja.SNLScalarNet.create(top, 'net156') + n309 = naja.SNLScalarNet.create(top, 'net159') + n310 = naja.SNLScalarNet.create(top, 'net160') + n311 = naja.SNLScalarNet.create(top, 'net161') + n312 = naja.SNLScalarNet.create(top, 'net164') + n313 = naja.SNLScalarNet.create(top, 'net165') + n314 = naja.SNLScalarNet.create(top, 'net166') + n315 = naja.SNLScalarNet.create(top, 'net167') + n316 = naja.SNLScalarNet.create(top, 'net169') + n317 = naja.SNLScalarNet.create(top, 'net170') + n318 = naja.SNLScalarNet.create(top, 'net171') + n319 = naja.SNLScalarNet.create(top, 'net173') + n320 = naja.SNLScalarNet.create(top, 'net174') + n321 = naja.SNLScalarNet.create(top, 'net175') + n322 = naja.SNLScalarNet.create(top, 'net177') + n323 = naja.SNLScalarNet.create(top, 'net182') + n324 = naja.SNLScalarNet.create(top, 'net179') + n325 = naja.SNLScalarNet.create(top, 'net180') + n326 = naja.SNLScalarNet.create(top, 'net181') + n327 = naja.SNLScalarNet.create(top, 'net183') + n328 = naja.SNLScalarNet.create(top, 'net184') + n329 = naja.SNLScalarNet.create(top, 'net185') + n330 = naja.SNLScalarNet.create(top, 'net191') + n331 = naja.SNLScalarNet.create(top, 'net186') + n332 = naja.SNLScalarNet.create(top, 'net187') + n333 = naja.SNLScalarNet.create(top, 'net188') + n334 = naja.SNLScalarNet.create(top, 'net189') + n335 = naja.SNLScalarNet.create(top, 'net190') + n336 = naja.SNLScalarNet.create(top, 'net192') + n337 = naja.SNLScalarNet.create(top, 'net193') + n338 = naja.SNLScalarNet.create(top, 'net194') + n339 = naja.SNLScalarNet.create(top, 'net195') + n340 = naja.SNLScalarNet.create(top, 'net196') + n341 = naja.SNLScalarNet.create(top, 'net197') + n342 = naja.SNLScalarNet.create(top, 'net200') + n343 = naja.SNLScalarNet.create(top, 'net199') + n344 = naja.SNLScalarNet.create(top, 'clknet_2_1__leaf_clk') + n345 = naja.SNLScalarNet.create(top, 'clknet_2_0__leaf_clk') + n346 = naja.SNLScalarNet.create(top, 'clknet_0_clk') + n347 = naja.SNLScalarNet.create(top, 'net121') + n348 = naja.SNLScalarNet.create(top, 'net122') + n349 = naja.SNLScalarNet.create(top, 'net123') + n350 = naja.SNLScalarNet.create(top, 'net124') + n351 = naja.SNLScalarNet.create(top, 'net125') + n352 = naja.SNLScalarNet.create(top, 'net151') + n353 = naja.SNLScalarNet.create(top, 'net155') + n354 = naja.SNLScalarNet.create(top, 'net157') + n355 = naja.SNLScalarNet.create(top, 'net158') + n356 = naja.SNLScalarNet.create(top, 'net162') + n357 = naja.SNLScalarNet.create(top, 'net163') + n358 = naja.SNLScalarNet.create(top, 'net168') + n359 = naja.SNLScalarNet.create(top, 'net172') + n360 = naja.SNLScalarNet.create(top, 'net176') + n361 = naja.SNLScalarNet.create(top, 'net178') + n362 = naja.SNLScalarNet.create(top, 'net198') + n363 = naja.SNLScalarNet.create(top, 'clknet_2_2__leaf_clk') + n364 = naja.SNLScalarNet.create(top, 'clknet_2_3__leaf_clk') + top.getScalarTerm('clk').setNet(n2) + top.getScalarTerm('req_rdy').setNet(n3) + top.getScalarTerm('req_val').setNet(n4) + top.getScalarTerm('reset').setNet(n5) + top.getScalarTerm('resp_rdy').setNet(n6) + top.getScalarTerm('resp_val').setNet(n7) + top.getBusTerm('req_msg').getBusTermBit(31).setNet(n8.getBit(31)) + top.getBusTerm('req_msg').getBusTermBit(30).setNet(n8.getBit(30)) + top.getBusTerm('req_msg').getBusTermBit(29).setNet(n8.getBit(29)) + top.getBusTerm('req_msg').getBusTermBit(28).setNet(n8.getBit(28)) + top.getBusTerm('req_msg').getBusTermBit(27).setNet(n8.getBit(27)) + top.getBusTerm('req_msg').getBusTermBit(26).setNet(n8.getBit(26)) + top.getBusTerm('req_msg').getBusTermBit(25).setNet(n8.getBit(25)) + top.getBusTerm('req_msg').getBusTermBit(24).setNet(n8.getBit(24)) + top.getBusTerm('req_msg').getBusTermBit(23).setNet(n8.getBit(23)) + top.getBusTerm('req_msg').getBusTermBit(22).setNet(n8.getBit(22)) + top.getBusTerm('req_msg').getBusTermBit(21).setNet(n8.getBit(21)) + top.getBusTerm('req_msg').getBusTermBit(20).setNet(n8.getBit(20)) + top.getBusTerm('req_msg').getBusTermBit(19).setNet(n8.getBit(19)) + top.getBusTerm('req_msg').getBusTermBit(18).setNet(n8.getBit(18)) + top.getBusTerm('req_msg').getBusTermBit(17).setNet(n8.getBit(17)) + top.getBusTerm('req_msg').getBusTermBit(16).setNet(n8.getBit(16)) + top.getBusTerm('req_msg').getBusTermBit(15).setNet(n8.getBit(15)) + top.getBusTerm('req_msg').getBusTermBit(14).setNet(n8.getBit(14)) + top.getBusTerm('req_msg').getBusTermBit(13).setNet(n8.getBit(13)) + top.getBusTerm('req_msg').getBusTermBit(12).setNet(n8.getBit(12)) + top.getBusTerm('req_msg').getBusTermBit(11).setNet(n8.getBit(11)) + top.getBusTerm('req_msg').getBusTermBit(10).setNet(n8.getBit(10)) + top.getBusTerm('req_msg').getBusTermBit(9).setNet(n8.getBit(9)) + top.getBusTerm('req_msg').getBusTermBit(8).setNet(n8.getBit(8)) + top.getBusTerm('req_msg').getBusTermBit(7).setNet(n8.getBit(7)) + top.getBusTerm('req_msg').getBusTermBit(6).setNet(n8.getBit(6)) + top.getBusTerm('req_msg').getBusTermBit(5).setNet(n8.getBit(5)) + top.getBusTerm('req_msg').getBusTermBit(4).setNet(n8.getBit(4)) + top.getBusTerm('req_msg').getBusTermBit(3).setNet(n8.getBit(3)) + top.getBusTerm('req_msg').getBusTermBit(2).setNet(n8.getBit(2)) + top.getBusTerm('req_msg').getBusTermBit(1).setNet(n8.getBit(1)) + top.getBusTerm('req_msg').getBusTermBit(0).setNet(n8.getBit(0)) + top.getBusTerm('resp_msg').getBusTermBit(15).setNet(n9.getBit(15)) + top.getBusTerm('resp_msg').getBusTermBit(14).setNet(n9.getBit(14)) + top.getBusTerm('resp_msg').getBusTermBit(13).setNet(n9.getBit(13)) + top.getBusTerm('resp_msg').getBusTermBit(12).setNet(n9.getBit(12)) + top.getBusTerm('resp_msg').getBusTermBit(11).setNet(n9.getBit(11)) + top.getBusTerm('resp_msg').getBusTermBit(10).setNet(n9.getBit(10)) + top.getBusTerm('resp_msg').getBusTermBit(9).setNet(n9.getBit(9)) + top.getBusTerm('resp_msg').getBusTermBit(8).setNet(n9.getBit(8)) + top.getBusTerm('resp_msg').getBusTermBit(7).setNet(n9.getBit(7)) + top.getBusTerm('resp_msg').getBusTermBit(6).setNet(n9.getBit(6)) + top.getBusTerm('resp_msg').getBusTermBit(5).setNet(n9.getBit(5)) + top.getBusTerm('resp_msg').getBusTermBit(4).setNet(n9.getBit(4)) + top.getBusTerm('resp_msg').getBusTermBit(3).setNet(n9.getBit(3)) + top.getBusTerm('resp_msg').getBusTermBit(2).setNet(n9.getBit(2)) + top.getBusTerm('resp_msg').getBusTermBit(1).setNet(n9.getBit(1)) + top.getBusTerm('resp_msg').getBusTermBit(0).setNet(n9.getBit(0)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor4_1'), '_157_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n314) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n315) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n327) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n13) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor4_1'), '_158_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n316) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n318) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n359) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n319) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n14) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor4_1'), '_159_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n320) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n360) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n312) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n15) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor4_1'), '_160_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n324) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n325) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n323) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n357) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n16) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand4_1'), '_161_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n13) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n14) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n356) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n311) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n17) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a22oi_1'), '_162_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n342) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n17) + inst.getInstTerm(inst.getModel().getScalarTerm('B2')).setNet(n340) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n18) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_163_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n18) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n12) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_164_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n161) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n19) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__or2_4'), '_165_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n259) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n162) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n159) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_166_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n19) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n159) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n279) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_167_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n278) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n20) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_168_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n20) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n161) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n21) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21bo_2'), '_169_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n310) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n17) + inst.getInstTerm(inst.getModel().getScalarTerm('B1_N')).setNet(n340) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n22) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_170_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n21) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n22) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n343) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n11) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_171_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n260) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n23) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a221o_1'), '_172_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n23) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n278) + inst.getInstTerm(inst.getModel().getScalarTerm('B2')).setNet(n279) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n261) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n10) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_173_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n327) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n262) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_4'), '_174_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n163) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n179) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n24) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_175_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n319) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n334) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n25) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_176_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n355) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n25) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n269) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_177_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n170) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n26) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_2'), '_178_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n186) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n24) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n26) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n27) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_179_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n359) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n333) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n28) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_180_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n298) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n28) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n270) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_181_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n172) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n188) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n29) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_182_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n188) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n172) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n30) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_183_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n29) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n30) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n31) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_184_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n171) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n32) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_4'), '_185_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n187) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n27) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n32) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n33) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_186_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n33) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n31) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n271) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_4'), '_187_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n33) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n30) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n29) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n34) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_188_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n316) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n332) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n35) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_189_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n35) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n292) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n272) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_190_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n174) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n36) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_191_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n174) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n37) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_192_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n36) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n38) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_193_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n292) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n332) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n39) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_194_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n332) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n292) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n40) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_195_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n39) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n316) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n40) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n41) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_196_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n289) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n38) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n273) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_197_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n174) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n42) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_198_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n41) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n308) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n354) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n43) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_199_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n191) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n175) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n44) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_200_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n353) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n43) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n274) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_201_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n173) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n45) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand3_1'), '_202_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n36) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n37) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n44) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n46) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_203_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n317) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n45) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n46) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n47) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21bai_1'), '_204_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n331) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n42) + inst.getInstTerm(inst.getModel().getScalarTerm('B1_N')).setNet(n314) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n48) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_205_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n331) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n42) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n49) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o311ai_0'), '_206_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n189) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n45) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n46) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n48) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n49) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n50) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_4'), '_207_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n47) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n34) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n50) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n51) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_208_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n329) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n52) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_209_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n290) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n52) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n275) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_210_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n192) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n176) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n53) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_211_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n176) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n54) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_212_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n51) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n53) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n54) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n55) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_213_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n312) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n177) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n56) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_214_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n177) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n312) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n57) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_215_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n307) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n306) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n58) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_216_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n288) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n58) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n276) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_217_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n194) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n178) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n59) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21boi_0'), '_218_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n288) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n306) + inst.getInstTerm(inst.getModel().getScalarTerm('B1_N')).setNet(n307) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n60) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_219_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n305) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n286) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n277) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_220_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n164) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n180) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n61) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_221_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n180) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n164) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n62) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_222_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n61) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n62) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n63) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_223_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n194) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n178) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n64) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_224_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n328) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n357) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n65) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_225_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n284) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n60) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n65) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n66) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_226_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n296) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n66) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n263) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_227_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n177) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n193) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n67) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor3_1'), '_228_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n291) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n65) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n352) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n68) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_229_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n328) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n69) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_1'), '_230_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n357) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n69) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n307) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n70) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_231_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n280) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n70) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n352) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n71) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_232_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n288) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n68) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n71) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n72) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_233_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n338) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n72) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n73) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_234_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n325) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n73) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n264) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_235_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n165) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n181) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n74) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_236_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n181) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n165) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n75) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand4b_1'), '_237_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n74) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n75) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n59) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n63) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n76) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_238_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n291) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n76) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n77) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_239_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n307) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n76) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n78) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_240_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n164) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n79) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_1'), '_241_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n326) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n79) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n64) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n80) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_242_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n75) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n80) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n74) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n81) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a211oi_1'), '_243_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n55) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n77) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n78) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n293) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n82) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_244_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n324) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n337) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n83) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_245_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n285) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n83) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n265) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_246_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n166) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n84) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__maj3_1'), '_247_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n324) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n300) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n82) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n85) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_248_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n336) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n85) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n86) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_249_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n322) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n86) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n266) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_250_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n167) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n87) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_251_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n87) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n84) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n88) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_252_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n183) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n84) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n89) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_253_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n176) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n90) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a2111oi_4'), '_254_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n90) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n76) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n67) + inst.getInstTerm(inst.getModel().getScalarTerm('D1')).setNet(n51) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n91) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_255_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n53) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n57) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n92) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_256_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n56) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n92) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n76) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n93) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a2111oi_2'), '_257_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n88) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n89) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n81) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n91) + inst.getInstTerm(inst.getModel().getScalarTerm('D1')).setNet(n93) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n94) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_258_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n87) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n182) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n95) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_259_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n183) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n182) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n96) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a2111oi_4'), '_260_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n95) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n96) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n293) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n93) + inst.getInstTerm(inst.getModel().getScalarTerm('D1')).setNet(n91) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n97) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_261_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n95) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n96) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n337) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n98) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21o_1'), '_262_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n361) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n303) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n98) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n99) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor3_1'), '_263_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n99) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n97) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n94) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n100) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_264_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n321) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n330) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n101) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_265_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n100) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n101) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n267) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_266_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n185) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n169) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n102) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_267_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n335) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n320) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n103) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_268_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n102) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n103) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n104) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_269_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n168) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n105) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_270_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n184) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n105) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n106) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a2111oi_4'), '_271_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n184) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n105) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n99) + inst.getInstTerm(inst.getModel().getScalarTerm('C1')).setNet(n97) + inst.getInstTerm(inst.getModel().getScalarTerm('D1')).setNet(n94) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n107) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_272_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n107) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n297) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n108) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xnor2_1'), '_273_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n108) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n104) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n268) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o31ai_4'), '_274_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n106) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n107) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n102) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n103) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n109) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21o_4'), '_277_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n340) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n160) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2b_1'), '_278_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('B_N')).setNet(n340) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n110) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__inv_1'), '_280_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n339) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n111) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_281_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n111) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n327) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n112) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__or3_1'), '_282_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n111) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n327) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n113) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_283_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n234) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n114) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a31oi_1'), '_284_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n113) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n112) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n114) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n195) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2b_1'), '_285_') + inst.getInstTerm(inst.getModel().getScalarTerm('A_N')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n340) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n115) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_288_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n263) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n326) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n351) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n116) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_289_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n245) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n117) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_290_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n116) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n117) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n196) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_291_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n283) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n325) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n118) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__or3_1'), '_292_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n325) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n283) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n119) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_293_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n246) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n120) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a31oi_1'), '_294_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n119) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n118) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n120) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n197) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_295_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n265) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n324) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n351) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n121) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_296_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n247) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n122) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_297_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n121) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n122) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n198) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_298_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n322) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n123) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__or3_1'), '_299_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n322) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n282) + inst.getInstTerm(inst.getModel().getScalarTerm('C')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n124) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_300_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n248) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n125) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a31oi_1'), '_301_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n123) + inst.getInstTerm(inst.getModel().getScalarTerm('A3')).setNet(n124) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n125) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n199) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_302_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n281) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n321) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n350) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n126) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_303_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n250) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n127) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_304_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n126) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n302) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n127) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n200) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_305_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n297) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n107) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n335) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n128) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__xor2_1'), '_306_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n320) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n128) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n129) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_307_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n251) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n130) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_308_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n129) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n130) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n201) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_309_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n269) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n319) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n349) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n131) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_310_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n235) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n132) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_311_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n131) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n132) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n202) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_312_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n270) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n359) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n349) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n133) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_313_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n236) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n134) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_314_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n133) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n134) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n203) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_315_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n271) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n318) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n349) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n135) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_316_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n237) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n136) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_317_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n135) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n136) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n204) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_318_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n272) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n316) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n348) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n137) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_319_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n239) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n138) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_320_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n137) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n138) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n205) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_321_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n287) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n358) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n348) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n139) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_322_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n240) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n140) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_323_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n139) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n140) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n206) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_324_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n274) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n314) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n348) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n141) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_325_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n241) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n142) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_326_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n295) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n141) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n142) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n207) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_327_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n275) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n313) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n143) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nor2_1'), '_328_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n242) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n144) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__a21oi_1'), '_329_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n143) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n301) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n144) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n208) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_330_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n276) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n312) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n347) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n145) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_331_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n243) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n146) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_332_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n145) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n146) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n209) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2i_1'), '_333_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n277) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n357) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n351) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n147) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_334_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n244) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n148) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_1'), '_335_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n299) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n147) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n148) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n210) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_337_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n227) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n149) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_338_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n111) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n149) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n211) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_339_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n228) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n150) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_340_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n304) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n150) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n212) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_2'), '_341_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n338) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n229) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n213) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_342_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n230) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n151) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_343_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n300) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n151) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n214) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_344_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n231) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n152) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_345_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n303) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n152) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n215) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_346_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n232) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n153) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_347_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n105) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n153) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n216) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_2'), '_348_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n335) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n233) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n217) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_349_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n238) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n154) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_350_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n26) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n154) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n218) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_351_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n249) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n155) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_352_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n32) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n155) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n219) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_2'), '_353_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n172) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n252) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n220) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_354_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n253) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n156) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_355_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n45) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n156) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n221) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_2'), '_356_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n174) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n254) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n222) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_2'), '_357_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n331) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n255) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n223) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_358_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n256) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n157) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_359_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n341) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n90) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n157) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n224) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__mux2_2'), '_360_') + inst.getInstTerm(inst.getModel().getScalarTerm('A0')).setNet(n177) + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n257) + inst.getInstTerm(inst.getModel().getScalarTerm('S')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n225) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__nand2_1'), '_361_') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('B')).setNet(n258) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n158) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__o21ai_0'), '_362_') + inst.getInstTerm(inst.getModel().getScalarTerm('A1')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('A2')).setNet(n294) + inst.getInstTerm(inst.getModel().getScalarTerm('B1')).setNet(n158) + inst.getInstTerm(inst.getModel().getScalarTerm('Y')).setNet(n226) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_0_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n2) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n346) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_2_0__f_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n346) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n345) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_2_1__f_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n346) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n344) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_2_2__f_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n346) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n363) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_8'), 'clkbuf_2_3__f_clk') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n346) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n364) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkbuf_1'), 'clkload0') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n344) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkinv_2'), 'clkload1') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n363) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkinvlp_4'), 'clkload2') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n364) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dfxtp_2'), 'ctrl.state.out[0]$_DFF_P_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n10) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n259) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dfxtp_1'), 'ctrl.state.out[1]$_DFF_P_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n11) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n161) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__dfxtp_1'), 'ctrl.state.out[2]$_DFF_P_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n12) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n162) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[0]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n195) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n163) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[10]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n196) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n164) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[11]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n197) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n165) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[12]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n198) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n166) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[13]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n199) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n167) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[14]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n200) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n168) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[15]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n201) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n169) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[1]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n202) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n170) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[2]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n203) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n171) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[3]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n204) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n172) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[4]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n205) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n173) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[5]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n206) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n174) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[6]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n207) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n175) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[7]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n208) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n176) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[8]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n209) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n177) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.a_reg.out[9]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n210) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n309) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n178) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[0]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n211) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n179) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[10]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n212) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n180) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[11]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n213) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n181) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[12]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n214) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n182) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[13]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n215) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n183) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[14]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n216) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n184) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[15]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n364) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n217) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n185) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[1]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n218) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n186) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[2]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n219) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n187) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[3]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n220) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n188) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[4]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n221) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n189) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[5]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n222) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n190) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[6]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n223) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n191) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[7]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n344) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n224) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n192) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[8]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n345) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n225) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n193) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__edfxtp_1'), 'dpath.b_reg.out[9]$_DFFE_PP_') + inst.getInstTerm(inst.getModel().getScalarTerm('CLK')).setNet(n363) + inst.getInstTerm(inst.getModel().getScalarTerm('D')).setNet(n226) + inst.getInstTerm(inst.getModel().getScalarTerm('DE')).setNet(n160) + inst.getInstTerm(inst.getModel().getScalarTerm('Q')).setNet(n194) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input1') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(0)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n227) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input10') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(18)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n236) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input11') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(19)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n237) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input12') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(1)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n238) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input13') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(20)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n239) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input14') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(21)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n240) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input15') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(22)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n241) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input16') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(23)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n242) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input17') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(24)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n243) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input18') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(25)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n244) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input19') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(26)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n245) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input2') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(10)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n228) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input20') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(27)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n246) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input21') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(28)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n247) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input22') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(29)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n248) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input23') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(2)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n249) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input24') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(30)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n250) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input25') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(31)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n251) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input26') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(3)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n252) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input27') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(4)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n253) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input28') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(5)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n254) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input29') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(6)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n255) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input3') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(11)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n229) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input30') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(7)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n256) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input31') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(8)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n257) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input32') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(9)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n258) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input33') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n4) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n260) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input34') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n5) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n261) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input35') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n6) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n278) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input4') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(12)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n230) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input5') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(13)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n231) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input6') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(14)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n232) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input7') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(15)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n233) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input8') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(16)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n234) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'input9') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n8.getBit(17)) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n235) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output36') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n3) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output37') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n262) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(0)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output38') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n263) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(10)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output39') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n264) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(11)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output40') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n265) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(12)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output41') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n266) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(13)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output42') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n267) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(14)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output43') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n268) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(15)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output44') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n269) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(1)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output45') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n270) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(2)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output46') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n271) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(3)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output47') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n272) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(4)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output48') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n273) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(5)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output49') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n274) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(6)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output50') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n275) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(7)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output51') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n276) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(8)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output52') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n277) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n9.getBit(9)) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__clkdlybuf4s50_1'), 'output53') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n279) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n7) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place121') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n347) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place122') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n348) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place123') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n349) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place124') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n350) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place125') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n109) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n351) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place126') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n267) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n281) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place127') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n86) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n282) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place128') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n73) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n283) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place129') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n82) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n285) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place130') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n60) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n286) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place131') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n273) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n287) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place132') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n55) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n288) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place133') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n41) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n289) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place134') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n51) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n290) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place135') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n34) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n292) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place136') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n81) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n293) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place137') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n106) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n297) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place138') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n63) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n296) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place139') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n27) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n298) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place140') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n115) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n299) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place141') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n115) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n295) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place142') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n110) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n302) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place143') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n110) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n301) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place144') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n87) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n303) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place145') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n84) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n300) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place146') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n79) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n304) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place147') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n69) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n294) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place148') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n67) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n291) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place149') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n64) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n284) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place150') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n62) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n280) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place151') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n61) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n352) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place152') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n59) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n305) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place153') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n57) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n306) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place154') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n56) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n307) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place155') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n44) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n353) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place156') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n42) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n308) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place157') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n37) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n354) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place158') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n24) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n355) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place159') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n159) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n309) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place160') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n19) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n310) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place161') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n16) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n311) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place162') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n15) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n356) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place163') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n194) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n357) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place164') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n193) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n312) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place165') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n192) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n313) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place166') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n191) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n314) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place167') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n315) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place168') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n190) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n358) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place169') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n317) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n316) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place170') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n189) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n317) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place171') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n188) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n318) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place172') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n187) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n359) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place173') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n186) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n319) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place174') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n185) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n320) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place175') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n184) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n321) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place176') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n184) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n360) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place177') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n183) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n322) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place178') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n183) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n361) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place179') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n182) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n324) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place180') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n181) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n325) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place181') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n180) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n326) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place182') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n180) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n323) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place183') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n179) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n327) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place184') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n178) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n328) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place185') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n176) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n329) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place186') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n175) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n331) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place187') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n173) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n332) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place188') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n171) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n333) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place189') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n170) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n334) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place190') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n169) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n335) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place191') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n168) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n330) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place192') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n167) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n336) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place193') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n166) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n337) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place194') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n165) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n338) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place195') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n163) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n339) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place196') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n162) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n340) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place197') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n362) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n341) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place198') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n259) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n362) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place199') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n261) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n343) + inst = naja.SNLInstance.create(top, primitive(lib, 'sky130_fd_sc_hd__buf_4'), 'place200') + inst.getInstTerm(inst.getModel().getScalarTerm('A')).setNet(n260) + inst.getInstTerm(inst.getModel().getScalarTerm('X')).setNet(n342) diff --git a/regress/sky130hd_gcd_py/miter.cnf.tar.gz b/regress/sky130hd_gcd_py/miter.cnf.tar.gz new file mode 120000 index 00000000..663bcec4 --- /dev/null +++ b/regress/sky130hd_gcd_py/miter.cnf.tar.gz @@ -0,0 +1 @@ +../sky130hd_gcd/miter.cnf.tar.gz \ No newline at end of file diff --git a/regress/sky130hd_gcd_py/po_cnfs.tar.gz b/regress/sky130hd_gcd_py/po_cnfs.tar.gz new file mode 120000 index 00000000..c094ff1a --- /dev/null +++ b/regress/sky130hd_gcd_py/po_cnfs.tar.gz @@ -0,0 +1 @@ +../sky130hd_gcd/po_cnfs.tar.gz \ No newline at end of file diff --git a/regress/sky130hd_gcd_py/verilog_to_naja_py.py b/regress/sky130hd_gcd_py/verilog_to_naja_py.py new file mode 100644 index 00000000..05b3dd15 --- /dev/null +++ b/regress/sky130hd_gcd_py/verilog_to_naja_py.py @@ -0,0 +1,89 @@ +# Copyright 2026 keplertech.io +# SPDX-License-Identifier: Apache-2.0 + +"""Emit a kepler-formal python-format script that rebuilds a flat gate-level +Verilog netlist object for object, in the order the Verilog reader created +them, so that the loaded design is identical and the LEC CNF is the same. + +Usage, with the built naja module on PYTHONPATH: + python3 verilog_to_naja_py.py +""" + +import sys +import naja + +liberty, verilog, out_path = sys.argv[1:4] +universe = naja.NLUniverse.create() +db = naja.NLDB.create(universe) +db.loadLibertyPrimitives([liberty]) +db.loadVerilog([verilog]) +top = db.getTopDesign() +if top is None: + raise SystemExit("no top design") + +DIR = {naja.SNLTerm.Direction.Input: "Input", naja.SNLTerm.Direction.Output: "Output", naja.SNLTerm.Direction.InOut: "InOut"} + +def q(s): + return repr(str(s)) + +net_index = {} + +def net_var(net): + return "n%d" % net_index[str(net.getNLID())] + +def net_ref(net): + """Python expression that evaluates to the given bit net or bus net.""" + if isinstance(net, naja.SNLBusNetBit): + return "%s.getBit(%d)" % (net_var(net.getBus()), net.getBit()) + return net_var(net) + +def bitterm_ref(design_expr, bit_term): + if isinstance(bit_term, naja.SNLBusTermBit): + return "%s.getBusTerm(%s).getBusTermBit(%d)" % (design_expr, q(bit_term.getBus().getName()), bit_term.getBit()) + return "%s.getScalarTerm(%s)" % (design_expr, q(bit_term.getName())) + +lines = ["# Copyright 2026 keplertech.io", "# SPDX-License-" + "Identifier: Apache-2.0", "", "import naja", "", "", + "def primitive(lib, name):", + " for primitives in lib.getDB().getPrimitiveLibraries():", + " model = primitives.getSNLDesign(name)", + " if model is not None:", + " return model", + " raise RuntimeError('primitive %s was not loaded' % name)", "", "", + "def constructLibrary(lib):", + " top = naja.SNLDesign.create(lib, %s)" % q(top.getName())] +for term in top.getTerms(): + d = "naja.SNLTerm.Direction." + DIR[term.getDirection()] + if isinstance(term, naja.SNLBusTerm): + lines.append(" naja.SNLBusTerm.create(top, %s, %d, %d, %s)" % (d, term.getMSB(), term.getLSB(), q(term.getName()))) + else: + lines.append(" naja.SNLScalarTerm.create(top, %s, %s)" % (d, q(term.getName()))) +for net in top.getNets(): + net_index[str(net.getNLID())] = len(net_index) + name = "" if net.isUnnamed() else ", " + q(net.getName()) + if net.isUnnamed(): + bits = list(net.getBits()) + print("unnamed net %s type=%s bits=%d components=%d" % (net_var(net), bits[0].getTypeAsString() if bits else "?", len(bits), sum(len(list(b.getComponents())) for b in bits)), file=sys.stderr) + if isinstance(net, naja.SNLBusNet): + lines.append(" %s = naja.SNLBusNet.create(top, %d, %d%s)" % (net_var(net), net.getMSB(), net.getLSB(), name)) + else: + lines.append(" %s = naja.SNLScalarNet.create(top%s)" % (net_var(net), name)) + for bit in net.getBits(): + if bit.getType() != naja.SNLNet.Type.Standard: + lines.append(" %s.setType(naja.SNLNet.Type.%s)" % (net_ref(bit), bit.getTypeAsString())) +for term in top.getTerms(): + for bit in term.getBits(): + net = bit.getNet() + if net is not None: + lines.append(" %s.setNet(%s)" % (bitterm_ref("top", bit), net_ref(net))) +for inst in top.getInstances(): + model = inst.getModel() + if not model.isPrimitive(): + raise SystemExit("hierarchical instance %s: not supported by this generator" % inst.getName()) + lines.append(" inst = naja.SNLInstance.create(top, primitive(lib, %s), %s)" % (q(model.getName()), q(inst.getName()))) + for it in inst.getInstTerms(): + net = it.getNet() + if net is not None: + lines.append(" inst.getInstTerm(%s).setNet(%s)" % (bitterm_ref("inst.getModel()", it.getBitTerm()), net_ref(net))) +with open(out_path, "w") as f: + f.write("\n".join(lines) + "\n") +print("%s: %d terms, %d nets, %d instances -> %s (%d lines)" % (top.getName(), len(list(top.getTerms())), len(list(top.getNets())), len(list(top.getInstances())), out_path, len(lines))) diff --git a/src/bin/CppDriver.cpp b/src/bin/CppDriver.cpp index 47446f35..d69383c3 100644 --- a/src/bin/CppDriver.cpp +++ b/src/bin/CppDriver.cpp @@ -109,18 +109,27 @@ class StandalonePrimitiveLoader final : public KEPLER_FORMAL::PrimitiveLibraryLo const std::filesystem::path& path) const override { naja::NL::SNLPyLoader::loadPrimitives(library, path); } + void loadDesignLibrary(naja::NL::NLLibrary* library, + const std::filesystem::path& path) const override { + naja::NL::SNLPyLoader::loadLibrary(library, path); + } }; class InProcessPrimitiveLoader final : public KEPLER_FORMAL::PrimitiveLibraryLoader { public: void prepare(const char*) const override { throw std::runtime_error( - "py_tech_files are not supported by the in-process file API"); + "Python inputs (py_tech_files or the python format) are not supported " + "by the in-process file API"); } void load(naja::NL::NLLibrary*, const std::filesystem::path&) const override { // Shared validation calls prepare before any loading begins. throw std::logic_error("In-process Python primitive loading was not validated"); } + void loadDesignLibrary(naja::NL::NLLibrary*, + const std::filesystem::path&) const override { + throw std::logic_error("In-process Python design loading was not validated"); + } }; } // namespace diff --git a/src/bin/KeplerFormal.cpp b/src/bin/KeplerFormal.cpp index 54d58e4e..8e2c1038 100644 --- a/src/bin/KeplerFormal.cpp +++ b/src/bin/KeplerFormal.cpp @@ -65,14 +65,15 @@ static const char* kSkippedOpaqueCellPOReport = static void print_usage(const char* prog) { SPDLOG_INFO( // LCOV_EXCL_STOP - "Usage: {} --version | [--config ] | <-naja_if/-verilog/-systemverilog/-sv/-sv2v/-vhdl> " + "Usage: {} --version | [--config ] | <-naja_if/-verilog/-systemverilog/-sv/-sv2v/-vhdl/-python> " "[-v ] [-k ] [--sec-engine ] [--sec-encoding ] [--learn-internal-relations ] [--allow-x-equality-in-internal-relations ] [--sec-reset-cycles ] [--sec-reset-port ...] " "[--verilog_design1_top ] [--verilog_design2_top ] " "[--vhdl_design1_top ] [--vhdl_design2_top ] " + "[--python_design1_top ] [--python_design2_top ] " "[--set-as-boundary ]... " " [...] | " - "<-naja_if/-verilog/-systemverilog/-sv/-sv2v/-vhdl> --design1 --design2 " - " [--verilog_design1_top ] [--verilog_design2_top ] [--vhdl_design1_top ] [--vhdl_design2_top ] [--liberty ...] [-v ] [-k ] [--sec-engine ] [--sec-encoding ] [--learn-internal-relations ] [--allow-x-equality-in-internal-relations ] [--sec-reset-cycles ] [--sec-reset-port ...] " + "<-naja_if/-verilog/-systemverilog/-sv/-sv2v/-vhdl/-python> --design1 --design2 " + " [--verilog_design1_top ] [--verilog_design2_top ] [--vhdl_design1_top ] [--vhdl_design2_top ] [--python_design1_top ] [--python_design2_top ] [--liberty ...] [-v ] [-k ] [--sec-engine ] [--sec-encoding ] [--learn-internal-relations ] [--allow-x-equality-in-internal-relations ] [--sec-reset-cycles ] [--sec-reset-port ...] " "[--allow-boundary-mismatch] [--compact] " "[--set-as-boundary ]... " "[--report-skipped-pos] | " @@ -518,6 +519,8 @@ static bool validateConfigKeys(const YAML::Node& cfg) { "sv_design2_top", "vhdl_design1_top", "vhdl_design2_top", + "python_design1_top", + "python_design2_top", }; for (auto it = cfg.begin(); it != cfg.end(); ++it) { @@ -572,6 +575,34 @@ struct VerilogTopOptions { // VHDL selects its tops the same way: one optional name per design. using VhdlTopOptions = VerilogTopOptions; +// So does Python design input. +using PythonTopOptions = VerilogTopOptions; + +// Python design input: every script of a design is run in order against the +// same library, so a design can be split over several files. Each script +// defines constructLibrary(lib) and builds its modules, instances and nets +// with the naja module, the same way py_tech_files build primitives. +static naja::NL::SNLDesign* constructPythonDesign( + const KEPLER_FORMAL::PrimitiveLibraryLoader& loader, + naja::NL::NLLibrary* library, + const std::vector& designPaths, + const std::optional& requestedTop, + int designIndex) { + for (const auto& designPath : designPaths) { + SPDLOG_INFO("Loading python design file: {}", designPath); + loader.loadDesignLibrary(library, std::filesystem::path(designPath)); + } + if (!requestedTop) { + return SNLUtils::findTop(library); + } + auto* top = library->getSNLDesign(NLName(*requestedTop)); + if (!top) { + throw std::runtime_error( + "Top module `" + *requestedTop + "` was not found in design " + + std::to_string(designIndex + 1)); + } + return top; +} static bool parseConfigInputPaths(const YAML::Node& node, DesignInputs& out, @@ -1241,7 +1272,7 @@ static int KeplerFormalMainImpl( KEPLER_FORMAL::RunResult* runResult, const KEPLER_FORMAL::PrimitiveLibraryLoader& primitiveLoader) { using namespace std::chrono; - enum class FormatType { VERILOG, SYSTEMVERILOG, SV2V, VHDL, NAJA_IF }; + enum class FormatType { VERILOG, SYSTEMVERILOG, SV2V, VHDL, PYTHON, NAJA_IF }; constexpr size_t kDefaultSecMaxK = 32; const auto cleanupNajaState = []() { naja::DNL::destroy(); @@ -1265,6 +1296,7 @@ static int KeplerFormalMainImpl( SystemVerilogOptions systemVerilogOptions; VerilogTopOptions verilogTopOptions; VhdlTopOptions vhdlTopOptions; + PythonTopOptions pythonTopOptions; KEPLER_FORMAL::BoundaryPairs boundaryPairs; std::vector libertyFiles; std::vector pythonFiles; @@ -1350,6 +1382,8 @@ static int KeplerFormalMainImpl( inputFormatType = FormatType::SV2V; } else if (fmt == "vhdl" || fmt == "vhd") { inputFormatType = FormatType::VHDL; + } else if (fmt == "python" || fmt == "py") { + inputFormatType = FormatType::PYTHON; } else { SPDLOG_CRITICAL("Unrecognized format in config: {}", fmt); return EXIT_FAILURE; @@ -1606,7 +1640,11 @@ static int KeplerFormalMainImpl( !applySystemVerilogConfigOption( cfg, "vhdl_design1_top", vhdlTopOptions.design0, svConfigError) || !applySystemVerilogConfigOption( - cfg, "vhdl_design2_top", vhdlTopOptions.design1, svConfigError)) { + cfg, "vhdl_design2_top", vhdlTopOptions.design1, svConfigError) || + !applySystemVerilogConfigOption( + cfg, "python_design1_top", pythonTopOptions.design0, svConfigError) || + !applySystemVerilogConfigOption( + cfg, "python_design2_top", pythonTopOptions.design1, svConfigError)) { // LCOV_EXCL_START SPDLOG_CRITICAL("Invalid design config option: {}", svConfigError); return EXIT_FAILURE; @@ -1830,6 +1868,12 @@ static int KeplerFormalMainImpl( formatFound = true; break; } + if (arg == "-python" || arg == "-py") { + inputFormatType = FormatType::PYTHON; + ++parseStart; + formatFound = true; + break; + } // LCOV_EXCL_START SPDLOG_CRITICAL("Unrecognized option before input format type: {}", arg); return EXIT_FAILURE; @@ -2039,6 +2083,7 @@ static int KeplerFormalMainImpl( if (arg == "--sv_design1_flist" || arg == "--sv_design2_flist" || arg == "--verilog_design1_top" || arg == "--verilog_design2_top" || arg == "--vhdl_design1_top" || arg == "--vhdl_design2_top" || + arg == "--python_design1_top" || arg == "--python_design2_top" || arg == "--sv_design1_top" || arg == "--sv_design2_top") { if (i + 1 >= argc) { SPDLOG_CRITICAL("Missing value after {}", arg); @@ -2067,6 +2112,10 @@ static int KeplerFormalMainImpl( vhdlTopOptions.design0 = value; } else if (arg == "--vhdl_design2_top") { vhdlTopOptions.design1 = value; + } else if (arg == "--python_design1_top") { + pythonTopOptions.design0 = value; + } else if (arg == "--python_design2_top") { + pythonTopOptions.design1 = value; } else { verilogTopOptions.design1 = value; // LCOV_EXCL_STOP @@ -2150,6 +2199,10 @@ static int KeplerFormalMainImpl( inputFormatName = "VHDL"; inputFormatToken = "vhdl"; } + if (inputFormatType == FormatType::PYTHON) { + inputFormatName = "PYTHON"; + inputFormatToken = "python"; + } if (runResult != nullptr) { runResult->inputFormat = inputFormatToken; runResult->verification = verificationModeName(verificationMode); @@ -2321,6 +2374,11 @@ static int KeplerFormalMainImpl( SPDLOG_CRITICAL("VHDL top options are only valid with -vhdl input"); return EXIT_FAILURE; } + if (inputFormatType != FormatType::PYTHON && + (pythonTopOptions.design0 || pythonTopOptions.design1)) { + SPDLOG_CRITICAL("Python top options are only valid with -python input"); + return EXIT_FAILURE; + } if (inputFormatType == FormatType::SV2V && verilogTopOptions.design0) { SPDLOG_CRITICAL( "sv2v format only accepts a Verilog top option for design 2; " @@ -2373,7 +2431,7 @@ static int KeplerFormalMainImpl( if (!libertyFiles.empty()) { for (const auto& lf : libertyFiles) SPDLOG_INFO("Library: {}", lf); } - if (!pythonFiles.empty()) { + if (!pythonFiles.empty() || inputFormatType == FormatType::PYTHON) { try { primitiveLoader.prepare(argv[0]); } catch (const std::exception& error) { @@ -2613,10 +2671,12 @@ static int KeplerFormalMainImpl( return inputFormatType == FormatType::VERILOG || inputFormatType == FormatType::SYSTEMVERILOG || inputFormatType == FormatType::SV2V || - inputFormatType == FormatType::VHDL; + inputFormatType == FormatType::VHDL || + inputFormatType == FormatType::PYTHON; }; const bool useVhdl = inputFormatType == FormatType::VHDL; + const bool usePython = inputFormatType == FormatType::PYTHON; const auto designUsesSystemVerilog = [&](int designIndex) { return inputFormatType == FormatType::SYSTEMVERILOG || @@ -2650,12 +2710,22 @@ static int KeplerFormalMainImpl( db->setID(dbID); const bool useSystemVerilog = designUsesSystemVerilog(designIndex); SPDLOG_INFO("Parsing {} file(s) for design {}", - useVhdl ? "vhdl" - : useSystemVerilog ? "systemverilog" : "verilog", + usePython ? "python" + : useVhdl ? "vhdl" + : useSystemVerilog ? "systemverilog" + : "verilog", designIndex + 1); auto designLibrary = NLLibrary::create(db, NLName("DESIGN")); naja::NL::SNLDesign* vhdlTop = nullptr; - if (useVhdl) { + if (usePython) { + vhdlTop = constructPythonDesign( + primitiveLoader, + designLibrary, + designPaths, + designIndex == 0 ? pythonTopOptions.design0 + : pythonTopOptions.design1, + designIndex); + } else if (useVhdl) { vhdlTop = constructVhdlDesign( designLibrary, designPaths, @@ -2714,7 +2784,7 @@ static int KeplerFormalMainImpl( constructor.config_.preprocessEnabled_ = verilogPreprocessing; constructor.construct(toPathVector(designPaths)); } - auto top = useVhdl + auto top = useVhdl || usePython ? vhdlTop : useSystemVerilog ? SNLUtils::findTop(designLibrary) @@ -2935,7 +3005,8 @@ static int KeplerFormalMainImpl( inputFormatType == FormatType::SYSTEMVERILOG, designInputs, systemVerilogOptions, - useVhdl ? vhdlTopOptions : verilogTopOptions, + usePython ? pythonTopOptions + : useVhdl ? vhdlTopOptions : verilogTopOptions, boundaryPairs)) { // CVA6-style smoke runs often compare a design against itself. In // compact SEC, extracting that identical second side would require @@ -3022,14 +3093,20 @@ static int KeplerFormalMainImpl( const bool design0UsesSystemVerilog = designUsesSystemVerilog(0); SPDLOG_INFO("Parsing {} file(s) for design 1", // LCOV_EXCL_STOP - useVhdl ? "vhdl" - : design0UsesSystemVerilog ? "systemverilog" - : "verilog"); + usePython ? "python" + : useVhdl ? "vhdl" + : design0UsesSystemVerilog + ? "systemverilog" + : "verilog"); // LCOV_EXCL_START auto designLibrary = NLLibrary::create(db0, NLName("DESIGN")); naja::NL::SNLDesign* vhdlTop = nullptr; // LCOV_EXCL_STOP - if (useVhdl) { + if (usePython) { + vhdlTop = constructPythonDesign( + primitiveLoader, designLibrary, designInputs.design0, + pythonTopOptions.design0, 0); + } else if (useVhdl) { vhdlTop = constructVhdlDesign( designLibrary, designInputs.design0, vhdlTopOptions.design0); // LCOV_EXCL_START @@ -3073,7 +3150,7 @@ static int KeplerFormalMainImpl( constructor.config_.preprocessEnabled_ = verilogPreprocessing; constructor.construct(design0Paths); } - auto top = useVhdl + auto top = useVhdl || usePython ? vhdlTop : design0UsesSystemVerilog ? SNLUtils::findTop(designLibrary) @@ -3155,14 +3232,20 @@ static int KeplerFormalMainImpl( const bool design1UsesSystemVerilog = designUsesSystemVerilog(1); SPDLOG_INFO("Parsing {} file(s) for design 2", // LCOV_EXCL_STOP - useVhdl ? "vhdl" - : design1UsesSystemVerilog ? "systemverilog" - : "verilog"); + usePython ? "python" + : useVhdl ? "vhdl" + : design1UsesSystemVerilog + ? "systemverilog" + : "verilog"); // LCOV_EXCL_START auto designLibrary = NLLibrary::create(db1, NLName("DESIGN")); naja::NL::SNLDesign* vhdlTop = nullptr; // LCOV_EXCL_STOP - if (useVhdl) { + if (usePython) { + vhdlTop = constructPythonDesign( + primitiveLoader, designLibrary, designInputs.design1, + pythonTopOptions.design1, 1); + } else if (useVhdl) { vhdlTop = constructVhdlDesign( designLibrary, designInputs.design1, vhdlTopOptions.design1); // LCOV_EXCL_START @@ -3195,7 +3278,7 @@ static int KeplerFormalMainImpl( constructor.config_.preprocessEnabled_ = verilogPreprocessing; constructor.construct(design1Paths); } - auto top = useVhdl + auto top = useVhdl || usePython ? vhdlTop : design1UsesSystemVerilog ? SNLUtils::findTop(designLibrary) diff --git a/src/bin/KeplerFormalDriver.h b/src/bin/KeplerFormalDriver.h index 8782e68b..00937e9b 100644 --- a/src/bin/KeplerFormalDriver.h +++ b/src/bin/KeplerFormalDriver.h @@ -20,6 +20,10 @@ class PrimitiveLibraryLoader { virtual void prepare(const char* executable) const = 0; virtual void load(naja::NL::NLLibrary* library, const std::filesystem::path& path) const = 0; + // Python design input: the script's constructLibrary(lib) builds the + // design's modules, instances and nets in `library`. + virtual void loadDesignLibrary(naja::NL::NLLibrary* library, + const std::filesystem::path& path) const = 0; }; // File workflow: argument/YAML parsing, file loading, diff --git a/test/strategies/miter/DriverSeparationTests.cpp b/test/strategies/miter/DriverSeparationTests.cpp index e1ecbddc..eab31528 100644 --- a/test/strategies/miter/DriverSeparationTests.cpp +++ b/test/strategies/miter/DriverSeparationTests.cpp @@ -65,6 +65,10 @@ class HostPrimitiveLoader final : public KEPLER_FORMAL::PrimitiveLibraryLoader { void load(naja::NL::NLLibrary*, const std::filesystem::path&) const override { loaded = true; } + void loadDesignLibrary(naja::NL::NLLibrary*, + const std::filesystem::path&) const override { + loaded = true; + } bool reject = false; mutable bool loaded = false; }; diff --git a/test/strategies/miter/KeplerFormalCliTests.cpp b/test/strategies/miter/KeplerFormalCliTests.cpp index 66ae30c2..7d3cc6a4 100644 --- a/test/strategies/miter/KeplerFormalCliTests.cpp +++ b/test/strategies/miter/KeplerFormalCliTests.cpp @@ -2638,6 +2638,304 @@ TEST_F(KeplerFormalCliTests, ConfigSv2vPythonPrimitivesBuildsComplexStubLibrary) std::filesystem::remove_all(fixture.tmpDir); } +namespace { + +// Python design input: a script builds its design with the naja module. The +// primitives come from py_tech_files or Liberty; a Liberty library keeps its +// own name, so scripts look a cell up in every primitive library. +const char* const kPythonDesignHelpers = + "import naja\n" + "\n" + "def primitive(lib, name):\n" + " for primitives in lib.getDB().getPrimitiveLibraries():\n" + " model = primitives.getSNLDesign(name)\n" + " if model is not None:\n" + " return model\n" + " raise RuntimeError('primitive %s was not loaded' % name)\n" + "\n" + "def connect(instance, pin, net):\n" + " instance.getInstTerm(instance.getModel().getScalarTerm(pin)).setNet(net)\n" + "\n" + "def ports(design, inputs, outputs):\n" + " nets = {}\n" + " for name in inputs:\n" + " term = naja.SNLScalarTerm.create(design, naja.SNLTerm.Direction.Input, name)\n" + " nets[name] = naja.SNLScalarNet.create(design, name)\n" + " term.setNet(nets[name])\n" + " for name in outputs:\n" + " term = naja.SNLScalarTerm.create(design, naja.SNLTerm.Direction.Output, name)\n" + " nets[name] = naja.SNLScalarNet.create(design, name)\n" + " term.setNet(nets[name])\n" + " return nets\n" + "\n" + "def wires(design, nets, names):\n" + " for name in names:\n" + " nets[name] = naja.SNLScalarNet.create(design, name)\n" + "\n"; + +const char* const kPythonGatePrimitives = + "import naja\n" + "\n" + "def gate(lib, name, inputs, output, truth_table):\n" + " primitive = naja.SNLDesign.createPrimitive(lib, name)\n" + " for input_name in inputs:\n" + " naja.SNLScalarTerm.create(primitive, naja.SNLTerm.Direction.Input, input_name)\n" + " naja.SNLScalarTerm.create(primitive, naja.SNLTerm.Direction.Output, output)\n" + " primitive.setTruthTable(truth_table)\n" + "\n" + "def constructPrimitives(lib):\n" + " gate(lib, 'INV', ['A'], 'Y', 0b01)\n" + " gate(lib, 'AND2', ['A', 'B'], 'Y', 0b1000)\n" + " gate(lib, 'OR2', ['A', 'B'], 'Y', 0b1110)\n"; + +// y = ~(a & b) as AND2 then INV. +const char* const kPythonNandDesignA = + "def constructLibrary(lib):\n" + " and2, inv = primitive(lib, 'AND2'), primitive(lib, 'INV')\n" + " top = naja.SNLDesign.create(lib, 'top')\n" + " n = ports(top, ['a', 'b'], ['y'])\n" + " wires(top, n, ['ab'])\n" + " g = naja.SNLInstance.create(top, and2, 'g')\n" + " connect(g, 'A', n['a']); connect(g, 'B', n['b']); connect(g, 'Y', n['ab'])\n" + " i = naja.SNLInstance.create(top, inv, 'i')\n" + " connect(i, 'A', n['ab']); connect(i, 'Y', n['y'])\n"; + +// y = ~a | ~b: the same function by De Morgan. +const char* const kPythonNandDesignB = + "def constructLibrary(lib):\n" + " or2, inv = primitive(lib, 'OR2'), primitive(lib, 'INV')\n" + " top = naja.SNLDesign.create(lib, 'top')\n" + " n = ports(top, ['a', 'b'], ['y'])\n" + " wires(top, n, ['na', 'nb'])\n" + " for x in ('a', 'b'):\n" + " i = naja.SNLInstance.create(top, inv, 'i' + x)\n" + " connect(i, 'A', n[x]); connect(i, 'Y', n['n' + x])\n" + " o = naja.SNLInstance.create(top, or2, 'o')\n" + " connect(o, 'A', n['na']); connect(o, 'B', n['nb']); connect(o, 'Y', n['y'])\n"; + +// y = a & b: a different function. +const char* const kPythonAndDesign = + "def constructLibrary(lib):\n" + " and2 = primitive(lib, 'AND2')\n" + " top = naja.SNLDesign.create(lib, 'top')\n" + " n = ports(top, ['a', 'b'], ['y'])\n" + " g = naja.SNLInstance.create(top, and2, 'g')\n" + " connect(g, 'A', n['a']); connect(g, 'B', n['b']); connect(g, 'Y', n['y'])\n"; + +// 2-bit counter with synchronous reset from Nangate cells: +// d0 = ~q0 & ~rst, d1 = (q1 ^ q0) & ~rst. +const char* const kPythonCounterDesignA = + "def constructLibrary(lib):\n" + " inv, and2, xor2, dff = (primitive(lib, c) for c in ('INV_X1', 'AND2_X1', 'XOR2_X1', 'DFF_X1'))\n" + " top = naja.SNLDesign.create(lib, 'top')\n" + " n = ports(top, ['clk', 'rst'], ['q0', 'q1'])\n" + " wires(top, n, ['nrst', 't0', 't1', 'd0', 'd1', 'qn0', 'qn1'])\n" + " i = naja.SNLInstance.create(top, inv, 'i_rst'); connect(i, 'A', n['rst']); connect(i, 'ZN', n['nrst'])\n" + " i = naja.SNLInstance.create(top, inv, 'i_q0'); connect(i, 'A', n['q0']); connect(i, 'ZN', n['t0'])\n" + " i = naja.SNLInstance.create(top, and2, 'a_d0'); connect(i, 'A1', n['t0']); connect(i, 'A2', n['nrst']); connect(i, 'ZN', n['d0'])\n" + " i = naja.SNLInstance.create(top, xor2, 'x_d1'); connect(i, 'A', n['q1']); connect(i, 'B', n['q0']); connect(i, 'Z', n['t1'])\n" + " i = naja.SNLInstance.create(top, and2, 'a_d1'); connect(i, 'A1', n['t1']); connect(i, 'A2', n['nrst']); connect(i, 'ZN', n['d1'])\n" + " for k in ('0', '1'):\n" + " r = naja.SNLInstance.create(top, dff, 'r' + k)\n" + " connect(r, 'D', n['d' + k]); connect(r, 'CK', n['clk']); connect(r, 'Q', n['q' + k]); connect(r, 'QN', n['qn' + k])\n"; + +// The same counter restructured: XOR from AND/OR, QN instead of the inverter. +const char* const kPythonCounterDesignB = + "def constructLibrary(lib):\n" + " inv, and2, or2, dff = (primitive(lib, c) for c in ('INV_X1', 'AND2_X1', 'OR2_X1', 'DFF_X1'))\n" + " top = naja.SNLDesign.create(lib, 'top')\n" + " n = ports(top, ['clk', 'rst'], ['q0', 'q1'])\n" + " wires(top, n, ['nrst', 'p', 'm', 's', 'd0', 'd1', 'qn0', 'qn1'])\n" + " i = naja.SNLInstance.create(top, inv, 'i_rst'); connect(i, 'A', n['rst']); connect(i, 'ZN', n['nrst'])\n" + " i = naja.SNLInstance.create(top, and2, 'a_d0'); connect(i, 'A1', n['qn0']); connect(i, 'A2', n['nrst']); connect(i, 'ZN', n['d0'])\n" + " i = naja.SNLInstance.create(top, and2, 'a_p'); connect(i, 'A1', n['q1']); connect(i, 'A2', n['qn0']); connect(i, 'ZN', n['p'])\n" + " i = naja.SNLInstance.create(top, and2, 'a_m'); connect(i, 'A1', n['qn1']); connect(i, 'A2', n['q0']); connect(i, 'ZN', n['m'])\n" + " i = naja.SNLInstance.create(top, or2, 'o_s'); connect(i, 'A1', n['p']); connect(i, 'A2', n['m']); connect(i, 'ZN', n['s'])\n" + " i = naja.SNLInstance.create(top, and2, 'a_d1'); connect(i, 'A1', n['s']); connect(i, 'A2', n['nrst']); connect(i, 'ZN', n['d1'])\n" + " for k in ('0', '1'):\n" + " r = naja.SNLInstance.create(top, dff, 'r' + k)\n" + " connect(r, 'D', n['d' + k]); connect(r, 'CK', n['clk']); connect(r, 'Q', n['q' + k]); connect(r, 'QN', n['qn' + k])\n"; + +// Two modules; "other" must not be picked when the top is named. +const char* const kPythonTwoModuleDesign = + "def constructLibrary(lib):\n" + " and2 = primitive(lib, 'AND2')\n" + " for name in ('other', 'top'):\n" + " design = naja.SNLDesign.create(lib, name)\n" + " n = ports(design, ['a', 'b'], ['y'])\n" + " g = naja.SNLInstance.create(design, and2, 'g')\n" + " connect(g, 'A', n['a']); connect(g, 'B', n['b']); connect(g, 'Y', n['y'])\n"; + +std::filesystem::path writePythonDesign(const std::filesystem::path& path, + const char* body) { + std::ofstream out(path); + out << kPythonDesignHelpers << body; + return path; +} + +} // namespace + +// SEC verdicts are visible through exit codes, so the equal and the different +// pair are checked that way; the run log holds the netlist report, not the +// verdict. +TEST_F(KeplerFormalCliTests, ConfigPythonDesignInputProvesAndRefutes) { + const auto pyModuleDir = findBuiltNajaModuleDir(); + ASSERT_FALSE(pyModuleDir.empty()); + ASSERT_TRUE(std::filesystem::exists(pyModuleDir / "naja.so")); + EnvVarGuard pythonPathGuard("PYTHONPATH"); + pythonPathGuard.set(pyModuleDir.string()); + + const auto tmpDir = makeUniqueTempDir("kepler_formal_cli_python_lec"); + const auto primitives = tmpDir / "primitives.py"; + { std::ofstream out(primitives); out << kPythonGatePrimitives; } + const auto nandA = writePythonDesign(tmpDir / "nand_a.py", kPythonNandDesignA); + const auto nandB = writePythonDesign(tmpDir / "nand_b.py", kPythonNandDesignB); + const auto andC = writePythonDesign(tmpDir / "and_c.py", kPythonAndDesign); + + const auto runSec = [&](const std::filesystem::path& design0, + const std::filesystem::path& design1, + const char* format) { + const auto cfgPath = writeTempConfig( + std::string("format: ") + format + "\n" + "verification: sec\n" + "max_k: 2\n" + "input_paths:\n" + " - " + design0.string() + "\n" + " - " + design1.string() + "\n" + "py_tech_files:\n" + " - " + primitives.string() + "\n"); + const int rc = runWithConfigFile(cfgPath); + std::filesystem::remove(cfgPath); + return rc; + }; + + EXPECT_EQ(runSec(nandA, nandB, "python"), kSecProvedExitCode); + EXPECT_EQ(runSec(nandA, andC, "py"), kSecCounterexampleExitCode); + // LEC accepts the format as well. + const auto lecCfg = writeTempConfig( + "format: python\n" + "verification: lec\n" + "input_paths:\n" + " - " + nandA.string() + "\n" + " - " + nandB.string() + "\n" + "py_tech_files:\n" + " - " + primitives.string() + "\n"); + EXPECT_EQ(runWithConfigFile(lecCfg), EXIT_SUCCESS); + std::filesystem::remove(lecCfg); + std::filesystem::remove_all(tmpDir); +} + +TEST_F(KeplerFormalCliTests, ConfigPythonDesignInputSelectsNamedTop) { + const auto pyModuleDir = findBuiltNajaModuleDir(); + ASSERT_FALSE(pyModuleDir.empty()); + EnvVarGuard pythonPathGuard("PYTHONPATH"); + pythonPathGuard.set(pyModuleDir.string()); + + const auto tmpDir = makeUniqueTempDir("kepler_formal_cli_python_top"); + const auto primitives = tmpDir / "primitives.py"; + { std::ofstream out(primitives); out << kPythonGatePrimitives; } + const auto andC = writePythonDesign(tmpDir / "and_c.py", kPythonAndDesign); + const auto two = writePythonDesign(tmpDir / "two.py", kPythonTwoModuleDesign); + + const auto cfgPath = writeTempConfig( + "format: python\n" + "verification: sec\n" + "max_k: 2\n" + "input_paths:\n" + " - " + andC.string() + "\n" + " - " + two.string() + "\n" + "python_design2_top: top\n" + "py_tech_files:\n" + " - " + primitives.string() + "\n"); + EXPECT_EQ(runWithConfigFile(cfgPath), kSecProvedExitCode); + std::filesystem::remove(cfgPath); + + // Without a name, two candidate tops are an error rather than a guess. + const auto ambiguousCfg = writeTempConfig( + "format: python\n" + "verification: sec\n" + "max_k: 2\n" + "input_paths:\n" + " - " + andC.string() + "\n" + " - " + two.string() + "\n" + "py_tech_files:\n" + " - " + primitives.string() + "\n"); + EXPECT_EQ(runWithConfigFile(ambiguousCfg), EXIT_FAILURE); + std::filesystem::remove(ambiguousCfg); + + // A top that the script never created is an error, not a silent fallback. + const auto badCfg = writeTempConfig( + "format: python\n" + "verification: lec\n" + "input_paths:\n" + " - " + andC.string() + "\n" + " - " + andC.string() + "\n" + "python_design1_top: nope\n" + "py_tech_files:\n" + " - " + primitives.string() + "\n"); + EXPECT_EQ(runWithConfigFile(badCfg), EXIT_FAILURE); + std::filesystem::remove(badCfg); + + // A script without constructLibrary fails to load. + const auto noEntry = tmpDir / "no_entry.py"; + { std::ofstream out(noEntry); out << "import naja\n\ndef other(lib):\n pass\n"; } + const auto noEntryCfg = writeTempConfig( + "format: python\n" + "verification: lec\n" + "input_paths:\n" + " - " + noEntry.string() + "\n" + " - " + noEntry.string() + "\n" + "py_tech_files:\n" + " - " + primitives.string() + "\n"); + EXPECT_EQ(runWithConfigFile(noEntryCfg), EXIT_FAILURE); + std::filesystem::remove(noEntryCfg); + std::filesystem::remove_all(tmpDir); +} + +TEST_F(KeplerFormalCliTests, CliPythonDesignInputSecWithLibertyCells) { + const auto pyModuleDir = findBuiltNajaModuleDir(); + ASSERT_FALSE(pyModuleDir.empty()); + EnvVarGuard pythonPathGuard("PYTHONPATH"); + pythonPathGuard.set(pyModuleDir.string()); + + const auto liberty = + repoRoot() / "examples" / "tinyrocket" / "NangateOpenCellLibrary_typical.lib"; + ASSERT_TRUE(std::filesystem::exists(liberty)); + const auto tmpDir = makeUniqueTempDir("kepler_formal_cli_python_sec"); + const auto counterA = writePythonDesign(tmpDir / "counter_a.py", kPythonCounterDesignA); + const auto counterB = writePythonDesign(tmpDir / "counter_b.py", kPythonCounterDesignB); + + const std::vector base = { + "kepler-formal", "-python", "-v", "sec", + "--design1", counterA.string(), "--design2", counterB.string(), + "--liberty", liberty.string(), + "--sec-reset-cycles", "1", "--sec-reset-port", "rst=1"}; + EXPECT_EQ(runWithArgs(base), kSecProvedExitCode); + + // Compact SEC loads each design through its own path; cover it too, with + // the same design on both sides. + std::vector compact = base; + compact[7] = counterA.string(); + compact.push_back("--compact"); + EXPECT_EQ(runWithArgs(compact), kSecProvedExitCode); + std::filesystem::remove_all(tmpDir); +} + +TEST_F(KeplerFormalCliTests, CliPythonTopOptionsRejectedWithOtherFormats) { + const auto fixture = createEquivalentDesignFixture( + "v", + "module top(input a, output y);\n" + " assign y = a;\n" + "endmodule\n"); + EXPECT_EQ( + runWithArgs({"kepler-formal", "-verilog", "-v", "lec", + "--design1", fixture.design0Path.string(), + "--design2", fixture.design1Path.string(), + "--python_design1_top", "top"}), + EXIT_FAILURE); + std::filesystem::remove_all(fixture.tmpDir); +} + TEST_F(KeplerFormalCliTests, ConfigSv2vUnnamedPythonPrimitiveLibraryCreatesNoStub) { SimpleCliFixture fixture; fixture.tmpDir = makeUniqueTempDir("kepler_formal_cli_sv2v_unnamed_py_prims");