CHAPTER 1 Basic VLSI Design - WBUTHELP.COM · 2012. 6. 26. · CHAPTER 1 Basic VLSI Design + DRAIN...

Preview:

Citation preview

CHAPTER 1 Basic VLSI Design

+ DRAIN Vdd - n Type Silicon SOURCE Figure 1.1: The beginning of the n-channel JFET

Figure 1.3 : p-channel JFET

Figure 1.2

Fig.1.4 Schematic Symbols .

Figure 1.5 Physical structure of MOS transistors and their schematic icons

p+ p+

n substrate

channel

Source Drain

p transistor

G

S

D

SB

Polysilicon Gate SiO2

Insulator L W

G

substrate connected to V DD

Source

n transistor substrate connected

Polysilicon Gate SiO2 Insulator

n+ n+

p substrate channel

Drain G

S

D

SB

L W

G

S

D

to GND

Figure 1.6(a): NMOS-transistor

Figure 1.6(b): P-transistor .

Figure 1.6 (c ): C-switch .

N

D

S

G

D

S

G

P

D

S

G

D

S

G

C D S

-G

G

.

Figure 1.7: Transistor schematic of a static complementary inverter.

vdd

a b

vdd

a o/p

a o/p

b b

vss

a b

vss Fig. 19. NAND gate schematic

Fig 1.8 NOR gate schematic

VDD

Out

Gnd

In

Inverter

Figure 1.10: A dynamic latch circuit.

.

Figure 1.11(a): Wires and wire segments.

Figure 1.11(b): Schematic symbols for transistors

D

F 1

F

Cg

Q1

Wire segments

n-type p-type

Figure 1.12: General CMOS Layout structure, Circuit and the Layout diagram of CMOS Inverter.

VDD

Out

Gnd

VDD

Out

Gnd

Pullup Network

(p-transistors)

Pulldown Network

(n-transistors)

InInputs

Inverter

Figure 1.13: Stick diagram

Table 1.1 Rules for possible interactions between layers.

Figure 1.15: The inverter circuit used for delay analysis

VDD In VSS

Out

Metal p-diff n-diff poly

Figure 1.14: Stick diagram symbols

VDD

CL

Gnd

In

Inverter

t

Input voltage

Figure 1.16: Circuit used for power consumption analysis

Figure 1.17: A pseudo-nMOS NOR gate

Figure 1.18: A circuit model for stuck-open faults.

VDD

t1

t2 b a CL

VDD

CL

Gnd

In

Inverter

t

VDD

CL

Gnd

Id,p IL

Id,n

a b

output

Figure1.19: Testing for combinational faults.

A

B

E

G

C

F

D

i1

i2

i3 i4

i5

i6 i7

i8

W1

W2 O1

O2

Fig. 1.20 Commercially available FPGA architectures

1 PO 2 PO 3 PO

4 PI 5 PI 6 7

8 PI 9PI 10PI 11PI

Fig 1.21 Initial 3-restricted DAG

1 2 3

Symmetrical Array Row-based Interconnect

Interconnect

Logic Block

Logic Block

Interconnect

Interconnect Overlayed on Logic Blocks

Sea-of-Gates Hierarchical PLD

4 5 10 11

8 9

Fig. 1.22 Mapping of the 3-restricted DAG by four 3-LUTs connection between wire segments in x and y axes and also vias.

Fig.1.23 3-D FPGA architecture

CHAPTER 2 VLSI CAD

Figure 2.1: Y-chart

System

Register transfer

Logic

Circuit

BEHAVIOR

Algorithms, flowcharts

Register Transfer

Boolean expression

Transfer function

STRUCTURAL

Processors, Memories

Registers, flipflops, MUX

Gates

Transistors

Cell layout

Modules

Boards

PHYSICAL

CHAPTER 3

Partitioning in High Level Synthesis

Figure: 3.1 Example: Behavioral description of a 4 bit Shift multiplier

.

A_PORT B_PORT Architecture SHIFT_MULT of MULT is begin START begin process variable A,B,M: BIT_VECTOR CLK variable COUNT: INTEGER begin M_OUT DONE wait until (START =1) A:= A_PORT; COUNT :=0; Entity MULT is B:=B_PORT; DONE<=’ 0 ’ Port (A_PORT, M:=B”0000”; B_PORT: in bit _ vector(3 down to 0); while (COUNT <4) loop M_PORT: out bit _vector (7 down to 0); if (A(0)=’1’) then M:=M+B; CLK: in BIT end if; START: in BIT A:=SHR(A,M(0)); DONE: out BIT; M:=SHR(M,’0’); ); COUNT:=COUNT+1 end MULT; end loop; M_OUT <=M & A; DONE <=’1’; End process; End SHIFT_MULT;

