示例#1
0
    def __init__(self, val=None):
        """ Construct a signal.

        val -- initial value

        """
        self._init = deepcopy(val)
        self._val = deepcopy(val)
        self._next = deepcopy(val)
        self._min = self._max = None
        self._name = self._driven = None
        self._read = self._used = False
        self._inList = False
        self._nrbits = 0
        self._numeric = True
        self._printVcd = self._printVcdStr
        if isinstance(val, bool):
            self._type = bool
            self._setNextVal = self._setNextBool
            self._printVcd = self._printVcdBit
            self._nrbits = 1
        elif isinstance(val, integer_types):
            self._type = integer_types
            self._setNextVal = self._setNextInt
        elif isinstance(val, fixbv):
            self._type = fixbv
            if val._val is None:
                raise ValueError("fixbv has not been initialized correctly")
            self._W = val._W
            self._nrbits = val._nrbits
            self._setNextVal = self._setNextFixbv
            if self._nrbits:
                self._printVcd = self._printVcdVec
            else:
                self._printVcd = self._printVcdHex
        elif isinstance(val, intbv):
            self._type = intbv
            self._min = val._min
            self._max = val._max
            self._nrbits = val._nrbits
            self._setNextVal = self._setNextIntbv
            if self._nrbits:
                self._printVcd = self._printVcdVec
            else:
                self._printVcd = self._printVcdHex
        else:
            self._type = type(val)
            if isinstance(val, EnumItemType):
                self._setNextVal = self._setNextNonmutable
            else:
                self._setNextVal = self._setNextMutable
            if hasattr(val, '_nrbits'):
                self._nrbits = val._nrbits
        self._eventWaiters = _WaiterList()
        self._posedgeWaiters = _PosedgeWaiterList(self)
        self._negedgeWaiters = _NegedgeWaiterList(self)
        self._code = ""
        self._slicesigs = []
        self._tracing = 0
        _signals.append(self)
示例#2
0
文件: _Signal.py 项目: Cadavis8/myhdl
    def __init__(self, val=None):
        """ Construct a signal.

        val -- initial value
        
        """
        self._init = deepcopy(val)
        self._val = deepcopy(val)
        self._next = deepcopy(val)
        self._min = self._max = None
        self._name = self._read = self._driven = None
        self._used = False
        self._inList = False
        self._nrbits = 0
        self._numeric = True
        self._printVcd = self._printVcdStr
        if isinstance(val, bool):
            self._type = bool
            self._setNextVal = self._setNextBool
            self._printVcd = self._printVcdBit
            self._nrbits = 1
        elif isinstance(val, integer_types):
            self._type = integer_types
            self._setNextVal = self._setNextInt
        elif isinstance(val, intbv):
            self._type = intbv
            self._min = val._min
            self._max = val._max
            self._nrbits = val._nrbits
            self._setNextVal = self._setNextIntbv
            if self._nrbits:
                self._printVcd = self._printVcdVec
            else:
                self._printVcd = self._printVcdHex
        else:
            self._type = type(val)
            if isinstance(val, EnumItemType):
                self._setNextVal = self._setNextNonmutable
            else:
                self._setNextVal = self._setNextMutable
            if hasattr(val, '_nrbits'):
                self._nrbits = val._nrbits
        self._eventWaiters = _WaiterList()
        self._posedgeWaiters = _PosedgeWaiterList(self)
        self._negedgeWaiters = _NegedgeWaiterList(self)
        self._code = ""
        self._slicesigs = []
        self._tracing = 0
        _signals.append(self)
