CDNLiveで語ったオリンパスのエミュレータによる検証効率の向上手法
2014年7月18日、みなとみらいのホテルでCadenceのプライベート・セミナー「CDN Live」が開催され、昨年を上回る参加者を集めた。
ここではCDN Liveで紹介された数々のユーザー事例の中から、オリンパスのRTL検証関連の事例講演を紹介する。
講演タイトル:
IESとSpecman、Palladiumを活用したCDV(カバレッジ・ドリブン・ベリフィケーション)高速検証環境のLSI検証適用の事例紹介
講演者:
オリンパス株式会社 光学・電子映像技術本部 SOC技術部 原浩隆
今回のCDNLiveに登壇したオリンパス原氏の所属部署SOC技術部では、社内の各事業部門と画像処理エンジンを共同開発しており、原氏はその中で検証専任として検証環境を見ている立場。
原氏によると同社では各設計ブロックの検証は設計者が担当し、各ブロックを結合したサブシステムの検証から検証専任者が検証に加わり設計品質を確保する開発プロセスを敷いていたが、近年システムの高機能化・大規模化が進みサブシステムが複雑化したことにより検証漏れが頻発。そこでランダム検証(Specman)とエミュレータ(Xtreme)を導入し品質確保と検証工数の削減を図った。
しかし、SpecmanとXtremeの導入により検証品質の向上と検証の高速化は実現できたが、Specmanを用いたCDV検証ではシミュレーション数が桁違いに増加し検証工数が増える形に。設計規模の増大に伴い検証工数が増加するという背景の中でCDV検証の工数が検証工数全体の6割まで占めるようになり、CDV検証の工数圧縮が大きな課題となった。そこでオリンパスではこの課題に取り組むべくエミュレータをCadenceの「Palladium XP」に乗り換え新たな検証環境の構築に着手した。
原氏によるとオリンパスが目指したのはエミュレータをベースとした高速CDV検証環境の構築で、シミュレーション・パターンの削減は考えずCDV検証を如何に高速化するかという視点でテストベンチをなるべくエミュレータに実装する事を考えた。そこで従来使用していた「e言語」はエミュレータに実装出来ないため、テストベンチの作成は「SystemVerilog」へ移行する事にした。また、シミュレーション環境とエミュレーション環境の共通化という点も環境構築の上で重要なポイントであったため、「SystemVerilog」による使用言語の統一を考えた。
しかし、実際に構築したSystemVerilogベースの環境と従来のe言語の環境とで比較したところ、SystemVerilogのランダム生成性能がe言語よりも著しく低い事が分かり、パラメータのランダム生成部分は「e言語」を使用する事にした。
続いてシミュレータとエミュレータの接続手法について検討を行い、まず「SCE-MI」インタフェースを用いた接続を試みたが複数インスタンスの実装で苦労し処理速度も低下する結果に。そこでSystemVerilogの「DPI-C」を用いたバーチャル・インタフェース(VIF)で環境を構築したところ「SCE-MI」よりも処理速度が優れていたため、VIFベースの環境構築を選択した。また、「DPI-C」では複数のデータ転送方法が用意されているため、各転送方法を評価し転送するデータサイズに応じて転送方法を切り替える環境を構築した。
シミュレータとエミュレータのCo-Sim環境においては、コンパイル時間が圧倒的に大きいため実行パターンを連結する事でコンパイル回数を減らし高速化を実現する形を取った。
最終的に構築したシミュレータとエミュレータのCo-Sim環境は、テストベンチをエミュレータに実装する事でシミュレータとエミュレータのやり取りを減らし、接続方法を工夫した事でシミュレータ単体よりも約50倍ほど高速なCDV検証(ブロックレベル)を実現した。
原氏は今回の取り組みにおいて苦労した点として、「Palladium XP」の立ち上げとCo-Sim環境のインタフェース部のモデル構築の2点を指摘していた。