示例#1
0
 def _extslice(self, node):
     value = self.visit(node.value)
     for dim in node.slice.dims:
         lower = (self.visit(dim.lower) if dim.lower is not None else None)
         upper = (self.visit(dim.upper) if dim.upper is not None else None)
         step = (self.visit(dim.step) if dim.step is not None else None)
         lower = vtypes.raw_value(optimize(lower))
         upper = vtypes.raw_value(optimize(upper))
         step = vtypes.raw_value(optimize(step))
         value = value[lower:upper:step]
     return value
示例#2
0
 def _slice(self, node):
     value = self.visit(node.value)
     lower = (self.visit(node.slice.lower)
              if node.slice.lower is not None else None)
     upper = (self.visit(node.slice.upper)
              if node.slice.upper is not None else None)
     step = (self.visit(node.slice.step)
             if node.slice.step is not None else None)
     lower = vtypes.raw_value(optimize(lower))
     upper = vtypes.raw_value(optimize(upper))
     step = vtypes.raw_value(optimize(step))
     return value[lower:upper:step]
示例#3
0
 def _slice(self, node):
     value = self.visit(node.value)
     lower = (self.visit(node.slice.lower)
              if node.slice.lower is not None else None)
     upper = (self.visit(node.slice.upper)
              if node.slice.upper is not None else None)
     step = (self.visit(node.slice.step)
             if node.slice.step is not None else None)
     lower = vtypes.raw_value(optimize(lower))
     upper = vtypes.raw_value(optimize(upper))
     step = vtypes.raw_value(optimize(step))
     return value[lower:upper:step]
示例#4
0
 def _extslice(self, node):
     value = self.visit(node.value)
     for dim in node.slice.dims:
         lower = (self.visit(dim.lower)
                  if dim.lower is not None else None)
         upper = (self.visit(dim.upper)
                  if dim.upper is not None else None)
         step = (self.visit(dim.step)
                 if dim.step is not None else None)
         lower = vtypes.raw_value(optimize(lower))
         upper = vtypes.raw_value(optimize(upper))
         step = vtypes.raw_value(optimize(step))
         value = value[lower:upper:step]
     return value
示例#5
0
def FixedConst(fsm, value, point=0, signed=True, raw=False):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    raw = vtypes.raw_value(raw)

    if (isinstance(value, fxd._FixedConstant)
            and value.orig_value is not None):
        value = value.orig_value
    elif isinstance(value, fxd._FixedBase):
        value = fxd.write_adjust(value, point)
        value = vtypes.raw_value(value)
        raw = True
    elif not raw:
        value = vtypes.raw_value(value)

    if not isinstance(value, (int, bool, float)):
        raise TypeError("value must be int, bool, or float")
    if not isinstance(point, int):
        raise TypeError("point must be int")

    return fxd.FixedConst(value, point, signed, raw)
示例#6
0
    def visit_Subscript(self, node):
        if isinstance(node.slice, ast.Slice):
            return self._subscript_slice(node)
        if isinstance(node.slice, ast.ExtSlice):
            return self._subscript_extslice(node)
        if isinstance(node.slice, ast.Index):
            return self._subscript_index(node)

        value = self.visit(node.value)
        index = self.visit(node.slice)
        index = vtypes.raw_value(optimize(index))
        return value[index]
示例#7
0
文件: fixed.py 项目: PyHDI/veriloggen
def FixedConst(fsm, value, point=0, signed=True, raw=False):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    raw = vtypes.raw_value(raw)

    if (isinstance(value, fxd._FixedConstant) and
            value.orig_value is not None):
        value = value.orig_value
    elif isinstance(value, fxd._FixedBase):
        value = fxd.write_adjust(value, point)
        value = vtypes.raw_value(value)
        raw = True
    elif not raw:
        value = vtypes.raw_value(value)

    if not isinstance(value, (int, bool, float)):
        raise TypeError("value must be int, bool, or float")
    if not isinstance(point, int):
        raise TypeError("point must be int")

    return fxd.FixedConst(value, point, signed, raw)
示例#8
0
def fixed_to_real(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    return fxd.fixed_to_real(value, point, signed)
示例#9
0
def fixed_to_int(fsm, value, point):
    point = vtypes.raw_value(point)
    return fxd.fixed_to_int(value, point)
示例#10
0
def reinterpret_cast_to_fixed(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    return fxd.reinterpret_cast_to_fixed(value, point, signed)
示例#11
0
def cast_to_fixed(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    cv = fxd.write_adjust(value, point)
    return fxd.reinterpret_cast_to_fixed(cv, point, signed)
示例#12
0
文件: fixed.py 项目: PyHDI/veriloggen
def cast_to_fixed(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    cv = fxd.write_adjust(value, point)
    return fxd.reinterpret_cast_to_fixed(cv, point, signed)
示例#13
0
 def _index(self, node):
     value = self.visit(node.value)
     index = self.visit(node.slice.value)
     index = vtypes.raw_value(optimize(index))
     return value[index]
示例#14
0
文件: fixed.py 项目: PyHDI/veriloggen
def fixed_to_real(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    return fxd.fixed_to_real(value, point, signed)
示例#15
0
文件: fixed.py 项目: PyHDI/veriloggen
def fixed_to_int(fsm, value, point):
    point = vtypes.raw_value(point)
    return fxd.fixed_to_int(value, point)
示例#16
0
文件: fixed.py 项目: PyHDI/veriloggen
def reinterpret_cast_to_fixed(fsm, value, point, signed=True):
    point = vtypes.raw_value(point)
    signed = vtypes.raw_value(signed)
    return fxd.reinterpret_cast_to_fixed(value, point, signed)
示例#17
0
 def _index(self, node):
     value = self.visit(node.value)
     index = self.visit(node.slice.value)
     index = vtypes.raw_value(optimize(index))
     return value[index]
示例#18
0
def FixedConst(fsm, value, point=0, signed=True, raw=False):
    point = vtypes.raw_value(point)
    return fixed.FixedConst(value, point, signed, raw)