Figure: 3.2 CDFG for the shift-multiplier example

0 1

B1

0 1

B4 0 1

B2

0 1

B3

Control-flow graph

Read START ‘1’

=

Read A_PORT Read B_PORT ‘0’

Write A Write B Write COUNT

‘0’

Write DONE

B”0000”

Write A

Read A[0] ‘1’

=

Read COUNT ‘4’

<

Read M Read A

&

Write M_OUT

‘1’

Write DONE

Read M Read B

+

Write M

Read A Read M[0]

Write A

Write COUNT

‘1’

Write M

Read M SHR Read

COUNT

+

‘0’

SHR

Figure : 3.3 Scheduled CDFG for the shift multiplier

START=1

A=A_PORT; COUNT=0; B=B_PORT; DONE <= 0 M=B” 0000” ;

COUNT <4

A(0) = ‘1’

M = M + B;

ENDIF

M_OUT <= M & A; DONE <=’1’;

A=SHR(A,M(0)); COUNT=COUNT + 1; M=SHR(M,’0’);

S0

S1

S2

S3

0

1

1

B10

0 B4

0 B2

B3

1

Figure: 3.4 Initial unit selection for the shift-multiplier design

Mult Count_Reg B_Reg A_Reg

Shift1 Shift2 Compar Adder

A_PORT B_PORT

START

CLK

DONE M_OUT

Concat enator

Figure 3.5 Synthesized design for the shift-multiplier example

A= S0 & START=1 B= S0 & ~(START=1) C= S1 & COUNT < 4 D= S1 & ~(COUNT < 4) E= S2 & A(0)=1 F= S2 & ~ (A(0)=1) G= S3 Control Unit A B C D E F G Mux1 - - - - 1 - 0

Mux2 1 - - - - - 0

Mux3 - - - - 0 - 0

Mux4 - - - - 0 - 1

Load A_Reg 1 - - - - - 1

Load B_Reg 1 - - - - - -

Clear Count_Reg

1 - - - - - -

Load Count_Reg

- - - - - - 1

Clear Multiplier

1 - - - - - -

Load Multiplier

- - - - 1 - 1

Adder - - - - 1 - 1

Shift1 - - - - - - 1

Shift2 - - - - - - 1

DONE 0 - - 1 - - -

Next State S1 S0 S2 S0 S3 S3 S1

Multiplier Count_Reg

B_Reg A_Reg

Mux1

Comp

Adder

A_PORT B_PORT

START

CLK DONE M_OUT

Mux2

Shift2 Shift1

0

Mux3 Mux4

0001

0100

State Reg

A_Reg(0)

Comp LT

Concat

3.2 PARTITIONING

Figure 3.6 Circuit Partitioning: (a) an example (b) graph and its physical representations

FF1

REG

FF2 Chip1

Chip2

a b d e f g

c

nj ni

a b

a

b

G1

G2 v

G

c v

d v

e f

g

a

e25

e24 v

e36 v

v1 v2 v3

v4 v5

V6

ni nj

c

d e f g

(a) (b)

(b)

Cutline

3

V(24135)

5

1

3

5

1

3

4

3

V1 V1 V2 V3 V4 V5

Graphical Representation Closeness measurement Cluster Tree Representation

V5

V2413

V2413 V5

V2413 -- --

V5 3 --

V(24)

V(241)

V(2413)

3

V1 V2 V4 V3 V5

V3

V5

V2

V4

4

6

V1 -- -- -- -- -- V2 5 -- -- -- -- V3 4 1 -- -- -- V4 0 6 0 -- -- V5 0 3 0 0 --

V1 V2 V4 V3 V5

V(24)

V1

V3

V5

4

V24

V1 V24 V3 V5

V1 -- -- -- -- V24 5 -- -- -- V3 4 1 -- -- V5 0 3 0 --

V1 V2 V4 V3 V5

V(24)

V(241)

V3

V5

V241 V241 V3 V5

V241 -- -- -- V3 4 -- -- V5 3 0 --

V1 V2 V4 V3 V5

V(24)

V(241)

V(2413)

(a)

(b)

(c)

3 4 1 2 5

c e f b a d b

Criterion B a b c 3

2 1 5 4

