« Prev | Next » Xilinx ライブラリ (UNISIM, UNIMACRO, XILINXCORELIB, SIMPRIMS, SECUREIP)を使用したデザインのシミュレーション 本アプリケーションノートでは、Xilinx をターゲットデバイスとしたシミュレーションをアルデックの設計・検証環境であるActive-HDLまたは Riviera-PROで実行するフローを簡単にご紹介します。詳細情報は次のXilinxドキュメントを参照してください。 UG900 Vivado™ Design Suite Logic Simulation User’s Guide (Vivado users) UG626 Synthesis and Simulation Design Guide (ISE users) コンセプト概要 図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ツールに応じて複数あります。 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のバージョンアップ時には、通常ライブラリを再コンパイルします。 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/ビヘイビア、ネットリストおよびタイミングシミュレーションを実行することができます。アルデックツールをデフォルトシミュレータとして設定する方法の詳細は、次のアプリケーションノートを参照してください。 Active-HDL in ISE, Active-HDL in Vivado Riviera-PRO in ISE, Riviera-PRO in Vivado RTL/ビヘイビアシミュレーションの実行 上記の「アルデック用Xilinxシミュレーションライブラリのコンパイル」 Compiling Xilinx Simulation Libraries for Aldec で説明したように、シミュレーションライブラリをコンパイルします。 ソースコードとテストベンチファイルをコンパイルします。 注意: Verilogデザインの場合には、glbl.v もコンパイルする必要があります。(詳細はXilinx UG900 Logic Simulation を参照してください。) デザインのシミュレーションを実行します。正しくシミュレーションを実行するには、必要なライブラリが参照されていることを確認してください。 vsim -t ps -L secureip -L unisims_ver work.testbench work.glbl 注意: Xilinxはリゾリューション1psでシミュレーションを実行することを推奨しています。DCMのようなXilinx プリミティブコンポーネントについては、機能検証やタイミングシミュレーションが正しく動作するには、リゾリューション1ps が必要となります。 ネットリストシミュレーションの実行 上記の「アルデック用Xilinxシミュレーションライブラリのコンパイル」 Compiling Xilinx Simulation Libraries for Aldec で説明したように、シミュレーションライブラリをコンパイルします。 ソースコードとテストベンチファイルをコンパイルします。(Verilogデザインの場合には、glbl.v もコンパイルする必要があります。) 注意: RTL/ビヘイビィアシミュレーションで使用したテストベンチを使用できます。 シミュレーション用ネットリストを生成します。 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.v と test.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 を参照してください。) デザインのシミュレーションを実行します。 タイミングシミュレーションの実行 タイミングシミュレーションでは、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 ページをご覧ください。 Previous article Next article