クリティカルな問題
トランザクション・レイヤー構成スペース信号データ (tl_cfg*)
PCI Express のハード IP によって駆動されるデータは、FPGA・ファブリックで正しくサンプリングされていません。
そのため、セットアップまたはホールドタイム違反が発生する可能性があります。インテル® Quartus® Prime 開発ソフトウェア
このマルチサイクル・パスには制約がないため、違反は報告されません。次の場合
タイミング違反が発生すると、システムがハングアップする可能性があります。
Arria 10 デバイスの場合、Quartus® Prime 開発ソフトウェア 16.0.1 以降を使用してください。トランザクション・レイヤー
コンフィグレーション・スペース信号インターフェイスは 8 個保持されます coreclkout_hip
サイクル。アプリケーションレイヤー RTL には、このインターフェイスをサンプルするコードを含める必要があります。
8 サイクルのウィンドウの中央に表示されます。以下の RTL の例を参照してください。
//define register//
reg [3:0] cfg_addr_reg;
reg [3:0] captured_cfg_addr_reg;
reg [31:0] captured_cfg_data_reg;
reg cfgctl_addr_change;
reg cfgctl_addr_change2;
reg cfgctl_addr_strobe;
// detect the address transition
always @(posedge pld_clk or posedge reset)
begin
if (reset == 1\'b1) begin
cfg_addr_reg <= 3\'h0;
cfgctl_addr_change <= 1\'h0;
cfgctl_addr_change2 <= 1\'h0;
cfgctl_addr_strobe <= 1\'h0;
end else begin
cfg_addr_reg[3:0] <= tl_cfg_int_add[3:0];
// detect address change
cfgctl_addr_change <= cfg_addr_reg[3:0] !=
tl_cfg_int_add[3:0];
// delay two clock and use as strobe to sample the input 32-bit
data
cfgctl_addr_change2 <= cfgctl_addr_change;
cfgctl_addr_strobe <= cfgctl_addr_change2;
end
end
// captured cfg ctl addr/data bus with the strobe
always @(posedge pld_clk)
if(cfgctl_addr_strobe)
captured_cfg_addr_reg[3:0] <= tl_cfg_int_add[3:0];
captured_cfg_data_reg[31:0] <= tl_cfg_int_ctl[31:0];
end
Arria 10 デバイスの場合、次のタイミング制約を追加する必要があります。 Synposys Design Constraints (SDC) ファイル。
set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase
{*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_add[*]}]
2
set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase
{*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_add[*]}]
2
set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase
{*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_ctl[*]}] 2
set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase
{*|altpcie_a10_hip_pipen1b:altpcie_a10_hip_pipen1b|wys|tl_cfg_ctl[*]}]
2
Stratix V および Arria V GZ デバイスの場合、次のタイミングを追加する必要があります。 制約を Synposys Design Constraints (SDC) ファイルに含まれています。
set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase
{*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_add[*]}]
2
set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase
{*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_add[*]}]
2
set_multicycle_path -setup -through [get_pins -compatibility_mode -nocase
{*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_ctl[*]}] 2
set_multicycle_path -hold -through [get_pins -compatibility_mode -nocase
{*|altpcie_a10_hip_pipen1b:stratixv_hssi_gen3_pcie_hip|tl_cfg_ctl[*]}]
2