Source code for elasticai.creator.nn.identity.design

from elasticai.creator.file_generation.savable import Path
from elasticai.creator.file_generation.template import (
    InProjectTemplate,
    module_to_package,
)
from elasticai.creator.vhdl.auto_wire_protocols.port_definitions import create_port
from elasticai.creator.vhdl.code_generation.addressable import calculate_address_width
from elasticai.creator.vhdl.design.design import Design
from elasticai.creator.vhdl.design.ports import Port


[docs] class BufferedIdentity(Design): def __init__(self, name: str, num_input_features: int, num_input_bits: int) -> None: self._num_input_features = num_input_features self._num_input_bits = num_input_bits self._address_width = calculate_address_width(num_input_features) super().__init__(name) @property def port(self) -> Port: return create_port( x_width=self._num_input_bits, y_width=self._num_input_bits, x_count=self._num_input_features, y_count=self._num_input_features, )
[docs] def save_to(self, destination: Path) -> None: template = InProjectTemplate( package=module_to_package(self.__module__), file_name="buffered_identity.tpl.vhd", parameters=dict( name=self.name, x_address_width=str(self._address_width), y_address_width=str(self._address_width), x_width=str(self._num_input_bits), y_width=str(self._num_input_bits), ), ) destination.create_subpath(self.name).as_file(".vhd").write(template)
[docs] class BufferlessDesign(Design): def __init__(self, name: str, num_input_bits: int): super().__init__(name) self._num_input_bits = num_input_bits @property def port(self) -> Port: return create_port(x_width=self._num_input_bits, y_width=self._num_input_bits)
[docs] def save_to(self, destination: Path) -> None: template = InProjectTemplate( package=module_to_package(self.__module__), file_name="bufferless_identity.tpl.vhd", parameters=dict( name=self.name, x_width=str(self._num_input_bits), y_width=str(self._num_input_bits), ), ) destination.create_subpath(self.name).as_file(".vhd").write(template)