b62b8f296d2df8fa579497a7f54685ee70f58345
[nmigen-type-annotations.git] / nmigen / hdl / ir.pyi
1 from typing import Optional, Generator, Any, Tuple, Iterable, Union, List
2 from .ast import Signal, Statement
3 from .cd import ClockDomain
4 from .dsl import FSM
5
6 __all__ = ["Fragment", "Instance", "DriverConflict"]
7
8
9 class DriverConflict(UserWarning):
10 pass
11
12
13 class Fragment:
14 @staticmethod
15 def get(obj: Any, platform: Any) -> 'Fragment':
16 ...
17
18 def add_ports(self, *ports: Any, dir: str) -> None:
19 ...
20
21 def iter_ports(self,
22 dir: Optional[str] = None) -> Generator[Signal, None, None]:
23 ...
24
25 def add_driver(self,
26 signal: Signal, domain: Optional[str] = None) -> None:
27 ...
28
29 def iter_drivers(self) -> Generator[Tuple[Optional[str], Signal],
30 None, None]:
31 ...
32
33 def iter_comb(self) -> Generator[Signal, None, None]:
34 ...
35
36 def iter_sync(self) -> Generator[Tuple[str, Signal], None, None]:
37 ...
38
39 def iter_signals(self) -> Iterable[Signal]:
40 ...
41
42 def add_domains(self,
43 *domains: Union[Iterable[ClockDomain],
44 ClockDomain]) -> None:
45 ...
46
47 def iter_domains(self) -> Generator[str, None, None]:
48 ...
49
50 def add_statements(self,
51 *stmts: Union[Iterable[Statement],
52 Statement]) -> None:
53 ...
54
55 def add_subfragment(self,
56 subfragment: 'Fragment',
57 name: Optional[str] = None) -> None:
58 ...
59
60 def find_subfragment(self, name_or_index: Union[int, str]) -> 'Fragment':
61 ...
62
63 def find_generated(self, *path: Union[int, str]) -> FSM:
64 ...
65
66 def elaborate(self, platform: Any) -> 'Fragment':
67 ...
68
69 def prepare(self,
70 ports: Iterable[Signal] = (),
71 ensure_sync_exists: bool = True) -> 'Fragment':
72 ...
73
74
75 class Instance(Fragment):
76 def __init__(self, type: str, **kwargs: Any):
77 ...