Figure 3.7 : Cluster tree formation a b c f c a e d b

(d)

d e f

First cutline

(a)

d e f

(b)

{ f, c}

{ d }

{ b }

{ a, e}

5

3

2

1

{ a, e}

{ f,c}

{ b }

{ d}

(c)

f c a e d b

Figure 3.8 Clustering based on a) criterion A only, b) criterion B only, c) Criterion A below the first cut-line, then criterion B, d) criterion B below the first cut-line, then criterion A e) criterion A below the second cut-line, then criterion B

{ c, e}

{ a, d }

{ b }

{f }

5

4

1

{ c, e}

{ f }

{a ,d}

{ b }

(d)

Second Cutline

{f, c}

{a,e,d}

{ b}

5

3 2

{a,e,d}

{f, c}

{ b}

(e)

1 2 3 4 5 6 7 8 9 10

40 20 10 10

Figure 3.9 Two-way partition

Figure 3.10 Interconnection reduction by node interchanging: a)before interchanging vi and vj, b) after interchanging vi and vj

Figure 3.11: Kernigham-Lin Search Strategy

vi G1

vj G2

Cutline

vj G1

vj G2

Cutline

Figure 3.12 (a) two cluster partition

Figure 3.12 (b) three cluster partition

G1

O2

(+) o1 (+)

O3 (*)

a b c

G3

e13 e23

O2

(+) o1 (+)

O3 (*)

a b c

G3

e13 e23

o1 (+)

o2 (+)

e13 e23

mult1 G2

add1 G1

e13 e23

mult1 G3

add1 G1

add2 G2

e10,11

v4 e4,9 v9

v2 e2,5

v5 e5,7

v7 v8

v3 e3,6 v6 e6,8

CHAPTER 4 Scheduling in High level Synthesis

Figure 4.1(a) Text description

Figure 4.1 (b) DFG (Data Flow Graph)

While (x<a) do { x1:= x + dx; u1:= u – (3 * x * u * dx) – (3 * y * dx); y1:= y + (u * dx); x:= x1; u:=u1; y:=y1; }

u dx 3 x u dx x dx

* * * +

* * +

y y

* -

-

dx u

<

c

a

v10

v11

v1

e1,5

e7,8

V1 V2 V3 V4 V10 E=1 E=2 V5 V6 V9 V11 E=3 V7 E=4 V8 (a)

V1 V2 L=1 L=2 V5 V3 L=3 V7 V6 V4 V10 L=4 V8 V9 V11 (b)

1 2 3 4 5 6 7 8 9 10 11 S1 S2 S3 S4 (a)

V1 V2 S1 S2 V5 V3 V10 S3 V7 V6 V4 S4 V8 V9 V11 (b)

Figure 4.2: (a) ASAP schedule, (b) ALAP schedule.

Figure 4.3: An ILP scheduling example: (a) ranges for operations, (b) final schedule,

* * *

+

*

*

+

*

-

-

<

* *

* +

* *

+

* -

- <

* *

*

+ * *

+

* -

- <

S1 2.33 1 2

S2 2.33 5 3 S3 1.33 7 6 4 10 S4 0.00 8 9 11 (c) (d)

-------------------------------------------------------- ---------------------------------------

S1 1 2 3 4 10 2.83

S2 5 2.33

S3 7 6 0.83

S4 8 9 11 0.00

(a) (b)

Figure 4.4: Force-directed scheduling example: (a) probability of scheduling operations into control steps, (b) operator cost for multiplications in a, (c) probability of scheduling operations into control steps after operation o3 is scheduled to step s2, (d) operator cost for multiplications in 4.4c. '

* *

*

+

*

*

+

*

-

-

<

* *

*

+

* *

+

*

-

-

<

S1 S2 S3 S4

S1 S2 S3 S4

* * - + < S1 1 2 10 S2 5 3 11 S3 6 4 7 S4 8 9

Figure 4.5: Rescheduling: (a) initial schedule where three operations are movable to five control steps (dashed arrows), (b) after operation 6 is moved and locked.

Plist* = 1<0>, 2<0>,3<1>, 4<2>

<0> <0> <2> <2> Plist+ =10<2> Plist- = NIL <0> <1> <2> <2> Plist< =NIL (b) <0> <1>

Resources* = 2 Resources+ = 1 <0> Resources- = 1 Resources< = 1 (c) Figure 4.6: List scheduling: (a) a DFG with mobility labeling (inside < > ), (b) the list of ready operations for control state s1, (c) the resource constraints, (d) the scheduled .DFG

