高位合成ツールによるC言語ベース設計の状況

図研エルミック(株) 武田 太豪 鎌野 昇一 三宅 信之

tag: 組み込み

2010年12月21日


 

 

 図研エルミックは,約5 年間にわたり代理店として日本製高位合成/検証ツールの販売・サポートを行っています.各企業の高位合成への取り組みは様々ですが,実際の設計に高位合成ツールを取り入れている企業は確実に増えています.大手メーカに限れば,導入検討フェーズに留まっているところは少数派と言えます.開発実務に使われているのはもちろんのこと,当社が販売している高位合成ツールで開発され市場に出ている事例もテスタ-,携帯電話,ビデオカメラ,監視カメラ,メディアプロセッサ等々,枚挙にいとまがありません.ここでは,高位合成のフロー,レガシーRTLをどうするのか,アルゴリズム検証用途としての可能性などを解説します.

高位合成ツールの設計フロー

 当社では,ツールの販売以外に,自社でC ベース設計を行っています.実際に高位合成ツールを使って開発した,JPEG XR エンコーダーを例に挙げ,設計フローを(図1)紹介します.

図1 高位合成ツールを使用した設計フロー

(1)まず,アルゴリズム・レベルの Cソースを作成します.このレベルで徹底的にテストを行い,アルゴリズム・レベルでの不正確さをつぶします.今回の事例では,ISO が提供するJPEG XRサンプルコードをベースとしました.

(2)次に,ハードウェア化仕様検討を行います.アルゴリズム・レベルでのC ソース構成のまま高位合成ツールにかけることは可能ですが,より最適なハードウェアを得るためには,適切な仕様検討が必要です.JPEG XR 開発の場合,規格に規定されたフルスペックに対しビット深度の制限や処理モードの限定といった仕様削減を実施しました.また,ハードウェア構成をイメージして,処理分割(パイプラン
化, 並列化)と処理間接続(バス,RAM)を検討しました.

(3)ハードウェア仕様検討に従い,C ソースの修正を実施します.オリジナルのアルゴリズムC との結果を比較し,正当性を評価します.このC ソースがハードウェア・ゴールデンC モデルとなり,入力データとそれに対する出力が,ハードウェア検証の入力ベクタと期待値になります.

(4)高位合成ツール用C ベース入力言語(以降「入力C」)化します.即ち,ハードウェア・ゴールデンC モデルにアトリビュート(ソース中にコメントの形で記述する合成指示)を使用し,より詳細にハードウェア化記述を行います.実際には,入出力端子宣言,変数ビット指定します.さらにハードウェアを意識した修正としてループ構造の変更などを行いました.

(5)時間概念の無いレベルで入力C ソースの期待値を確認します(Untimed検証).

(6)いよいよ高位合成を行い,面積・速度を確認します.合成オプションやアトリビュートを変更し,所望の性能に近づけます.合成時のパラメータは多岐にわたります.パラメータのほとんどはGUI で設定可能ですが,それぞれの設定にどのような意味があるかは把握しておくべきでしょう.

(7)高位合成ツールが出力するサイクル精度モデルを使い,タイミングを含めた動作検証を行います.

(8)RTL 合成(論理合成)を行い,最終的にRTL 動作検証を実施します.

既存のRTL設計資産(IP)の扱い

 高位合成では,IPはブラック・ボックス・モジュールとして扱い,そのインターフェース仕様に合わせてアクセスするよう入力C コードを記述します.当社が扱っているツールの場合,RTLのIP を読み込んで検証用C モデルを生成する機能があるので,コ・シミュレーションを行わず,C ベースに閉じた形で全体検証を行うことが可能です.

 理想を言えば,IP は入力C 言語コードに記述し直した方が将来的に使える範囲が広がります.当社のJPEG XRライブラリは,C言語で開発しユーザのターゲットに合わせ適切にハードウェア実行部とソフトウェア実行部に切り分けて提供する形をとっています.

設計者は,RTL を全く意識しないでいいのか

 VHDL やVerilog HDL といったRTL 記述言語そのものは,高位合成後のRTL 検証時以外,扱う必要はありません.RTL 検証では従来通り,RTL テストベンチを用意することになります.当社取扱いツールはテストベンチを自動生成するので,直接RTL 記述をする必要はさらに減少します.
 

 ハードウェアの知識の必要性という点でいえば,現時点ではRTL を全く意識しないで品質の良いRTL を生成することはできません.JPEG XR の事例で挙げたとおり,複雑なアルゴリズムの場合,まずアルゴリズム・レベルC ソースのハードウェア化仕様検討を行い,その後高位合成用に再構成します.また,IP(RTLで記述されたもの)を使用する場合にも同様にハードウェア構造を意識する必要があります.

C 言語ベース設計の開発環境

 高位合成ツールは,ターゲット・デバイスを選ばないものと,特定のデバイス専用のものとがあります.前者の場合,各種デバイス(ASIC,FPGA)をターゲットとした高位合成が可能です.ターゲット・デバイス毎に高位合成用ライブラリを用意する必要がありますが,当社取扱いツールは, このライブラリの生成には論理合成ツール(ISE,QualtusII, DesignCompilerなど,ターゲット・デバイスに合わせたツール)を使用します.

C 言語ベース設計の今後

 ツール面としては,必要性能を満たすハードウェアを生成する合成オプションやアトリビュートを迅速に見出せるような進化を望みます.当社が提案しているツールは歴史が長い分だけ,多くの合成オプション/アトリビュートがあります.そのため,最適な組み合わせを見つけるのは多くの試行が必要な場合もあります.

 ケースバイケースですが,高位合成で生成したRTL回路は手設計の回路規模を比較すると,面積的に若干増える場合もあるので,さらなるブラッシュアップを期待しています.

 人的リソース面としては,ソフトウェア/ハードウェアそれぞれの特徴を理解しC やVerilogなどの言語も扱える,言わばバイリンガルなエンジニアが必要となります.CとRTL では一方は逐次処理,一方は並列処理/構造記述と性格が大きく異なるため,RTLが適している場面も少なくないからです.

 一方で,高位合成ツールは,LSIの開発用途のみならず,ハードウェアの知識が無いアルゴリズム設計者にアルゴリズムの検証用途に使ってもらうことも目的としています.当然,そのための機能拡張も確実に進んでいますが,まだ理想どおりには行きません.当社は,C プログラマブルな専用デバイスと,そのデバイスに機能特化した高位合成ツールのセット販売も行っています.この組み合わせにおいては,ハードウェアの知識が無くても使いこなせます.C ベース・ハードウェア設計の利便性をアルゴリズム開発者に実感してもらうには,このように,形を変えた高位合成の導入方法の提案も必要だと思います.

 


⇒企画トップへ戻る

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日