s/drives/sizes/
diff --git a/scripts/python-skywater-pdk/skywater_pdk/drives.py b/scripts/python-skywater-pdk/skywater_pdk/sizes.py
similarity index 67%
rename from scripts/python-skywater-pdk/skywater_pdk/drives.py
rename to scripts/python-skywater-pdk/skywater_pdk/sizes.py
index e2db6c5..0afddfe 100644
--- a/scripts/python-skywater-pdk/skywater_pdk/drives.py
+++ b/scripts/python-skywater-pdk/skywater_pdk/sizes.py
@@ -17,8 +17,8 @@
from dataclasses_json import dataclass_json
-def parse_drive(s):
- return DriveStrength.from_suffix(s)
+def parse_size(s):
+ return TransistorSize.from_suffix(s)
class InvalidSuffixError(ValueError):
@@ -26,23 +26,23 @@
ValueError.__init__(self, "Invalid suffix: {}".format(s.strip()))
-class DriveStrength(abc.ABC):
+class TransistorSize(abc.ABC):
"""Drive strength variants of a given cell.
- >>> d1 = DriveStrength.from_suffix("_1")
- >>> d2 = DriveStrength.from_suffix("_lp")
- >>> d3 = DriveStrength.from_suffix("_m")
- >>> d4 = DriveStrength.from_suffix("_2")
- >>> DriveStrength.from_suffix("_abc")
+ >>> d1 = TransistorSize.from_suffix("_1")
+ >>> d2 = TransistorSize.from_suffix("_lp")
+ >>> d3 = TransistorSize.from_suffix("_m")
+ >>> d4 = TransistorSize.from_suffix("_2")
+ >>> TransistorSize.from_suffix("_abc")
Traceback (most recent call last):
...
InvalidSuffixError: Invalid suffix: _abc
>>> l = [d1, d2, d3, d4]
>>> l
- [DriveStrengthNumeric(units=1), DriveStrengthLowPower(lp_variant=0), DriveStrengthMinimum(), DriveStrengthNumeric(units=2)]
+ [TransistorSizeNumeric(units=1), TransistorSizeLowPower(lp_variant=0), TransistorSizeMinimum(), TransistorSizeNumeric(units=2)]
>>> l.sort()
>>> l
- [DriveStrengthNumeric(units=1), DriveStrengthNumeric(units=2), DriveStrengthLowPower(lp_variant=0), DriveStrengthMinimum()]
+ [TransistorSizeNumeric(units=1), TransistorSizeNumeric(units=2), TransistorSizeLowPower(lp_variant=0), TransistorSizeMinimum()]
"""
@abc.abstractmethod
@@ -71,10 +71,10 @@
raise InvalidSuffixError("\n".join(msg))
def __str__(self):
- return "drive strength {}".format(self.describe())
+ return "transistors with size {}".format(self.describe())
def _cmp(self, op, o):
- if not isinstance(o, DriveStrength):
+ if not isinstance(o, TransistorSize):
return False
return op(self.suffix, o.suffix)
@@ -100,33 +100,33 @@
@dataclass_json
@dataclass(frozen=True)
-class DriveStrengthNumeric(DriveStrength):
+class TransistorSizeNumeric(TransistorSize):
"""
- >>> s1 = DriveStrengthNumeric.from_suffix("_1")
- >>> s2 = DriveStrengthNumeric.from_suffix("_2")
- >>> s3 = DriveStrengthNumeric.from_suffix("_3")
- >>> DriveStrengthNumeric.from_suffix("_-1")
+ >>> s1 = TransistorSizeNumeric.from_suffix("_1")
+ >>> s2 = TransistorSizeNumeric.from_suffix("_2")
+ >>> s3 = TransistorSizeNumeric.from_suffix("_3")
+ >>> TransistorSizeNumeric.from_suffix("_-1")
Traceback (most recent call last):
...
InvalidSuffixError: Invalid suffix: _-1
>>> s1
- DriveStrengthNumeric(units=1)
+ TransistorSizeNumeric(units=1)
>>> s2
- DriveStrengthNumeric(units=2)
+ TransistorSizeNumeric(units=2)
>>> s3
- DriveStrengthNumeric(units=3)
+ TransistorSizeNumeric(units=3)
>>> str(s1)
- 'drive strength 1 units'
+ 'transistors with size of 1 units'
>>> str(s2)
- 'drive strength 2 units'
+ 'transistors with size of 2 units'
>>> str(s3)
- 'drive strength 3 units (invalid?)'
+ 'transistors with size of 3 units (invalid?)'
>>> s1.describe()
- '1 units'
+ 'of 1 units'
>>> s2.describe()
- '2 units'
+ 'of 2 units'
>>> s3.describe()
- '3 units (invalid?)'
+ 'of 3 units (invalid?)'
>>> s1.suffix
'_1'
>>> s2.suffix
@@ -136,14 +136,14 @@
"""
units: int
- VALID_UNIT_VALUES = (0, 1, 2, 4)
+ VALID_UNIT_VALUES = (0, 1, 2, 4, 8, 6, 12, 14, 16, 20, 32)
def describe(self):
suffix = ""
if self.units not in self.VALID_UNIT_VALUES:
suffix = " (invalid?)"
- return "{} units{}".format(self.units, suffix)
+ return "of {} units{}".format(self.units, suffix)
@property
def suffix(self):
@@ -161,33 +161,33 @@
@dataclass_json
@dataclass(frozen=True)
-class DriveStrengthLowPower(DriveStrength):
+class TransistorSizeLowPower(TransistorSize):
"""
- >>> lp = DriveStrengthLowPower.from_suffix("_lp")
- >>> lp2 = DriveStrengthLowPower.from_suffix("_lp2")
- >>> lp3 = DriveStrengthLowPower.from_suffix("_lp3")
- >>> DriveStrengthLowPower.from_suffix("_ld")
+ >>> lp = TransistorSizeLowPower.from_suffix("_lp")
+ >>> lp2 = TransistorSizeLowPower.from_suffix("_lp2")
+ >>> lp3 = TransistorSizeLowPower.from_suffix("_lp3")
+ >>> TransistorSizeLowPower.from_suffix("_ld")
Traceback (most recent call last):
...
InvalidSuffixError: Invalid suffix: _ld
>>> lp
- DriveStrengthLowPower(lp_variant=0)
+ TransistorSizeLowPower(lp_variant=0)
>>> lp2
- DriveStrengthLowPower(lp_variant=1)
+ TransistorSizeLowPower(lp_variant=1)
>>> lp3
- DriveStrengthLowPower(lp_variant=2)
+ TransistorSizeLowPower(lp_variant=2)
>>> str(lp)
- 'drive strength Low Power'
+ 'transistors with size for low power'
>>> str(lp2)
- 'drive strength Low Power (alternative)'
+ 'transistors with size for low power (alternative)'
>>> str(lp3)
- 'drive strength Low Power (extra alternative 0)'
+ 'transistors with size for low power (extra alternative 0)'
>>> lp.describe()
- 'Low Power'
+ 'for low power'
>>> lp2.describe()
- 'Low Power (alternative)'
+ 'for low power (alternative)'
>>> lp3.describe()
- 'Low Power (extra alternative 0)'
+ 'for low power (extra alternative 0)'
>>> lp.suffix
'_lp'
>>> lp2.suffix
@@ -205,7 +205,7 @@
else:
assert self.lp_variant >= 2, self.lp_variant
suffix = " (extra alternative {})".format(self.lp_variant-2)
- return "Low Power"+suffix
+ return "for low power"+suffix
@property
def suffix(self):
@@ -232,24 +232,24 @@
return cls(i-1)
-class DriveStrengthMinimum(DriveStrength):
+class TransistorSizeMinimum(TransistorSize):
"""
- >>> m = DriveStrengthMinimum.from_suffix("_m")
- >>> DriveStrengthMinimum.from_suffix("_m2")
+ >>> m = TransistorSizeMinimum.from_suffix("_m")
+ >>> TransistorSizeMinimum.from_suffix("_m2")
Traceback (most recent call last):
...
InvalidSuffixError: Invalid suffix: _m2
>>> m
- DriveStrengthMinimum()
+ TransistorSizeMinimum()
>>> str(m)
- 'drive strength minimum'
+ 'transistors with size minimum'
>>> m.describe()
'minimum'
>>> m.suffix
'_m'
- >>> m1 = DriveStrengthMinimum()
- >>> m2 = DriveStrengthMinimum()
+ >>> m1 = TransistorSizeMinimum()
+ >>> m2 = TransistorSizeMinimum()
>>> assert m1 is m2
"""
_object = None
@@ -259,7 +259,7 @@
return cls._object
def __repr__(self):
- return "DriveStrengthMinimum()"
+ return "TransistorSizeMinimum()"
def describe(self):
return "minimum"
@@ -281,7 +281,7 @@
return {'minimum': None}
-DriveStrengthMinimum._object = DriveStrengthMinimum()
+TransistorSizeMinimum._object = TransistorSizeMinimum()
if __name__ == "__main__":