|
34 | 34 |
|
35 | 35 | if TYPE_CHECKING: |
36 | 36 | from ..config_models import Config |
| 37 | + from ._openframe import OpenframePackageDef |
37 | 38 |
|
38 | 39 |
|
39 | 40 | logger = logging.getLogger(__name__) |
@@ -334,12 +335,13 @@ class BringupPins: |
334 | 335 | core_clock: Pin |
335 | 336 | core_reset: Pin |
336 | 337 | core_heartbeat: Pin |
337 | | - core_jtag: JTAGPins |
| 338 | + core_jtag: Optional[JTAGPins] = None |
338 | 339 |
|
339 | 340 | def to_set(self) -> Set[Pin]: |
| 341 | + jtag = self.core_jtag.to_set() if self.core_jtag else set() |
340 | 342 | return {p for pp in self.core_power for p in asdict(pp).values()} | \ |
341 | 343 | set([self.core_clock, self.core_reset, self.core_heartbeat]) | \ |
342 | | - self.core_jtag.to_set() |
| 344 | + jtag |
343 | 345 |
|
344 | 346 |
|
345 | 347 | class _Side(IntEnum): |
@@ -378,8 +380,10 @@ def direction(self): |
378 | 380 | @property |
379 | 381 | def invert(self) -> Iterable[bool] | None: |
380 | 382 | 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'] |
383 | 387 | else: |
384 | 388 | return None |
385 | 389 |
|
@@ -513,7 +517,7 @@ def _allocate_pins(name: str, member: Dict[str, Any], pins: List[Pin], port_name |
513 | 517 | Interface = Dict[str, Port] |
514 | 518 | Component = Dict[str, Interface] |
515 | 519 |
|
516 | | -class PortMap(AppResponseModel): |
| 520 | +class PortMap(pydantic.BaseModel): |
517 | 521 | ports: Dict[str, Component] = {} |
518 | 522 |
|
519 | 523 | def _add_port(self, component: str, interface: str, port_name: str, port: Port): |
@@ -571,7 +575,7 @@ class LockFile(pydantic.BaseModel): |
571 | 575 | metadata: dict |
572 | 576 |
|
573 | 577 |
|
574 | | -PackageDef = Union['GAPackageDef', 'QuadPackageDef', 'BareDiePackageDef'] |
| 578 | +PackageDef = Union['GAPackageDef', 'QuadPackageDef', 'BareDiePackageDef', 'OpenframePackageDef'] |
575 | 579 |
|
576 | 580 | class Package(pydantic.BaseModel): |
577 | 581 | """ |
|
0 commit comments