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.