Source code for elasticai.creator.vhdl.system_integrations.firmware_env5
from typing import Protocol
from elasticai.creator.file_generation.savable import Path
from elasticai.creator.vhdl.design.design import Design
from elasticai.creator.vhdl.system_integrations.env5_constraints.env5_constraints import (
ENV5Constraints,
)
from elasticai.creator.vhdl.system_integrations.middleware.middleware import Middleware
from elasticai.creator.vhdl.system_integrations.skeleton.skeleton import (
LSTMSkeleton,
Skeleton,
)
from elasticai.creator.vhdl.system_integrations.top.env5_reconfig_top import (
ENV5ReconfigTop,
)
[docs]
class SkeletonType(Protocol):
[docs]
def save_to(self, destination: Path) -> None: ...
class _FirmwareENv5Base:
def __init__(self, skeleton: SkeletonType) -> None:
self._skeleton = skeleton
def save_to(self, destination: Path) -> None:
def save_srcs(destination: Path):
self._skeleton.save_to(destination.create_subpath("skeleton"))
middleware = Middleware()
middleware.save_to(destination.create_subpath("middleware"))
env5_reconfig_top = ENV5ReconfigTop()
env5_reconfig_top.save_to(destination.create_subpath("env5_reconfig_top"))
def save_constraints(destination: Path):
env5_config = ENV5Constraints()
env5_config.save_to(destination.create_subpath("env5_config"))
srcs = destination.create_subpath("srcs")
constraints = destination.create_subpath("constraints")
save_constraints(constraints)
save_srcs(srcs)
[docs]
class FirmwareENv5(_FirmwareENv5Base):
def __init__(
self,
network: Design,
x_num_values: int,
y_num_values: int,
id: list[int] | int,
skeleton_version: str = "v1",
) -> None:
super().__init__(
skeleton=Skeleton(
network_name=network.name,
port=network.port,
x_num_values=x_num_values,
y_num_values=y_num_values,
id=id,
skeleton_version=skeleton_version,
)
)
[docs]
class LSTMFirmwareENv5(_FirmwareENv5Base):
def __init__(self, network: Design):
super().__init__(skeleton=LSTMSkeleton(network.name))