Xilinx ライブラリ (UNISIM, UNIMACRO, XILINXCORELIB, SIMPRIMS, SECUREIP)を使用したデザインのシミュレーション

本アプリケーションノートでは、Xilinx をターゲットデバイスとしたシミュレーションをアルデックの設計・検証環境であるActive-HDLまたは

Riviera-PROで実行するフローを簡単にご紹介します。詳細情報は次のXilinxドキュメントを参照してください。

コンセプト概要

図1に示すように、デザインフローの複数個所でシミュレーションを実行します。デザイン入力後に最初のシミュレーションを実行し、配置配線後にデザインの最終機能とパフォーマンスの検証として最後のシミュレーションを実行します。

図1: Xilinx シミュレーションフロー

Xilinx シミュレーションライブラリ

デザインにコンポーネントがインスタンシエートされている場合、シミュレータはコンポーネントの機能が記述されたライブラリを参照し、正確な

シミュレーションを実行します(Table 1にて Xilinx シミュレーションライブラリを列挙します)。

Table 1: Xilinx シミュレーションライブラリ

ライブラリ名

ライブラリの説明

VHDL ライブラリ名

Verilog ライブラリ名

UNISIM

機能シミュレーション時に使用します。全デバイスプリミティブや最下層ブロックの記述を含んでいます。

UNISIM

UNISIMS_VER

UNIMACRO

機能シミュレーション時に使用します。選択デバイスプリミティブのマクロ記述を含んでいます。

UNIMACRO

UNIMACRO_VER

UNIFAST

RTL ビヘイビィアシミュレーション時に使用し、シミュレーション実行時間を高速化することができるオプションライブラリです。

UNIFAST

UNIFAST_VER

XILINXCORELIB

Xilinx IP catalogで作成された特定のコアを含むデザインのRTL ビヘイビィアシミュレーション時に使用します。

XILINXCORELIB

XILINXCORELIB

SIMPRIM

論理合成または配置配線後に生成されたネットリストのタイミングシミュレーション時に使用します。(Verilog UNISIM with timing)

N/A

SIMPRIMS_VER

SECUREIP

PCIe IPやGigabit Transieverのような複雑なFPGAコンポーネントの機能およびタイミング
シミュレーション時に使用します。

SECUREIP

SECUREIP

シミュレーションの実行時点に応じて、異なるシミュレーションライブラリを指定する必要があります(配置配線の前後のネットリストでは、

ゲートレベルセルが異なります)。


Table 2
では、シミュレーション実行時点に応じてライブラリを分類します。

Table 2: シミュレーション実行時点で必要となるXilinxライブラリ

シミュレーション実行時点

必要なライブラリ

RTLシミュレーション

UNISIM

UNIFAST

UNIMACRO

XILINXCORELIB

SECUREIP

論理合成後のシミュレーション 

UNISIM (Functional Netlist)

SIMPRIMS_VER (Timing Netlist)

SECUREIP

配置配線後のシミュレーション

UNISIM (Functional Netlist)

SIMPRIMS_VER (Timing Netlist)

SECUREIP

アルデック用 Xilinx シミュレーションライブラリのコンパイル

Xilinx シミュレーションライブラリをコンパイルして付加する方法は、お使いのXilinxツールに応じて複数あります。

  1. Xilinx Vivado (compile_simlib): アルデック用のシミュレーションライブラリをコンパイルするために、Vivadoのコンソールにてcompile_simlib Tcl コマンドを使います。プロジェクトを開いて本コマンドを実行する場合、コマンドのデフォルト設定ではなく、そのプロジェクトで設定されているデバイスファミリやターゲット言語、ライブラリ設定がデフォルト値として使用されます。コマンド実行時に必要なオプションを指定することにより、デフォルト設定は上書きされます。

    注意: Xilinxはデザインの初期検証には UNIFAST ライブラリを使用し、その後 UNISIM ライブラリを使って完全な検証を実行することを推奨します。シミュレーションモードにおけるプリミティブの一部をサポートすることにより、シミュレーション実行時間の高速化が実現できます。

    次の例は、 Virtex®-7 デバイスを使ったデザインをアルデックのシミュレータでシミュレーションする場合に、UNISIMとSIMPRIM (VHDL) ライブラリをコンパイルする方法を示しています。

    compile_simlib -simulator riviera -family virtex7 -library unisim -library simprim -language vhdl
    compile_simlib -simulator active-hdl -family virtex7 -library unisim -library simprim -language vhdl
    

    (コマンド詳細は、Xilinxコマンドリファレンスを参照してください。 UG835 Tcl Command Reference )

    注意: シミュレータやVivado IDEのバージョンアップ時には、通常ライブラリを再コンパイルします。

  2. Xilinx ISE (compxlib): シミュレーションライブラリをコンパイルするには、compxlib ツールを使用します。次のコマンドは、Virtex®-6 デバイスファミリ向け全Verilogライブラリをアルデックシミュレータ用にコンパイルする例です。

    compxlib -s riviera -arch virtex6 -l verilog
    compxlib -s active_hdl -arch virtex6 -l verilog
    

    (コマンド詳細は、Xilinxコマンドラインツールを参照してください。 UG628 Command Line Tools )

    注意: シミュレータやISEのバージョンアップ時やサービスパックのインストール時またはIPの更新があった場合には、一般的にライブラリを再コンパイルします。

