Guest
In sims using either Modelsim/NCsim, the following logic always
results in an 'X' output, regardless of the reset state, due to the
scope of analysis being too small:
z = (a AND b) OR c
c = NOT a
b = reset
a = 'X'
(and thus c = NOT X, still X but the opposite state of a)
When reset = '1', the output should always be forced to '1'.
Substitution of values shows that the logic above is correct, with the
value of input a not mattering if b = '1'. Using equation
substitution, the logic reduces to:
z = (a AND b) OR (a')
= (a OR a') AND (b OR a')
= (1) AND (b OR a')
= b OR a'
Where if b = '1', z = '1' (even if a' = 'X')
But the sim tools don't see things this way. Their scope doesn't
appear to be large enough to see that there is a relationship between
c and a, and therefore z is always 'X' no matter what the state of
input b.
How do we get around this?
Thank you,
results in an 'X' output, regardless of the reset state, due to the
scope of analysis being too small:
z = (a AND b) OR c
c = NOT a
b = reset
a = 'X'
(and thus c = NOT X, still X but the opposite state of a)
When reset = '1', the output should always be forced to '1'.
Substitution of values shows that the logic above is correct, with the
value of input a not mattering if b = '1'. Using equation
substitution, the logic reduces to:
z = (a AND b) OR (a')
= (a OR a') AND (b OR a')
= (1) AND (b OR a')
= b OR a'
Where if b = '1', z = '1' (even if a' = 'X')
But the sim tools don't see things this way. Their scope doesn't
appear to be large enough to see that there is a relationship between
c and a, and therefore z is always 'X' no matter what the state of
input b.
How do we get around this?
Thank you,