A.1.1. Stratix IVデバイスを使用しているSDI IPコアにおける制約
次の制約はおもに、デュプレックスSDI IPコアの制約に使用されます。
クロック特性の指定
- SD-SDI (rx_sd_oversample_clk_in = 67.5MHz、tx_pclk = 27MHz、tx_serial_refclk = 67.5MHz)
create_clock -name {rx_sd_oversample_clk_in} -period 14.814 -waveform { 0.000 7.407 } [get_ports {rx_sd_oversample_clk_in}] create_clock -name {tx_pclk} -period 14.814 -waveform { 0.000 7.407 } [get_ports {tx_pclk}] create_clock -name {tx_serial_refclk} -period 14.814 -waveform { 0.000 7.407 } [get_ports {tx_serial_refclk}]
- HD-SDI、HD-SDIデュアルリンク (rx_serial_refclk = 74.25MHz、tx_pclk = 74.25MHz、tx_serial_refclk = 74.25MHz)
create_clock -name {rx_serial_refclk} -period 13.468 -waveform { 0.000 6.734 } [get_ports {rx_serial_refclk}] create_clock -name {tx_pclk} -period 13.468 -waveform { 0.000 6.734 } [get_ports {tx_pclk}] create_clock -name {tx_serial_refclk} -period 13.468 -waveform { 0.000 6.734 } [get_ports {tx_serial_refclk}]
- 3G-SDI (rx_serial_refclk = 148.5MHz、tx_pclk = 148.5MHz、tx_serial_refclk = 148.5MHz)
create_clock -name {rx_serial_refclk} -period 6.734 -waveform { 0.000 3.367 } [get_ports {rx_serial_refclk}] create_clock -name {tx_pclk} -period 6.734 -waveform { 0.000 3.367 } [get_ports {tx_pclk}] create_clock -name {tx_serial_refclk} -period 6.734 -waveform { 0.000 3.367 } [get_ports {tx_serial_refclk}]
- デュアル・スタンダード、トリプル・スタンダードSDI
create_clock -name {rx_serial_refclk} -period 6.734 -waveform { 0.000 3.367 } [get_ports {rx_serial_refclk}] create_clock -name {tx_serial_refclk} -period 6.734 -waveform { 0.000 3.367 } [get_ports {tx_serial_refclk}] create_clock -name {tx_pclk} -period 6.734 -waveform { 0.000 3.367 } [get_ports {tx_pclk}]
- ソフト・トランシーバーSDI
create_clock -name {rx_sd_refclk_135} -period 7.407 -waveform { 0.000 3.703 } [get_ports {rx_sd_refclk_135}] create_clock -name {rx_sd_refclk_337} -period 2.967 -waveform { 0.000 1.484 } [get_ports {rx_sd_refclk_337}] create_clock -name {rx_sd_refclk_337_90deg} -period 2.967 -waveform { 0.000 1.484 } [get_ports {rx_sd_refclk_337_90deg}] create_clock -name {tx_sd_refclk_270} -period 3.703 -waveform { 0.000 1.852 } [get_ports {tx_sd_refclk_270}] create_clock -name {tx_pclk} -period 37.037 -waveform { 0.000 18.519 } [get_ports {tx_pclk}]
マルチサイクル・パスの設定
一部のデバイスファミリーおよびスピードグレードでは、SDI IPコアのフォーマット・ブロックでタイミング違反が発生する場合があります。SD-SDIの場合、これらの違反はマルチサイクルであり、次の制約をデザインに適用することで修正することができます。
注: これらの制約は、SD-SDIにのみ適用されます。他のビデオ規格では、違反はシングルサイクル・パスです。
set_multicycle_path -setup -end -from [get_keepers {sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port|sdi_format:format_gen.u_format| *}] -to [get_keepers {sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port|sdi_format:format_gen.u_format| *}] 2 set_multicycle_path -hold -end -from [get_keepers {sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port|sdi_format:format_gen.u_format| *}] -to [get_keepers {sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port|sdi_format:format_gen.u_format| *}] 1
排他的または非同期クロックを指定
SDI IPコアは、低速グレードのデバイスでタイミング違反を示す場合があります。これらのパスでは高速のタイミングが必要ないため、次の制約を使用してこれらのタイミングパスを除外することができます。これには、コマンドのset_clock_groupsまたはset_false_pathを使用します。
注: 次のSDCコマンドは、デュプレックス・コアおよびStratix IVデバイスにのみ適用されます。制約入力ダイアログボックスを使用して、個々のレシーバーコアまたはトランスミッター・コア、およびその他のデバイスファミリーを制約する必要があります。
- SD-SDI
set_clock_groups -exclusive -group [get_clocks {tx_pclk}] -group [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[0].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|transmit_pcs0| clkout}] set_false_path -from [get_keepers {sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port|switchline}] -to [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[0].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|receive_pcs0| clkout}]
- HD-SDI、3G-SDI、デュアル・スタンダード、トリプル・スタンダードSDI
set_clock_groups -exclusive -group [get_clocks {rx_serial_refclk}] -group [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[0].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|receive_pcs0| clkout}] set_clock_groups -exclusive -group [get_clocks {tx_pclk}] -group [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[0].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|transmit_pcs0| clkout}] set_false_path -from [get_keepers {sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port|switchline}] -to [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[0].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|receive_pcs0| clkout}]
- HD-SDIデュアルリンク (チャネルを追加する場合)
set_clock_groups -exclusive -group [get_clocks {rx_serial_refclk}] -group [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[1].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|receive_pcs0| clkout}] set_false_path -from [get_keepers {sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port|switchline}] -to [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[0].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|receive_pcs0| clkout}] set_clock_groups -exclusive -group [get_clocks {tx_pclk}] -group [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[1].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|transmit_pcs0| clkout}] set_false_path -from [get_keepers {sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[1].u_txrx_port|switchline}] -to [get_clocks {sdi_megacore_top_inst|sdi_txrx_port_gen[1].u_txrx_port| gen_duplex_alt4gxb.u_gxb|alt4gxb_component|auto_generated|receive_pcs0| clkout}]
135MHzのクロックと337.5MHz、0度のクロックの間のセットアップとホールドの関係を定義
これらの制約は、ソフト・トランシーバーSDIにのみ適用されます。
- セットアップ - 337.5MHz、0度のクロックから135MHzのクロックまでの1.5クロック (4.43ns)
- ホールド - 337.5MHzのクロックから135MHzのクロックまでの0クロック
set_min_delayコマンドを使用して、特定のパスの絶対最小遅延を指定します。
set_min_delay -from [get_clocks {rx_sd_refclk_337}] -to [get_clocks {rx_sd_refclk_135}] 0.000
set_max_delayコマンドを使用して、特定のパスの絶対最大遅延を指定します。set_max_delay -from [get_clocks {rx_sd_refclk_337}] -to [get_clocks {rx_sd_refclk_135}] 4.430
タイミングスキューの最小化
I/Oピンから4つのサンプリング・レジスターへのパス間のタイミングスキューを最小限に抑える必要があります。
- sample_a[0]
- sample_b[0]
- sample_c[0]
- sample_d[0]
タイミングスキューを最小限に抑えるには、次の内容を行います。
- サンプリング・レジスターが相互に近接し、シリアル入力ピン付近になるように手動で配置します。
- これらの4つのレジスターは4つの異なるクロックドメインを使用するため、4つのレジスターのうち2つを1つのLABに配置し、他の2つを別のLABに配置します。
- 次に、シリアル入力の配置に関係なく、選択した2つのLABを同じ行に配置します。
- 最後に、4つのサンプリング・レジスターはI/Oのすぐ隣の行または列に配置するのではなく、I/Oバンクの隣の2番目の行または列に配置します。この位置により、コアの相互接続と比較して、I/Oバンクとその直接の行または列の間のLAB間相互接続が早くなります。
次のコードは制約例であり、 インテル® Quartus® Prime Assignment Editorを使用して設定することができます。
set_location_assignment PIN_99 -to sdi_rx set_location_assignment LC_X32_Y17_N0 -to "sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port| soft_serdes_rx:rx_soft_serdes_gen.soft_serdes_rx_inst|serdes_s2p:u_s2p| sample_a[0]" set_location_assignment LC_X33_Y17_N0 -to "sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port| soft_serdes_rx:rx_soft_serdes_gen.soft_serdes_rx_inst|serdes_s2p:u_s2p| sample_b[0]" set_location_assignment LC_X32_Y17_N1 -to "sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port| soft_serdes_rx:rx_soft_serdes_gen.soft_serdes_rx_inst|serdes_s2p:u_s2p| sample_c[0]" set_location_assignment LC_X33_Y17_N1 -to "sdi_megacore_top:sdi_megacore_top_inst| sdi_txrx_port:sdi_txrx_port_gen[0].u_txrx_port| soft_serdes_rx:rx_soft_serdes_gen.soft_serdes_rx_inst|serdes_s2p:u_s2p| sample_d[0]"