方式やアーキテクチャなどを検討する抽象度の高い設計で,The MathWorks, Inc.の数値演算ソフトウェア「MATLAB」を使うケースは少なくない。MATLABでの設計結果は,M言語のデータになる。このM言語のデータを起点にし,高位合成を使ってLSIを設計した事例に関して,富士通九州ネットワークテクノロジーズ(QNET)が講演した。

 この講演は,11月26日に東京で開催の「MATLAB EXPO 2010」(主催:マスワークス)で行われた。登壇したのは,富士通QNETの斎藤 睦巳氏(第一開発統括部 第一技術部 リーダー(信号処理技術))である。富士通QNETは機器やLSIの受託設計を行う企業で,同氏は主に通信関連の設計に携わってきた。今回,MATLABで開発したM言語データを起点にして,米Mentor Graphics Corp.の高位合成ツール「Catapult C Synthesis」を使って無線通信用SoCのモデム回路を設計した。なおQNETでは,これまでにもCatapult C Synthesisを実際の設計に活用してきた(Tech-On!関連記事1

図1●「M言語モデルからRTLのHDLモデルを得る手法」について説明する斎藤 睦巳氏(右端) Tech\-On!が撮影。スクリーンは富士通QNETのデータ。
図1●「M言語モデルからRTLのHDLモデルを得る手法」について説明する斎藤 睦巳氏(右端)
Tech-On!が撮影。スクリーンは富士通QNETのデータ。
[画像のクリックで拡大表示]
図2●今回実施したM言語→RTL HDLの手順 富士通QNETのデータ。
図2●今回実施したM言語→RTL HDLの手順
富士通QNETのデータ。
[画像のクリックで拡大表示]
図3●高位合成向けにC言語コードのブラッシュアップを図る 富士通QNETのデータ。
図3●高位合成向けにC言語コードのブラッシュアップを図る
富士通QNETのデータ。
[画像のクリックで拡大表示]

 同氏が講演中でも述べたように,MathWorks製品で設計したデータを起点にし,高位合成ツールを使ってLSIや回路ブロックを設計する場合,起点になるのは,MATLABではなく,「Simulink」というケースが多い(例えば,同2)。MathWorks自身も,Simulinkの設計結果を論理合成可能なHDLコードに変換するためのソフトウェア「Simulink HDL Coder」を提供している(同3)。しかし,今回のQNETの事例では,起点はSimulinkではなく,MATLABである。

 斎藤氏によれば,通信処理のモデリングにMATLABを使う顧客が同社には多く,MATLAB/M言語からの高位合成は,少なくとも同社ではニーズが多いという。実際,今回は当該回路の設計と並行して,MATLABから高位合成ツールを利用してLSIを設計するフローの確立も目指した。

M言語から直接の高位合成は難しい

 今回のSoCで高位合成を適用したのは,MATLAB(M言語)でモデリングされたモデム処理ブロックである。このブロックのうち,変調処理回路と復調処理回路を,高位合成を使って合成する。同ブロックでも,高位合成が苦手な制御インタフェース回路はRTLのHDLを使って人手設計する。

 高位合成すると決めた部分に関しては,さらなる検討が要る。「M言語を直接入力できる高位合成ツールが市場には見当たらないため,高位合成ツールが読み込めるデータにM言語のモデルを一度変換する必要がある」(同氏)からだ。実際に検討したのは二つの方法である(図1)。Simulinkでモデル化し直して,上述のような手段を使って論理合成可能なHDLコードを得る方法が一つ。もう一つはM言語モデルを一旦C言語モデルに変換して,C言語入力の高位合成ツールで論理合成可能なHDLコードを得る方法である。

 今回は,後者を選んだ。M言語モデルのC言語モデルへの変換は,当初人手で行うことを検討したが,実際にやってみると,かなりの手間がかかることが判明した。そこでツールを使って自動化できる部分は,MathWorksの「Embedded MATLAB」(Tech-On!関連記事4)を適用することにした(図2)。Embedded MATLABを使って得たC言語コードおよび人手変換したC言語コードは,そのままでもCatapult C Synthesisで処理可能だが,Mentorが提供するC++のデータ型「Algorithmic C」(同5)を利用して最適化し,さらにビット幅の調整を図った(図3)。