hwt/hdl/types/bitValFunctions.py
def bitsCmp(self, other, op, evalFn=None):
    """
    :attention: If other is Bool signal convert this to bool (not ideal,
        due VHDL event operator)
    """
    other = toHVal(other)
    t = self._dtype
    ot = other._dtype

    iamVal = isinstance(self, Value)
    otherIsVal = isinstance(other, Value)

    if evalFn is None:
        evalFn = op._evalFn

    if iamVal and otherIsVal:
        if ot == BOOL:
            self = self._auto_cast(BOOL)
        elif t == ot:
            pass
        elif isinstance(ot, Integer):
            other = other._auto_cast(t)
        else:
            raise TypeError("Values of types (%r, %r) are not comparable" % (
                self._dtype, other._dtype))

        return bitsCmp__val(self, other, op, evalFn)
    else:
        if ot == BOOL:
            self = self._auto_cast(BOOL)
        elif t == ot:
            pass
        elif isinstance(ot, Integer):
            other = other._auto_cast(self._dtype)
        else:
            raise TypeError("Values of types (%r, %r) are not comparable" % (
                self._dtype, other._dtype))

        # try to reduce useless cmp
        res = None
        if otherIsVal and other._isFullVld():
            res = bitsCmp_detect_useless_cmp(self, other, op)
        elif iamVal and self._isFullVld():
            res = bitsCmp_detect_useless_cmp(other, self, CMP_OP_REVERSE[op])

        if res is None:
            pass
        elif isinstance(res, Value):
            return res
        else:
            assert res == AllOps.EQ, res
            op = res

        return Operator.withRes(op, [self, other], BOOL)
def bitsCmp(self, other, op, evalFn=None):
    """
    :attention: If other is Bool signal convert this to bool (not ideal,
        due VHDL event operator)
    """
    other = toHVal(other)
    t = self._dtype
    ot = other._dtype

    iamVal = isinstance(self, Value)
    otherIsVal = isinstance(other, Value)

    if evalFn is None:
        evalFn = op._evalFn

    if iamVal and otherIsVal:
        if ot == BOOL:
            self = self._auto_cast(BOOL)
        elif t == ot:
            pass
        elif isinstance(ot, Integer):
            other = other._auto_cast(t)
        else:
            raise TypeError("Values of types (%r, %r) are not comparable" % (
                self._dtype, other._dtype))

        return bitsCmp__val(self, other, op, evalFn)
    else:
        if ot == BOOL:
            self = self._auto_cast(BOOL)
        elif t == ot:
            pass
        elif isinstance(ot, Integer):
            other = other._auto_cast(self._dtype)
        else:
            raise TypeError("Values of types (%r, %r) are not comparable" % (
                self._dtype, other._dtype))

        # try to reduce useless cmp
        res = None
        if otherIsVal and other._isFullVld():
            res = bitsCmp_detect_useless_cmp(self, other, op)
        elif iamVal and self._isFullVld():
            res = bitsCmp_detect_useless_cmp(other, self, CMP_OP_REVERSE[op])

        if res is None:
            pass
        elif isinstance(res, Value):
            return res
        else:
            assert res == AllOps.EQ, res
            op = res

        return Operator.withRes(op, [self, other], BOOL)
def bitsCmp ( self , other , op , evalFn = None ) : other = toHVal ( other ) t = self . _dtype ot = other . _dtype iamVal = isinstance ( self , Value ) otherIsVal = isinstance ( other , Value ) if evalFn is None : evalFn = op . _evalFn if iamVal and otherIsVal : if ot == BOOL : self = self . _auto_cast ( BOOL ) elif t == ot : pass elif isinstance ( ot , Integer ) : other = other . _auto_cast ( t ) else : raise TypeError ( "Values of types (%r, %r) are not comparable" % ( self . _dtype , other . _dtype ) ) return bitsCmp__val ( self , other , op , evalFn ) else : if ot == BOOL : self = self . _auto_cast ( BOOL ) elif t == ot : pass elif isinstance ( ot , Integer ) : other = other . _auto_cast ( self . _dtype ) else : raise TypeError ( "Values of types (%r, %r) are not comparable" % ( self . _dtype , other . _dtype ) ) # try to reduce useless cmp res = None if otherIsVal and other . _isFullVld ( ) : res = bitsCmp_detect_useless_cmp ( self , other , op ) elif iamVal and self . _isFullVld ( ) : res = bitsCmp_detect_useless_cmp ( other , self , CMP_OP_REVERSE [ op ] ) if res is None : pass elif isinstance ( res , Value ) : return res else : assert res == AllOps . EQ , res op = res return Operator . withRes ( op , [ self , other ] , BOOL )
:attention: If other is Bool signal convert this to bool (not ideal,
        due VHDL event operator)
: attention : If other is Bool signal convert this to bool ( not ideal due VHDL event operator )