นาฬิกาต่อพ่วง HPS ต่อไปนี้สามารถกําหนดเส้นทางไปยังลอจิก FPGA:
- emac0_md_clk
- emac0_gtx_clk
- emac1_md_clk
- emac1_gtx_clk
- qspi_sclk_out
- spim0_sclk_out
- spim1_sclk_out
- i2c0_clk
- i2c1_clk
- i2c2_clk
- i2c3_clk
เนื่องจากปัญหาในซอฟต์แวร์ Quartus® II เวอร์ชัน 13.0 ขึ้นไป ความพอดีของ Quartus® อาจสร้างข้อความแสดงข้อผิดพลาดหากนาฬิกาเหล่านี้เชื่อมต่อโดยตรงกับพิน FPGA ภายนอก ต่อไปนี้เป็นตัวอย่างของสัญญาณ spim1_sclk_out ที่เชื่อมต่อกับพินภายนอก:
ข้อผิดพลาด (14566): ไม่สามารถวางส่วนประกอบต่อพ่วง 1 รายการไม่ได้ เนื่องจากความขัดแย้งกับข้อจํากัดที่มีอยู่ (1 ไดรเวอร์นาฬิกาที่โปรโมทอัตโนมัติ)
ข้อผิดพลาด (175020): ข้อจํากัดที่ผิดกฎหมายของไดรเวอร์นาฬิกาที่โปรโมทอัตโนมัติซึ่งเป็นส่วนหนึ่งของ Arria V/Cyclone V Hard Processor System ghrd_hps_0 ไปยังภูมิภาค (92, 67) เป็น (183, 137): ไม่มีตําแหน่งที่ถูกต้องในภูมิภาค
ข้อมูล (14596): ข้อมูลเกี่ยวกับส่วนประกอบที่ล้มเหลว:
ข้อมูล (175028): ชื่อไดรเวอร์นาฬิกาที่โปรโมทอัตโนมัติ: ghrd:soc_inst|ghrd_hps_0:hps_0|ghrd_hps_0_fpga_interfaces:fpga_interfaces|spim1_sclk_out[0]~CLKENA
ข้อมูลเพิ่มเติมเกี่ยวกับนาฬิกาเหล่านี้สามารถพบได้ในหัวข้อ "Peripheral FPGA Clocks" ของคู่มืออุปกรณ์ Cyclone® V หรือ Arria® V, โวลุ่ม 3: คู่มืออ้างอิงทางเทคนิคของระบบโปรเซสเซอร์แบบฮาร์ด (http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf, หน้า 27-12)
เพื่อหลีกเลี่ยงข้อความแสดงข้อผิดพลาดเหล่านี้ จะต้องกําหนดเส้นทางสัญญาณนาฬิกาผ่าน LUT ก่อน สิ่งนี้สามารถทําได้โดยการสร้างอินสแตนซ์ lcell_comb ความเหมาะสมสําหรับตระกูลอุปกรณ์ของคุณ ต่อไปนี้แสดงตัวอย่างของการสร้างอินสแตนซ์ Verilog lcell_comb สําหรับ Arria® V SoC spim1_sclk_out นาฬิกา:
arriav_lcell_comb wirelut ( .dataa(spim1_sclk_from_hps), .combout (spim1_sclk_to_pin) );
defparam wirelut.lut_mask = 64\'hAAAAAAAAAAAAAAAA;
wirelut.dont_touch defparam = "on";
ในตัวอย่างข้างต้น สัญญาณ spim1_sclk_from_hps จะเชื่อมต่อกับพอร์ตเอาต์พุต spim1_sclk_out จากอินสแตนซ์ HPS สัญญาณ spim1_sclk_to_pin สามารถเชื่อมต่อกับพอร์ตเอาต์พุตระดับบนสุดและกําหนดให้กับพิน FPGA ได้
การใช้ lcell_comb primitive จะลดทรัพยากร การใช้ฟังก์ชันการรวมกันของ Boolean ที่อนุมานเล็กน้อยจะช่วยหลีกเลี่ยงข้อผิดพลาดนี้ได้ การใช้ฟังก์ชัน Boolean จะช่วยหลีกเลี่ยงการสร้างอินสแตนซ์สําหรับสารตัวแสบ แต่อาจส่งผลให้ใช้ทรัพยากรได้สูงขึ้นเล็กน้อย
ต่อไปนี้เป็นตัวอย่างรหัส Verilog ที่แสดง Boolean ที่อนุมานที่เลี่ยงข้อผิดพลาดโดย ANDing นาฬิกาที่มีสัญญาณการรีเซ็ตต่ําที่ทํางานอยู่ (ทําให้เกิดอินสแตนซ์ LUT ที่อนุมาน):
กําหนด spim1_sclk_to_pin = spim1_sclk_from_hps & ตั้งค่าใหม่
ปัญหานี้ได้รับการแก้ไขโดยเริ่มตั้งแต่เวอร์ชัน 15.1 ของซอฟต์แวร์ Quartus® II