コンパイル済みのXilinxシミュレーションライブラリは、アルデックのウェブサイトからダウンロード可能です。 http://www.aldec.com/downloads (お使いになるアルデック製品を選択し、特定の製品とバージョンに対応したコンパイル済みライブラリを確認してください。)

注意: Active-HDL VHDLまたは Riviera-PRO VHDLをお使いの場合には、アルデックのウェブサイトからSECUREIPライブラリをダウンロードしてください。XilinxのSECUREIPはVerilogソースを含んでいますが、アルデックはVHDLライセンだけでもシミュレーションが実行できるよう、SECUREIP ウォーターマークバージョンを提供しています。詳細は次のアプリケーションノートを参照してください。 Language Neutral Libraries with Xilinx

Xilinx GUI からのアルデックツールの起動

ここからはXilinx GUI 環境外でのシミュレーション実行方法をご紹介します。 (Running RTL/Behavioral Simulation, Running Netlist Simulation, Running Timing Simulation) Xilinx GUI 環境から直接Active-HDLやRiviera-PROを起動し、RTL/ビヘイビア、ネットリストおよびタイミングシミュレーションを実行することができます。アルデックツールをデフォルトシミュレータとして設定する方法の詳細は、次のアプリケーションノートを参照してください。

RTL/ビヘイビアシミュレーションの実行

  1. 上記の「アルデック用Xilinxシミュレーションライブラリのコンパイル」 Compiling Xilinx Simulation Libraries for Aldec で説明したように、シミュレーションライブラリをコンパイルします。

  2. ソースコードとテストベンチファイルをコンパイルします。

    注意: Verilogデザインの場合には、glbl.v もコンパイルする必要があります。(詳細はXilinx UG900 Logic Simulation を参照してください。)

  3. デザインのシミュレーションを実行します。正しくシミュレーションを実行するには、必要なライブラリが参照されていることを確認してください。

    vsim -t ps -L secureip -L unisims_ver work.testbench work.glbl
    

    注意: Xilinxはリゾリューション1psでシミュレーションを実行することを推奨しています。DCMのようなXilinx プリミティブコンポーネントについては、機能検証やタイミングシミュレーションが正しく動作するには、リゾリューション1ps が必要となります。

ネットリストシミュレーションの実行

  1. 上記の「アルデック用Xilinxシミュレーションライブラリのコンパイル」 Compiling Xilinx Simulation Libraries for Aldec で説明したように、シミュレーションライブラリをコンパイルします。

  2. ソースコードとテストベンチファイルをコンパイルします。(Verilogデザインの場合には、glbl.v もコンパイルする必要があります。)

    注意: RTL/ビヘイビィアシミュレーションで使用したテストベンチを使用できます。

  3. シミュレーション用ネットリストを生成します。

    • Xilinx Vivado:

      • 機能検証用ネットリストは、write_verilog -mode funcsim を使用

      • タイミング検証用ネットリストは、write_verilog -mode timesim を使用

      • SDFは write_sdf を使用

      コマンド実行例:

      synth_design -top top -part xc7k70tfbg676-2 -flatten_hierarchy none
      open_run synth_1 -name netlist_1
      write_verilog -mode funcsim test_synth.v
      write_verilog -mode timesim -sdf_file test.sdf test_synth_timing.v
      write_sdf test.sdf
      

      機能検証には test_synth.v を、タイミング検証には test_synth_timing.vtest.sdf を使用します。

      (コマンド詳細は、Xilinx UG835 Tcl Command Reference を参照してください。)

    • Xilinx ISE (XST):

      • 機能検証用ネットリストは、下記コマンドを使用

        netgen -ofmt {verilog|vhdl} [options] input_file[.ngd|ngc|ngo]
        
      • タイミング検証用ネットリストとSDFは、下記コマンドを使用

        netgen -sim -ofmt {verilog|vhdl} [options] input_file[.ncd]
        

        (コマンド詳細は、Xilinx UG628 Command Line Tools を参照してください。)

  4. デザインのシミュレーションを実行します。

タイミングシミュレーションの実行

  • タイミングシミュレーションでは、SIMPRIMライブラリを使用します。タイミングシミュレーション時に、ライブラリが正しく参照されていることを確認してください。

  • タイミングシミュレーションを正しく動作させるには、追加のスイッチが必要になります。次のスイッチをイニシャライズシミュレーションコマンドに追加します。

    +transport_int_delays – selects transport mode for interconnect delays.

    +pulse_int_e/0 – specifies the pulse error limit as a percentage of the Verilog interconnect delay.

    +pulse_int_r/0 – specifies the pulse rejection limit as a percentage of the Verilog interconnect delay.

補足

アプリケーションノート、FAQ、各種ドキュメントやツールおよびオンラインセミナーのビデオ等をダウンロードするには、Xilinx Support 同様に アルデックの Resource ページをご覧ください。

Ask Us a Question
x

Ask Us a Question

x
Captcha ImageReload Captcha
Incorrect data entered.
Thank you! Your question has been submitted. Please allow 1-3 business days for someone to respond to your question.
Internal error occurred. Your question was not submitted. Please contact us using Feedback form.