Build a SLiCAP netlist string. Format: (quoted if the title contains spaces) .command lines... RefDes nodes... refs... Model param=val... .end
(
components: list, # list[ComponentItem]
wires: list, # list[WireItem]
commands: list, # list[CommandItem]
title: str = "schematic",
libs: list = None, # list[LibraryItem]
params: list = None, # list[ParameterItem]
model_defs: list = None, # list[ModelItem]
)
| 79 | |
| 80 | |
| 81 | def build_netlist( |
| 82 | components: list, # list[ComponentItem] |
| 83 | wires: list, # list[WireItem] |
| 84 | commands: list, # list[CommandItem] |
| 85 | title: str = "schematic", |
| 86 | libs: list = None, # list[LibraryItem] |
| 87 | params: list = None, # list[ParameterItem] |
| 88 | model_defs: list = None, # list[ModelItem] |
| 89 | ) -> str: |
| 90 | """ |
| 91 | Build a SLiCAP netlist string. |
| 92 | |
| 93 | Format: |
| 94 | <title> (quoted if the title contains spaces) |
| 95 | |
| 96 | .command lines... |
| 97 | |
| 98 | RefDes nodes... refs... Model param=val... |
| 99 | |
| 100 | .end |
| 101 | """ |
| 102 | title_line = f'"{title}"' if " " in title else title |
| 103 | |
| 104 | _node = _node_resolver(components, wires) |
| 105 | |
| 106 | lines: list[str] = [title_line] |
| 107 | |
| 108 | # ── library includes ────────────────────────────────────────────────────── |
| 109 | if libs: |
| 110 | lines.append("") |
| 111 | for lib_item in libs: |
| 112 | lines.append(lib_item.netlist_line()) |
| 113 | |
| 114 | # ── model definitions ───────────────────────────────────────────────────── |
| 115 | if model_defs: |
| 116 | for model_item in model_defs: |
| 117 | model_lines = model_item.netlist_lines() |
| 118 | if model_lines: |
| 119 | lines.append("") |
| 120 | lines.extend(model_lines) |
| 121 | |
| 122 | # ── parameter blocks ────────────────────────────────────────────────────── |
| 123 | if params: |
| 124 | for param_item in params: |
| 125 | param_lines = param_item.param_lines() |
| 126 | if param_lines: |
| 127 | lines.append("") |
| 128 | lines.extend(param_lines) |
| 129 | |
| 130 | # ── command blocks ──────────────────────────────────────────────────────── |
| 131 | cmd_lines: list[str] = [] |
| 132 | for cmd_item in commands: |
| 133 | cmd_lines.extend(cmd_item.commands()) |
| 134 | if cmd_lines: |
| 135 | lines.append("") |
| 136 | lines.extend(cmd_lines) |
| 137 | |
| 138 | # ── element lines ───────────────────────────────────────────────────────── |
no test coverage detected