Пример #1
0
    def __init__(self, layout, name=None):
        self.name = get_obj_var_name(name, "")
        self.layout = layout

        if self.name:
            prefix = self.name + "_"
        else:
            prefix = ""
        for f in self.layout:
            if isinstance(f[1], (int, tuple)):  # cases 1/2
                freset_less = False
                if (len(f) == 4):
                    fname, fsize, fdirection, freset_less = f
                elif (len(f) == 3):
                    fname, fsize, fdirection = f
                else:
                    fname, fsize = f
                finst = Signal(fsize,
                               name=prefix + fname,
                               reset_less=freset_less)
            elif isinstance(f[1], list):  # case 3
                fname, fsublayout = f
                finst = Record(fsublayout, prefix + fname)
            else:
                raise TypeError
            setattr(self, fname, finst)
Пример #2
0
 def __init__(self, value, bits_sign=None, name=None):
     DUID.__init__(self)
     self.value = Constant(value, bits_sign)
     self.name = get_obj_var_name(name)
     if self.name is None:
         raise ValueError(
             "Cannot extract CSR name from code, need to specify.")
Пример #3
0
 def __init__(self, width, depth, init=None, name=None):
     Special.__init__(self)
     self.width = width
     self.depth = depth
     self.ports = []
     self.init = init
     self.name_override = get_obj_var_name(name, "mem")
Пример #4
0
 def __init__(self, size, name):
     DUID.__init__(self)
     self.name = get_obj_var_name(name)
     if self.name is None:
         raise ValueError(
             "Cannot extract CSR name from code, need to specify.")
     self.size = size
Пример #5
0
 def __init__(self, name=None, reset_less=False):
     self.name = _tracer.get_obj_var_name(name)
     if self.name is None:
         raise ValueError("Cannot extract clock domain name from code, need to specify.")
     if self.name.startswith("cd_"):
         self.name = self.name[3:]
     if self.name[0].isdigit():
         raise ValueError("Clock domain name cannot start with a number.")
     self.clk = Signal(name_override=self.name + "_clk")
     if reset_less:
         self.rst = None
     else:
         self.rst = Signal(name_override=self.name + "_rst")
Пример #6
0
 def __init__(self, name=None, reset_less=False):
     self.name = _tracer.get_obj_var_name(name)
     if self.name is None:
         raise ValueError("Cannot extract clock domain name from code, need to specify.")
     if self.name.startswith("cd_"):
         self.name = self.name[3:]
     if self.name[0].isdigit():
         raise ValueError("Clock domain name cannot start with a number.")
     self.clk = Signal(name_override=self.name + "_clk")
     if reset_less:
         self.rst = None
     else:
         self.rst = Signal(name_override=self.name + "_rst")
Пример #7
0
    def __init__(self, layout, name=None):
        self.name = get_obj_var_name(name, "")
        self.layout = layout

        if self.name:
            prefix = self.name + "_"
        else:
            prefix = ""
        for f in self.layout:
            if isinstance(f[1], (int, tuple)):  # cases 1/2
                if(len(f) == 3):
                    fname, fsize, fdirection = f
                else:
                    fname, fsize = f
                finst = Signal(fsize, name=prefix + fname)
            elif isinstance(f[1], list):  # case 3
                fname, fsublayout = f
                finst = Record(fsublayout, prefix + fname)
            else:
                raise TypeError
            setattr(self, fname, finst)
Пример #8
0
 def __init__(self, size, name):
     DUID.__init__(self)
     self.name = get_obj_var_name(name)
     if self.name is None:
         raise ValueError("Cannot extract CSR name from code, need to specify.")
     self.size = size