Synphony C Compiler 

C/C++からRTLへの高位合成 

概要
Synphony C Compilerは、画像処理ブロックのインプリメンテーション作業の重点をRTL設計からアルゴリズム・レベルの設計に移すことによって、開発期間の短縮とコスト削減を実現します。設計者はC/C++アルゴリズムでハードウェアを記述し、Synphony C Compilerを使用してアーキテクチャを調整して性能、消費電力、面積のトレードオフを実行し、ASIC/FPGA向けに高度に最適化されたRTLを自動生成します。このツールは必要なインターフェイスとメモリー構造を推測して最適なアーキテクチャをインプリメントできるため、並列化と制御ロジックを明示的にコーディングする必要はありません。階層間の効率的なハードウェア共有により、数百万単位のゲートの階層設計に対応できます。

データシートのダウンロード

主な特長
  • 新しいRTLブロックを手作業でコーディングする場合と比べて生産性が2倍向上し、再利用の場合は生産性が5~10倍向上
  • Design Compiler®を利用したRTL合成とSynplifyを利用したFPGA合成により、面積とタイミングの優れた結果品質(QoR)を実現
  • 大規模な数百万ゲートの設計のインプリメンテーションに要するTATを短縮
  • 元になるC/C++モデルからRTLの検証環境(妥当性検証を含む)のシームレスなエンド・ツー・エンド検証
主な機能
  • シングル・スレッド、アンタイムド、シーケンシャルのC/C++モデル、制約、テストベンチ、ライブラリに基づく高位合成
  • 標準(AXI、AHB、OCPなど)とカスタム外部インターフェイスをサポートしているため、グルーロジックが不要
  • 高位合成の最適化により性能/面積の優れた結果を実現
    • シングル・スレッドからマルチ・スレッドへの自動変換
    • 階層型のブロックレベル・リソース共有
    • 自動スケジューリング/パイプライニング
    • 変数をバインドしたループのタイミング最適化
  • Design Compilerを使用したRTL最適化による優れたQoR
  • 最適化のための階層レベルの数を任意に指定できる再帰的階層コンパイル
  • アーキテクチャル・クロック・ゲーティングにより複雑なローパワー設計を短期間で完了
  • 論理合成/電力最適化/検証ツール用のテストベンチ、設計ファイル、制約、スクリプトを自動生成

高抽象度の設計
アルゴリズムによりトランザクションレベルでIPをキャプチャしSynphony C Compilerで高位合成することにより、新しいRTLブロックを手作業でコーディングする場合と比べて生産性が2倍向上します(図1)。Synphony C CompilerはC/C++の幅広いサブセットに対応しています。ネイティブC、パラメータ化整数、固定小数点などのデータタイプがサポートされます。ネストされたループや複数レベルのC/C++関数階層を含む通常のシーケンシャルなコーディング・スタイルにより、シーケンシャルなアンタイムドC/C++モデルを利用してアルゴリズムを記述できます。また、Synphony C Compilerの再利用可能な固定小数点/画像処理/ストリーミング・ライブラリを利用することにより、合成可能なC/C++ IPの開発期間を短縮できます。その他の高位合成の入力として、ハードウェア制約やC/C++テストベンチなどが用意されています。カスタム・インターフェイスが望まれる場合には、ユーザーが信号の命名と動作のためのインターフェイスや制約のC++トランザクションレベル・モデルを指定できます。

Synphony C Compiler
図1:Synphony C CompilerではC/C++からの高位合成、シミュレーション、デバッグが可能になります。

Synphony C Compilerの高位合成エンジンは、シングル・スレッドからマルチ・スレッドへの変換を行ってシーケンシャルなCコードから並列化を実行し、合成/検証/ダウンストリーム・ツールに対応するシミュレーション・テストベンチ、制御ロジックのインターフェイス、スクリプトを用いて合成可能なRTLコードを生成します。

標準インターフェイス(AXI、AHB、OCPなど)またはカスタム・インターフェイスを使用してC/C++ IPをSoCに容易に統合できます(図2)。カスタム・インターフェイスを使用する場合、信号名およびサイクル動作との正確なインターフェイスまたは処理の相対的なスケジューリングを指定できます。これらのインターフェイスをカプセル化して、高位合成の抽象化の利点を維持しながら、ユーザーが上位APIからインターフェイスを呼び出せるようにすることもできます。

Synphony C Compiler
図2:インターフェイスをアルゴリズムから分離してアルゴリズムのコーディングを簡素化します。

優れた結果品質(QoR)
Synphony C Compilerは変数をバインドしたループでリソース共有、自動スケジューリング、パイプライニング、タイミング最適化などのアーキテクチャ最適化を行い、RTLインプリメンテーションで性能/面積の目標を実現します。

また、Synphony C Compilerは、シノプシスのDesign CompilerによるRTL合成とSynplifyによるFPGA合成で個別の最適化を行い、優れたQoRを実現します。Synphony C Compilerの高位合成エンジンは、シノプシスの論理合成ソリューションで実現可能な面積およびタイミングの予測結果に基づいて判断を行い、合成ツールのコーディング・スタイル・ガイドラインに準拠して最高のQoRをもたらすRTLを生成します。たとえば、Synphony C Compilerでは、シノプシスのデータパス合成に関するコーディング・ガイドラインに一致する階層と構文でRTLを生成し、Design Compilerで最大限のデータパス抽出、最適なタイミング、最適な面積を実現することができます。シノプシス等価検証ツール Formality®を使用したRTL構造チェックも検証期間の短縮に役立ちます。

大規模設計のTATを短縮
Synphony C Compilerでは、さまざまなレベルのC/C++関数階層から設計された大規模で複雑なシステムで、効率的にハードウェアを共有できます。最適化のための階層レベルの数を任意に指定できる再帰的階層コンパイルにより設計の生産性が向上し、各階層レベルでユーザーが柔軟に制約を制御できます。

アーキテクチャル・クロック・ゲーティングにより、複雑なローパワー設計を短期間で完了できます(図3)。設計者はループレベルおよびC関数レベルでゲーティングを適用し、処理ブロック全体をシャットオフできます。Synphony C Compilerのブロックレベルのクロック・ゲーティングは、Power Compiler(TM)によるレジスタレベルのクロック・ゲーティングを補完し、より一層の省電力を実現します。

Synphony C Compiler
図3:Synphony C Compilerのアーキテクチャル・クロック・ゲーティング

シームレスなエンド・ツー・エンド検証
Synphony C Compilerは、元になるC/C++モデルからRTLの検証(バリデーションを含む)に至るシームレスなエンド・ツー・エンド検証を行います。C/C++ソースのダイナミック・リント・チェックを設計の早期段階で行うことにより、RTLに伝播する可能性がある範囲外アクセス、未初期化の変数、その他の未定義の動作といったコーディング上の問題を発見できます。さらに、Synphony C CompilerはUVMベースのSystemVerilogテストベンチを生成します。このテストベンチは、元のC/C++テストベンチから生成されたテストベクトルを使用してシノプシス VCS®によるシミュレーションを駆動し、機能/性能に関する結果の概略を示すレポートやグラフィカル・ビューを生成します。VCSに接続するシノプシス Discovery Visual Environment(DVE)グラフィカル・インターフェイスを使って、ハードウェア動作をトランザクションレベルで表示できます。設計者は、高位合成フロー全体を通じたシステムのシミュレーションを容易に実行し、モデル、テストベンチ、テスト・データを検証チームに迅速にハンドオフすることができます。



NewsArticlesDatasheetsSuccess StoriesWhite PapersWebinarsVideos