1 2 3 4 10

5 6 9 11

7

8

(a)

1 2 3 4 10

5 6

9 11

7

8

(b)

* * * +

*

* + < *

-

-

(a)

* *

*

+

*

*

+

< *

-

-

(d)

2 4 10 1 5 3 9 11

7 6 8 (a) (b) 2 1 10 S1 2 1 10 3 5 S2 3 5 11

S3 4 6 7 S4 8 9 (c ) (d) Figure 4.7: Static-list scheduling: (a) a DFG (b) priority list, (c) partial schedule of five nodes, (d) the final schedule.

Node 8 9 11 7 6 4 10 5 3 1 2

ALAP 1 1 1 2 2 2 2 3 3 4 4 ASAP 4 2 2 3 2 1 1 2 1 1 1 Priority 1 2 3 4 5 6 7 8 9 10 11

*

*

-

-

*

*

*

+

+

+

<

*

*

*

*

+

<

*

-

*

+

-

* *

* *

*

S1 S2 (a)

S1 S2 (b)

S1 (c)

S1 S2 S3 (d)

Figure 4.8: Scheduling with arbitrary-delay units

Figure 4.9: CDFG for a behavioral description with a conditional construct.

a:=a+1; if(a>100) then b:=a/c; else b:=d/c; endif c:=c-g;

+

* -

+ *

-

+ *

-

*

*

ALU1 ALU2 ALU3 S1 S2 S3 (a) ALU1 ALU2 ALU3 S1 S2 S3 (b)

v1=v2+v3 v4= v2*v3 v5=v1+v4 v6=v4/v1 v2=v4*v5

v4=v2*v3 v1= v2+v3 v5=v1+v4 v6=v4/v1 v2=v4-v5

1 2 3 4 5 7 8 12 11 10 9 6

b

time

10,11, 12 7, 8, 9 4, 5, 6 1, 2, 3

u

(a)

(b)

1

2

3

4

5

7 10

8 11

6 9 12

m

p

(c)

ALU1 ALU2 ALU3 S1 S2 S3 ( c ) Figure 4.11: Scheduling using simulated annealing : (a) an initial schedule, (b) after swapping two operations, (c) after displacing an operation.

v4=v2*v3 v1= v2+v3 v5=v1+v4 v2=v4-v5 v6=v4/v1

Figure 4.12: Path-based scheduling: (a) an example CDFG, (b) a path in the CDFG with constraint intervals, (c) scheduled CDFG.

4.5.3 DFG Restructuring

2

3

1

9

8

5 4

10

7

6

ipp<=pc ipo<=oldpc outbus,=inbus + 8 if( jump = ‘1’) then pc<= jumppc endif wait until (cond=’T’) oldpc<= pc pc< = pc + 8

2

3

1

9

8

5 4

10

7

6

2

3

1

9

8

5 4

10

7

6

write

jump

loop

write

i1

i2

Figure 4.13: DFG restructuring : (a) DFG (b) DFG after tree-height reduction

+

+

+

+

+

a b c d e f

1

2

3

4

5

(((a + b) + c) + d) + (e + f) (a)

+

+

+

+

+

a b c d e f

1

2 3

4

5

((a + b) + c) + (d + (e + f)) (b)

Figure 4.13: DFG restructuring: (c) DFG (d) DFG after redundant operation insertion.

+

+

+

+

a b d c

1

2

3

4

5

d (a + b + c) + (a+b) + (a+b) (c)

*

+

+ +

+

a b d c

1

2

3

45

d (a + b + c) + 2(a+b) (d)

*

+ 6

CHAPTER 5 Data Path Allocation in High Level Synthesis

a b c d o1 o2 r1 r2 r3 r4 S1 e f S2 o3 o4 g h Add1 Add2 Figure 5.1: Mapping of behavioral objects into RT components.

+ +

+ +

a b ,e, g c ,f, h d

+1 +3 +2 +4

+

+

+

+

O1

O2

O3

O4

a b c d

e f

g h

S1

S2

r1 r2 r3 r4

+1 +4 +2 +3

a b, e, g c, f, h d

ADD1 ADD2

r1 r2 r3 r4

+1 +3 +2 +4

a ,g b, e c, f d,h

ADD1 ADD2

r1 r2 r3 r4

+1 +4 +2 +3

a ,g b, e c, f d,h

ADD1 ADD2

(a) (b)

(c)

(d)

S1 S2 Edge Common Neighbor e1