示例#3
0
    def __init__(self, val=None):
        """ Construct a signal.

        val -- initial value
        
        """
        self._next = self._val = self._init = copy(val)
        self._min = self._max = None
        self._name = self._read = self._driven = None
        self._used = False
        self._inList = False
        self._nrbits = 0
        self._printVcd = self._printVcdStr
        if isinstance(val, bool):
            self._type = bool
            self._setNextVal = self._setNextBool
            self._printVcd = self._printVcdBit
            self._nrbits = 1
        elif isinstance(val, (int, long)):
            self._type = (int, long)
            self._setNextVal = self._setNextInt
        elif isinstance(val, intbv):
            self._type = intbv
            self._min = val._min
            self._max = val._max
            self._nrbits = val._nrbits
            self._setNextVal = self._setNextIntbv
            if self._nrbits:
                self._printVcd = self._printVcdVec
            else:
                self._printVcd = self._printVcdHex
        elif val is None:
            self._type = None
            self._setNextVal = self._setNext
        else:
            self._type = type(val)
            self._setNextVal = self._setNextType
            if hasattr(val, '_nrbits'):
                self._nrbits = val._nrbits
        self._eventWaiters = _WaiterList()
        self._posedgeWaiters = _PosedgeWaiterList(self)
        self._negedgeWaiters = _NegedgeWaiterList(self)
        self._code = ""
        self._tracing = 0
        _signals.append(self)
示例#4
0
文件: _Signal.py 项目: myhdl-jb/myhdl
    def __init__(self, val=None):
        """ Construct a signal.

        val -- initial value

        """
        #         print('Signal', repr(val))
        self._init = deepcopy(val)
        self._val = deepcopy(val)
        self._next = deepcopy(val)
        self._min = self._max = None
        self._name = self._read = self._driven = None
        self._namelevel = -1
        self._used = False
        self._inList = False
        self._nrbits = 0
        self._attribute = None
        self._printVcd = self._printVcdStr
        self._suppresswarning = False
        if isinstance(val, bool):
            self._type = bool
            self._setNextVal = self._setNextBool
            self._printVcd = self._printVcdBit
            self._nrbits = 1
        elif isinstance(val, integer_types):
            self._type = integer_types
            self._setNextVal = self._setNextInt
        elif isinstance(val, intbv):
            self._type = intbv
            self._min = val._min
            self._max = val._max
            self._nrbits = val._nrbits
            self._setNextVal = self._setNextIntbv
            if self._nrbits:
                self._printVcd = self._printVcdVec
            else:
                self._printVcd = self._printVcdHex
#         elif val in ('Open', 'Low', 'High'):
#             if val == 'Open':
#                 pass
#             elif val == 'Low':
#                 self._type = bool
#                 self._val = 0
#                 self._printVcd = self._printVcdBit
#                 self._nrbits = 1
#             elif val == 'High':
#                 self._type = bool
#                 self._val = 1
#                 self._printVcd = self._printVcdBit
#                 self._nrbits = 1

#         elif isinstance(val, _Signal):
#             self._type = val._type
#             #differentiate between bool, intbv and others
#             if self._type == bool:
#                 self._setNextVal = self._setNextBool
#                 self._printVcd = self._printVcdBit
#                 self._nrbits = 1
#             elif self._type == intbv:
#                 self._min = val._min
#                 self._max = val._max
#                 self._nrbits = val._nrbits
#                 self._setNextVal = self._setNextIntbv
#                 if self._nrbits:
#                     self._printVcd = self._printVcdVec
#                 else:
#                     self._printVcd = self._printVcdHex
#             else:
#                 # others
#                 raise ValueError( "Don't handle {}".format( val._type ))
        else:
            self._type = type(val)
            if isinstance(val, EnumItemType):
                self._setNextVal = self._setNextNonmutable
                # let's print it in hex or decimal?
                self._printVcd = self._printVcdEnum
            else:
                self._setNextVal = self._setNextMutable
            if hasattr(val, '_nrbits'):
                self._nrbits = val._nrbits
        self._eventWaiters = _WaiterList()
        self._posedgeWaiters = _PosedgeWaiterList(self)
        self._negedgeWaiters = _NegedgeWaiterList(self)
        self._code = ""
        self._slicesigs = []
        self._tracing = 0
        _signals.append(self)