Timing Optimization Techniques

VLSI設計工学2
論理合成技術
•
•
•
•
•
•
論理合成の流れ
ルールによる論理回路簡単化
論理式の多段化: 論理式の割り算
回路の解析による簡単化
テクノロジマッピング
多段論理式簡単化
1
設計の流れ(基本)とハードウェア記述言語
(Hardware Description Language, HDL)
module WaitState(load,lo
input load;
input [1:0] loadValue
always @(positive Clk)
if (load)
仕様(RTL)
動作合成
論理合成
より詳細な設計レベルほど:
・ 面積・遅延見積もりはより正確
・ 回路変換の余地はより小さい
LSIの大規模化により、計算機
設計支援技術(CAD: Computer
Aided Design)なしでは設計で
きない!
配置
配線
2
ハードウェア記述言語(HDL)による仕様の記述
論理式への変換(HDLのコンパイル)
含む: 状態割り当て
論理式簡単化
テクノロジ マッピング
配置・配線へ
図2
3
a
a
x
b
x
b
(a) x=a’b+ab’
a
x
b
(b) x=a+a’b
a
x
b
(c) x=a+b
図1
4
(a) 簡単化対象回路
(c) ルールによる回路変換例
(b) 回路変換のルールの例
図3
5
c’d’
c’d
cd
c’d
cd
cd’
a’b’
a’b’
1
a’b
1
ab
ab’
c’d’
cd’
1
1
1
1
1
ab
ab’c’ + ac’d + bcd + a’bc
c’d
cd
cd’
1
1
a’b’
a’b
ab’
c’d’
1
1
1
1
1
a’b
ab
ab’
1
1
1
1
ab’c’ + abd + a’bc ab’c’ + abc’d + abcd + a’bc
(a)
(b)
(c)
図4
6
2段論理式(積和形論理式)簡単化
•
•
•
主項(prime implicant)をすべて生成して、最小数で与えられた論理をカバ
ーするものを見つける
– 従来は、12変数くらいまで(1980年代まで)。後で述べるBDDを使うと2
0変数くらいまでは可能(1990年代から)
発見的手法(heuristic methods)
– 繰り返し改善
– 繰り返しの単位
• 項の縮小(reduce)
• 項の拡大(expand)
– 否定を利用する/しない
» 否定の式が爆発してしまう場合がある
• 冗長項の除去(irredundant)
– 数百変数での扱える(1980年代から)
– 最適解との差は項の数で数%程度以下
最近の動向
– 後で説明するBDDの利用
– 後で説明するSAT手法の利用
7
多段論理回路の合成
•
処理ステップ
1. 積和形論理式簡単化
2. 多段化(論理式の割り算)
3. 多段論理式簡単化
4. テクノロジマッピング
5. 多段論理回路簡単化
•
タイミング最適化は、随時挿入される
– 最大、最小遅延の最適化
8
積和形論理式と多段論理式
•
•
•
•
•
積和形論理式 = AND-ORの2段
多段論理式 = 3段以上の任意の形
一般的には、多段論理式の方がコンパクトな表現になる
– ace + ade + bce + bde + cf + df = (c + d)(e(a + b) + f)
回路面積の目安 = リテラル数
– 16 → 6
回路遅延の目安 = 2入力基本ゲートで表現した時の段数
– 5段 → 4段
9
a
b
a+b+c
t1
t1t2
c
y
d
t2
e
f
g
d’+ef+gh
t1=a+b+c
t2=d’+ef+gh
y=t1t2
h
図5
10
a
b
ace+bce+de+g
f1
ad+bd+cde+eg
f2
c
d
e
abc
g
f3
a
b
a+b
t1
t1ce+de+g
f1
t1d+cde+eg
f2
c
d
e
abc
g
図6
f3
11
論理式の割り算
•
•
•
f = gh + r
– fをgで割った商がhで、あまりがr
– 一般的には、hとrはユニークには決まらない
hとrに制限をつけない=論理的割り算
– 無限通りの割り方がある
– 1回の割り算に積和形論理式の簡単化と同じ手間がかかる
ghを代数的積に制限する=代数的割り算
– 結果がユニークにできる
– O(n log n)の手間で計算できる
– そんなに悪くないことが多い
12
論理式の代数的処理
•
•
代数的論理式とは、論理関数の積和形論理式表現で、他の1つのキューブ
に含まれるキューブ(single cube containmentと呼ぶ)のないもの
– ab + abc + cdは代数的論理式ではない
– ab + cdは代数的論理式
代数式fとgの代数的積fgとは、fgを展開し、single cube containmentに
ついて冗長性を取ったもの
– fとgに共通な変数がないとfgは必ず代数的積
– (a + b)(c + d) = ac + ad + bc + bdは代数的積
– (a + b)(a + c) = aa + ac + ab + bc = a + bcは代数的積ではない
13
論理式の割り算の例
f= ad + ae + bcd + j
g1 = a + bc
g2 = a + b
• fをg1で代数的に割ると、商はd、あまりはae + j
• fをg2で代数的に割ると、商は(a + bc)d、あまりはae + j (代数的
には割れない)
14
Weak division
•
•
•
代数的割り算であまりのキューブ数最小のもの
定理: weak divisionの結果はユニーク
割り算の手間はO(n log n) nは積項数
15
c
b
d
e
c
d
a
b
f
4
1
5
2
6
e
c
a
b
f
7
8
9
o2
3
(a)
c
b
d
o1
4
1
2
5
o1
8
9
o2
3
(b)
図7
16
a
b
c
1
(b)
(a)
a
c
0
d1
b
2
c
a
b
2
c
(d)
( c)
図8
17
c
4
b
d
1
5
e
c
d
a
b
f
2
6
8
7
9
o2
3
(a)
c
1
0
o1
b
d
e
c
0 d
1a
1b
1 f
1
2
0
0
4
0
5
0
矛盾
0 1
6
3
o1
1
7
1
8
1
9
o2
(b)
図9
18
c
4
b
d
e
c
d
a
b
f
1
5
2
6
e
c
a
b
f
7
8
9
o2
3
(c)
c
b
d
o1
4
1
2
5
o1
8
9
o2
3
(d)
図9
19
f
g
d
e
out
h
b
a
c
(a)
図10
20
not(1)
nand2(2)
or(3)
nand3 (3)
and2(3)
oai21 (3)
aoi22 (4)
(b)
図11
21
f
g
d
out
e
h
b
面積合計23
a
(c )
c
図12
22
f
and2(3)
g
d
aoi22(4)
or2(3)
out
e
h
b
or2(3)
nand2(2)
a
面積合計18
nand2(2)
c
not(1)
図13
(d)
23
f
g
d
nand3(3)
and2(3)
oai21(3)
F
e
h
b
面積合計15
a
oai21 (3)
(e)
nand2(2)
c
not(1)
図14
24
(a)
nand2 (3)
not (2)
nand3 (4)
nand4 (5)
and2 (4)
aio21 (4)
oai21 (4)
library
(b)
図6
25
5
nand2(3)
6
not(6) nand2(12)
not(5)
and2(8) nand3(11)
nand2(3) and2(4)
nand2(7) 4
nand4(8)
1
2
nand3(4)
3
not(10)
aoi21(8)
7
8
nand2(11)
nand3(13)
nand4(12)
(c)
図15
26
aoi21
5
6
7
8
nand3
1
4
2
nand2
3
(d)
図16
27
0
28
29
30
31
32
33
34