1,3 1 e1

1,4 1 e1

2,3 0 S3 S4 S5 e1

2,5 0 e1

3,4 1 e1

4,5 0 (b)

S13 S2 Edge Common Neighbor e1

13,4 0 e1

2,5 0 e1

4,5 0 S4 S5 (c)

S134 S2 Edge Common Neighbor e1

2,5 0 S5 (d)

v2

v5

S134 S25 Cliques: S134 = { V1, V3, V4 } S25 = { V2, V5} (e) (f)

v1

v3 v4

Figure 5.2: Interdependence of functional-unit and storage binding

(a)

Figure 5.3: Clique partitioning example

v1 v2

v3 v4 v5

v1 v2

v3 v4 v5

v1

v3 v4

v2

v5

v1

v3 v4

v2

v5

V1 V2

S1 V6 V4

V3 S2 V10 V5

V7 S3

V11 V8 V9 S4

V1 V2 (a)

V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 R W R W R W R W (b)

Cliques: {v1,v8}=r1 {v2,v3,v9}=r2 {v4,v5,v11}=r3 {v6,v7}=r4 {v10}=r5 (d)

*

/ +

* - -

- +

(c)

v3

v8

v10 v1

v9 v2

v7

v5

v6 v4

v11

V1 V10 V4 V6 V2 V3 V5 V7 V8 V9 V11 V11 V1

2 S1

S2

S3 S4

Cluster 1 Cluster 2 Cluster 3 Cluster 4 (a)

Figure 5.4: Register allocation using clique partitioning: (a) a scheduled DFG, (b) lifetime intervals of variables, (c) the graph model for register allocation, (d) a clique-partitioning solution

V1 V10 V4 V6 V2 V3 V5 V7 V8 V9 V11 V1’ V2’ r1 r2 r3 r4 r5

S1 V1 V10 V4 V6 V2 V3 S2 V5 V7 S3 S4 V8 V9 V11 V1 V2 Figure 5.5: Register allocation using the left-edge algorithm: (a) sorted variable lifetime intervals, (b) five-register allocation result.

r1 v3

r1 = { v1 , v8 , v11}

r2 r2 = { v9 , v10 } r3 = { v4 , v5 , v11} v5 r4 = { v6 , v7 }

r3 r5 = { v2 , v3 , v12}

r4 v7

r5

Set R Set V (b) (c)

Figure 5.6: Weighted bipartite-matching for register allocation: (a) sorted lifetime intervals with clusters, (b)

bipartite graph for binding of variables in Cluster2 after Cluster1 has been assigned to the registers, (c)

final binding of all variables to the set of registers.

v1

v10

v4

v6

v2

CHAPTER 6 LOGIC SYNTHESIS

(a) (b)

( c) Figure 6.1 Cubic representation of a boolean function of (a) one variable (b) two variables and ( c) three

variables.

10

00

11

01

0 1

001 m1

011 m3

010 m2

110 m6

100 m4

101 m5

000 m0

111 m7

FIGURE 6.2 A cubic representation of the function F(A, B, C) = ? m(0, 2, 3, 4, 7).

FIGURE 6.3 A cubic representation of the function G(A, B, C) = A1C1 + B1C1 + ABC.

m3

m2

m4

m0

m7

A

C

B

m2

m4

m0

m7

A

C

B

x00

0x0

A m6 X1X m7 m2 B m3 C Figure 6.4: A cubic representation of the function H(A, B, C) = B.

F(xi) xi F= xi F(xi) + x1

i F(x1i)

F(x1i)

x1

i (a) F1(xi) x1

i F= [x1i + F1(xi)][ xi +F1(x1

i)] F1(x1

i)

xi (b)

Figure 6.5 An expanded function F, represented (a) in NAND-NAND logic, and (b) in NOR-NOR

logic.

Figure 6.6: A binary tree representation of the function F = A(BD + B1C1) + A1( BC1 + B1CD).

(a) (b)

(c) Figure 6.7 Binary decision diagram of the functions (a) AB (b) A+B and (c) A(+) B.

A

B B

C C C D

D

F

0

0 0

1

1

1

1

A

B

Y=AB

0

0

1

1

Y=0

Y=0 Y=1

A

B

Y=A+B

0

0

1

Y=0

Y=1

Y=1 Y=

1

A

B

Y

0

0

1

Y=0 Y=1

B

0

1 0 1

0

1 1 0 0

1 0

0 0

0 0

1 1

1 1

2 3

4,7 5,6

