Home > THE SOUND OF CADENCE > SOC72 > 機能シミュレーションの高速化

  • Contact
  • Print

THE SOUND OF CADENCE Vol.72 (June 2010)

機能シミュレーションの高速化

機能シミュレーションにおける律速段階
SoCの規模の増大および複雑化は、機能検証において広く使われているエンジンである機能シミュレータにとって、極めて難しい問題を投げかけています。シミュレーション実行時間は(スティミュラスのステップ数)×(1ステップあたりのシミュレーション時間)で表すことができます。複雑な機能を確認するためには、コーナーケースを発生させるためなどの理由からスティミュラスは長くなりがちです。また、回路規模が大きくなる、すなわちシミュレーション時に内部イベントの発生が多くなると、現在、機能シミュレーションの主流となっているイベント・ドリブン・シミュレータでは、内部で発生するイベント数がシミュレーション速度を律速するため、どうしてもシミュレーション速度が低下してしまいます。そのため、(スティミュラスのステップ数)×(1ステップあたりのシミュレーション時間)としてのシミュレーション時間は、SoCの規模の増大および複雑化に従い、大きく増えてしまいます。
従来から、ケイデンスは、複雑化する機能をいかに漏れなく検証するかという問題に対して、メトリクス・ドリブン検証を中心とするソリューションを提供してきました。スティミュラスのステップ数を削減するためには、例えばリグレッション・テストにおいては、複数あるテストシナリオ中から、定義されたカバレッジを満たすための部分セットを選択する、すなわち無駄なスティミュラスは実行しない、ということが一つのソリューションになるのではないでしょうか? これはIEM(Incisive Enterprise Manager)により実現できます。1ステップあたりのシミュレーション時間短縮のためには、一つのやり方として、Palladium XPのようなハードウェア・エンジンを併用することでの加速があります。
内部イベント数削減のためには、例えばRTLからトランザクション・レベルへデザイン記述の抽象度を上げることで高速化を実現することが日常的に行われていますが、精度とのトレードオフになるため、検証フロー全体として精度を確保するためには、上流行程から下流行程までを総合的にカバーする仕組みが必要です。これはRTL検証に限定しない広い話になりますが、ケイデンスでは、TLM Design & Verificationとしてのメソドロジを用意しています。

機能シミュレーションの高速化
過去、高速化を目指したサイクルベース・シミュレータなどの技術が現れましたが、必ずしも主流とはなりませんでした。この原因のひとつは、検証エンジニアの求める精度が確保できなかったことがあります。すなわち、現在使用しているシミュレーションと検証の精度が変わってしまったり、スティミュラスやテストベンチの大幅変更が必要となるようなシミュレーション・エンジンの場合、そのユース・ケースは限定的にならざるを得ません。精度などを犠牲にしない、シミュレータのエンジン自体のパフォーマンス改善も確実に進んでいます。例えば、その一例として、SystemVerilogでの文字列操作の最適化により、compやconcat、copyなどの関数を使用したときのパフォーマンス向上が行われています。
また、新しい試みとして、近年普及しているマルチコア・テクノロジを活用した、「I ES- XLパフォーマンス・オプション」があります。マルチコアの一つの使用法として、複数のシミュレーション実行を行う場合、これらを並列に行い、全体としてのスループットを向上することは、LSFなどの負荷分散システムとして広く使用されていますし、IEMでも複数のシミュレーション実行を、カバレッジ結果を統合しながら実施することが可能です。
IES-XLパフォーマンス・オプションでは、シミュレーション時の複数のタスクを、それぞれ別個のコアに割り当てることで高速化します。終業時にシミュレーションをバッチ投入し、翌朝、その結果を、ダンプ結果をもとに解析する、というような仕事の進め方は、多くのお客様にも経験があるでしょう。そのとき、一晩で処理が終わればよいのですが、そうでない場合、「えー、終わってないの…遅いな」とのつぶやきが出てしまうことも多々あることでしょう。IES-XLパフォーマンス・オプションは、シミュレーションのタスクと、ダンプのタスクを別々のコアにアサインすることで、そのようなバッチ処理の効率を大幅に向上します。下のグラフは、IES-XLパフォーマンス・オプションを使用(赤で示しています)した場合と、旧バージョン(グレーで示しています)との差を示しています。ダンプ処理がある場合、CPU時間は30%以上の削減、メモリ消費量もほぼ半減しています。ダンプなしでも9%の改善がありますが、これは先に述べたエンジン自身の最適化の結果です。


図2:Always-on-Bufferへの対応

まとめ
大規模回路の検証に対応する、高速化・省メモリ化ついて、ケイデンスは常に大きな努力を払い、改善し続けています。7月22日、23日に開催されるDA SHOW/CDNLive! Japan 2010では、ここでご紹介できなかった新しい高速化手法についてもご紹介しますので、ぜひご来場ください。

カスタマ・プラットフォーム・マーケティング部
後藤 謙治