Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 26

Using Multi-Bit Flip-Flops for Clock Power Saving

CAD contest 2010 Problem B1

: :

Multi-bit flip-flop

Area and power consumption of multi-bit flip-flops

2010CAD

Timing Slack Constraint Placement Density Constraint

1. Timing Slack

The temporal difference between the deadline, the ready time and the run time

signal

Reduce Routing Length

Bin Chip

Grid

Congested area (>9) is not allowed for new flip-flop insertion.

2010CAD

The Least total power consumption Least CPU time and memory usage

class object { public: bool obj; // ff or pin string obname; // ff or pin name string orname; // lib or ff name int obvalue; // bit or slack long x; long y; object(); object(const object &); int operator<(const object &rhs) const; }; class block { public: long x; long y; int value; block(); block(const block &); };

class flip_flop_property { public: short bit_number; short power_consumption; short area; string libname; flip_flop_property(); flip_flop_property(const flip_flop_property &); int operator<(const flip_flop_property &rhs) const; };

class specify { public: int place_DC; long chip_size_x; long chip_size_y; short grid_size_x; short grid_size_y; int bin_size_x; int bin_size_y; specify(); specify(const specify &); };

Platform Linux Language C++

OpenGL

FLIP-FLOP3 PIN5

(3000,3000)
PIN6

FLIP-FLOP1 PIN1

PIN2

FLIP-FLOP2 PIN4

BLOCK

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6

FLIP-FLOP1 PIN1

PIN2

FLIP-FLOP2 PIN4

BLOCK

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6

FLIP-FLOP1 PIN1

PIN2

FLIP-FLOP2 PIN4

BLOCK

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6

PIN3

(0,0)

1 2 3 4
FLIP-FLOP1 PIN2 PIN1 FLIP-FLOP2

N=3 N=0 N=1 N=2 X=3000/2Y=375/2 X=1500/2 X=750/2 X=375/2 Y=750/2 Y=3000/2 Y=1500/2

Level:3 Level:n Node n+1-1)/(4-1) (43+1

BLOCK

PIN4

1
5 21 22 6 23 7 24 8 9 10

2
11 12 13 14

3
15 16 17 81 18 82

4
19 83 20 84

(1) input (2) 1. Chip X,Y 2 N 1 2.1 N 3. Quad tree N-level complete tree 4. Flip-flop leaf (3) Quad tree root (12) (4) Quad tree leaf node (5) Density (7) (6) Flop-flip (11) (7) (9) (8) Flip-flop (9) Flip-flop Library Flip-flop (11) (10) Flip-flop finish list (11) leaf Node parent (3) (12) Node finish list

FLIP-FLOP3 PIN5

(3000,3000)
PIN6

FLIP-FLOP1 PIN1

PIN2

FLIP-FLOP2 PIN4

BLOCK

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6

FLIP-FLOP1 PIN1

PIN2

FLIP-FLOP2 PIN4

BLOCK
Qtree[56] Qtree[57] Qtree[43] FLIP-FLOP2 FLIP-FLOP1 FLIP-FLOP3

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6
Qtree[56] Qtree[57] Qtree[43] FLIP-FLOP2 FLIP-FLOP1 FLIP-FLOP3

Qtree[14] FLIP-FLOP1 PIN1 PIN2 Qtree[13] Qtree[10]

FLIP-FLOP2 FLIP-FLOP1 FLIP-FLOP3

FLIP-FLOP2 PIN4

BLOCK
Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6
Qtree[56] Qtree[57] Qtree[43] FLIP-FLOP2 FLIP-FLOP1 FLIP-FLOP3

Qtree[14] FLIP-FLOP1 PIN1 PIN2 Qtree[13] Qtree[10]

FLIP-FLOP2 FLIP-FLOP1 FLIP-FLOP3

FLIP-FLOP2 PIN4

BLOCK
Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3

pin slack

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6
Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3

FLIP-FLOP1 PIN1

PIN2

FLIP-FLOP2 PIN4

BLOCK

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6
Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3

PIN2 PIN1

BLOCK
PIN4

PIN3

(0,0)

FLIP-FLOP3 PIN5

(3000,3000)
PIN6
Qtree[3] FLIP-FLOP2 FLIP-FLOP1 Qtree[2] FLIP-FLOP3

PIN2 PIN1 Qtree[3] NEW FLIP-FLOP

Qtree[2]

FLIP-FLOP3

BLOCK
PIN4

NEW FLIP-FLOP
PIN3

Finish_list

NEW FLIP-FLOP

Qtree[0]

FLIP-FLOP3

(0,0)

GUI , : CHIP_SIZE,BIN_SIZE, PIN,FLIP-FLOP,BLOCK

GUI

Test Case B14 B17 B18 B19 B20 B21 B22 S1

Flip-flop 217 1317 3020 6042 430 431 614 120

Flip-flop 56 172 436 762 109 109 154 38

84s 129s 164s 134s 2s 173s 452s 1s

(2GB) 17.1% 5.4% 2.5% 1.3% 0.2% 12.8% 20.7% 0.1%

You might also like