Quartus Prime Software v17.0ir3 Stratix 10 EMIF Pin Guidelines are preliminary and subject to change Introduction Intel’s EMIF IP has many restrictions when it comes to pin placement This slide deck covers the following topics: – I/O bank structure – Adjacent/Contiguous banks – Resource sharing – Pin constraints – EMIF placement For more information regarding EMIF pin placement, refer to the Planning Pin and FPGA Resources section in the External Memory Interface Handbook *EMIF = External Memory Interface 2 Software Requirements Quartus Prime Software v17.0ir3 3 Stratix 10 devices can up to 3 I/O columns – A column can have up to 12 banks/tiles Each bank/tile is made up of 4 lanes – Each lane contains 12 I/Os Transceiver Block Each column is made up of banks/tiles Column 3 Column 5 Bank 2N Bank 3N Bank 5N Bank 2M Bank 3M Bank 5M Bank 2L Bank 3L Bank 2K Bank 3K Bank 2J Bank 3J Bank 2I Bank 3I Bank 2H Bank 3H Bank 2G Bank 3G Bank 2F Bank 3F Bank 2E Bank 3E Bank 2D Bank 3D Bank 2C Bank 3C Bank 5C Bank 3B Bank 5B Bank 3A Bank 5A I/O Lane 3 I/O Lane 2 Bank 5L Bank 5K Bank 5J Bank 5I I/O Center I/O Lane 1 I/O Lane 0 Bank Transceiver Block Stratix 10 Architecture Column 2 Bank 5D 4 General Pin Guidelines Pins for every EMIF must reside within a single I/O column For interfaces that span multiple banks (multi-bank interfaces): – Banks need to be adjacent to one another – Address/Command bank must be located in the center to minimize latency Unused pins can be used as GPIO All Address/Command and associated pins must reside within a single bank Address/Command and Data pins can share a bank – Address/Command and Data pins cannot share an I/O lane – Only an unused I/O lane in the Address/Command bank can be used to implement a Data group 5 Adjacent/Contiguous Banks The following slides cover how to determine if banks are considered adjacent/contiguous To determine if banks are adjacent/contiguous: – Refer to the Modular I/O Banks Location and Pin Counts in Stratix 10 Devices section in the Stratix 10 General Purpose I/O User Guide: Banks need to be in the same I/O column to be considered adjacent/contiguous 6 Adjacent/Contiguous Banks Example: Stratix 10 GX 650 Device Bank Refer to Figure 1 and Table 4 in the Stratix 10 General Purpose I/O User Guide 2N 3D 2M 3C 2L 3B 6A 2K SDM 3A GX 400 Name HF35 HF35 NF43 3V I/O 7A ‒ ‒ 8 6A 8 8 8 3D 48 48 48 3C 48 48 48 3B 48 48 48 3A 48 48 48 2N 48 48 48 2M 48 48 48 2L 48 48 48 2K 48 48 48 392 392 400 SDM Shared LVDS I/O 3V I/O SDM Shared LVDS I/O LVDS I/O LVDS I/O Banks are adjacent/contiguous Note: Banks need to be in the same column to be considered adjacent/contiguous (i.e. Banks containing a 2 are not adjacent/contiguous to Banks containing a 3) GX 650 Type LVDS I/O 7A Device Package Total Indicates this bank is not bonded out for specific package (i.e. Bank 7A does not exist for HF35 package) 7 Non-Adjacent/Non-Contiguous Banks Example: Stratix 10 TX 2500 Device Bank Refer to Figure 9 and Table 13 in the Stratix 10 General Purpose I/O User Guide 2N 2M 3L Banks are adjacent/contiguous 3K Banks are not adjacent/contiguous TX 2500 Name SF48 UF50 YF55 SF48 UF50 YF55 3V I/O 6C 8 ‒ ‒ 8 ‒ ‒ 6A 8 8 8 8 8 8 3L 48 ‒ ‒ 48 ‒ ‒ LVDS I/O 2L 3D 2C 3C 2B 3B Because Banks 2K and 2C are not bonded out for package SF28, Banks 2L and 2B are not considered adjacent/contiguous TX 2800 Type 6 C 2K Device Package SDM Shared LVDS I/O LVDS I/O 3K 48 ‒ ‒ 48 ‒ ‒ 3D 48 ‒ ‒ 48 ‒ ‒ 3C 48 ‒ 48 48 ‒ 48 3B 48 48 48 48 48 48 3A 48 48 48 48 48 48 2N 48 48 48 48 48 48 2M 48 48 48 48 48 48 2L 48 48 48 48 48 48 2K ‒ 48 ‒ ‒ 48 ‒ 2C ‒ 48 ‒ ‒ 48 ‒ 2B 48 48 ‒ 48 48 ‒ 2A 48 48 ‒ 48 48 ‒ 544 440 296 544 440 296 6A 3V I/O SDM Shared LVDS I/O 2A SDM 3A LVDS I/O Total 8 I/O Bank Sharing The following slides cover requirements for sharing I/O banks Memory interfaces can share a bank if they share the same: – Protocol – Clock (rate, frequency, PLL reference clock) – Voltage (VCCIO, VREF) Memory interfaces cannot share: – Any given lane in a bank – Only one clock tree per lane – Address/Command bank – Interfaces cannot share the same controller or sequencer Unused pins can be used as GPIO 9 Bank N+1 Controller 1 I/O Bank Sharing Example: 2 DDR3 x16 Interfaces Data Unused (free for GPIO) Addr/Cmd 1 Addr/Cmd 1 Address/Command Addr/Cmd 1 Data 1 Data 1 Data path Bank N Unused (free for GPIO) Data 2 Bank N-1 Controller 2 Data path Data 2 Addr/Cmd 2 Addr/Cmd 2 Address/Command Addr/Cmd 2 10 Resource Sharing The following slides go into details regarding the sharing of resources across memory interfaces Resource Implication Hard Nios II Must sample all cal_done signals in a column to determine when calibration completes PLL reference clock Interfaces need to share the same protocol, rate, and frequency Core clock network Interfaces need to share PLL reference clock (same restrictions as above) I/O bank Interfaces must share the same protocol, rate, and frequency OCT and RZQ Should not be shared across interfaces (each interface has a dedicated pin) Certain resources are forced to be shared – IOSSM & Hard Nios II for all interfaces in a column PLL/DLL do not need to be shared – Each bank has one 11 Nios II/IOAUX Sharing Interfaces placed in the same column will share the same Hard Nios II and IOAUX Hard Nios II calibrates each interface sequentially – Must sample all cal_done signals in a column to determine when calibration completes RTL simulation behaves as if every interface has its own Hard Nios II – Refer to the Simulation Guidelines section for more details 12 PLL Reference Clock Sharing Interfaces must share the same protocol, rate, and frequency Interfaces should be placed in the same column and in adjacent/contiguous banks – If interfaces are not placed in adjacent/contiguous banks: – Memory interfaces with a different PLL reference clock cannot be placed in-between the interfaces sharing the PLL reference clock – Refer to slide 16 for more information PLL reference clock frequencies depends on selected memory frequency – Arria 10 EMIF IP shows valid PLL reference clock frequencies – It is recommended to use the default value – Selecting a slower frequency will impact performance 13 Core Clock Network Sharing Synchronizes clocks in core domain between memory interfaces – Fitter uses one core clock domain to synchronously access all interfaces in a column Interfaces must share PLL reference clock, protocol, rate, and frequency Interfaces in different columns cannot use this feature – Interfaces should be placed in adjacent/contiguous banks User can share core clock networks through Master and Slave setting during IP generation – Connect core_clks_master_out from the Master to all the core_clks_slave_in signals from the Slaves 14 Recommended Clock Sharing Example EMIF 1 and EMIF 2 can share PLL reference clock and core clock network when: – In adjacent/contiguous banks – In the same column – Share the same protocol, rate, and frequency Not in the same column Do not share the same protocol/rate/frequency EMIF 1 EMIF 2 15 Discouraged Clock Sharing Example Not recommended when interfaces are not adjacent or span across the chip – Cross-chip variation, clock tree span If clock sharing is still implemented: – No memory interfaces with a different PLL reference clock can be placed in-between EMIF 1 and EMIF 2 Cross-chip variation and/or clock tree span Cross-chip variation and/or clock tree span Cross-chip variation and/or clock tree span EMIF 1 EMIF 2 Memory interfaces placed here must run at the same PLL reference clock frequency as EMIF 1 and EMIF 2 16 Pin Constraints The following slides cover important information regarding pin placement DDR3 DDR4 QDRIV RLDRAM3 Data Strobe All signals (DQS, DQ, DM) belonging to the same DQS group need to be constrained to the same I/O lane. All signals (DQS, DQ, DM, DBI) belonging to the same DQS group need to be constrained to the same I/O lane. All pins in a DQ group (DKA/DKB, QKA/QKB, DQA/DQB) need to be placed in the same I/O bank All pins in a DQ group (DK/QK, DQ, DM) need to be placed in the same I/O bank Data Related DQ pins need to be placed in the same I/O lane. Data groups and their respective clocks should be placed in the same bank to improve I/O timing. DM pins must be paired off with a DQ pin for proper functionality1 Related DQ pins need to be placed in the same I/O lane. Data groups and their respective clocks should be placed in the same bank to improve I/O timing. DM/DBI pins must be paired off with a DQ pin for proper functionality1 Related DQ pins need to be placed in the same I/O lane (read signals should be grouped separately from write signals). Data groups and their respective clocks should be placed in the same bank to improve I/O timing Related DQ pins need to be placed in the same I/O lane (read signals should be grouped separately from write signals). Data groups and their respective clocks should be placed in the same bank to improve I/O timing Must be placed in predefined locations within an I/O bank See slides 21-22 for more details Must be placed in predefined locations within an I/O bank Must be placed in predefined locations within an I/O bank Must be placed in predefined locations within an I/O bank Address/Command 1 17 Address/Command Pin Placement Pin indices for Address/Command pins can be found in the Scheme Table Example (right): – Address/Command pins for x72 DDR4 single-rank UDIMM interface Pin # 47-36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Port ‒ mem_bg[0] mem_ba[1] mem_ba[0] mem_a[17] mem_a[16] mem_a[15] mem_a[14] mem_a[13] mem_a[12] oct_rzqin pll_ref_clk (negative leg) pll_ref_clk (positive leg) mem_a[11] mem_a[10] mem_a[9] mem_a[8] mem_a[7] mem_a[6] mem_a[5] mem_a[4] mem_a[3] mem_a[2] mem_a[1] mem_a[0] mem_par[0] ‒ mem_ck_n[0] mem_ck[0] ‒ mem_cke[0] ‒ mem_odt[0] mem_act_n[0] mem_cs_n[0] mem_reset_n[0] mem_bg[1] 18 Address/Command Pin Placement Example: CK0 Locate the physical location for the CK0 pin – Pin 8 according to Scheme Table Locate I/O bank desired for Address/Command and corresponding pin index – Refer to Pin Table for specific device – Assuming 1SG250 device, NF43 package, and bank 2M for Address/Command: Pin K31 CK0 can be assigned to a specific pin or bank in the QSF file (located in project directory) – set_location_assignment PIN_K31 –to CK0 or set_location_assignment IOBANK_2M –to CK0 Bank Number Index within I/O Bank NF43 DQS for x4 DQS for x8/x9 DQS for x16/x18 DQS for x32/x36 2M 9 L30 DQSn14 DQ7 DQ3 DQ1 2M 8 K31 DQS14 DQ7 DQ3 DQ1 2M 7 M31 DQ14 DQ7 DQ3 DQ1 2M 6 M30 DQ14 DQ7 DQ3 DQ1 I/O bank Pin index (0 – 47) Pin name 19 Pin Placement PLL reference clock must be constrained to pins 24 and 25 in the Address/Command bank RZQ must be constrained to pin 26 in the Address/Command bank To constrain data groups and corresponding pins to appropriate lanes/banks: – Constraining one DQS/DK/QK pin to a lane allows Fitter to place all DQ signals in respective DQS/DK/QK group Clock pins (CK0) must be constrained to pins 8 and 9 in the Address/Command bank Constraining the CK0 pin, one DQS/DK/QK pin per group, and the PLL reference clock pin will effectively lock the entire interface – Fitter can rotate pins within a lane based on user pin assignments – This method is recommended for constraining pins 20 Valid DM Pairing Example F25 F26 C26 The following slides explain how to appropriately pair the DM pin with a DQ pin C27 E26 DM pins must be paired with a DQ pin for proper functionality D26 – Need to correspond to same LVDS pair (p and n) in the Pin Table Bank Dedicated Tx/Rx Assuming 1SG250 device, NF43 package, and bank 2M for Address/Command Number 2M 2M 2M 2M 2M 2M 2M 2M 2M 2M 2M 2M Index within I/O Bank 47 46 45 44 43 42 41 40 39 38 37 36 Channel LVDS2M_1n LVDS2M_1p LVDS2M_2n LVDS2M_2p LVDS2M_3n LVDS2M_3p LVDS2M_4n LVDS2M_4p LVDS2M_5n LVDS2M_5p LVDS2M_6n LVDS2M_6p B25 NF43 F25 F26 C26 C27 E26 D26 B25 B24 C25 D25 A24 A25 B24 C25 D25 A24 A25 DQ0 DQ1 DQ2 DQ3 DQSp DQSn DQ4 DQ5 DQ6 unused DM0 DQ7 x8 UDIMM I/O lane F25 F26 C26 C27 E26 D26 B25 B24 C25 D25 A24 A25 DQ0 DQ1 DM0 DQ2 DQSp DQSn unused DQ3 DQ4 DQ5 DQ6 DQ7 x8 UDIMM I/O lane 21 Invalid DM Pairing Example F25 F26 C26 In these cases, the DM pin is not paired with a DQ pin because they are not part of the same LVDS pair C27 E26 – Pay attention to the Dedicated Tx/Rx Channel column in the pin tables D26 B25 Bank Number 2M 2M 2M 2M 2M 2M 2M 2M 2M 2M 2M 2M Dedicated Tx/Rx Index within I/O Bank Channel 47 LVDS2M_1n 46 LVDS2M_1p 45 LVDS2M_2n 44 LVDS2M_2p 43 LVDS2M_3n 42 LVDS2M_3p 41 LVDS2M_4n 40 LVDS2M_4p 39 LVDS2M_5n 38 LVDS2M_5p 37 LVDS2M_6n 36 LVDS2M_6p NF43 F25 F26 C26 C27 E26 D26 B25 B24 C25 D25 A24 A25 B24 C25 D25 A24 A25 DQ0 DQ1 DQ2 DQ3 DQSp DQSn DQ4 DQ5 DQ6 DQ7 DM0 unused x8 UDIMM I/O lane F25 F26 C26 C27 E26 D26 B25 B24 C25 D25 A24 A25 DQ0 DQ1 DM0 unused DQSp DQSn DQ2 DQ3 DQ4 DQ5 DQ6 DQ7 x8 UDIMM I/O lane 22 Pin Assignments Example: DDR3 x72 Interface DDR3/DDR4 x72 w/ Hard Controller Data – Requires 3 banks: – 3 lanes for Addr/Cmd pins Data Bank 2N Data – 9 lanes for Data pins Data Constraining pins – PLL reference clock to pins 24 and 25 in Bank 2M Bank 2M – RZQ to pin 26 in Bank 2M – DQS groups: – DQS groups 5-8 to Bank 2L Addr/Cmd Addr/Cmd Addr/Cmd Data – DQS group 0 to lane 3 in Bank 2M – DQS groups 1-4 to Bank 2N Controller Data – CK0 to pin 8 in Bank 2M Data Bank 2L Data Data Assuming 1SG250 device and NF43 package 23 Step 1: Determine Bank Requirements and Device The following slides explain the steps necessary for correct external memory interface placement Calculate the number of Address/Command and Data pins needed Determine the number of banks required – # 𝐼/𝑂 𝐵𝑎𝑛𝑘𝑠 = # 𝑜𝑓 𝐼/𝑂𝑠 𝑓𝑜𝑟 𝐴𝑑𝑑𝑟𝑒𝑠𝑠/𝐶𝑜𝑚𝑚𝑎𝑛𝑑 + # 𝑜𝑓 𝐼/𝑂𝑠 𝑓𝑜𝑟 𝐷𝑎𝑡𝑎 48 Refer to table below for some examples: Refer to EMIF Device Selector for device selection based on EMIF requirements Interface Width/Memory Configuration # of I/Os # of I/O banks (non-sharing) # of I/O bank (sharing) DDR3 x8 w/o ECC 42 1 1 DDR3 x32 w/o ECC 75 2 1.75 DDR3 x32 w/ ECC (total width x48) 86 2 2 DDR3 x72 UDIMM single rank 130 3 2.75 DDR3 x72 UDIMM dual rank 135 3 3 DDR3 x72 UDIMM quad rank 145 4 3.25 DDR4 x16 w/o ECC 55 2 1.25 DDR4 x32 w/o ECC 76 2 1.75 DDR4 x72 UDIMM single rank 132 3 2.75 DDR4 x72 UDIMM dual rank 139 3 3 DDR4 x72 UDIMM quad rank 147 4 3.25 24 Step 2: Bank Selection After calculating the number of banks required, you must select adjacent I/O banks to place a given memory interface – Refer to slides 6-8 Bank consists of number and letter – Number represents column in package – Letter represents 48 pin I/O bank Example: – If an interface requires 2 I/O banks – Banks 2M and 2N are possible options assuming 1SG250 device, NF43 package Bank Number 2N 2N 2N 2N 2N 2N 2J 2J 2J 2J 2J 2J Index within I/O Bank 5 4 3 2 1 0 47 46 45 44 43 42 25 Step 3: Bank Placement DDR3/DDR4 x72 interface (3 banks) Data Data Bank 2J – Address/Command pins required 3 or 4 I/O lanes depending on the memory protocol and topology All Address/Command pins and associated pins must reside within a single bank Data Data Bank 2K Address/Command and Data pins can share a bank – Address/Command and Data pins cannot share a lane Data Controller Select middle bank for Address/Command pins Addr/Cmd Addr/Cmd Addr/Cmd Data Data Bank 2L Data Data 26 Step 4: EMIF I/O Placement BluePrint is available for EMIF placement – Requires synthesized design in Quartus Prime Pro – Shows all legal positions for EMIF placement – Drag-and-drop feature Can be accessed from Tools > BluePrint Platform Designer For more details on how to use BluePrint refer to this video 27 Alternative Methods for EMIF Placement Manually constrain all interface signals to pin locations – Plan interface placement in columns (I/O bank selection – Use pin tables to find legal positions for each interface pin – Assign pin locations in QSF – Fast periphery placement – Can be lengthy process (especially with multiple IPs) Manually constrain some interface signals and let Fitter handle the rest – Requires constraining the CK0 pin, one DQS/DK/QK pin per group, and the PLL reference clock pin for each memory interface – Fitter can rotate pins within a lane based on user pin assignments – This method is recommended for constraining pins 28
© Copyright 2026 Paperzz