(a) (b) FIGURE 6.9: Realization of the function Y = A (+) B (+) C (a) The binary tree; (b) the tree reduced to the

BDD,

B

C

0

0

1

1

m0 m1 m2 m3 m4 m5 m6 m7

C0

1 1

B

C

0

0

1

1 C

0

A 1 0

1 2 3

7 6 5 4

B

C

0

0

1

1

0 1 1 0 1 0 0 1

C0

1 1

B

C

0

0

1

1 C

0

A 1 0

1 2 3

7 6 5 4

A

B B

C C

0 1

(a)

B

C

0

0

1

1

1 0 1 0 0 0 1 1

C0

1 1

B

C

0

0

1

1 C

0

A 1 0

1 2 3

7 6 5 4

B

C

0

0

1

1

1 0 1 0 1 0 (b)

C0

1 4,5

B

0

1

C

A0

Y

2

5 4

A

Y

0

C

A

Y

0

01

1 0

(c) Figure 6.10 Realization of the function, Y(A, B, C) = ? m(0, 2, 6, 7) (a) The binary tree (b) reducing the tree(c) the BDD.

B

A

D

F

E

C

0 (a) 1

1

1

0

1

1

1

1

0

0

0 0

0

F

BC

A

Y

0 1

0

1 1 0 0

0 1 1

Figure 6.11: BDD illustrating (a) Advantages of a good ordering, (b) Drawbacks of a bad ordering

C

A

D

F

E

C

0 (b) 1

F

E E E

B B B B

D

B

D

0

0

1

1

0 1 0 1 0 1 1 1 (a)

D0

1 1

B

D

0

0

1

1 D

0

A 1 0

1 2 3

7 6 5 4

Y

Y (c) (d) FIGURE 6.12: Realization of the function Y = AB + D. (a) The binary tree; (b) reducing the tree; (c) the

BDD; (d) counting the paths to an output.

B

0 1

0 1 0 1 (b)

D0

1 1

B

0 1

1 D

0

A 1 0

1

1

B

0 1

0-

D

0

A 1

Y

0 1 1

B

1 1

1-

D

0

A 1

Y

2 2

1 0

0

1

0

1

0 1

1 1

2

1

1

2

2 2

(a) (b)

FIGURE 6.13: The BDD for the function Y = AB + D, with D the most significant bit. (a) The binary tree; (b) BDD.

(a) (b)

FIGURE 6.14: Realization of the function Y = AB + CD. (a) The BDD; (b) the number of paths to an

out put.

B

D

0

0

1

1

0 0 0 1 1 1 1 1

D0

1 1

B

D

0

0

1

1 D

0

A 1 0

1 2 3

7 6 5 4

Y

A

B

0

0

1

1 0 0

D 1

1

Y

1

A

B C

D

0 1

A

B C

D

0 1

THEN ELSE

ELSE

FIGURE 6.15: If-then-else diagrams of (a) AB, (b) A + B, and (c) A (+) B. FIGURE 6.16: If-then-else diagrams of (a) AB + A1C and (b) ABD

B

A

0

THEN ELSE

IF

B

A

1

THEN ELSE

IF

B

ATHEN ELSE

IF

B

B

ATHEN ELSE

IF

A

1

IF

D

THEN

B C

IF

0

b

a BTHEN

ELSE

F

THEN ELSE

1 0

1 c

a CTHEN

ELSE

G

THEN ELSE

1 0

0

d

b DTHEN

ELSE

H

THEN ELSE

1 0

1 b

a THEN

ELSE

I

THEN ELSE

0 D

C

F 2 F 1

Inputs Outputs

AND plane

OR plane

Register Register

VDD VDD GND GND VDD GND P0

P1 P2 P3 GND VDD F 2 F 2 F 1 F 1 I0 I1 I2 Y0 Y1 Y2

FIGURE 6.18: The basic floor plan of a PLA structure.

FIGURE 6.19: A stick drawing of an NMOS NOR-NOR PLA realization.

A A1 B B1 C1 C D1 D Y1 Y2 Y3 P1=A1BC Y1=P1+P2

Y2=P1+P3+P4 P2=AB1D1 Y3=P2+P3 Y4=P4+P5 P3=A1C1D1 Y5=P5+P6 Y6=P4+P6 P4=CD1E P5=CEF1

P6=E1FG1

E1 E F1 F G1 G D1 D Y4 Y5 Y6

