add Elaboratable master
authorJacob Lifshay <programmerjake@gmail.com>
Mon, 22 Apr 2019 01:31:56 +0000 (18:31 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Mon, 22 Apr 2019 01:31:56 +0000 (18:31 -0700)
nmigen/__init__.pyi
nmigen/hdl/ir.pyi

index 14f02272b5a0ad49377bffd599f11f6414732390..76e6d4baf02fc561945ccad72ce4cb5f78100a9b 100644 (file)
@@ -10,6 +10,8 @@ from .hdl.ast import (Value as Value,
                       ClockSignal as ClockSignal,
                       ResetSignal as ResetSignal)
 from .hdl.cd import ClockDomain as ClockDomain
-from .hdl.ir import Fragment as Fragment, Instance as Instance
+from .hdl.ir import (Fragment as Fragment,
+                     Instance as Instance,
+                     Elaboratable as Elaboratable)
 from .hdl.mem import Memory as Memory
 from .hdl.rec import Record as Record
index 6ae482f7a96856fe0b7576c54d304ee616439183..e2321ccda3c3173b562bcd844d7f3f08e0d7b81c 100644 (file)
@@ -2,9 +2,16 @@ from typing import Optional, Generator, Any, Tuple, Iterable, Union
 from .ast import Signal, Statement
 from .cd import ClockDomain
 # noinspection PyProtectedMember
-from .dsl import FSM
+from .dsl import FSM, Module
+from abc import ABCMeta, abstractmethod
 
-__all__ = ["Fragment", "Instance", "DriverConflict"]
+__all__ = ["Fragment", "Instance", "DriverConflict", "Elaboratable"]
+
+
+class Elaboratable(metaclass=ABCMeta):
+    @abstractmethod
+    def elaborate(self, platform: Any) -> Module:
+        ...
 
 
 class DriverConflict(UserWarning):