1 from typing import Optional, Generator, Any, Tuple, Iterable, Union, List
2 from .ast import Signal, Statement
3 from .cd import ClockDomain
6 __all__ = ["Fragment", "Instance", "DriverConflict"]
9 class DriverConflict(UserWarning):
15 def get(obj: Any, platform: Any) -> 'Fragment':
18 def add_ports(self, *ports: Any, dir: str) -> None:
22 dir: Optional[str] = None) -> Generator[Signal, None, None]:
26 signal: Signal, domain: Optional[str] = None) -> None:
29 def iter_drivers(self) -> Generator[Tuple[Optional[str], Signal],
33 def iter_comb(self) -> Generator[Signal, None, None]:
36 def iter_sync(self) -> Generator[Tuple[str, Signal], None, None]:
39 def iter_signals(self) -> Iterable[Signal]:
43 *domains: Union[Iterable[ClockDomain],
44 ClockDomain]) -> None:
47 def iter_domains(self) -> Generator[str, None, None]:
50 def add_statements(self,
51 *stmts: Union[Iterable[Statement],
55 def add_subfragment(self,
56 subfragment: 'Fragment',
57 name: Optional[str] = None) -> None:
60 def find_subfragment(self, name_or_index: Union[int, str]) -> 'Fragment':
63 def find_generated(self, *path: Union[int, str]) -> FSM:
66 def elaborate(self, platform: Any) -> 'Fragment':
70 ports: Iterable[Signal] = (),
71 ensure_sync_exists: bool = True) -> 'Fragment':
75 class Instance(Fragment):
76 def __init__(self, type: str, **kwargs: Any):