続「MATLABからの高位合成フローを確立」富士通九州ネットワークの事例:訂正あり
2010年11月26日、東京ミッドタウンにてMATLAB EXPO 2010が1300人近い参加者を集めて開催された。
同イベントはその性質からEDA関連のイベントとは異なる分野の参加者が多かったように見えたが、そんな中、ハード設計関連の密度が高いセッションが幾つかあった。
ここではそのうちの一つ。富士通九州ネットワークテクノロジーズ株式会社(以下、QNET)第一開発統括部、第一技術部の斎藤 睦巳氏の講演「無線システムLSI開発におけるMATLABとC言語ベース高位合成の適用事例」について紹介する。
同講演は、10月22日に開催されたメンター・グラフィックスの「Catapult Users Forum」で発表された「方式開発者から見たCatapultの適用効果」の続編とも言える内容で、今回斎藤氏は、次世代通信向けのシステムLSIに内蔵するモデム回路の開発にあたり、如何にしてMATLABモデルを起点に高位合成を行ったか、その具体的な手法について語った。
斎藤氏によると、そもそも同社ではここ数年FPGAやDSPの開発においてMATLAB/Simulink環境を利用する形が増えてきているという話で、中でもMATLABコードを使うケースが多いとの事。最大の理由は、「信号処理モデルを素早く作れる」という点で、同社内では既にMATLABはモデリングには必要不可欠なツールとなっているようだ。
しかしながら、モデリング以降の実装に関しては課題があり、斎藤氏は社内MATLABコミュニティの主査としてその課題克服の意味も込めて、MATLABモデルを起点とした高位合成によるハード実装に挑戦した。
斎藤氏によると今回のケースでは、MATLABモデルを回路に落としこむ具体的な手段として、1.人手作業、2.MATLABからSimulinkに再モデル化してSimulinkからHDL生成、3.MATLABからCに落として高位合成と3通りの手段を検討。その結果、単純な人手作業では手間がかかり過ぎるのと、社内でCからの高位合成が普及しつつある事を考え、3.の手法で進める事に決定。MATLABモデルからCへの落し込みについては、まずMATLABのC出力機能である「Embedded MATLAB」の利用を考えた。
※画像はQNET提供のデータ
「Embedded MATLAB」は、MATLABのM言語で記述されたモデルをC言語に変換する機能で、その実行にあたっては「Simulink」と「Real-Time Workshop」が必要。斎藤氏はこれらツールを用いて対象となるモデム回路の演算処理モデル(MATLABモデル)からCコードを自動生成し、生成されたコードから高位合成に必要な部分を切り出しCatapult用の合成記述を作成。最終的に高位合成で所望の要件を満たす回路を得ることに成功した。
※画像はQNET提供のデータ
しかしながら、「Embedded MATLAB」によるMATLAB→C変換には幾つかの壁があった。詳細なところは明らかにされなかったが、まず、可読性のあるCを出すにはオプション設定の仕方など、ユーザー側での工夫が必要。それから生成されたCコードから、如何に高位合成に必要な部分だけを切り出すかといった点でも工夫が必要だった。また、Mファイルが大きいとうまく高位合成出来ないケースもあり、Mコードの記述は出来るだけコンパクトにする事が重要と斎藤氏。現時点で実用性を考えると、「Embedded MATLAB」の出力したCを見ながら高位合成用のCを書くのが一番という事だった。
尚、MATLABから落としたCコードの検証方法については、MathWorksのアドバイスによりSimulink上にシステム全体を統合した検証環境を構築した。関数単位の各モデル単位の検証であればMATLABとCの期待値比較で事足りるが、高位合成を適用しない部分も含めたシステム全体の検証を行う必要があった為だ。斎藤氏は、Simulink上にCを取り込むためにSimulinkの「S-Function」を活用したほか、Catapultに備えられている、高位合成用のCコードをMATLAB/Simulinkのモデルに組み込むためのラッパの生成機能も利用したという。
※画像はQNET提供のデータ
結果として、MATLABからの高位合成フローとこの検証環境が構築できたお陰で、高位合成条件のトレードオフや仕様変更に対する対処が迅速に行えるようになり、実際に設計期間の大幅な短縮を実現することが出来た。斎藤氏はその例として、通常1?2週間はかかる仕様変更への対処が僅か1日で済んだと紹介。「MATLABベースの設計と高位合成の適用の相乗効果は非常に大きい」として講演を締めくくった。
講演後のQ&Aコーナーで興味深かったのは、聴講者からの回路規模に関する質問(M言語からの合成だと人手設計よりも回路規模が増大しないか?)に対する斎藤氏の回答。斎藤氏は、「確かに、ツールによる自動生成のみでは、とても冗長な回路になってしまう。」とした上で、今回のケースで手設計と同等の回路規模を実現できたのは、「自動生成だけでなくて専門家がモデルの最適化を適切に行ったから。」と回答。MATLABモデルを起点とした回路設計フローにおいては、Mモデル/Cモデルの最適化(リファインメント)を行うスキルと合わせて、Mモデル/Cモデル/HDLを横断する「チーム編成の工夫」の重要性も強調した。
ちなみに今回の事例講演にて斎藤氏は、「Twitter」を利用したインタラクティブな講演に挑戦。最後のQ&Aタイムには、モバイル端末を片手に「Twitter」でつぶやかれていた質問に対してその場で回答するという場面が見られた。講演内容もさることながら、目の前の聴講者の声をリアルタイムに拾い、リアルタイムに応えるという形は、一つのセミナーの進化系として非常に興味深いものがあった。