## Tuesday, August 17, 2010

### GLS simulation X propogation by MUX

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.

1. Since the select line is X ,Will output will be X ?

2. As per me output should be
0 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.

3. Option 1 :
Output 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.