1 / 18

# Miscellaneous - PowerPoint PPT Presentation

Miscellaneous. EE116B (Winter 2001): Lecture # Miscellaneous-1. Sizing PMOS/NMOS Inverters. Usual single unloaded inverter guideline: make PMOS and NMOS equal strength to make t pLH =t pHL (W/L) p = m n / m p * (W/L) n = e (W/L) n Situation different when inverters are cascaded.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about ' Miscellaneous' - taya

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Miscellaneous

EE116B (Winter 2001): Lecture # Miscellaneous-1

• Usual single unloaded inverter guideline: make PMOS and NMOS equal strength to make tpLH=tpHL

• (W/L)p = mn/mp * (W/L)n= e (W/L)n

• Situation different when inverters are cascaded

• Let (W/L)PMOS be a times larger than (W/L)NMOS

• Cdp = aCdn, Cdp = aCdn

• CL = (1+a)(Cdn+Cgn)+CW = (1+a) Cn+CW

• Propagation delay

• tp = (tpLH+tpHL)/2 = const * ((1+a) Cn+CW) * (1+ e/a)

where e = mn/mp

• Optimal a when dtp/da = 0

• aopt= (e(1+CW/Cn))0.5

= sqrt(e) when CW is neglible

Therefore, PMOS should be somewhat smallerthan the e ratio when chaining inverters!

VDD

VDD

Buffer

Chip Core

a

ua

• Let

• tp0 = delay of minimum size inverter when it drives one minimum size inverter

• u = the strength of the buffer inverter (i.e. how much larger it is than the minimum)

• What is the optimum u?

Vout

Vin

Ci

1

u

CL = xCi

input capacitance

Of minimum-size inverter

• Total propagation delay

tp = utp0 + (x/u) tp0

• Finding optimum u to minimize tp

dtp/du = 0

 tp0 - (x/u2) tp0 = 0

 uopt = sqrt(x)

and

tp,opt = 2tp0 sqrt(x)

It makes sense to introduce a bufferwhen xtp0 > 2tp0 sqrt(x)or, equivalently, when x > 4

VDD

u2a

u2

Multistage Buffer: N-1 Inverters

VDD

VDD

VDD

Chip Core

• Propagation delay

• tp = u1tp0 + (u2/u1) tp0 + … + (CL/uN-1) tp

uN-1a

u1a

a

Vout

Vin

u1

uN-1

Ci

1

CL = xCi

Optimum u1, u1, … uN-1 forMulti-stage Inverter Buffer

• Propagation delay

tp = u1tp0 + (u2/u1) tp0 + … + (CL/uN-1) tp0

• Finding optimum u1, u1, … uN-1 to minimize tp

tp/ ui = 0 for i = 1, 2, … N-1

tp0 - (u2/u12) tp0 = 0 u2 = u12

(1/u1) tp0 - (u3/u22) tp0 = 0 u3 = u22/u1 = u13

(1/uN-3) tp0 - (uN-1/uN-22) tp0 = 0 uN-1 = uN-22/uN-3 = u1N-1

(1/uN-2) tp0 - (x/uN-12) tp0 = 0 x = uN-12/uN-2 = u1N

Optimum propagation delay is tp = Nu1tp0and, corresponding N = ln(x)/ln(u1)

Optimum N and u1 for Multi-stage Inverter Buffer

• Propagation delay

tp = Nu1tp0 = u1tp0 ln(x)/ ln(u1)

• Finding optimum u1 to minimize tp

dtp/du = 0

 tp0 ln(x)/ ln(u1) - u1tp0 ln(x)/ u1(ln(u1))2

 uopt = e = 2.7182

and

tp,opt = e ln(x) tp0 = e ln(CL/Ci) tp0

Optimum buffer design scales consecutivestages in an exponential fashion

Common VHDL IssuesCombinational Processes

process (A, B, SELECT)begin if (SELCT=‘1’) then OUT <= A; else OUT <= B; end if;end process;

• Sensitivity list must consist of all signals that are read inside the process

