知っておきたいキーワード
Keywords you should know.

第 105 回C 言語ベースハードウェア設計技法
原祐 子††東京工業大学 大学院理工学研究科 通信情報工学専攻"C-based Hardware Design Technology" by Yuko Hara (Department of Communications and Computer Engineering, Tokyo Institute ofTechnology, Tokyo)
キーワード：高位合成，FPGA，設計自動化，組込みシステム

高位合成
従来は，専用回路（ASIC）や FPGA（Field Programmable Gate Array）上ム）のみを定義し，高位合成ツールは，生産性を大幅に改善できるメリットが面積・性能・電力などの設計制約に応あります．多くの高位合成ツールでは，じて，ハードウェアの時間と構造を定設計制約オプションや入力プログラム義します（図 1）．

中に記述するプラグマなどにより，生に実現するハードウェア（LSI 回路）
は，高位合成では，ソフトウェアプログ成されるハードウェアを変更できまVerilog HDL 言語や VHDL 言語など

ラムを再利用できる，記述量を削減です．高位合成はさまざまなアプリケーのハードウェア記述言語を用いたきる（C/C++ プログラムは RTL 記述

ションドメインに適用可能ですが，特Register Transfer Level（RTL）設計に比べて 1/5 〜 1/10 程度），同一のに，データ処理が中心となる映像信号により行ってきました．RTL 記述でソフトウェアプログラムから面積・性処理は高位合成が得意とする分野で，は，「いつ（時間）・どのような処理能・電力などの異なる複数のハード映像系専門の LSI 設計者の減少という（機能）を何（どのようなハードウェアウェアを設計できるなどにより，設計背景もあり，多用されています．

モジュール）によって行うか」と「ハードウェアモジュールの階層構造」を記述し，ハードウェアの構成を明示的に定義します．設計するハードウェアの大規模・複雑化に伴い，2000 年代からは，徐々に C 言語や C++ 言語などのソフトウェアプログラムから RTL記述に変換する C 言語ベースハードウェア設計が適用され始め，2010 年
代には普及の段階に入っています．この変換技法は，高位合成（High LevelSynthesis ：あるいは，動作合成（Behavioral Synthesis）や機能合成（Functional Synthesis））と呼ばれます．高位合成への入力となるソフト
ウェアプログラムには，実現すべき

図 1 高位合成による設計フロー

ハードウェアの振る舞い（アルゴリズ
442 （74）

映像情報メディア学会誌 Vol. 69, No. 5, pp. 442 〜 444（2015）

知っておきたいキーワード

C 言語ベースハードウェア設計技法

ハードウェア構造を意識したソフトウェアプログラム記述

よび LOOP L2 を併合）したもので，ム上での記述がどのようなハードウェ合成されるハードウェアの性能を大幅ア構造に変換されるかを意識したに改善できます．このように，高位合C/C++ プログラム設計が重要になり多くの人が懸念するのは，「果たし成では，入力のソフトウェアプログラます 1）．て高位合成によって，従来の人手による RTL 設計に適うハードウェア設計ができるのか」というところでしょう．
確かに，いくらソフトウェアプログラ
ムをそのまま流用できると言っても，ハードウェアを意識した記述でなければ，面積や性能の良いハードウェア設計はできません．
例えば，図 2 上部のプログラムは，インデックス i の値によって実行すべ
き処理が異なる二つのループ文（LOOP L1 および LOOP L2）から構成されています．この記述は，処理内容を理解しやすく，可読性の高いプログラムであると言えますが，高位合成により生成されるハードウェアには二つのループ構造の重複（i =100〜9898間）ができ，非効率です．図 2 下部のプログラムは，このような重複処理を

図 2 高位合成向きソフトウェアプログラムへの改変例極力減らすように改変（LOOP L1 お高位合成を使いこなすにはように，データ構造の分散の検討が必要です．

自然と制限することが考えられます．
ハードウェア化の対象プログラムがより良いハードウェアを高位合成すソフトウェアプログラムでは逐次処大規模である場合には，あらかじめモるための入力ソフトウェアプログラム理で記述されますが，ハードウェアはジュール分割しておく必要がありま

は，使用する高位合成ツールの特徴に並列処理が可能です．演算や関数レベす．高位合成ツールに入力できるアルよって異なることがありますが，ツールの依存関係を考慮して，並列化が可ゴリズムの規模には限界があり，一定ルによらず，共通して言える点を以下能な記述をすることが重要です．高位量を超えると最適化処理に非常に長いに紹介します 2）．

合成ツールによっては，複数のステー時間を要するためです．さらに，生成変数のサイズ（ビット幅）と符号のトメントの並列性を明示的に記述できされるハードウェアの制御部が複雑に

定義は，生成されるハードウェア規模

るように入力のソフトウェア言語を拡なり，性能（クロック周波数）が上がに直結します．変数のサイズは，各高張しているものがあります．その他，らないことが多くあります．モジュー位合成ツールが入力のソフトウェア言

多くの高位合成ツールで，ソフトウェ

ル分割時には，上述の通り，モジュー語に施している言語拡張により，明示アプログラム中のプラグマや制約ファルの並列性を考慮した分割をすること的に定義できます．

