このデザイン例の目的は、TSE_RGMII に制約を課す方法を紹介することです。このデザイン例は、外部 PHY の TX_CLK と RX_CLK の遅延機能 (90 度シフト) がオンになっている場合にのみ適用されます。これは、10MHz、100MHz、1000MHz の 3 つの異なる速度で動作します。
トリプル・スピード・イーサネットの知的財産 (IP) コア、ALTDDIO、ALTPLL、TimeQuest と静的タイミング分析、およびダブル・データ・レート (DDR) のソース・シンクロナス・コンセプトについて理解していることが前提です。
制約方法
- インターフェイス制約の方式として、システム・セントリック方式またはインテル® FPGA セントリック方式を選択します。
- set_input_delay および set_output_delay コマンドの遅延値の計算には、方式ごとに異なる計算式が必要です。
- このデザイン例では、システム・セントリック方式を使用しています。
- 外部 PHY の遅延機能 (±90 度シフト) をオンにするかオフにするかで、クロックとデータ間のアライメントのタイプが決まります。
- 90 度シフト -> 中央揃え
- シフトなし -> エッジ揃え
- このデザイン例は、外部 PHY の TX と RX の遅延機能がオン (90 度シフト) になっている場合にのみ適用されます。
- 望ましいローンチとラッチのリレーションシップを決めます。
- ローンチとラッチのリレーションシップには 4 タイプあります。それは、Rise-Rise (RR)、Rise-Fall (RF)、Fall-Rise (FR)、Fall-Fall (FF) のリレーションシップです。
- RGMII の仕様では、データ [3:0] の LSB が立ち上がりエッジで最初に送出され、データ [7:4] の MSB が立ち下がりエッジで続いて送出されます。
- RGMII インターフェースを持つ TSE のデザインでは、まず立ち上がりエッジでデータをキャプチャーし、次に立ち下がりエッジでデータをキャプチャーします。これは、クロックを -90 度ではなく、+90 度シフトさせる必要があることを意味します。
- 望ましいセットアップ・ローンチとラッチのリレーションシップ (赤色の矢印): RR と FF
- 望ましいホールドローンチとラッチのリレーションシップ (青色の矢印): FR と RF
- RGMIIインターフェイスを制約シノプシスの設計制約(SDC)は 設計とアプリケーションに基づいていますしかし RGMIIインターフェイスに必要な主なSDCがいくつかあります
TX
- create_clock
- 外部 PHY への送信前に、インテル® FPGA 内でデータをラッチするクロック
- create_generated_clock:
- 外部 PHY でデータをラッチする、フェーズが 90 度シフトしたクロック
- set_false_path:
- これは、タイミング解析では解析されない不要なリレーションシップです。このデザイン例では、セットアップに不要なリレーションシップは RF と FR、ホールドに不要なリレーションシップは RR と FF です。
set_false_path -fall_from [data_clock] -rise_to [output_clock] -setup
set_false_path -rise_from [data_clock] -fall_to [output_clock] -setup
set_false_path -rise_from [data_clock] -rise_to [output_clock] -hold
set_false_path -fall_from [data_clock] -fall_to [output_clock] -hold
- set_output_delay
set_output_delay -clock output_clock\
-max [expr $data_delay_max + $tsu - $clk_delay_min] \
[get_ports data_out] \
-add_delay
set_output_delay -clock output_clock\
-max [expr $data_delay_max + $tsu - $clk_delay_min] \
[get_ports data_out] \
-clock_fall \
-add_delay
set_output_delay -clock output_clock \
-min [expr $data_delay_min - $th - $clk_delay_max] \
[get_ports data_out ] \
-add_delay
set_output_delay -clock output_clock \
-min [expr $data_delay_min - $th - $clk_delay_max] \
[get_ports data_out ] \
-clock_fall \
-add_delay
TSE_RGMII RX
- create_clock:
- インテル® FPGA に送信する前に外部 PHY 内のデータをラッチするバーチャルクロック
- create _clock:
- インテル® FPGA 内のデータをラッチする、フェーズが 90 度シフトしたクロック。
- set_false_path:
- これは、タイミング解析では解析されない不要なリレーションシップです。このデザイン例では、セットアップに不要なリレーションシップは RF と FR、ホールドに不要なリレーションシップは RR と FF です。
set_false_path -fall_from [data_clock] -rise_to [output_clock] -setup
set_false_path -rise_from [data_clock] -fall_to [output_clock] -setup
set_false_path -rise_from [data_clock] -rise_to [output_clock] -hold
set_false_path -fall_from [data_clock] -fall_to [output_clock] -hold
確認方法
ソースのシンクロナス制約が適切かどうかを確認するために チェックすべきレポートがいくつかあります
- クロックレポート
- 3 つのクロック周波数 (125MHz、25MHz、2.5MHz) とそのフェーズのチェック
- コア TX クロック (インテル® FPGA): 125MHz、25MHz、2.5MHz
- RGMII_TX_Clock (外部 PHY): 125MHz +90º、25MHz +90º、2.5MHz +90º
- RGMII_RX_Clock (インテル® FPGA): 125MHz +90º、25MHz +90º、2.5MHz +90º
- RGMII_RX_Virtual_Clock (外部 PHY) : 125MHz、25MHz、2.5MHz
- クロック・トランスファー・レポート
- クロック・トランスファー向けの RGMII インターフェイスのセットアップおよびホールドのローンチラッチ・リレーションシップをすべてチェックします
- 望ましいセットアップ: RR と FF
- 望ましいホールド: FR と RF
- すべての I/O タイミングレポート
- 望ましいセットアップとホールドのローンチラッチ・リレーションシップに応じて、失敗するパスとローンチラッチ・リレーションシップが存在するかどうかをチェックします
- セットアップとホールド用レジスターへの入力
- セットアップとホールド用出力へのレジスター
- 望ましいセットアップとホールドのローンチラッチ・リレーションシップに応じて、失敗するパスとローンチラッチ・リレーションシップが存在するかどうかをチェックします
注:
- TSE_10_1_RGMII_SDC は、メガファンクションにより生成される SDC ファイルです。これは RGMII SDC 制約を対象とするものではありません。RGMII SDC 制約は、RGMII SDC に含まれています。
- TSE_10_1_RGMII_SDC.sdc ファイルの修正:
- コメント: derived_pll_clock (246 行目) により、RGMII.sdc 内の pll に対する create_gererated_clock コマンドの使用が妨げられます
- 59 行目および 60 行目の FF_TX_CLK および FF_RX_CLK の名前をデザインに合わせて変更します
- タイミング解析の際に、無視できる警告があります。詳細は、TSE_RGMII_With_SDC.qar にある readme.txt をご覧ください。
- この例で使用したファイルのダウンロード: TSE_RGMII_With_SDC.qar
このデザインの使用には、インテル® デザイン例ライセンス契約の条件が適用されます。