高集積・低電力の実現に向けた高位設計 · •...
TRANSCRIPT
富士通セミコンダクター株式会社 システムLSIカンパニー SoC設計センター フロントエンド設計部 立岡真人
高集積・低電力の実現に向けた高位設計 ~配線混雑解消のための高位設計事例~
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
CDN Live Japan
2014.07.18
アジェンダ カスタムSoC(ASIC)ソリューション紹介
背景
現状の高位設計フローにおける配線混雑問題
配線混雑を考慮した高位設計フロー
配線混雑の検出及びその改善事例
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED 1
富士通セミコンダクター カスタムSoC(ASIC)ソリューション
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED 2
はじめに
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
富士通セミコンダクターは、お客様の開発されるカスタムSoCにおいて、 「カスタムSoCソリューション」を提供します。
「カスタムSoCソリューション」をご利用いただくことにより、高性能、高品質かつ低消費電力のSoCを短期間で開発することが可能になります。
カスタムSoC ソリューション
ご提案
開発手法
・フルカスタム
・プラットフォームベース
3
カスタムSoCソリューション プラットフォームベース開発
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
ベースプラットフォームからのカスタマイズで開発期間短縮
事前評価・検証により
開発期間短縮・リメークリスク低減に貢献
4
Cedar®はお客様の開発を支援するサービス
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
Cedar ®-SPEC Cedar-Specification 仕様書レベルの品質向上と検証項目抽出サービス ・仕様書の品質向上 ・検証項目の抽出
Cedar®-SIM Cedar-Simulation ランダム技術とアサーション技術を駆使した シミュレーションベースの検証サービス ・アサーションを挿入することによるインタフェース検証 ・ランダム手法による 網羅的検証 ・Cedar-SPEC検証項目による 機能検証
Cedar®-EMU Cedar-Emulation エミュレータを活用した大規模デザイン、 長大データによる検証と消費電力見積りサービス ・性能確認と消費電力測定 ・ソフトウェアを含むシステム検証
Cedar®-ESL Cedar-Electronic System Level 仮想プラットフォームを活用した性能評価環境 およびソフトウェア先行開発環境構築サービス ・性能評価モデルによるアーキティクチャ設計 ・高速モデルによるソフトウェアの早期開発
Cedar : C-based Effective Design-Flow Apply to Real Design
Cedar®-PROT Cedar-Prototyping ハードウェア動作検証を実現するプロトタイプボード 開発サービス ・ハードウェア動作確認 ・ソフトウェアを含むシステム検証
Cedar®-HLS Cedar-High Level Synthesis 高位合成サポートサービス ・上流記述の最適化 ・上流記述向けASICハンドオフ
検証資産 (再利用/継承) システム要件
アーキテクチャ設計
システム 設計
仕様書起案
アーキテクチャ 探索
ES開発
プロトタイプボード 開発
製品検証
協調検証
性能 評価
高位 合成
ブロック 実装
システム 組上げ
ブロック 設計
ソフトウェア 設計
ソフトウェア 先行 開発
システム検証
ブロック検証
Cedar-SIM
性能 見積
Cedar-SPEC Cedar-ESL
Cedar-EMU
Cedar-PROT
Cedar-HLS
Σ +
5
背景
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED 6
Motivation (背景)
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
配線混雑の問題がテクノロジの微細化によって顕著に 先端プロセスでは配線混雑が発生する傾向がある。 配線混雑がおきると、PPA (Performance/Power/Area)が劣化してしまう 配線混雑を考慮した合成ツールや設計フローの確立が重要
高位合成技術の普及
適用規模が増大、単体モジュールからサブシステムへ、数十万ゲートから数千万ゲートへ拡大
回路意識せずにアルゴリズムの近い記述で回路品質の保証が困難 • 配線混雑の問題もRTL設計より発生しやすい
配線混雑を考慮した高位合成技術はまだ確立されていない
配線混雑を考慮した高位設計フローを確立したい
ケイデンスと協力して配線混雑を考慮した高位設計フローを試行 実設計へ適用
7
2. 論理構造起因の混雑 • 論理の構造によって引き起こされる配線混雑 • 設計起因で引き起こしている
• 例:サイズの大きなデータセレクタ • 実際のフロアプランの情報がなくても、確認可能 • 論理設計フェーズの解決すべき問題
配線混雑の問題の起因
1.フロアプラン起因の混雑 • フロアプラン時に発生される配線混雑 • よくある例として、メモリの配置などによる配線混雑 • 論理設計チームと相談して配置などを改善すれば解消可能 • 実際のレイアウトを実施しないと確認困難
Multiplexer(MUX)/Demultiplexer(DMUX)
8
現状の高位設計フローの課題
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED 9
従来の高位設計フロー
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
アルゴリズム開発
C/C++ ①アルゴリズム
C/C++ SystemC
コード書き換え
RTL
高位合成 Tech Lib
Netlist
論理合成 Tech Lib
②書き換え後C’
RTL Style Check RTL Rule Set
(2)等価性検証 高位合成
論理合成
(1)等価性検証
RTL-Sim/(FPGA)
配置配線
(3)等価性検証 性能検証
③高位合成結果のRTL
④論理合成結果のNetlist フロントエンド
バックエンド
フロントエンドの設計と バックエンドの設計は 完全に分業化、配線混雑はバックエンド工程で初めて検出
配線 混雑 品質劣化
10
高位合成の導入メリット
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
Micro-Architecture Designs
Schedule & Allocations
SystemC and C++ Behavioral Models
RTL
抽象度の高いSystemC/C++記述でアルゴリズムに近いモデルを実現可能
ソースコードを変更せず、コマンドや制約でハード実装を選択可能
レイテンシの自動挿入、ステートマシンの自動生成、リソース共有、レジスタ共有により優れたPPA(Performance/Power/Area)の実現
従来のRTLと比べると、遥かに短期間で ハードウェアの論理設計が実現可能、しかし…
11
高位合成と配線混雑の問題
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
回路品質が記述スタイルに強く依存
配線混雑しやすい回路をRTL設計よりも容易に作ってしまう
特に高位合成の初心者(RTL設計の熟練者でも)
アーキテクチャの選択も配線混雑の一因に
回路イメージが明確になっていなければ問題深刻
ツールのアーキ選択自動化も問題の複雑化を助長
アグレッシブなリソース・レジスタ共有も時には配線混雑の原因に
面積を小さくするために設計者がリソース共有の最大化を求める傾向がある
しかし、現状の設計フローは配線混雑の問題に対応していない
12
簡単な事例
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
実設計で発生したコーディング例で配線混雑が発生
さて、何が問題でしょうか?
sc_in<int> in; sc_in<int> in2[16]; int array [16]; int a, b, c; void init() { a = 0; b = 1; c = in.read(); LOOP: for (i = 0; i < 16; i++) { array[i] = in2[i].read(); } }
SystemCコード
CtoSコマンドで ループをブレークするように指定 つまり16サイクルをかけて、配列の 要素に入力の値を代入する
13
配列のインデックス・アクセス
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
配列のアクセスに大きなDEMUX/MUX発生
人手のRTL以上に配線混雑の回路を作りやすい
sc_in<int> in; sc_in<int> in2[16]; int array [16]; int a, b, c; void init() { a = 0; b = 1; c = in.read(); LOOP: for (i = 0; i < 16; i++) { array[i] = in2[i].read(); } }
① ②
… 32ビット
32ビット
16個の配列array[i]に代入
4ビット
① 16x32のDEMUX発生
…
32 bits
32 bits
16入力
4 bits
②16x32のMUX発生
14
配線混雑を考慮した高位設計フロー
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
アルゴリズム開発
C/C++ ①アルゴリズム
C/C++ SystemC
コード書き換え
RTL
高位合成 Tech Lib
Netlist
論理合成 Tech Lib
②書き換え後C’
RTL Style Check RTL Rule Set
(2)等価性検証
高位合成
論理合成
(1)等価性検証
RTL-Sim/(FPGA)
配置配線
(3)等価性検証 性能検証
③高位合成結果のRTL
④論理合成結果のNetlist
フロントエンド
バックエンド
フロンドエンド設計に配線混雑検出及び改善フェーズを導入し、論理起因の配線混雑を早期解消
配線混雑検出
改善
物理 Tech Lib
品質向上
15
配線混雑の改善例
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED 16
面積及び配線混雑ともに改善した例
配線混雑の検出及び改善事例-1
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
パラメータ 値
Utilization 70% CtoS Clock Freq. 200MHz Ratio 1.0 (正方形)
合成用のパラメータ
項目 値
配線混雑度 H: 8.55% V: 4.28% Long Path違反数 (50段超) 4,786 配線混雑MUX数 8,620 Total Length (um) 15,816,331 RC Area (CA) 42,697,674
RCPのCongestion Map 実行結果
かなり大きい
回路品質もよくない
H:水平方向の配線混雑 V:垂直方向の配線混雑
17
混雑場所の特定
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
switch(idx){ case 0: start = 0; end = 1; break; case 1: start = 1; end = 5; break; … } … sc_uint<5> i=start; BREAK_LOOP: do{ 102: STR.A[i] =0; 103: STR.B[i] =0; 104: STR.C[i] =0; … i++; }while(i<end); …
ループBreak
4.'memwrite_STR_A_ln102' : 以下省略 : :
6.'memwrite_STR_B_ln103' : 以下省略 :
8.'memwrite_STR_A_ln104' : 以下省略 :
混雑MUXのレポート
場所特定
18
配線混雑改善ためのコード変更例
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
switch(idx){ case 0: start = 0; end = 1; break; case 1: start = 1; end = 5; break; … } … sc_uint<5> i=start; BREAK_LOOP: do{ STR.A[i] =0; STR.B[i] =0; STR.C[i] =0; … i++; }while(i<end); …
ループBreak
switch(idx){ case 0: start = 0; end = 1; UNROLL1: for (i = start; i <= end_pu; i++) { STR.A[i] =0; STR.B[i] =0; STR.C[i] =0; … } break; case 1: start = 1; end = 5; UNROLL1: for (i = start; i <= end; i++) { STR.A[i] =0; STR.B[i] =0; STR.C[i] =0; … } break; …
ループ展開
ループ展開
配列アクセスための DeMuxを削除
改善前 改善後
… 32
32
16
4
…
32
16
19
改善結果
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
項目 改善前 改善後_1 改善後_2
配線混雑度 H: 8.55% V: 4.28% H: 1.79% V: 2.95% H:017% V:0.81%
Long Path違反数 4,786 76 472
配線混雑MUX数 8,620 5,158 (-40%↓) 4,982 (-42%↓)
Total Length 15,816,331 15,415,309 (-2%↓) 13,594,980 (-14%↓)
RC Area (CA) 42,697,674 29,955,645 (-29%↓) 33,149,970(-22%↓)
改善前 改善後_1
• 改善_1: 難易度の低い3種類のみ修正 (短時間対応可能)
• 改善_2:難易度の高い修正の一部も実施 (改善方法のノウハウ必要)
改善後_2
20
まとめ
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
配線混雑の問題が設計の品質低下を招く
従来の高位設計フローで配線混雑を考慮していない
配線混雑を考慮した新しい高位設計フローを提案
配線混雑の判断及び改善をフロントエンドフェーズに導入
実プロジェクトに適用中
検出について確認済
レイアウト後との品質劣化との相関も確認済
今後配線混雑の改善を実施し、レイアウト後の改善結果も確認
21
ツールへの期待
Copyright 2014 FUJITSU SEMICONDUCTOR LIMITED
物理考慮した高位合成ツールの製品化 • 配線混雑の場所の特定をもっと分かりやすく • 配線混雑の改善方法についてコマンドの導入 • レジスタ、リソース共有も配線混雑を考慮 • 配線混雑を考慮したスケジューリング • SystemCコードに細工なしで可能に
22
Copyright 2010 FUJITSU LIMITED 23