• Synthesis tools often ignore sensitivity list, but simulation tools do not… a forgotten signal will lead to difference in behavior of the simulated model and the synthesized design

Common VHDL IssuesCombinational Processes

process (A, B, SELECT)begin if (SELCT=‘1’) then OUT <= A; else OUT <= B; end if;end process;

processbegin if (SELCT=‘1’) then OUT <= A; else OUT <= B; end if; wait on A, B, SEL;end process;

• Can use WAIT ON instead of sensitivity list

• But not both!

Common VHDL IssuesWait-free Paths

processbegin if (some condition) wait on CLK’event and CLK=1; X <= A + B;

end if;end process;

• Every possible path that the code can take through the process body in a process without sensitivity list must have a WAIT

• Otherwise the process can hang (feedback loop)

Common VHDL IssuesMistakenly Inferences Latches

process (A,B)begin if (cond1) X <= A + B; elseif (cond2)

X <= X – B;

end if;end process;

• Remember, incomplete assignments imply latches

• in the above example, if neither cond1 nor cond2 is true then X will retain its value … basically, X is stored in a latch

• if you are writing combinational logic, make sure that every output gets assigned a value along each path (e.g. if statements, case statements) through the process body

• in general, latches are not recommended any way in synchronous designs (not testable via scan paths)

Common VHDL IssuesImplicit Register Inference

• Storage registers are synthesized for all signals that are driven within a clocked process

• Storage registers are also synthesized for all variables that are read before being updated

processbegin wait until CLK’event and CLK=1;

if (COUNT >= 9) then COUNT <= 0; else COUNT <= COUNT +1;

end process;

‘1’

COUNT

CLK

Common VHDL IssuesReset (or Set) in Synthesis

processbegin wait until CLK’event and CLK=1;

if (RST=‘1’) then -- synchronous reset else -- combinational stuff

end if;

end process;

process (CLK, RST)begin if (RST=‘1’) then -- asynchronous reset

elsif ( CLK’event and CLK=1) then

-- combinational stuff

end if;

end process;

• Must reset all regsiters, other syntehsized chip won’t work

• unlike simulation, you can’t set initial values in synthesis!

• Asynchronous reset possible only with a process that ha sensitivity list

Common VHDL IssuesCoding Style Influence

process(A, B, C, SEL)begin if (SEL=‘1’) then Z <= A + B; else

Z <= A + C

end if;end process;

process(A, B, C, SEL) variable TMP : bit;begin if (SEL=‘1’) then TMP := B; else

TMP := C; end if; Z <= A + TMP;end process;

• Structure of initially generated hardware is determined by the VHDL code itself

• Synthesis optimizes that initially generated hardware, but cannot do dramatic changes

• Therefore, coding style matters!

B C

A B A C

+

+

SEL

A

+

SEL

Z

Z

Common VHDL IssuesIF vs CASE

• IF-THEN-ELSIF-THEN-…-ELSE maps to a chain of 2-to-1 multiplexors, each checking for the successive conditions

…if (COND1) then OUT <= X1;elsif (COND2) then OUT <= X2;…else OUT <= Xn;…

• CASE maps to a single N-to-1 multiplexor

…case EXPRESSION is when VALUE1 =>

OUT <= X1;

when VALUE2 =>

OUT <= X2;

when others =>

OUT <= Xn;

end case;…

Common VHDL IssuesLet the tool do the Synthesis

• Don’t do synthesis by hand!

• do not come up with boolean functions for outputs of arithmetic operator

• let Synopsys decide which adder, multiplier to use

• you will only restrict the synthesis process

• Best to use IEEE signed and unsigned types, and convert to integers if needed (IEEE NUMERIC_STD and NUMERIC_BIT packages)

example:

A_INT <= TO_INTEGER(A_VEC);

B_INT <= TO_INTEGER(B_VEC);

C_INT <= A_INT * B_INT;

C_VEC <= TO_UNSIGNED(C_INT, 4);

• Let synthesis tool decide the numeric encoding of the FSM states

• use enumerated type for state

• Split into multiple simpler processes

• Keep module outputs registered

• simplifies timing constraints