ALTIMA Corp. PCI Express Compiler ユーザガイド ~ シミュレーション編 SOPC Builder フロー ~ ver.9.1 2010 年 6 月 ELSENA,Inc.
目次 1. はじめに... 3 2. 操作方法... 4 2-1. Quartus II プロジェクトの作成...4 2-2. SOPC Builder の起動...8 2-3. PCI Express MegaCore Function のパラメータ設定...9 2-4. SOPC Builder システムにコンポーネントを追加...11 2-5. SOPC Builder でのコンポーネント接続...13 2-6. SOPC Builder システムの生成...15 2-7. SOPC Builder システムのシミュレーション...16 ver. 9.1 2010 年 6 月 2/24 ALTIMA Corp. / ELSENA,Inc.
1. はじめに この資料では PCI Express Compiler MegaCore Function において 以下のコンポーネントを含むようなシステム構成を SOPC Builder フローを使用して作成およびシミュレーションを実行する手順についてご案内します 図 1-1 にシステムの構成例を示します PCI Express x4 MegaCore Function On-Chip memory DMA controller 図 1-1 : SOPC Builder で生成した場合のエンド ポイント システム 上図サンプル デザインは 以下の手順で作成することができます 1. Quartus II プロジェクトの作成 2. SOPC Builder の起動 3. PCI Express MegaCore Function のパラメータ設定 4. SOPC Builder システムにコンポーネントを追加 5. SOPC Builder でのコンポーネント接続 6. SOPC Builder システムの生成 7. SOPC Builder システムのシミュレーションこのデザイン例で使用する作業環境は以下のとおりです ツール : Quartus II v9.1service Pack 2 PCI Express Compiler v9.1 ModelSim -Altera 6.5b デバイス : Stratix IV GX (EP4SGX230KF40C2) 本資料は メーカ資料 PCI Express Compiler User Guide の補助資料としてご利用ください URL : http://www.altera.co.jp/literature/ug/ug_pci_express.pdf ver. 9.1 2010 年 6 月 3/24 ALTIMA Corp. / ELSENA,Inc.
2. 操作方法 2-1. Quartus II プロジェクトの作成 1. Quartus II を起動し File メニュー New Project Wizard をクリックします 2. New Project Wizard の Introduction 画面が表示される場合には Next ボタンをクリックし次へ進みます 3. Directory, Name, Top-Level Entity [ page 1 of 5 ] プロジェクト ディレクトリ プロジェクト名 トップ レベル デザイン名を入力して Next ボタンをクリック ( 例 ) プロジェクト ディレクトリ : C: sopc_pcie プロジェクト名 : pcie_top トップ レベル デザイン名 : pcie_top 入力の際には半角英数字を用いてください 全角やスペースなどが含まれている場合 エラーが表示されることがあります プロジェクト名とトップ レベル デザイン名は プロジェクトの管理をし易くするためにも同じにすることを推奨します ver. 9.1 2010 年 6 月 4/24 ALTIMA Corp. / ELSENA,Inc.
4. Add Files [ page 2 of 5 ] User Libraries をクリックし ブラウズボタンから PCI Express Compiler がインストールされているディレクトリのパスを入力します Add ボタンをクリックし IP Library の登録を行い OK ボタン Next ボタンをクリックします ver. 9.1 2010 年 6 月 5/24 ALTIMA Corp. / ELSENA,Inc.
5. Family & Devices Settings [ page 3 of 5 ] ターゲット デバイスを Stratix IV GX (EP4SGX230KF40C2) に設定し Next ボタンをクリックします 6. EDA Tool Settings [ page 4 of 5 ] デフォルトの設定のまま Next ボタンをクリックして次へ ver. 9.1 2010 年 6 月 6/24 ALTIMA Corp. / ELSENA,Inc.
7. Summary [ page 5 of 5 ] 今までに設定した内容を確認し 問題がなければ Finish ボタンをクリックします これで Quartus II のプロジェクトの作成は終了です ver. 9.1 2010 年 6 月 7/24 ALTIMA Corp. / ELSENA,Inc.
2-2. SOPC Builder の起動 1. Quartus II の Tools メニュー SOPC Builder を選択します Create New System ウィンドウが起動したら System Name と Target HDL を入力して OK ボタンをクリックします ( 例 ) System Name : pcie_top Target HDL : Verilog ver. 9.1 2010 年 6 月 8/24 ALTIMA Corp. / ELSENA,Inc.
2. System Contentst タブから Interface Protocols PCI PCI Express Compiler を選択してダブルクリックまたは Add ボタンをクリックし PCI Express Compiler の設定ウィザードを起動させます 2-3. PCI Express MegaCore Function のパラメータ設定 1. System Settings タブを選択し 以下のようにパラメータの設定を行います PCIe Core Type : PCI Express hard IP PHY type : Stratix IV GX Lanes : x4 PCI Express version : 1.1 ver. 9.1 2010 年 6 月 9/24 ALTIMA Corp. / ELSENA,Inc.
2. PCI Registers タブを選択し 以下のようにパラメータの設定を行います PCI Base Address Register : 64-bit Prefetchable Memory with Auto BAR Size, Auto Avalon Base Address 32-bit Non-Prefetchable Memory with Auto BAR Size, Auto Avalon Base Address 3. Avalon Configuration タブを選択し 以下のようにパラメータの設定を行います Avalon Clock Domain : Use separate clock PCIe Peripheral Mode : Requester / Completer Address Translation Table Configuration : Dynamic translation table Address Translation Table Size : Number of Address pages : 2 Size of address pages : 1 MByte 20 bits 4. Finish ボタンをクリックし SOPC Builder の設定画面に戻ります ver. 9.1 2010 年 6 月 10/24 ALTIMA Corp. / ELSENA,Inc.
2-4. SOPC Builder システムにコンポーネントを追加 システムに DMA Controller と On-Chip Memory を追加します 1. System Contents タブ Memories and Memory Controllers DMA DMA Controller を選択します Add ボタンをクリックし 表示された画面から以下のようにパラメータ設定を行います Transfer size : Width of the DMA length register : 13 bits Burst Transactions : Enable burst transfers, Maximum burst size : 1024 words FIFO Implementation : Construct FIFO from embedded memory blocks 2. Finish ボタンをクリックすると SOPC Builder システムの中に DMA Controller モジュールが追加されます ver. 9.1 2010 年 6 月 11/24 ALTIMA Corp. / ELSENA,Inc.
3. System Contents タブ Memories and Memory Controllers On-Chip On-Chip Memory (RAM or ROM) を選択し 以下のようにパラメータの設定を行います Memory type : RAM (Writable), Block type : Auto Size : Data width 64-bit, Total memory size 4096 Bytes 4. Finish ボタンをクリックすると On-Chip Memory モジュールが追加され PCI Express Compiler, DMA Controller, On-Chip Memory の 3 つのコンポーネントが SOPC Builder システムの中に構築されます ver. 9.1 2010 年 6 月 12/24 ALTIMA Corp. / ELSENA,Inc.
2-5. SOPC Builder でのコンポーネント接続 SOPC Builder 上でのコンポーネントの接続は 表示されているポートの交差点をクリックすることで行うことができます はポートが接続されていない状態を表します はポートが接続されている状態を表しています 未接続 接続 図 1-2 : SOPC Builder のコンポーネント接続例 1. 図 1-2 に示すように SOPC Builder 上でコンポーネントの接続を行います 2. Clock Settings の MHz の項目をダブルクリックして 125.0 を入力し pcie_compiler_0 のクロック (avalon_clock) と clk_0 を接続します clk_0 が表示されていない場合は Filters ボタンを押し Filter を All に設定します 3. 次にキャリブレーションを行うための cal_clk を以下の手順で追加します 1 Clock Settings の Add ボタンを押して clk_1 信号を追加し cal_clk にリネームします 2 MHz の項目をダブルクリックして 10 125 MHz のレンジで周波数を設定します ( 本資料では 125 MHz に設定します ) 3 pcie_compiler_0 のキャリブレーション クロック (cal_blk_clk) と cal_clk を接続します 4. System Auto-Assign IRQs を実行し IRQ の優先度を自動的に設定します ( 通常は任意に設定します ) 5. スレイブ ポートの Base Address を以下の表に合わせて設定します 6. 以上の設定により SOPC Builder システムへのコンポーネント接続は完了します ver. 9.1 2010 年 6 月 13/24 ALTIMA Corp. / ELSENA,Inc.
ver. 9.1 2010 年 6 月 14/24 ALTIMA Corp. / ELSENA,Inc.
2-6. SOPC Builder システムの生成 1. Next ボタンをクリックし System Generation タブに切り替えます 2. Options Simulation. Create project simulator files にチェックを入れ Generate ボタンをクリックします 3. Generate が成功すると Info: System generation was successful. と表示されます Exit ボタンをクリックしてシステムの保存を行い SOPC Builder を閉じます ver. 9.1 2010 年 6 月 15/24 ALTIMA Corp. / ELSENA,Inc.
2-7. SOPC Builder システムのシミュレーション SOPC Builder は構成したシステムのために 自動的にシミュレーション環境を作成します プロジェクト ディレクトリの中に pcie_top_sim というサブ ディレクトリが作成されていることを確認してください このサブ ディレクトリの中には ユーザが構成した PCI Express システムのシミュレーションに必要なファイルとモデルが生成されています 今回のデザイン例のシミュレーションには以下の環境が必要となります SOPC Builder で構成した PCI Express のデザイン プロジェクト ディレクトリ pcie_top_sim の中に生成されているシミュレーション スクリプト ModelSim-Altera Edition 6.5b ModelSim SE / PE や 3rd Party のシミュレータ ツールを使用することも可能です 以下 URL の資料をご覧ください URL: http://www.altera.com/literature/hb/qts/qts_qii53014.pdf SOPC Builder で構成した PCI Express のファンクション シミュレーション モデルは プロジェクト ディレクトリの中に.vo または.vho ファイルとして生成されます また PCI Express のテストベンチ ファイルは プロジェクト ディレクトリ pci_express_compiler_0_examples sopc testbench の中に格納されています このテストベンチの詳細については PCI Express Compiler User Guide Chapter 7 : Testbench and Example Designs をご確認ください 注意 : Quartus II ver9.1 以降を使用する場合 シミュレーションにおいて DMA 転送テストが失敗する可能性があります これは PCI Express Core と DMAC の IRQ 信号が正しく接続されていないためです これを回避するため 以下のように <sopc variation>.v ファイルの記述を変更してください 変更前 // pcie_compiler_0_rx_interface_irq of type irq does not connect to anything so wire it to default (0) assign pcie_compiler_0_rx_interface_irq = 0; 変更後 // pcie_compiler_0_rx_interface_irq of type irq does not connect to anything so wire it to default (0) assign pcie_compiler_0_rx_interface_irq = dma_0_control_port_slave_irq; ver. 9.1 2010 年 6 月 16/24 ALTIMA Corp. / ELSENA,Inc.
下記に今回のデザイン例のシミュレーション方法を示します 1. まず ターゲット メモリと DMA メモリのテストを行うために シミュレーション ファイルの編集を行います プロジェクト ディレクトリ pci_express_compiler_0_examples sopc testbench に生成されている altpcietb_bfm_driver.v を開き 下記の項目の値に編集を加えます parameter RUN_TGT_MEM_TST = 0; parameter RUN_TGT_MEM_TST = 1; parameter RUN_DMA_MEM_TST = 0; parameter RUN_DMA_MEM_TST = 1; デザインに VHDL を使用している場合には altpcietb_bfm_driver.vhd を開き 下記のように編集します RUN_TGT_MEM_TST : std_logic := 0 RUN_TGT_MEM_TST : std_logic := 1 ; RUN_DMA_MEM_TST : std_logic := 0 RUN_DMA_MEM_TST : std_logic := 1 ; 2. ModelSim-Altera 6.5b を起動し ワーキング ディレクトリ ( シミュレーション ファイルが含まれているディレクトリ ) を指定します 3. 下記のコマンドを入力し シミュレーションのセットアップを実行します source setup_sim.do ( 例 ) C: sopc_pcie pcie_top_sim 4. 下記のコマンドを入力し デザインのロードを行います s ver. 9.1 2010 年 6 月 17/24 ALTIMA Corp. / ELSENA,Inc.
5. 下記のコマンドを入力し 波形のセットアップを行います do wave_presets.do ここで選択されている信号がシミュレーション実行時に表示されます 6. 下記のコマンドを入力し デザインのシミュレーションを実行します run -all ver. 9.1 2010 年 6 月 18/24 ALTIMA Corp. / ELSENA,Inc.
7. シミュレーションが終了すると # SUCCESS: Simulation stopped due to successful completion! と表示され wave ウィンドウに波形が表示されます ver. 9.1 2010 年 6 月 19/24 ALTIMA Corp. / ELSENA,Inc.
このデザイン例のテスト ドライバは以下のトランザクションを実行して表示します リンクの初期化後 システム内に構成した PCI Express MegaCore Function への様々なコンフィギュレーション アクセス DMA コンポーネントから送信されるリクエストのための アドレス変換テーブルのセットアップ ルート ポート BFM 共有メモリから 4 KBytes データの Read を行うための DMA コントローラのセットアップ ルート ポート BFM 共有メモリへ 4 KBytes データの Write を行うための DMA コントローラのセットアップ データの比較を行い レポートを表示 上記のトランザクションの進行度はシミュレーション中 ModelSim 上の Transcript ウィンドウに表示されます 以下にシミュレーション結果の概要を示します # INFO: 464 ns Completed initial configuration of Root Port. # INFO: 3644 ns EP LTSSM State: DETECT.ACTIVE # INFO: 3660 ns RP LTSSM State: DETECT.ACTIVE レシーバ検出 # INFO: 3692 ns EP LTSSM State: POLLING.ACTIVE レーン極性検出 データ レート確定 # INFO: 6908 ns RP LTSSM State: POLLING.ACTIVE # INFO: 9036 ns RP LTSSM State: POLLING.CONFIG # INFO: 9356 ns EP LTSSM State: POLLING.CONFIG # INFO: 10444 ns EP LTSSM State: CONFIG.LINKWIDTH.START # INFO: 10636 ns RP LTSSM State: CONFIG.LINKWIDTH.START リンクのレーン構成を確立 # INFO: 11276 ns EP LTSSM State: CONFIG.LINKWIDTH.ACCEPT # INFO: 11804 ns RP LTSSM State: CONFIG.LINKWIDTH.ACCEPT # INFO: 12124 ns RP LTSSM State: CONFIG.LANENUM.WAIT # INFO: 12748 ns EP LTSSM State: CONFIG.LANENUM.WAIT # INFO: 12940 ns EP LTSSM State: CONFIG.LANENUM.ACCEPT # INFO: 13084 ns RP LTSSM State: CONFIG.LANENUM.ACCEPT 正常にリンク # INFO: 13404 ns RP LTSSM State: CONFIG.COMPLETE # INFO: 13852 ns EP LTSSM State: CONFIG.COMPLETE # INFO: 14940 ns EP LTSSM State: CONFIG.IDLE # INFO: 15132 ns RP LTSSM State: CONFIG.IDLE # INFO: 15212 ns RP LTSSM State: L0 # INFO: 15468 ns EP LTSSM State: L0 L0 ステートに遷移 L0 state : リンクがアクティブな状態で 制御パケットやデータ パケットを送受信することが可能です 全ての電力管理ステート (L0s/L1/L2) には L0 ステートから遷移します ver. 9.1 2010 年 6 月 20/24 ALTIMA Corp. / ELSENA,Inc.
# INFO: 16840 ns Configuring Bus 001, Device 001, Function 00 # INFO: 16840 ns EP Read Only Configuration Registers: # INFO: 16840 ns Vendor ID: 1172 読み取り専用レジスタ # INFO: 16840 ns Device ID: 0004 # INFO: 16840 ns Revision ID: 01 # INFO: 16840 ns Class Code: FF0000 # INFO: 16840 ns Subsystem Vendor ID: 1172 # INFO: 16840 ns Subsystem ID: 0004 # INFO: 16840 ns Interrupt Pin: INTA# used # INFO: 17680 ns PCI MSI Capability Register: # INFO: 17680 ns 64-Bit Address Capable: Supported # INFO: 17680 ns Messages Requested: 1 64-bit アドレッシング可能 # INFO: 21880 ns EP PCI Express Link Status Register (1041): # INFO: 21880 ns Negotiated Link Width: x4 リンク幅 : x4 # INFO: 21880 ns Slot Clock Config: System Reference Clock Used # INFO: 22772 ns RP LTSSM State: RECOVERY.RCVRLOCK # INFO: 23180 ns EP LTSSM State: RECOVERY.RCVRLOCK リンク復旧 # INFO: 23708 ns EP LTSSM State: RECOVERY.RCVRCFG # INFO: 23876 ns RP LTSSM State: RECOVERY.RCVRCFG # INFO: 25028 ns RP LTSSM State: RECOVERY.IDLE # INFO: 25308 ns EP LTSSM State: RECOVERY.IDLE # INFO: 25388 ns EP LTSSM State: L0 # INFO: 25540 ns RP LTSSM State: L0 # INFO: 26384 ns Current Link Speed: 2.5GT/s リンク速度 : 2.5 GT/s # INFO: 27224 ns EP PCI Express Link Control Register (0040): コモン クロック モード構成 # INFO: 27224 ns Common Clock Config: System Reference Clock Used # INFO: 28256 ns EP PCI Express Capabilities Register (0001): # INFO: 28256 ns Capability Version: 1 # INFO: 28256 ns Port Type: Native Endpoint ポートタイプ : Native Endpoint # INFO: 28256 ns EP PCI Express Device Capabilities Register (00008000): # INFO: 28256 ns Max Payload Supported: 128 Bytes # INFO: 28256 ns Extended Tag: Not Supported Max Payload Size : 128 Bytes # INFO: 28256 ns Acceptable L0s Latency: Less Than 64 ns L0s 許容レイテンシ : 64 ns 未満 # INFO: 28256 ns Acceptable L1 Latency: Less Than 1 us # INFO: 28256 ns Attention Button: Not Present L1 許容レイテンシ : 1 us 未満 # INFO: 28256 ns Attention Indicator: Not Present # INFO: 28256 ns Power Indicator: Not Present L0s state : リンクは電気的にアイドル状態になりますが クロックや PLL は安定して動作している状態で 消費電力は L0 ステートの 30~40% 程度が想定されています L0 ステートへの復帰は 数 100ns から数 us 程度と非常に高速です ver. 9.1 2010 年 6 月 21/24 ALTIMA Corp. / ELSENA,Inc.
L1 state : リンクは電気的にアイドル状態になり PLL も停止されて消費電力は L0 ステートの 10~20% 程度が想定されています L0 ステートへの復帰には数 us から数 10us 程度が必要となります # INFO: 28256 ns EP PCI Express Link Capabilities Register (0103F441): # INFO: 28256 ns Maximum Link Width: x4 # INFO: 28256 ns Supported Link Speed: 2.5GT/s # INFO: 28256 ns L0s Entry: Supported L0 state : サポート # INFO: 28256 ns L1 Entry: Not Supported # INFO: 28256 ns L0s Exit Latency: More than 4 us L1 state : 未サポート # INFO: 28256 ns L1 Exit Latency: More than 64 us # INFO: 28256 ns Port Number: 01 L0 脱出レイテンシ : 4 us 以上 # INFO: 28256 ns Surprise Dwn Err Report: Not Supported # INFO: 28256 ns DLL Link Active Report: Not Supported # INFO: 29136 ns EP PCI Express Device Control Register (0010): # INFO: 29136 ns Error Reporting Enables: 0 Error Reporting 機能をディセーブル # INFO: 29136 ns Relaxed Ordering: Enabled # INFO: 29136 ns Max Payload: 128 Bytes Relaxed Ordering 機能をイネーブル # INFO: 29136 ns Extended Tag: Disabled # INFO: 29136 ns Max Read Request: 128 Bytes Extended Tag をディセーブル Relaxed Ordering : トランザクションの実行順序を入れ替えることが可能になります Extended Tag : アプリケーション レイヤが送信する Non-Posted リクエストに対してサポートされるタグ 数を 32 以上にすると設定されます # INFO: 29136 ns EP PCI Express Device Status Register (0000): # INFO: 29136 ns # INFO: 29976 ns EP PCI Express Virtual Channel Capability: バーチャル チャネル機能 # INFO: 29976 ns Virtual Channel: 1 # INFO: 29976 ns Low Priority VC: 0 VC の優先順位 Virtual Channel : バーチャル チャネルとは チャネルを仮想化することにより複数の独立したデータ ストリームを扱うことができる機能です Low Priority VC : 0 は VC に優先順位がないことを意味し 1 は VC に優先順位があることを意味します ver. 9.1 2010 年 6 月 22/24 ALTIMA Corp. / ELSENA,Inc.
# INFO: 33008 ns BAR Address Assignments: ベース アドレス レジスタの割り当て # INFO: 33008 ns BAR Size Assigned Address Type # INFO: 33008 ns ------ ----- ------------------------------- # INFO: 33008 ns BAR1:0 4 KBytes 00000001 00000000 Prefetchable # INFO: 33008 ns BAR2 32 KBytes 00200000 Non-Prefetchable # INFO: 33008 ns BAR3 Disabled # INFO: 33008 ns BAR4 Disabled BAR1:0 に 4 KBytes のプリフェッチ メモリを割り当て # INFO: 33008 ns BAR5 Disabled BAR2 に 32KBytes のノン プリフェッチ メモリを割り当て # INFO: 33008 ns ExpROM Disabled # INFO: 34104 ns Completed configuration of Endpoint BARs. Endpoint BAR の設定が完了 Prefetchable Memory : 事前読み込みを行い 性能の向上を図ることができます # INFO: 35064 ns Starting Target Write/Read Test. Target メモリの Write / Read テストを開始 # INFO: 35064 ns Target BAR = 0 # INFO: 35064 ns Length = 004096, Start Offset = 000000 転送長 : 4096 Bytes, オフセット : 000000 # INFO: 47272 ns Target Write and Read compared okay! # INFO: 47272 ns Write データと Read データが一致 OK! # INFO: 47272 ns Starting DMA Read/Write Test. # INFO: 47272 ns Setup BAR = 2 DMA メモリの Read / Write テストを開始 # INFO: 47272 ns Length = 004096, Start Offset = 000000 転送長 : 4096 Bytes, オフセット : 000000 # INFO: 55772 ns Interrupt Monitor: Interrupt INTA Asserted # INFO: 55772 ns Clear Interrupt INTA INTA のアサート & デアサートを行い # INFO: 56748 ns Interrupt Monitor: Interrupt INTA Deasserted # INFO: 66164 ns MSI recieved! データ転送の終了を通知 # INFO: 66164 ns DMA Read and Write compared okay! Read データと Write データが一致 OK! # SUCCESS: Simulation stopped due to successful completion! シミュレーション成功! 以上が ModelSim を使用したシミュレーション結果の概要です ver. 9.1 2010 年 6 月 23/24 ALTIMA Corp. / ELSENA,Inc.
免責 及び ご利用上の注意 弊社より資料を入手されましたお客様におかれましては 下記の使用上の注意を一読いただいた上でご使用ください 1. 本資料は非売品です 許可無く転売することや無断複製することを禁じます 2. 本資料は予告なく変更することがあります 3. 本資料の作成には万全を期していますが 万一ご不明な点や誤り 記載漏れなどお気づきの点がありましたら 本資料を入手されました下記代理店までご 一報いただければ幸いです 株式会社アルティマ : 222-8563 横浜市港区新横浜 1-5-5 マクニカ第二ビル TEL: 045-476-2155 HP: http://www.altima.co.jp 技術情報サイト EDISON : https://www.altima.jp/members/index.cfm 株式会社エルセナ : 163-0928 東京都新宿区西新宿 2-3-1 新宿モノリス 28F TEL: 03-3345-6205 HP: http://www.elsena.co.jp 技術情報サイト ETS : https://www.elsena.co.jp/elspear/members/index.cfm 4. 本資料で取り扱っている回路 技術 プログラムに関して運用した結果の影響については 責任を負いかねますのであらかじめご了承ください 5. 本資料は製品を利用する際の補助的な資料です 製品をご使用になる場合は 英語版の資料もあわせてご利用ください ver. 9.1 2010 年 6 月 24/24 ALTIMA Corp. / ELSENA,Inc.