ปัญหาสำคัญ
ข้อมูล (tl_cfg*)
Transaction Layer Configuration Space Signals
การขับเคลื่อนด้วย Hard IP สําหรับ PCI Express มีตัวอย่างไม่ถูกต้องใน fabric FPGA
ดังนั้น การละเมิดเวลาในการตั้งค่าหรือการระงับจึงเกิดขึ้น ซอฟต์แวร์ Quartus Prime
ไม่รายงานการละเมิดเนื่องจากพาธแบบหลายรอบนี้ไม่มีข้อจํากัด หาก
การละเมิดเวลาเกิดขึ้น ระบบอาจค้าง
สําหรับอุปกรณ์ Arria 10 ให้ใช้ Quartus Prime 16.0.1 หรือใหม่กว่า เลเยอร์ธุรกรรม
อินเทอร์เฟซ Configuration Space Signals จะจัดขึ้นเป็นเวลาแปด coreclkout_hip
ตัว
รอบ Application Layer RTL ของคุณจะต้องมีโค้ดเพื่อตัวอย่างอินเทอร์เฟซนี้ใน
ตรงกลางของหน้าต่างที่มีรอบแปดรอบ ดูตัวอย่าง 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 (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