3.1.1. PMA/FEC Direct PHY Multirateデザイン例のシミュレーション・テストベンチ
次の図に、PMA/FEC Direct PHY Multirateデザイン例シミュレーション・テストベンチのブロック図を示します。
図 9. 50G-1ベースバリアントのシミュレーション・テストベンチのブロック図
図 10. 400G-8ベースバリアントのシミュレーション・テストベンチのブロック図
テストベンチ・プログラムは、 Avalon® メモリーマップド・インターフェイスのアクセス、ステータス、およびコントロール信号を介してテストベンチ・コンポーネントを制御します。 Avalon® メモリーマップド・インターフェイス・アービターは、テストベンチ・プログラムから複数の Avalon® メモリーマップド・インターフェイス・スレーブへの Avalon® メモリーマップド・インターフェイスのアクセスをデコードします。
testwrapブロックは内部的にPRBSジェネレーターとPRBSベリファイアーで構成されます。testwrapブロックには2種類あります。
- PMA testwrap - PMA directコンフィグレーションで使用されます。
- FEC testwrap - FEC directコンフィグレーションで使用されます。
50G-1ベースバリアントのデザインの場合、3つのリファレンス・クロック (156.25MHz、153.6MHz、および184.32MHz) がシステムクロックに供給されます。
- 156.25MHzのリファレンス・クロックは、イーサネット・プロトコル・データレート (つまり、53.125G (PAM4) PMA Direct、53.125G (PAM4) FEC Direct、25.7812G (NRZ) PMA Direct、および10.3125G (NRZ) PMA Direct) に使用されます。
- 153.6MHzのリファレンス・クロックは、9.8304G (NRZ) PMA Direct、4.9152G (NRZ) PMA Direct、および2.4576G (NRZ) PMA Direct CPRIプロトコル・データレートに使用されます。
- 184.32MHzのリファレンス・クロックは、24.3302G (NRZ) PMA Directおよび10.1376G (NRZ) PMA Direct CPRIプロトコル・データレートに使用されます。
400G-8ベースバリアントのデザインの場合、1つのリファレンス・クロック (156.25MHz) がシステムクロックに供給されます。
シミュレーションのフロー
- PMA/FEC Direct PHY Multirate IPは、ベース・プロファイルに基づいて起動されます。
- パワーアップ・プロファイルに基づいて、テストベンチ変数を初期化します。top_tst.sv ファイルにあるパラメーター設定は、次のとおりです。
- DR_NUM: ダイナミック・リコンフィグレーション移行の数を示します。
- DR_SEQ: ダイナミック・リコンフィグレーション・シーケンスを示します。
- パラメーター設定のシーケンスに基づいて、ダイナミック・リコンフィグレーションを実行します。
- テストベンチのエラーフラグを確認し、テストベンチが成功したか失敗したかを判断します。ダイナミック・リコンフィグレーションのトラフィック・テスト後にエラーが発生した場合、このエラーフラグは1に設定されます。
カスタマイズの場合は、top_tst.sv ファイルにある DR_NUM および DR_SEQ localparamを変更して、テストフローをコンフィグレーションできます。プロファイルIDはIPに渡され、目的のダイナミック・リコンフィグレーション・タスクをコンフィグレーションします。
50G-1ベースバリアントのダイナミック・リコンフィグレーション・シーケンスの例: 53.1G > 25.78125G > 53.1G FEC > 24.3G > 53.1G: このダイナミック・リコンフィグレーション・シーケンスを実現するには、以下に示すダイナミック・リコンフィグレーション移行 (4つの移行) を実行し、リコンフィグレーション・シーケンスを指定する必要があります。次のように、ローカル・パラメーター設定ファイルを更新します。
// Available Modes localparam DR_MODE_50G_1 = 4'b0000; // ETH localparam DR_MODE_25G_1 = 4'b0001; // ETH localparam DR_MODE_24G_1 = 4'b0010; // CPRI localparam DR_MODE_10p1G_1 = 4'b0011; // CPRI localparam DR_MODE_9p8G_1 = 4'b0100; // CPRI localparam DR_MODE_4p9G_1 = 4'b0101; // CPRI localparam DR_MODE_2p4G_1 = 4'b0110; // CPRI localparam DR_MODE_10G_1 = 4'b0111; // ETH localparam DR_MODE_50GKP_1 = 4'b1000; // ETH // DR from base variant (DR_MODE_50G_1) to other variants in the following order, starting from left. localparam DR_NUM = 4; localparam [3:0] DR_SEQ [0 : DR_NUM-1] = {DR_MODE_25G_1,DR_MODE_50GKP_1,DR_MODE_24G_1,DR_MODE_50G_1};
50G-1ベースバリアントのダイナミック・リコンフィグレーション・シーケンスの例: 53.1G > 9.8G > 4.9G: このダイナミック・リコンフィグレーション・シーケンスを実現するには、以下に示すダイナミック・リコンフィグレーション移行 (2つの移行) を実行し、リコンフィグレーション・シーケンスを指定する必要があります。次のように、ローカル・パラメーター設定ファイルを更新します。
// Available Modes localparam DR_MODE_50G_1 = 4'b0000; // ETH localparam DR_MODE_25G_1 = 4'b0001; // ETH localparam DR_MODE_24G_1 = 4'b0010; // CPRI localparam DR_MODE_10p1G_1 = 4'b0011; // CPRI localparam DR_MODE_9p8G_1 = 4'b0100; // CPRI localparam DR_MODE_4p9G_1 = 4'b0101; // CPRI localparam DR_MODE_2p4G_1 = 4'b0110; // CPRI localparam DR_MODE_10G_1 = 4'b0111; // ETH localparam DR_MODE_50GKP_1 = 4'b1000; // ETH // DR from base variant (DR_MODE_50G_1) to other variants in the following order, starting from left. localparam DR_NUM = 2; localparam [3:0] DR_SEQ [0 : DR_NUM-1] = {DR_MODE_9p8G_1,DR_MODE_4p9G_1};
400G-8ベースバリアントのダイナミック・リコンフィグレーション・シーケンスの例: 1x400G-8 > 2x100G-4 > 1x400G-8 > 2x200G-4: このダイナミック・リコンフィグレーション・シーケンスを実現するには、以下に示すダイナミック・リコンフィグレーション移行 (3つの移行) を実行し、リコンフィグレーション・シーケンスを指定する必要があります。次のように、ローカル・パラメーター設定ファイルを更新します。
// Available Modes localparam DR_MODE_400G_8 = 4'b0000; localparam DR_MODE_200G_4 = 4'b0001; localparam DR_MODE_100G_4 = 4'b0010; // DR from base variant (DR_MODE_400G_8) to other variants in the following order, starting from left. localparam DR_NUM = 3; localparam [3:0] DR_SEQ [0 : DR_NUM-1] = {DR_MODE_100G_4,DR_MODE_400G_8,DR_MODE_200G_4};