diff --git a/gplugins/klayout/netlist_spice_reader.py b/gplugins/klayout/netlist_spice_reader.py index 4f982e19..31fe5b36 100644 --- a/gplugins/klayout/netlist_spice_reader.py +++ b/gplugins/klayout/netlist_spice_reader.py @@ -27,6 +27,7 @@ class NoCommentReader(kdb.NetlistSpiceReaderDelegate): def parse_element(self, s: str, element: str) -> kdb.ParseElementData: if "$" in s: s, *_ = s.split("$") # Don't take comments into account + parsed = super().parse_element(s, element) # ensure uniqueness parsed.model_name = parsed.model_name + f"_{self.n_nodes}" @@ -52,6 +53,9 @@ def wants_subcircuit(self, name: str): @override def parse_element(self, s: str, element: str) -> kdb.ParseElementData: + # Allow Calibre-style model name given as `$[model_name]` by removing the brackets + s = re.sub(r"\$\[([^\]]+)\]", r"\1", s) + x_value, y_value = None, None if "$" in s: if location_matches := re.search(self.calibre_location_pattern, s): diff --git a/pyproject.toml b/pyproject.toml index 99cb02f4..fd7d3374 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -159,7 +159,8 @@ lint.ignore = [ "C408", # C408 Unnecessary `dict` call (rewrite as a literal) "E402", # module level import not at top of file "B018", # found useless expression - "B028" # no explicit stacklevel + "B028", # no explicit stacklevel + "D301" # allow escape sequences in docstrings ] lint.select = [ "E", # pycodestyle errors