Sign extension during comparative operation

In reply to nachumk:

You should be using the 1800-2012 LRM, and this is explained in _11.8.2 Steps for evaluating an expression
_

Your expression is syntactically equivalent to

4’sb0001 < -( 3’sb100 )

And the rules state that you need to propagate the size relational expression back down to the
context-determined operands of the expression BEFORE APPLYING ANY OPERATORS

4’sb0001 < -( 4’(3’sb100) ) // sign extend operands first.
4’sb0001 < -( 4’sb1100) )

4’sb0001 < 4’sb0100) // then apply negation
1’b1 // result

What the cast does is prevent the propagation of the context so that -3’sd4 is evaluated in a self determined context.

I would go back an re-think why you need to be comparing two different sized, signed operands.