Inputs Outputs Inputs I1 I2 I3 Y1 Y2 Y3 Y4 I7 I8 I9 I10 P1 P5 P2 P6 P3 P7 P4 P8 I1 I4 I5 I6 Y5 Y6 Y2 Y7 Y3 Y8 I11 I12 I9 I10 AND Plane OR Plane AND Plane

FIGURE 6.20: A column custom-folded PLA. (a) AND-plane column-folding; (b) OR-plane column-

folding.

FIGURE 6.21: A row or product-line folded PLA.

. .

1 2 3 4 5 6 7 8 9 10 P1 AB1

P2 AC

P3 D P4 A1B

P5 B1C A1 A B1 B C1 C D1 D Y1 Y2 (a)

A B1 C D P1 AB1

P2 AC P3

D P5 B1C P4 A1B A1 B C D Y1 Y2

(b)

Figure 6.22: A simple PLA implemented (a) directly, and (b)optimized

A B1

C D E1

2i 3i

(b) FIGURE 6.23 (a): Multilevel NOR diagram of the function Y = A’B’ + C’(D + E’) (b) a typical NMOS NOR gate.

?

d ? ß

V (a)

W X

Y

1i

VDD

GND

Figure 6.25 An FSM with redundant states and its minimized version.

0/0

0/0

1/1

0/0

1/0

1/1

1/1 0/0

1/1

0/0

0/0

0/0

0/0

1/1

CHAPTER 7

PHYSICAL SYNTHESIS

Figure 7.1: Physical design cycle

Circuit Design

Partitioning

Floorplanning & Placement

Routing

Compaction

Extraction & Verification

Fabrication

(a)

(b)

(c )

A

D

E

B 8 C

F G

H I

6 1 7

2

5 4

3

1

2 3

4 7 5 6

F G H I D E A

B C

H

V

H

V V V V

H

F G H I D E A

B C

( d) Figure 7.2: Floorplan with slicing tree and a non— slicing floorplan.

Figure 7.3: Interconnection topologies.

Figure 7.4: Phases of routing.

(a) Global Routing (b) Detailed Routing

A a

D d

b B

c C

Fig 7.3 (a) Steiner tree (b) minimum spanning tree (c) complete graph

Figure 7.5: A net routed by Lee’s algorithm. obstacle T S Figure 7.6: A net routed by Mikami-Tabuchi’s Algorithm obstacle T S Figure 7.7: A net routed by Hightower’s Algorithm

6 5 4 3 4 5 6 7

5 4 3 2 3 4 5 6

4 3 2 1 2 3 4 5

5 4 3 2 3 4 5 6

6 5 4 3 4 5 6 7

7 6 5 4 5 6 7 8

8 7 6 5 6 7 8 9

9 8 7 6 7 8 9 10

1 Switchbox 1

2 2 (c) (d)

1 3 3 4 2 2 1 (a) (b)

Figure 7.8: Channels and Switchboxes 7.4.2.1 Problem Formulation

(a) (b)

Figure 7.9: (a) Grid-based. (b) Gridless

Layer1 Layer2 Track 1 Layer3 Via Unreserved Layer Model

1 4 2 0 2 1 1 0 3 4 0 upper boundary lower boundary Terminal 3 0 1 2 0 3 4 0 0 2 3 Net list: 1 4 2 0 2 1 1 0 3 4 0 3 0 1 2 0 3 4 0 0 2 3

Track2 Track 3 Track1 Track 2 Track 1 Figure 7.10: A comparison between HVH, VHV, and unreserved layer models.

Figure 7.11: A channel and its associated net list.

upper boundary terminals via Tracks Dogleg Lower boundary trunks branches

1 5 2 0 2 1 1 0 3 4 0 3 0 1 2 0 3 4 0 0 2 3 (a) 1 5 2 4 3 (b)

Figure 7.12: Terminology for channel routing problems.

Figure 7.13: A routing problem and its HCG .

1 5 2 0 2 1 1 0 3 4 0 3 0 1 2 0 3 4 0 0 2 3 (a) 1 5 2 4 3 (b)

4 1 2 3 1 2 3 4 (c)

Figure 7.14: A channel routing problem and its VCG.

. The figure 7.15 (a) shows a channel routing problem with a vertical constraint

cycle while figure 7.15 (b) shows how a dogleg can be used to break a vertical constraint cycle. Figure 7.15(c) shows vertical constraint cycle involving four nets. In figure 7.15(d), we show one possible routing for the example in figure 7.15(c).

1 2 1 2 2 1 2 1 (a) (b)

