組込機器の高性能化要求は留まるところを知らない。しかし、それは裏を返せば開発の複雑さの増加、という問題を引き起こすこととなる。半導体デバイスベンダも、そうしたニーズに対し、開発容易化を目指した製品などを提供している。ザイリンクスのFPGAにARMコアを搭載した次世代組み込みプラットフォーム「Zynq-7000 All Programmable SoC」もそうした製品の1つだが、FPGA+ARMコアという新たな分野の製品であることもあり、興味はあるが、どうやって開発を行うのか、またどういった分野に適用できるのか、という答えに窮している企業も多いだろう。

そんな中、MATLAB/Simulinkを用いたモデルベース開発(MBD)の手法を活用し、Zynq-7000を用いたベクトル・ネットワーク・アナライザ(VNA)を短期間で開発した企業が、マリモ電子工業だ。同社の従業員76名というそれほど規模は大きくない会社だが、信州大学の超小型衛星「ShindaiSat」の開発にも関与するなど、ハードウェア、ソフトウェア双方で高い技術力を有する設計・開発企業だ。

長野県上田市にマリモ電子工業の本社は置かれている

MATLAB/Simulinkの活用で設計開始から約半年で製品化を達成

同社がMATLAB/Simulinkを本格的に活用するようになったのは2006年から。業務用無線がアナログからデジタルに本格移行が進みつつあった時期で、それに関連した開発案件が増加。モデルを作成し、シミュレーションを行って性能を評価するツールとしてMATLAB/Simulinkを活用することで、そうした案件での開発容易性を実現してきたという。

そんな同社が自動コード生成を含むMBDの導入に踏み切ったのが2009年。これまでの経験から、将来、デジタル無線開発を継続して行っていく上で効果的と判断されたためだ。そうした経験を踏まえ、同社が新たに挑戦したのが、MATLAB/Simulinkをフルに用いたMBDであり、そのターゲットとなったのがZynq-7000によるVNAの実現だ。

実際の回路やサーバ/クライアント機能、AD変換のアナログフロントボードの設計・開発は2013年12月より始まり、2014年6月には製品化を達成したとのことで、(Zynq搭載ボードはリファレンスボードを活用したとはいえ)実に約半年という驚異的な速度での開発終了という結果に、実際に開発に携わった同社技術部のエンジニアである関谷和己氏と小野沢義己氏は、「自分たちも半年でできてびっくりしている」と、驚きの声を上げる。

実際にVNAの開発に携わったマリモ電子工業技術部の関谷和己氏(左)と小野沢義己氏(右)。2人とも今回の案件よりも前は、MATLAB/SimulinkもVivado/ISEもFPGAもほとんど触ったことがなかったという

実際に同社の試算では、これまでの無線開発の経験から、MATLAB/Simulinkでモデルを作った後にRTLの設計書を起こし、レビュー、コーディング、単体テスト、統合テストといったような手順が必要であるため、RTLで1から開発した場合200時間、C言語を用いて開発した場合でも200時間と見積もっていたが、MBDを用いることで、そうした各種設計・評価部を省くことができ、それぞれ100時間/150時間に短縮されたとのことで、ノウハウが蓄積された今後はそれが80/100時間程度で終えることが可能になると見ている。

従来の設計フローとMBDによる設計フローの違い

VNA開発におけるモデルベース開発と従来開発の工数比較(マリモ電子工業の基準による比較)

MATLAB/SimulinkからのCコードとHDLコード生成で開発期間を短縮

一般的にFPGAを用いた開発の場合、FPGAベンダが提供するツール(今回の場合はVivadoやISE)を用いるが、今回の開発では(バックグラウンドではISEは稼働していたものの)エンジニアが使うツールとしてMATLAB/Simulinkのみで開発を終えたことも開発期間短縮につながったと考えられるという。

具体的には、ARMコアのプロセッシングシステム(PS)部では伝送路のSパラメータ補正演算とオープンLinuxによるHTTPサーバの管理を行っているが、そのSパラメータ補正演算部をEmbedded CoderでCコード生成、一方のプログラマブルロジック(PL)部分では複素ミキサー、フィルタ処理、デシメーション、ベクトル演算を行っているが、それらの処理をHDL CoderでHDLコードに変換し、実装をマスワークスが提供するZynqサポートパッケージを活用することで実現した。

PS部のモデル

また、ハードウェアのデバッグもマスワークスの提供するワークフローアドバイザーが提示する手順通りに行うことで、比較的容易なチェックの実現もできたとしており、ISEを意識しないFPGAへの搭載により、「Zynqは初めて使ったが、時間の関係上、デバイスの調査をあまりできなかった。しかし、ワークフローの手順に従って開発を行っていくことで、大きな問題が発生することなく、開発を終えることができた」(小野沢氏)とするほか、「実際の作業はMATLAB/Simulinkでモデルを作ったくらいで、関数などはほとんど覚える必要がなかった」(関谷氏)と、複雑に見えるZynqとMATLAB/Simulinkを組み合わせた開発が、逆に開発容易性を高めたことを強調する。

PL部のモデル

また、HDLコードも従来は生成された回路データを改めて人の眼で見てチューニングし直す、といったイメージがあったが、今回の開発ではターゲットの回路に落とし込むことを意識して回路を作成したこともあり、可読性のよいHDLコードが生成され、その結果、HDLの内部をほぼ見ないで、そのまま使える回路として生成がなされたという。

マスワークスも、そうしたモデルの落とし込みの仕方やHDLの生成を意識した開発に向けたガイドラインの策定などを進めているとのことで、ツール機能の拡張に加え、ツール機能の習熟を支援するためのトレーニングおよび技術サポートの拡充や、スムーズなMBDの導入を支援する環境の整備を進めていくことを目指したいとしている。

とりあえずやってみる、でできてしまうのがMATLAB/SimulinkのMBD

同社では、「今回の成果はある程度予測できていたが、初めに予測していた以上に簡単にできてしまったという感想。とりあえずやってみる。そうするとできてしまう、というのがMATLAB/Simulinkを用いたMBDだった」と開発を振り返る。今回の挑戦は、FPGAを用いた開発においてMATLAB/Simulinkの活用がソフトとハードの垣根を取り去り、同一環境で双方の開発が可能であるということを示すものとなったことから、同社では今後、MBDを「高品質だが、開発期間は短くて済む、という競争力の向上に効果を発揮する武器」とすることで、MBDを積極的に活用した新たな案件受注の開拓を進めて行きたいとしている。

なお、同社の社名の由来は「マリモのように急に大きくはならないが、社会情勢に左右されずに着実に育ちたい」というもので、MBDによる開発力の強化が、今後の着実な成長の呼び水になることが期待される。

実際にZynq-7000を用いて開発されたベクトル・ネットワーク・アナライザ(VNA)。測定された波形はHTML5を用いてWebブラウザ上で表示することが可能

マリモ電子工業によるMATLAB/Simulinkモデルベース開発によるZynq-7000の実装例