SystemC Japan 2013ユーザー事例講演、アクセルがForteの高位合成ツールを導入した訳
2013年6月21日、今年で8回目の開催となるセミナー「SystemC Japan 2013」が開催された。
同セミナーは、設計言語IEEE 1666 SystemCにフォーカスした技術セミナーで、主催はSystemCの仕様策定および普及活動を推進する業界団体米Accellera Systems Initiative。SystemC関連のセミナーとしては世界最大の開催規模を誇っている。
ここでは、SystemC Japan 2013で発表されたアクセルのユーザー事例の内容を紹介する。
■アクセル「グラフィックスLSIにおけるCynthesizerの使いどころ」
アクセルの講演は、技術グループ マネージャーの菅野裕揮氏および同マネージャー小川 丈博の2名によって行われた。ここでは小川氏の発表にフォーカスして講演内容を紹介する。
※写真の人物がアクセルの小川氏
アクセルはパチンコ、パチスロなどのアミューズメント機器に搭載されるグラフィックスLSIの開発をコア事業とするファブレス半導体ベンダで社員数は75名、少数精鋭の体制でグラフィックスLSIを開発している。
小川氏によると、同社が高位合成ツールの導入検討を開始したのは約3年前の2010年5月から。当初、社内ニーズは無かったが、前職で10年近く高位合成ツールを触っていた小川氏がトリガーとなり、研究開発的に高位合成を試し始めた。小川氏は、高位合成ツールを利用することでRTLの設計のTATを短縮し、アルゴリズムをできるだけ最適化して市場に投入したい。チップ面積が多少大きくなっても市場投入のタイミングを重視して、高位合成でうまく設計を回して行きたいと考えていた。
小川氏はForteの高位合成ツール「Cynthesizer」の実力を知っていたため、評価は他社の製品2種類を対象に実施。製品開発においては検証に時間をかける余裕が無く、なるべく早く回路をFPGAに落としてソフト部隊が評価、という形を取っている事情から、初期合成のTATが一つの評価ポイントだった。また、開発の初期段階で回路規模をFIXしたいため、回路規模の見積りに高位合成が使えるかどうか? 回路の合成にあたり必要十分な制約が与えられるか? といった点も重要な評価ポイントだった。
実際に2社の製品を評価したところ、一長一短あれどいずれの製品も製品開発に適用可能なレベルで、どちらかのツールを導入するつもりでいた。しかし、その頃社内において浮動小数点演算器のニーズが高まり、急遽、買収したAlithmatica社の演算器合成ツール「CellMath」を組み込んだForteの「Cynthesizer Ultra」を導入する事にした。
導入後、「Cynthesizer」を浮動小数点演算回路の設計に適用したところ、合成前の様々な検討を経て、高位合成の実行時間としては計2-3時間程度で1.7Mゲートの回路が生成できた。同回路の構成と合成結果の比較(対RTL設計見積り)は以下の図の通り。
※スライド画像は全てアクセル提供のデータ
合成は演算部とI/O部を分離して行い、Cynthsizerの入力記述となるSystemCから合成した。通常はシミュレーション速度を落とさないために、独自の浮動小数点のクラスを使ってアルゴリズムを開発しているため、コピーして書き換える形でSystemCに落としてから「Cynthesizer」で合成した。
小川氏によると、浮動小数点演算子を合成する方法は、FP演算子のアルゴリズムを独自に定義して高位合成ツールで合成する方法と、専用の浮動小数点ライブラリを使う方法とが考えられるが、専用の浮動小数点ライブラリを備える「Cynthsizer Ultra」で合成した回路の方が面積もレイテンシも優れていたとの事。合成結果はアルゴリズムの最適化にもよるだろうが、ビット操作や複合演算の最適化で「Cynthsizer Ultra」に強みがあったと小川氏。実際にある演算器の面積で比べてみると、「Cynthesizer Ultra」の合成結果を1とすると既存のRTLは1.2倍、独自定義したアルゴルズムの合成結果は1.5倍の面積だったという。
尚、小川氏は、あるブロックの合成には実行時間が1時間かかったが、高位合成で1時間かかると必要に迫られないと最適化する気力がなくなるとコメント。15万ゲート程度が1回の合成に耐えられる規模と考えているという事だった。
小川氏は講演の最後に、「Cynthsizer Ultra」の結果には満足しているとした上で、課題を挙げるとすると、アルゴリズム開発で「Cynthesizer Ultra」の浮動小数点ライブラリを使いたい。Windows上で動くハードの精度と同じSystemCのデータタイプを使わないライブラリを出して欲しいとコメントしていた。