cb22701cf9fba644c808c8d123ee038a1a26bb5a
[nmigen-type-annotations.git] / nmigen / hdl / dsl.pyi
1 from .ast import Statement, ValueOrLiteral, Signal
2 from typing import Iterable, Union, Any, Mapping
3 from contextlib import ContextDecorator
4
5 __all__ = ["Module"]
6
7
8 class _ModuleBuilderProxy:
9 pass
10
11
12 Statements = Union[Statement,
13 Iterable[Statement]]
14
15
16 class _ModuleBuilderDomainExplicit(_ModuleBuilderProxy):
17 def __iadd__(self,
18 assigns: Statements) -> '_ModuleBuilderDomainExplicit':
19 ...
20
21
22 class _ModuleBuilderDomainImplicit(_ModuleBuilderProxy):
23 sync: _ModuleBuilderDomainExplicit
24 comb: _ModuleBuilderDomainExplicit
25
26
27 class _ModuleBuilderRoot:
28 domain: _ModuleBuilderDomainImplicit
29 d: _ModuleBuilderDomainImplicit
30
31
32 class _ValuelessContext:
33 def __enter__(self) -> None:
34 ...
35
36 def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> bool:
37 ...
38
39
40 class FSM:
41 def __init__(self,
42 state: Signal,
43 encoding: Mapping[str, int],
44 decoding: Mapping[int, str]):
45 self.state = state
46 self.encoding = encoding
47 self.decoding = decoding
48
49 def ongoing(self, name: str) -> bool:
50 ...
51
52
53 class Module(_ModuleBuilderRoot):
54 submodules: Any
55
56 def If(self, cond: ValueOrLiteral) -> _ValuelessContext:
57 ...
58
59 def Elif(self, cond: ValueOrLiteral) -> _ValuelessContext:
60 ...
61
62 def Else(self) -> _ValuelessContext:
63 ...
64
65 def Switch(self, test: ValueOrLiteral) -> _ValuelessContext:
66 ...
67
68 def Case(self, value: Union[None, int, bool] = None) -> _ValuelessContext:
69 ...
70
71 def elaborate(self, platform: Any) -> Any:
72 ...