イルで定義するオプション（ループアで，ハードウェアのさらなる性能改善ンローリングなど）により，並列化をに繋がります．

ソフトウェアプログラム中の配列等のデータ構造は，高位合成されるハーサポートしています．

上記の他，留意すべき点は，C/C++

ドウェア中では，それぞれ独立の幅と多くの高位合成ツールで，ポインタ言語記述のうち高位合成できない記述

深さを持ったメモリーモジュールに演算やポインタ変数の使用には制限ががある点です．再帰関数，浮動小数点，よって実現されます．したがって，単あります．使用できる場合でも，効率関数ポインタ，メモリーの動的割当て

一の配列を多用すると，メモリーモの良いハードウェア構成に変換されな（malloc, free など），および，ライブジュールのアクセスに時間を要し，実いこともあります．上述の通り，複数ラリーの呼び出し（printf，ファイル行時間が増加します．複数のメモリーメモリーモジュールを利用し，サイズ入出力など）です．

モジュールへ並列してアクセスできるを管理することで，ポインタの使用は（75） 443

知っておきたいキーワード

C 言語ベースハードウェア設計技法

クセラレータなど）も実現可能になってピューティング向けのクロスプラットいます．さらに，最近では，高位合成フォームなフレームワーク）開発環境技術の発展も相まって，高位合成を用をそれぞれ提供しています．システム者が構成を変更（再構成）できる集積回いた FPGA 設計環境が充実しています

ベンダーが提供する高位合成ツールの路のことを言います．図 3 の概略図に（図4）．このような開発環境の整備の流多くは，ASIC と FPGA の両方をサ示すように，論理と配線をつなぐス

れは，FPGA ベンダーのみでなく，シポートし，さらに，FPGA 向けの最適イッチを自由にプログラムでき，所望ステムベンダーでも見られます．

化機能なども盛り込んでいます．

FPGA と高位合成
FPGA とは，製造後に設計者や購入のハードウェアを FPGA 上に実現でき

FPGA ベンダーでは，Xilinx はこのような FPGA のプログラム開発ます．論理情報と配線情報を変更可能

C/C++/SystemC（SystemC は C++ を環境の発展により，高位合成，および，であるため，修正・仕様変更が容易に拡張したハードウェア記述言語）プロ

FPGA の利用は，特に通信・画像処理行えるというメリットがあります．

グラムから同社の最新 FPGA 向けハー分野で高く評価されています．さらに，FPGAが登場した当初は，主にASICのドウェアを合成可能な Vivado HLS

最近では，金融アプリケーションの分試作用途に使われていましたが，FPGAを，Altera は同社 FPGA 向けの析・演算の高速化という実用例もあの大容量化が進むにつれ，より大規模O p e n C L（ O p e n C L は C P U / G P U /り，ますますアプリケーションの幅がなアプリケーション用ハードウェア（アAccelerator 等のさまざまな並列コン広がっています 3）．

図 3 FPGA の構成の概略（ブロック RAM や DSP 等は省略）

図 4 高位合成を用いた FPGA 開発フロー

むすびより，アプリケーションはますます大ることが考えられます．高位合成と規模化・多様化するであろうことは想FPGA 設計環境を活用することによC 言語ベースハードウェア設計技法

像に難くありません．上述の例に見る

り，ハードウェア設計を効率化することして，高位合成の概要とその活用方

ように，今後は，ハードウェアの設計とはもちろん，ハードウェア設計の効法について紹介してきました．近年の指標（面積・性能・電力など）のみで率化による新たなアプリケーションのアプリケーションの多様化に加え，今はなく，設計期間が製品・サービスの創出など，多岐にわたる発展が期待さ後は Internet of Things 社会の普及に優劣を決めるアプリケーションも増えれます．

参考文献

1）Kaiyi Mao，天野英晴，堤聡，Vasutan Tunbunheng ： ハードコンシャス記述:ハードウェア化を目的とした C 言語記述スタイル ，
信学技報，107，419，pp.101-106（Jan. 2008）
2）瀬戸謙修，田中輝明，佐々木俊介，小松聡，藤田昌宏： ループ
融合を利用した複数の for ループからのパイプラインハードウェア
合成 ，情処学研報，2010-SLDM-146，4，pp.1-6（Sep. 2010）3）NEC，変動する株価データなどをリアルタイムに分析できるハードウェア設計技術を開発，http://www.nec.co.jp/press/ja/1109/2801.html

444 （76）

はらゆ う こ原祐子

（2015 年 1 月 30 日受付）

2006 年，名古屋大学工学部卒業．
2008 年，同大学大学院情報科学研究科博士課程前期課程修了．2010 年，同大学同研究科博士課程後期課程修了．同年，日本学術振興会特別研究員（PD）．
立命館大学，米国・カリフォルニア大学アーバイン校，および，ドイツ・カールスルーエ工科大学客員研究員．2012 年，奈良先端科学技術大学院大学助教．2014 年，東京工業大学大学院理工学研究科准教授に就任し，現在に至る．主に，組込みシステムの設計自動化に関する研究に従事．博士（情報科学）．

映像情報メディア学会誌 Vol. 69, No. 5（2015）