I faced this issues while debugging GLS simulation.
Mux is having input A,B,S(sel), Z(output)
B=0 (always)
A= 0(20ns),1(20ns),0(20ns)
S = X throughout simulation
What should be output here? (This sounds very simple right, Think you may be correct or may not be)
I will post answer for this soon.
Since the select line is X ,Will output will be X ?
ReplyDeleteAs per me output should be
ReplyDelete0 for A = 0 & B = 0 at 0ns
x for A = 1 & B = 0 at 20ns
0 for A = 0 & B = 0 at 40ns
It is because of Mux boolean logic
OUT = A&~S | B&S.
Which indicates that if A=B then OUT is always equals to A(=B) in case of S = X.
However in GLS there can be permanent X if foundry Mux model is written in UDP and UDP behavior is defined such as output is always assigned X if S is X.
Option 1 :
ReplyDeleteOutput should be X since S = x and eqation OUT = A& ~S | B & S
This complete option1 is based on assumption there is OR in the mux and which propogates X at output.
Option2:
Mux can be created without using OR, This will ensure that X is not propogated
I mean assume X = (A & ~S) , Y = (B & S)
O = X + Y
~O = ~(X+Y)
~O = ~X & ~Y
So effectively my mux library was not relying on OR gate and hence I did not see continuous X throughtout simulation.
1>since A= 0 from (ons to20ns) ,Output O = 0 here
2> During time (20ns to 40s) Output O = x since A=1 and S = X effectivel A & ~s = X, and henace 0 =X
3> During 40ns to 60 ns 0 = 0 again.