3.1.2. PMA/FEC Direct PHY Multirateハードウェア・デザイン例
ハードウェア・デザイン例でのISSPモジュールでは、DUT IPリセット信号、dr_mode 選択を制御し、ステータス信号を表示します。ハードウェア・テスト・スクリプトは、値を読み出して駆動するためにISSPへのサービスを開放します。JTAGホストは、 Avalon® メモリーマップド・インターフェイスにアクセスするためにインスタンス化されます。
ハードウェア・デザイン例では、src/parameter.tcl ファイルに記述されているユーザーの選択に基づいてダイナミック・リコンフィグレーション移行プロセスを実行し、DUT IPステータスをチェックします。デフォルトのダイナミック・リコンフィグレーション・シーケンスがありますが、ユーザーはいつでも src/parameter.tcl ファイル内の DR_TRANSITION 配列変数を変更できます。
DR_TRANSITION: 目的のDRシーケンス配列。この配列変数のサイズによって、実行されるダイナミック・リコンフィグレーションの数が決まります。
- 例えば、50G-1 Base Variantのダイナミック・リコンフィグレーション・シーケンスである1x50G > 1x25G > 1x50G KPFEC > 1x24.33024G > 1x50Gを実現する場合、変数の変更は次のようになります。
set DR_TRANSITION(0) "1x25G" set DR_TRANSITION(1) "1x50G KPFEC" set DR_TRANSITION(2) "1x24.33024G" set DR_TRANSITION(3) "1x50G
- 400G-8 Base Variantのダイナミック・リコンフィグレーション・シーケンスである1x400G-8 > 2x100G-4 > 2x200G-4 > 1x400G-8Gを実現したい場合、変数の変更は次のようになります。
The variables changes are: set DR_TRANSITION(0) "2x100G_4" set DR_TRANSITION(1) "2x200G_4" set DR_TRANSITION(2) "1x400G_8」
デザイン例のハードウェア・フロー
PMA/FEC Direct Multirate PHY Design Exampleはデフォルトで、loopback_modeパラメーターを 0 に設定して、外部ループバック・テストを実行します。ハードウェア・テストを実行する前に、それぞれのデザイン例の QSF ピンアウト割り当てに従って、QSFP-DDループバック・モジュールを接続します。
ハードウェアで内部ループバック・テストを実行するには、<design_example_dir>/hardware_test_design/hwtest/src にある parameter.tcl ファイルで、loopback_modeパラメーターを 1 に変更します。Fタイル・ダイナミック・リコンフィグレーションのデザイン例をコンパイルし、 Intel® Agilex™ 7デバイス上でコンフィグレーションした後、システムコンソールを使用してIPコアとそのPHY IPコアレジスターをプログラミングできます。
このタスクについて
システムコンソールを起動してハードウェア・デザイン例をテストするには、次の手順に従います。
- ハードウェア・デザイン例を Intel® Agilex™ 7デバイスにコンフィグレーションした後、インテルQuartus Prime開発ソフトウェア・プロ・エディションで、 をクリックします。
- Tcl Consoleペインで cd hwtest と入力して、ディレクトリーを <design_example_dir>/hardware_test_design/hwtest に変更します。
- source main_script.tcl と入力してJTAGマスターへの接続を開き、テストを開始します。
- 結果を解析します。実行が成功すると、システムコンソールにTest Passedと表示されます。
PMA/FEC Direct PHY Multirateハードウェア・デザイン例の出力例を以下に示します。
% cd hwtest $source main_script.tcl Info: Number of Channels = 1 Info: JTAG Port ID = 2 Info: Power Up Variant = 1x50G INFO: Start of ftile_dphy_dr_test_dynamic INFO: Basic DPHY DR test INFO: Set Reconfig Reset INFO: write_value is 0x1 INFO: Release Reconfig Reset INFO: write_value is 0x0 INFO: Set DR mode... INFO: DR mode is 0x0 ........... ******* ******* INFO: Channel 0: Set TX Reset INFO: write_value is 0x4 INFO: Channel 0: Set RX Reset INFO: write_value is 0x6 INFO: get_reset_ack_status ----- INFO: Channel 0 : Checking tx reset ack status... INFO: tx_reset_ack_status_0 = 0x3 INFO: TX fully in reset state INFO: Channel 0 : Checking rx reset ack status... INFO: rx_reset_ack_status_0 = 0x3 INFO: RX fully in reset state INFO: Start DR selection----- INFO: DR transition is 1x50G ----- INFO: Channel: 0 Configuring ED to PMA_DIR 1x50G .... INFO: Wait for DR Ready.... INFO: configuring DR Profile 1x50G.... INFO: Trigger DR interrupt INFO: Wait for DR interrupt Ack.... INFO: DR Request acknowledged INFO: Wait for DR Config to be done.... INFO: DONE Reconfigure to 1x50G. INFO: Set DR mode... INFO: DR mode is 0x0 INFO: Channel 0: Release TX Reset INFO: write_value is 0x2 INFO: Channel 0: Release RX Reset INFO: write_value is 0x0 INFO: Channel 0 : Run test... INFO: Read out probe data: 0x7dc INFO: Data locked with no error ******* ******* Info: End of ftile_dphy_dr_test Info: Test <ftile_dphy_dr_test> Passed
% cd hwtest $source main_script.tcl Info: Number of Channels = 1 Info: JTAG Port ID = 2 Info: Power Up Variant = 1x400G_8 INFO: Start of ftile_dphy_dr_test INFO: Basic DPHY DR test INFO: Set Reconfig Reset INFO: write_value is 0x1 INFO: Release Reconfig Reset INFO: write_value is 0x0 INFO: Set DR mode... INFO: DR mode is 0x0 INFO: Channel 0: Set TX Reset INFO: write_value is 0x4 INFO: Channel 0: Set RX Reset INFO: write_value is 0x6 INFO: check_reset_ack_n_status for current_dr_profile : 400G ----- INFO: Channel 0 : Checking tx reset ack status... INFO: tx_reset_ack_status_0 = 0x5 INFO: TX fully in reset state INFO: Channel 0 : Checking rx reset ack status... INFO: rx_reset_ack_status_0 = 0x5 INFO: RX fully in reset state INFO: Internal Serial Loopback not enabled INFO: Channel 0: Release TX Reset INFO: write_value is 0x2 INFO: Channel 0: Release RX Reset INFO: write_value is 0x0 Run default test. Release resets. Running test for 10s INFO: Channel 0 : Run test... INFO: Read out probe data: 0x6b70 INFO: Channel 0: Set TX Reset INFO: write_value is 0x4 INFO: Channel 0: Set RX Reset INFO: write_value is 0x6 INFO: check_reset_ack_n_status for current_dr_profile : 400G ----- INFO: Channel 0 : Checking tx reset ack 0 status... INFO: tx_reset_ack_status_0 = 0x5 INFO: TX fully in reset state INFO: Channel 0 : Checking rx reset ack status... INFO: rx_reset_ack_status_0 = 0x5 INFO: RX fully in reset state INFO: Start DR selection----- INFO: DR transition is 2x200G_4 ----- INFO: Channel: 0 Configuring ED to PMA_DIR 2x200G_4 .... INFO: Wait for DR Ready.... INFO: configuring DR Profile 2x200G_4.... INFO: Trigger DR interrupt INFO: Wait for DR interrupt Ack.... INFO: DR Request acknowledged INFO: Wait for DR Config to be done.... INFO: DONE Reconfigure to 2x200G_4. INFO: Set DR mode... INFO: DR mode is 0x1 INFO: Channel 0: Release TX Reset INFO: write_value is 0x2 INFO: Channel 0: Release RX Reset INFO: write_value is 0x0 INFO: Channel 0 : Run test... INFO: Read out probe data: 0x7f70 INFO: Data locked with no error INFO: Test Pass! ******* ******* INFO: Channel 0: Set TX Reset INFO: write_value is 0x4 INFO: Channel 0: Set RX Reset INFO: write_value is 0x6 INFO: check_reset_ack_n_status for current_dr_profile : 200G ----- INFO: Channel 0 : Checking tx reset ack 0 status... INFO: tx_reset_ack_status_0 = 0xf INFO: TX fully in reset state INFO: Channel 0 : Checking tx reset ack 1 status... INFO: tx_reset_ack_status_1 = 0xf INFO: TX fully in reset state INFO: Channel 0 : Checking rx reset ack status... INFO: rx_reset_ack_status_0 = 0xf INFO: RX fully in reset state INFO: Channel 0 : Checking rx reset ack status... INFO: rx_reset_ack_status_1 = 0xf INFO: RX fully in reset state INFO: Start DR selection----- INFO: DR transition is 2x100G_4 ----- INFO: Channel: 0 Configuring ED to PMA_DIR 2x100G_4 .... INFO: Wait for DR Ready.... INFO: configuring DR Profile 2x100G_4.... INFO: Trigger DR interrupt INFO: Wait for DR interrupt Ack.... INFO: DR Request acknowledged INFO: Wait for DR Config to be done.... INFO: DONE Reconfigure to 2x100G_4. INFO: Set DR mode... INFO: DR mode is 0x2 INFO: Channel 0: Release TX Reset INFO: write_value is 0x2 INFO: Channel 0: Release RX Reset INFO: write_value is 0x0 INFO: Channel 0 : Run test... INFO: Read out probe data: 0x7f70 INFO: Data locked with no error INFO: Test Pass! ******* ******* INFO: Channel 0: Set TX Reset INFO: write_value is 0x4 INFO: Channel 0: Set RX Reset INFO: write_value is 0x6 INFO: check_reset_ack_n_status for current_dr_profile : 100G ----- INFO: Channel 0 : Checking tx reset ack 0 status... INFO: tx_reset_ack_status_0 = 0xf INFO: TX fully in reset state INFO: Channel 0 : Checking tx reset ack 1 status... INFO: tx_reset_ack_status_1 = 0xf INFO: TX fully in reset state INFO: Channel 0 : Checking rx reset ack status... INFO: rx_reset_ack_status_0 = 0xf INFO: RX fully in reset state INFO: Channel 0 : Checking rx reset ack status... INFO: rx_reset_ack_status_1 = 0xf INFO: RX fully in reset state INFO: Start DR selection----- INFO: DR transition is 1x400G_8 ----- INFO: Channel: 0 Configuring ED to PMA_DIR 1x400G_8 .... INFO: Wait for DR Ready.... INFO: configuring DR Profile 1x400G_8.... INFO: Trigger DR interrupt INFO: Wait for DR interrupt Ack.... INFO: DR Request acknowledged INFO: Wait for DR Config to be done.... INFO: DONE Reconfigure to 1x400G_8. INFO: Set DR mode... INFO: DR mode is 0x0 INFO: Channel 0: Release TX Reset INFO: write_value is 0x2 INFO: Channel 0: Release RX Reset INFO: write_value is 0x0 INFO: Channel 0 : Run test... INFO: Read out probe data: 0x6b70 INFO: Data locked with no error INFO: Test Pass! ******* ******* Info: End of ftile_dphy_dr_test Info: Test <ftile_dphy_dr_test> Passed