Source code for elasticai.creator.nn.fixed_point.hard_sigmoid.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.design.design import Design, Port


[docs] class HardSigmoid(Design): def __init__( self, name: str, total_bits: int, frac_bits: int, one: int, zero_threshold: int, one_threshold: int, slope: int, y_intercept: int, ) -> None: super().__init__(name) self._total_bits = total_bits self._frac_bits = frac_bits self._one = one self._zero_threshold = zero_threshold self._one_threshold = one_threshold self._slope = slope self._y_intercept = y_intercept @property def port(self) -> Port: return create_port(x_width=self._total_bits, y_width=self._total_bits)
[docs] def save_to(self, destination: Path) -> None: template = InProjectTemplate( package=module_to_package(self.__module__), file_name="hard_sigmoid.tpl.vhd", parameters=dict( layer_name=self.name, data_width=str(self._total_bits), frac_width=str(self._frac_bits), one=str(self._one), zero_threshold=str(self._zero_threshold), one_threshold=str(self._one_threshold), slope=str(self._slope), y_intercept=str(self._y_intercept), ), ) destination.create_subpath(self.name).as_file(".vhd").write(template)