Skip to content

Commit 21cc8c2

Browse files
committed
Add OpenframePackageDef to available packages
1 parent 7ea1e54 commit 21cc8c2

File tree

6 files changed

+23
-19
lines changed

6 files changed

+23
-19
lines changed

chipflow_lib/_appresponse.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def _serialize(self):
1313
serialize_aliases = dict()
1414

1515
# Gather fields that should omit if None
16-
for name, field_info in self.__class__.model_fields.items():
16+
for name, field_info in self.model_fields.items():
1717
if any(
1818
isinstance(metadata, OmitIfNone) for metadata in field_info.metadata
1919
):
@@ -30,9 +30,9 @@ def _serialize(self):
3030
serialize_key = serialize_aliases.get(name, name)
3131

3232
# Run Annotated PlainSerializer
33-
for metadata in self.__class__.model_fields[name].metadata:
33+
for metadata in self.model_fields[name].metadata:
3434
if isinstance(metadata, PlainSerializer):
35-
value = metadata.func(value) # type: ignore
35+
value = metadata.func(value)
3636

3737
serialized[serialize_key] = value
3838

chipflow_lib/platforms/_openframe.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def model_post_init(self, __context):
106106

107107

108108
@property
109-
def core_power(self) -> List[PowerPins]:
109+
def _core_power(self) -> List[PowerPins]:
110110
pps = []
111111

112112
for power, ground in OF_CORE_POWER:
@@ -118,7 +118,7 @@ def core_power(self) -> List[PowerPins]:
118118
@property
119119
def bringup_pins(self) -> BringupPins:
120120
return BringupPins(
121-
core_power=self.core_power,
121+
core_power=self._core_power,
122122
core_clock=OF_CLOCK_PIN,
123123
core_reset=OF_RESET_PIN,
124124
core_heartbeat=OF_HEARTBEAT_PIN,
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from .utils import QuadPackageDef, BareDiePackageDef
1+
from .utils import QuadPackageDef, BareDiePackageDef, GAPackageDef, Package
22
from ._openframe import OpenframePackageDef
33

4-
54
# Add any new package types to both PACKAGE_DEFINITIONS and the PackageDef union
65
PACKAGE_DEFINITIONS = {
76
"pga144": QuadPackageDef(name="pga144", width=36, height=36),
87
"cf20": BareDiePackageDef(name="cf20", width=7, height=3),
98
"openframe": OpenframePackageDef()
109
}
1110

11+
Package.model_rebuild()

chipflow_lib/platforms/silicon.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,14 +279,14 @@ def instantiate_ports(self, m: Module):
279279
self._ports[port.port_name] = SiliconPlatformPort(component, name, port)
280280

281281
for clock in pinlock.port_map.get_clocks():
282-
domain = name=clock.iomodel['clock_domain_o']
282+
domain = name=clock.iomodel['clock_domain']
283283
setattr(m.domains, domain, ClockDomain(name=domain))
284284
clk_buffer = io.Buffer("i", self._ports[clock.port_name])
285285
setattr(m.submodules, "clk_buffer_" + domain, clk_buffer)
286286
m.d.comb += ClockSignal().eq(clk_buffer.i) #type: ignore[reportAttributeAccessIssue]
287287

288288
for reset in pinlock.port_map.get_resets():
289-
domain = name=clock.iomodel['clock_domain_o']
289+
domain = name=clock.iomodel['clock_domain']
290290
rst_buffer = io.Buffer("i", self._ports[reset.port_name])
291291
setattr(m.submodules, reset.port_name, rst_buffer)
292292
setattr(m.submodules, reset.port_name + "_sync", FFSynchronizer(rst_buffer.i, ResetSignal())) #type: ignore[reportAttributeAccessIssue]

chipflow_lib/platforms/sim.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,17 @@ def instantiate_ports(self, m: Module):
8181
self._ports[port.port_name] = io.SimulationPort(port.direction, port.width, invert=invert, name=f"{component}-{name}")
8282

8383
for clock in pinlock.port_map.get_clocks():
84-
assert 'clock_domain_o' in clock.iomodel
85-
domain = clock.iomodel['clock_domain_o']
84+
assert 'clock_domain' in clock.iomodel
85+
domain = clock.iomodel['clock_domain']
8686
logger.debug(f"Instantiating clock buffer for {clock.port_name}, domain {domain}")
8787
setattr(m.domains, domain, ClockDomain(name=domain))
8888
clk_buffer = io.Buffer(clock.direction, self._ports[clock.port_name])
8989
setattr(m.submodules, "clk_buffer_" + clock.port_name, clk_buffer)
9090
m.d.comb += ClockSignal().eq(clk_buffer.i) # type: ignore[reportAttributeAccessIssue]
9191

9292
for reset in pinlock.port_map.get_resets():
93-
assert 'clock_domain_o' in reset.iomodel
94-
domain = reset.iomodel['clock_domain_o']
93+
assert 'clock_domain' in reset.iomodel
94+
domain = reset.iomodel['clock_domain']
9595
logger.debug(f"Instantiating reset synchronizer for {reset.port_name}, domain {domain}")
9696
rst_buffer = io.Buffer(reset.direction, self._ports[clock.port_name])
9797
setattr(m.submodules, reset.port_name, rst_buffer)

chipflow_lib/platforms/utils.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
if TYPE_CHECKING:
3636
from ..config_models import Config
37+
from ._openframe import OpenframePackageDef
3738

3839

3940
logger = logging.getLogger(__name__)
@@ -334,12 +335,13 @@ class BringupPins:
334335
core_clock: Pin
335336
core_reset: Pin
336337
core_heartbeat: Pin
337-
core_jtag: JTAGPins
338+
core_jtag: Optional[JTAGPins] = None
338339

339340
def to_set(self) -> Set[Pin]:
341+
jtag = self.core_jtag.to_set() if self.core_jtag else set()
340342
return {p for pp in self.core_power for p in asdict(pp).values()} | \
341343
set([self.core_clock, self.core_reset, self.core_heartbeat]) | \
342-
self.core_jtag.to_set()
344+
jtag
343345

344346

345347
class _Side(IntEnum):
@@ -378,8 +380,10 @@ def direction(self):
378380
@property
379381
def invert(self) -> Iterable[bool] | None:
380382
if 'invert' in self.iomodel:
381-
assert type(self.iomodel['invert']) is tuple
382-
return self.iomodel['invert']
383+
if type(self.iomodel['invert']) is bool:
384+
return (self.iomodel['invert'],)
385+
else:
386+
return self.iomodel['invert']
383387
else:
384388
return None
385389

@@ -513,7 +517,7 @@ def _allocate_pins(name: str, member: Dict[str, Any], pins: List[Pin], port_name
513517
Interface = Dict[str, Port]
514518
Component = Dict[str, Interface]
515519

516-
class PortMap(AppResponseModel):
520+
class PortMap(pydantic.BaseModel):
517521
ports: Dict[str, Component] = {}
518522

519523
def _add_port(self, component: str, interface: str, port_name: str, port: Port):
@@ -571,7 +575,7 @@ class LockFile(pydantic.BaseModel):
571575
metadata: dict
572576

573577

574-
PackageDef = Union['GAPackageDef', 'QuadPackageDef', 'BareDiePackageDef']
578+
PackageDef = Union['GAPackageDef', 'QuadPackageDef', 'BareDiePackageDef', 'OpenframePackageDef']
575579

576580
class Package(pydantic.BaseModel):
577581
"""

0 commit comments

Comments
 (0)