def __post_init__(self): super().__post_init__() self.typ = U.w(len(self.bits)) cmp = "".join(["1" if c == "1" else "0" for c in self.bits]) mask = "".join(["0" if c == "?" else "1" for c in self.bits]) self.cmp = self.typ(int(cmp, 2)) self.mask = self.typ(int(mask, 2))
def indexTransform(self, index): from pyhcl.dsl.cdatatype import U if isinstance(index, int): l0i = index // self.l1 l1i = index % self.l1 else: l0i = index / U(self.l1) l1i = index % U(self.l1) tf = get_attr(self.ref, "indexTransform") if tf is not None: newIndex = Index(tf(l0i), l1i) else: newIndex = Index(Index(self.ref, l0i), l1i) return newIndex
def indexTransform(self, index): from pyhcl.dsl.cdatatype import U if isinstance(index, int): idx = self.typ.size - index - 1 else: idx = U(self.typ.size - 1) - index tf = get_attr(self.ref, "indexTransform") if tf is not None: newIndex = tf(idx) else: newIndex = Index(self.ref, idx) return newIndex
def __post_init__(self): super().__post_init__() from pyhcl.dsl.cdatatype import U self.typ = U.w()