フォトアーキテクチャ

今さら聞けない高位合成
~一から学ぶ高位合成~
から学ぶ高位合成
シャープ株式会社
電子デバイス事業本部 副参事
山田 晃久
1
ハードウェア設計と抽象度
動作仕様
設計制約(コスト 性能 消費電力)
設計制約(コスト、性能、消費電力)
要求仕様
システムの実現方式を決定
(アーキテクチャ、アルゴリズム)
ゴ ズ
システム分割(HW/SW)→機能ブロック
システム設計
(動作レベル設計)
RTL記述
機能設計
(RTL設計)
論理合成
ゲートレベル記述
論理設計
レイアウト設計
ハードウェアの処理を設計
(データ処理回路と制御回路)
クロックレベルのタイミング設計
論理素子(AND/OR/NOTなど)と
記憶素子(フリップフロップ)による回路設計
フロアプラン決定
配置配線
©2009 SHARP CORPORATION
2
ハードウェア設計と抽象度
動作仕様
設計制約(コスト 性能 消費電力)
設計制約(コスト、性能、消費電力)
要求仕様
動作レベル記述
システムの実現方式を決定
(アーキテクチャ、アルゴリズム)
ゴ ズ
システム分割(HW/SW)→機能ブロック
システム設計
(動作レベル設計)
高位合成
(動作合成)
RTL記述
機能設計
(RTL設計)
論理合成
ゲートレベル記述
論理設計
レイアウト設計
ハードウェアの処理を設計
(データ処理回路と制御回路)
クロックレベルのタイミング設計
論理素子(AND/OR/NOTなど)と
記憶素子(フリップフロップ)による回路設計
フロアプラン決定
配置配線
©2009 SHARP CORPORATION
3
動作レベル設計とRTL設計
„
„
動作レベル設計
z
動作(アルゴリズム)を設計
z
How のみを設計
z
ハードウェアによる実装とは独立
RTL(Register Transfer Level)設計
z
クロック毎のレジスタ間のデータ転送を設計
z
How と When と by What を設計
z
レジスタや演算回路とそれらの制御を設計
(ある程度ハードウェアが見えている)
©2009 SHARP CORPORATION
4
高位合成とは
„
設計対象の回路の動作・アルゴリズムか
設計対象の回路の動作
アルゴリズムか
らレジスタ転送レベル(RTL)の回路を自
動で合成する技術
„
High level synthesisの和訳
和訳
„
動作合成(Behavioral synthesis)とも
呼ばれる
©2009 SHARP CORPORATION
5
高位合成処理
„
HDL中の演算の
1.
実行するサイクルを決定し(スケジュー
(
リング)、
2.
各演算を演算器に割り当て、必要に応
じて接続し(アロケ ション)
じて接続し(アロケーション)、
3
3.
それらの回路要素を制御する回路を
生成する(制御回路生成)。
©2009 SHARP CORPORATION
6
スケジューリング
Y = a * b * c * d;
データフローグラフ
a
bc
Step 0
a
Mult
b
Reg
2
d
Step 1
*
c
d
1
* *
3
*
Step 2
*
1
2
Step 3
*
1
1
リソース制約: 使用できる乗算器数は1個
©2009 SHARP CORPORATION
7
アロケーション
Step 0
a
Mult Reg
b
2
Step 1
*
c
d 1
3
*
Step 2
1
2
Step 3
*
b
a
c
d
s1
Q
R1
s2
*
Q
R2
s3
s4
s5
Q
R3
1
1
データパスの構成
スケジ
スケジューリング結果
リング結果
演算器やレジスタなどの演算資源をどのように割当て、
共有するか(リソ スシェアリング)を決定
共有するか(リソースシェアリング)を決定
©2009 SHARP CORPORATION
8
制御回路生成
Step 0
Step 1
St 2
Step
Step 3
Mult Reg
a b
2
* c d 1
3
* 1
2
*
1
1
スケジューリング結果
スケジュ
リング結果
s1
b
a
c
d
Q
s4
R1
s2
*
Q
R2
s5
Q
s3
R3
s1
s2
s3
s4
s5
R1
R2
R3
Step 0
1
0
X
X
X
1
1
0
Step 1
0
1
0
0
0
1
1
1
Step 2
X
X
1
1
1
0
0
1
Step 3
X
X
X
0
1
0
0
1
©2009 SHARP CORPORATION
9
RTL設計
„
„
設計の焦点
z
クロック毎のレジスタ間のデータ転送をどのように
するか?(同期設計)
z
レジスタ間のデータ処理と制御を検討
設計手法
z
RTレベルのハ ドウ ア記述言語を使用
RTレベルのハードウェア記述言語を使用
z
論理合成を利用
- コストや性能の制約にもとづいてさまざまな組合せ回路
を合成(レジスタ構造は固定)
©2009 SHARP CORPORATION
10
RTL記述
z
レジスタや演算回路とそれらの制御を記述
z
クロック毎のレジスタ間のデータ転送を記述
レジスタ
レジスタ
組合
せ回
路
外部入力
外部出力
クロック
クロ
ク
データ処理回路(データパス)
制御回路(状態遷移機械)
©2009 SHARP CORPORATION
11
動作レベル設計
„
„
設計の焦点
z
どのようなアルゴリズムで機能を実現するか?
z
デ タフ
データフローを検討
を検討
設計手法
z
システム全体をまとまった機能ブロックに分割
全体をまとま た機能ブ
ク 分割
z
動作レベルのハードウェア記述言語を使用
z
高位合成を利用
- コストや性能の制約、入出力の制約(順序制約やタイミング制約)
コストや性能の制約 入出力の制約(順序制約やタイミング制約)
を与えてさまざまな構成の回路を合成
©2009 SHARP CORPORATION
12
設計抽象度の差(1)
動作レベル
Y = a * b * c * dd;
動作レベルでは
ハードウェア実装を
意識しない
RTレベル
Q
*
Q
Q
*
Q
…
*
Q
Q
*
コントローラ
Q
回路1
…
回路n
©2009 SHARP CORPORATION
13
設計抽象度の差(2)
動作レベル
architecture
hit t
b h i off MUL4 is
behavior
i
begin
MULT:process(a,b,c,d)
begin
y <=
< a*b*c*d
d;
end process ;
end behavior;
行数で数~10倍
7行
RTレベル
architecture RTL1 of MUL4 is
signal aa, bb, cc, dd: unsigned(7 downto 0);
begin
MULT:process(CLK)
begin
g
if CLK’event and CLK = 1 then
aa <= a; bb <= b; cc <= c; dd <= d;
y <= (aa * bb) * (cc * dd);
end if;
end process ;
end RTL1;
11行
architecture RTLn of MUL4 is
signal mul: unsigned(7 downto 0);
signal
g
m1,, m2: unsigned(7
g
( downto 0);
);
…..
begin
MULT:process(CLK)
begin
g
if CLK’event and CLK = 1 then
mul <= m1 * m2;
end if;
end p
process ;
SEL1:process(CLK)
begin
if CLK’event and CLK = 1 then
if stage
g = 1 then
m1 <= a;
else
m1 <= mul;
end if;;
end if;
end process ;
….
y <= mul;;
end RTLn;
©2009 SHARP CORPORATION
48行
14
動作レベル設計とRTL設計
„
動作レベル設計
z
„
How のみを設計
どのような処理を行うか?
RTL設計
z
How と When と by What を設計
いつその処理を
行うか?
スケジューリング
どの演算器がその処理を
行うか?
アロケーション
©2009 SHARP CORPORATION
15
Cベース設計
C
ス設計
(アルゴリズム/仕様設計)
C
HW/SW分割
C (SW)
HW仕様
Cコンパイラ
Cコンハ
イラ
オブジェクトコード
RTL記述
記述
論理合成
SoC
©2009 SHARP CORPORATION
16
Cベース設計
C
ス設計
(アルゴリズム/仕様設計)
C
HW/SW分割
C (HW)
HW/SW検証
C (SW)
Cコンパイラ
Cコンハ
イラ
オブジェクトコード
RTL記述
記述
論理合成
SoC
©2009 SHARP CORPORATION
17
Cベース設計
C
ス設計
(アルゴリズム/仕様設計)
C
HW/SW分割
C (HW)
HW/SW検証
C (SW)
Cコンパイラ
Cコンハ
イラ
高位合成
オブジェクトコード
RTL記述
記述
論理合成
SoC
©2009 SHARP CORPORATION
18
Cベース設計
C
ス設計
(アルゴリズム/仕様設計)
C
Cベースの動作レベル設計
C (HW)
HW/SW分割
HW/SW検証
C (SW)
Cコンパイラ
Cコンハ
イラ
高位合成
オブジェクトコード
RTL記述
記述
論理合成
SoC
©2009 SHARP CORPORATION
19
Cベースの動作レベル設計のメリット
„
期待できるメリット
z
記述量が少なくなる
z
高速に機能検証が行える
z
検証した機能がそのまま回路になる
z
早い段階で回路規模、性能が見積もれる
z
たくさんのCプログラム資産が利用できる
©2009 SHARP CORPORATION
20
高位合成のターゲット回路
外部入力
データ処理用の回路
((データパス))
演算結果
外部出力
制御信号
制御回路
©2009 SHARP CORPORATION
21
高位合成技術の適用範囲 (1)
入力
処理1
処理2
出力
イベント
ハンドラ
疑問:どの部分に高位合成を適用すべきか?
©2009 SHARP CORPORATION
22
高位合成技術の適用範囲(2)
●各ブ
●各ブロックの処理が簡単な場合
ク 処理が簡単な場合
入力
処理1
一つの動作で記述して高位合成
処理2
出力
イベント
ハンドラ
●各ブロ クの処理が複雑な場合
●各ブロックの処理が複雑な場合
別々のブロックにした方が考えやすい
©2009 SHARP CORPORATION
23
シャープでの取り組み
„
システムの並行性をCSP (Communicating
Sequential Processes)として表現
„
各逐次プロセスを高位合成技術で合成
入力
処理1
処理2
出力
イベント
ハンドラ
par
入力;
処理1;
処理2:
出力;
イベントハンドラ;
©2009 SHARP CORPORATION
24
上流設計の考え方
各ブロックの高位合成
ブロック間の接続
(計算機の仕事)
設計対象をCSP
として表現
(設計者の仕事)
動作仕様
入力
処理1
処理2
出力
イベント
ハンドラ
論理合成可能なRTL回路
このような上流設計が可能となる設計環境を構築する
©2009 SHARP CORPORATION
25
Bachシステム
Bach C言語
動作仕様
入力
処理1
処理2
出力
Bach
B
h
コンパイラ
イベント
ハンドラ
論理合成可能なRTL回路
Bach Cシミュレータ
サイクル精度Cシミュレータ
©2009 SHARP CORPORATION
26
Bachを用いた設計フロー
仕様
Bachシステム
Untimed検証
Bachシミュレ ション
Bachシミュレーション
デバッグ
Bach C記述
入出力のチェック
高位合成 (Bachコンパイ
ラ)
回路スペックの確認
Timed検証
サイクル精度C
シミュレーション
RTLシミュレーション
デバッグ
動作の確認
サイクル精度
C記述
RTL記述
スループット・
レイテンシのチェック
既存設計手法
既存RTL記述
RTLシミュレーション
RTL
シミュレーション
論理合成
LSI
レイアウト
©2009 SHARP CORPORATION
27
適用事例
„
MPEG-4 コーデックLSI
„
IrSimpleフォトアダプタ用画像処理エンジン
„
CCDカメラ、CMOSセンサカメラ用DSP
„
ワンセグ受信用マルチメディア処理LSI
©2009 SHARP CORPORATION
28
フレームレート変換LSI設計への適用
„
60フレーム/秒の入力動画を120フレーム/秒に変換
60フレーム/秒
120フレーム/秒
中間のフレームを生成
„
外部仕様
z 入力:60 フレーム/秒
z 出力:120フレーム/秒
z 画像サイズ : フルスペックHD (1920 x 1080)
©2009 SHARP CORPORATION
29
FRC LSIの設計/検証フロー
アルゴリズム検証
R&D部門
デバイス開発
部門
シミュレーション
ション
C シミュレ
デバッグ
Bach C Untimed
シミュレーション
デバッグ
ソース
Cソース
Bach システム
検証
Timed 検証
RTL シミュレーション
BachC記述
高位合成
RTL 記述
既存設計手法
エミュレーション
既存RTL記述
RTL 検証
論理合成
レイアウト
LSI
©2009 SHARP CORPORATION
30
動作レベル設計(C → Bach C)
1.
C言語で設計する部分とそれ以外の切り分け
z
C言語で設計しなかった回路
言語 設計しなか た回路
-
2.
アナログ回路
単相片エッジのクロックで動作しない回路
既設計の回路
テスト回路
全体のデータ・制御の流れを決定
z
C言語ベース設計といえどもトップダウンのアプローチ
は必要
©2009 SHARP CORPORATION
31
FRCアルゴリズム
Motion vector estimation
Input 60p
Pre-processing
Motion vector
estimation
Interpolation
Frame interpolation
Up-converted
output
p 120p
p
©2009 SHARP CORPORATION
32
動作レベル設計(C → Bach C)
1.
C言語で設計する部分とそれ以外の切り分け
z
C言語で設計しなかった回路
-
2
2.
3.
アナログ回路
単相片エッジのクロックで動作しない回路
既設計の回路
テスト回路
全体のデータ・制御の流れを決定
全体のデ
タ 制御の流れを決定
z
C言語ベース設計といえどもトップダウンのアプローチ
は必要
サブモジュールの詳細化
z
固定小数点化 ビット幅指定 並列化
固定小数点化、ビット幅指定、並列化、、、
©2009 SHARP CORPORATION
33
FRC LSIの設計/検証フロー
アルゴリズム検証
R&D部門
デバイス開発
部
部門
シミュレーション
レ ション
C シミ
デバッグ
Bach C Untimed
シミュレーション
デバッグ
ソ ス
ソース
Cソース
Bach システム
検証
Timed 検証
RTL シミュレーション
BachC記述
高位合成
RTL 記述
既存設計手法
エミュレーション
既存RTL記述
RTL 検証
論理合成
レイアウト
LSI
©2009 SHARP CORPORATION
34
Bach C → RTレベル回路
1.
Bach Cレベルでuntimedな検証
2.
高位合成
3.
単体でRTレベル検証し 処理サイクルを確認
単体でRTレベル検証し、処理サイクルを確認
4.
スループット、回路規模のチューニングが必要なら
ル
ット、回路規模のチ
ングが必要なら
Bach Cコードを修正し1へ。
5.
システム全体でRTレベル検証
©2009 SHARP CORPORATION
35
各工程の検証時間
Original ANSI C
79秒
Bach C
49秒
Emulator
45秒
RTL simulator
228時間
(見積もり)
・入力5フレーム分の検証時間
・CPU:
CPU インテル Xeon5160
X
5160
©2009 SHARP CORPORATION
36
FRC LSIの設計/検証フロー
コードカバレージ 100%
機能カバレージ 100%
機能検証
テストデータ
R&D部門
デバイス開発
部
部門
アルゴリズム検証
シミュレーション
レ ション
C シミ
デバッグ
Bach C Untimed
シミュレーション
デバッグ
ソ ス
ソース
Cソース
Bach システム
検証
Timed 検証
RTL シミュレーション
BachC記述
高位合成
RTL 記述
出力結果の完全一致
1
…..
○
2
…..
○
3
…..
○
4
…..
○
チェックリスト(500項目以上)
を作成
を作成して確認
確認
既存設計手法
エミュレーション
既存RTL記述
アサーションベース検証
で一致を確認
出力タイミング仕様
RTL 検証
一発動作
発動作
論理合成
レイアウト
LSI
©2009 SHARP CORPORATION
37
設計結果
„
回路全体の90%以上をBach C言語で設計
„
アルゴリズムがFixしてから約2ヶ月でテープアウト完了
©2009 SHARP CORPORATION
38
設計工程
アルゴリズム設計
(C言語)
アルゴリズムと回路の並行開発
動作レベル設計(Bach C言語)
論理合成
RTL検証
仮レイアウト
本レイアウト
レイアウトまで含めた並行開発
時間
時間
©2009 SHARP CORPORATION
39
設計結果
„
回路全体の90%以上をBach C言語で設計
„
アルゴリズムがFixしてから約2ヶ月でテープアウト完了
„
リスピンなしで量産化
„
当社製アクオスに搭載し、
フレームレート変換機能付きフル
スペックHD液晶テレビを
「世界で初めて」商品化。
「世界で初めて」商品化
©2009 SHARP CORPORATION
40
C+高位合成を使った設計の課題
„
タイミング収束
z
„
静的検証
z
„
動作レベルとRTレベル等価性検証
ECOへの対応
z
„
高位合成時の見積り精度
抽象度と解析容易性のトレードオフ
記述スタイルの確立
©2009 SHARP CORPORATION
41
C+高位合成を使った設計での注意点
„
すべての回路をC言語で設計するのが良いと
は限らない
„
良い合成ツールがあれば良い回路ができるわ
けではない
„
C言語を使えば高速に検証できるわけではない
©2009 SHARP CORPORATION
42