4 1 2 3 1 2 3 4 (d)

Figure 7.15: A cyclic vertical constraint.

1 5 2 4 3 Figure 7.16: A combined constraint graph (CCG) 7.4.2.5 Left-edge Channel Routing Algorithm

7.5 Compaction

Figure 7.17: Constraint graph generation

v3 ? 1 v2 ? 1 5 ? v4 2

v0 ? 4 1 v1 ? 2 ? v5 Fig 7.18: Input DAG

Q P1 P2 P3 P4 P5 x1 x2 x3 x4 x5 “not initialized”

{v0} {v1}

{v2,v5} {v3,v5}

{v5} {v4}

1 2 1 2 1 0 1 1 2 1 0 0 1 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 1 5 0 0 0 1 5 0 0 3 1 5 6 6 3 1 5 6 6 3 1 5 6 7 3 1 5 6 7 3

Table 7.2:Results of Longest Path algorithm

A

B

C

D

F

E

A

C

F

B D

E

. v3 ?

1 v2 ? -1 1 5 ? v4 2 -3

v0 ? 4 -4 1 v1 ? 2 v5 ?

Fig 7.19: DAG with a few backward edges

Step x1 x2 x3 x4 x5

Initialize Forward 1

Backward 1 Forward 2

Backward 2 Forward 3

Backward 3

-8 -8 -8 -8 -8 1 5 6 7 3 2 5 6 7 3 2 5 6 8 4 2 5 7 8 4 2 5 7 8 4 2 5 7 8 4

Table 7.3:Results of Liao-Wong algorithm

APPENDIX A VHDL BASICS

Figure A.1(a) (b) Figure A.1: Example of structural description.

A Y

F B

?

?

?

F A Y

G B

?

?

?

A Y

H B

?

?

?

A Y

I B

?

?

?

?

?

?

Figure A.2 Structure of count2 .

Graph Theory Basics

A B C D E Fig. B.1 A graph 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 Fig. B.2 Adjacency matrix representation

COUNT2 BIT_0 Q0 CLK FF0 BIT_1 INV Q1 INV_FF0 FF1

T_FLIPFLOP CLK Q

? ?

INVERTER A Y

T_FLIPFLOP CLK Q

?

A B E NULL B A C D NULL C B E NULL D B E NULL E A C D NULL Fig.B.3 Adjacency list representation

V5 V2 V3 V2 V4 V5 V4

V1 V3 V3

(a) (b) Fig B.4: A directed graph (a) and its adjacency list representation(b). When this algorithm is applied on graph shown in Fig B.4, the algorithm takes different steps as shown in table BT.2

Q W Edges processed (V1) (V1 , V2)

(V3 , V4, V5 )

(V4, V5 )

(V5)

V1

V2

V3

V4

V5

(V1 , V2) ,(V1 , V3) (V2, V4) ,(V2 , V5) NULL (V4 , V3)

NULL

V1

V2

V3

V4

V5

Table BT.2: The different steps of the breadth-first search algorithm applied to the graph of figure B.4 V1 2 V6 6 1 3 1 V2 V5 2 1 1

1 V4 V3 5 Fig B.5 : An edge-weighted directed graph.

Iteration T vi .distance, for i = 1 2 3 4 5 6

1 2 3 4 5 6

{ V1} { V1 , V4}

{ V1 , V4, V5} { V1 , V4 ,V5 ,V6}

{ V1 ,V4 ,V5 ,V6 ,V2} { V1 ,V4 ,V5 ,V6 ,V2 ,V3}

6 8 1 3 8 6 6 2 8 6 6 3 4 6 5

Table BT.3: The evolution of the distance attributes in Dijkstra’s algorithm when applied to the graph with vs = v1 and vt=v2 . 2 V2 2 V2 1 5 1 V1 4 V3 2 V5 2 V1 V3 2 V5 2 1 1 3 V4 V4 Fig B.6 An edge-weighted undirected graph(a) and its minimum spanning tree (b).

Iteration U Vi .distance, vi .via_edge, for i =

1 2 3 4 5 0 1 2 3 4

V1 V2

V3 V4

V5

2, (V1 ,V2) 4, (V1, V3) 3, (V1, V4 ) +8 ,? 1, (V2, V3 ) 2, (V2, V4 ) 5, (V2, V5 ) 1, (V3, V4 ) 2, (V3, V5 ) 2, (V3, V5 )

Table BT.4: The evolution of Prim’s algorithm when applied to the graph of figure B.6a.

Recommended