示例#1
0
 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))
示例#2
0
    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
示例#3
0
    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
示例#4
0
 def __post_init__(self):
     super().__post_init__()
     from pyhcl.dsl.cdatatype import U
     self.typ = U.w()