Fixing sizes.
diff --git a/scripts/python-skywater-pdk/skywater_pdk/sizes.py b/scripts/python-skywater-pdk/skywater_pdk/sizes.py
index a95a26b..ac6ff64 100644
--- a/scripts/python-skywater-pdk/skywater_pdk/sizes.py
+++ b/scripts/python-skywater-pdk/skywater_pdk/sizes.py
@@ -18,7 +18,35 @@
def parse_size(s):
- return TransistorSize.from_suffix(s)
+ """
+
+ >>> parse_size('_1')
+ TransistorSizeNumeric(units=1)
+
+ >>> parse_size('sky130_fd_sc_ms__sdfrtp_1.v')
+ TransistorSizeNumeric(units=1)
+
+ >>> parse_size('libraries/sky130_fd_sc_ms/v0.0.1/cells/sdfrtp/sky130_fd_sc_ms__sdfrtp_1.v')
+ TransistorSizeNumeric(units=1)
+
+ >>> parse_size('libraries/sky130_fd_sc_ms/v0.0.1/cells/sdfrtp/sky130_fd_sc_ms__sdfrtp_1.bb.blackbox.v')
+ TransistorSizeNumeric(units=1)
+
+ >>> parse_size('libraries/sky130_fd_sc_ms/v0.0.1/cells/sdfrtp/sky130_fd_sc_ms__sdfrtp.v')
+ >>> parse_size('sky130_fd_sc_ms__sdfrtp.v')
+ >>> parse_size('_blah')
+ """
+ dirname, s = os.path.split(s)
+ if '.' in s:
+ s = s.split('.', 1)[0]
+ if s.count('_') > 1:
+ s = '_' + (s.rsplit('_', 1)[-1])
+ if not s or s == '_':
+ return None
+ try:
+ return TransistorSize.from_suffix(s)
+ except InvalidSuffixError as e:
+ return None
class InvalidSuffixError(ValueError):