Introduction
일반적으로 MIG IP를 사용하여 DDR4 SDRAM memory와의 Interface를 구현합니다.
하지만 MIG IP의 DDR4 SDRAM parts list에서 내가 선택한 DDR4 SDRAM part가 보이지 않는 경우가 있습니다.
내가 선택한 DDR4 SDRAM part가 MIG IP의 DDR4 SDRAM part list에 보이게 할 수 있으며, 이 경우 사용하는 FPGA에 따라 두가지 방법이 있습니다.
1.
Spartan-7, Artix-7, Kintex-7, Virtex-7의 경우는 아래의 BLOG를 보아 주세요.
How to create Xilinx MIG IP for Custom Part
How to create Xilinx MIG IP for Custom Part
Introduction Xilinx 7-Series device를 사용할 경우, MIG IP를 생성할 때 선택할 수 있는 DDR2/DDR3 SDRAM Part는 모두 Micron DDR2/DDR3 SDRAM device입니다. Samsung 혹은 SK Hynix의 DDR2/DDR3 SDRAM device..
740280.tistory.com
2.
Kintex UltraScale, Virtex UltraScale / Artix UltraScale+, Kintex UltraScale+, Virtex UltraScale+의 경우는 MIG IP가 Custom DDR4 SDRAM part를 인식할 수 있도록 *.csv 파일을 만들어서 사용하여야 합니다.
이번 BLOG는 어디에서 Example *.csv 파일을 download할 수 있는지 그리고 *.csv file에 있는 각 parameter에 대한 value를 어떻게 확인하고 설정하는지에 대하여 알아보겠습니다.
Test를 위한 PC 사용환경은 다음과 같습니다.
- OS : Windows 10 pro ( version : 20H2 )
- Vivado version : 2020.2.2
CSV data file for creating Custom Parts
앞서 설명드렸듯이 MIG IP가 Custom DDR4 SDRAM part를 인식할 수 있도록 *.csv 파일을 만들어서 사용하여야 합니다.
Xilinx는 각 Memory 별로 Sample *.csv file을 제공하고 있습니다.
아래의 링크를 클릭하면 관련 자료 및 *.csv file 작성 Guide를 확인할 수 있습니다.
UltraScale/UltraScale+ Memory IP - Sample CSV data file for creating Custom Parts
63462 - UltraScale/UltraScale+ Memory IP - Sample CSV data file for creating Custom Parts
After the CSV file has been imported, the custom memory part must be selected from the drop-down list in the MIG GUI to be used. The user is responsible for ensuring that all memory parameter values (i.e. CL, CWL, Min/Max Period) and units (i.e. ps, ns etc
support.xilinx.com
위 링크를 살펴보면 *.csv file에 여러가지 Parameter에 대한 value를 일일히 기입하여야 됨을 알 수 있습니다. 각 Parameter에 대한 value는 Target DDR4 SDRAM memory의 Datasheet에서 찾아야 합니다.
MT40A4G8BAF
*.csv 파일의 각 parameter에 정확한 값을 확인하기 위해 MT40A4G8BAF-062E의 Datasheet를 살펴보아야 합니다.
Target Device : MT40A4G8BAF-062E (32Gb / TwinDie)
(아래의 첨부파일은 MT40A4G8BAF-062E의 Datasheet입니다.)
1.
MT40A4G8BAF-062E에서 MT40A4G8은 Device Name입니다.
MT40A4G8BAF-062E의 BAF는 Package Code로 78-Ball FBGA를 의미합니다.
(Datasheet에서 page 16의 Figure 7을 참고하세요.)
2.
아래와 같이 MT40A4G8BAF-062E의 062E는 Key Timing Parameter로 Data Rate이 3200 MT/s를 의미합니다.
(Datasheet에서 page 1의 Table 1을 참고하세요.)
3.
아래는 MT40A4G8BAF-062E의 각 parameter에 대한 address value입니다.
(Datasheet에서 page 2의 Table 2을 참고하세요.)
위 Table 2를 살펴보면 다음과 같은 *.csv file의 몇몇 parameter value를 확인할 수 있습니다.
Bank Group address이 BG[1:0]이므로 Bank Group : 2 입니다.
Bank address in bank group이 BA[1:0]이므로 Bank width : 2 입니다.
Row address가 A[16:0]이므로 Row width : 17 입니다.
Column address가 A[9:0]이므로 Column width : 10 입니다.
Max address range는 A[16:0]이므로 Address width : 17 입니다.
4.
MT40A4G8은 TwinDie로 MT40A2G8이 두 개가 있는 Device이기 때문에 TwinDie라고 표현합니다.
따라서 여러 기본적은 Spec은 MT40A2G8의 Datasheet를 기준으로 합니다.
(Datasheet에서 page 5의 Figure 2을 참고하세요. 여기서 2 Ranks인 이유를 쉽게 이해할 수 있습니다.)
위 Figure 2를 통하여 다음과 같은 *.csv file의 몇몇 parameter value를 확인할 수 있습니다.
CS0#과 CS1#이 있으므로 CS Width : 2 입니다.
CKE0과 CKE1이 있으므로 CKE width : 2 입니다.
ODT0과 ODT1이 있으므로 ODT width : 2 입니다.
CK, CK# (differential input)이 있으므로 CK witdth : 1 입니다.
DQ[7:0]이므로 Memory device width : 8 입니다.
DQ[7:0]이므로 Memory component width : 8 입니다.
DQS, DQS# (differential IO, strobe)와 DQ[7:0]이 있으므로 Data bits per strobe : 8 입니다.
128 Meg x 8 x 16 bank x 2 Ranks이므로 Memory Density : 32Gb 입니다.
128 Meg x 8 x 16 bank x 2 Ranks이므로 Component Density : 32Gb 입니다.
여기서 Memory device width와 Memory component width는 memory 내부 구조에 따라 달라질 수 있습니다.
(일부 component와 SODIMM, RDIMM, UDIMM의 경우 Memory device width와 Memory component width는 구조에 따라 서로 다른 값을 가집니다.)
동일하게 Memory density와 Component density는 내부 구조에 따라 달라질 수 있습니다.
(SODIMM, RDIMM, UDIMM의 경우 Memory Density와 Component density는 memory 구조에 따라 서로 다른 값을 가집니다.)
5.
MT40A4G8은 DQ[7:0]을 가지며 DQ의 Data width가 8임을 알 수 있습니다. 하지만 다음과 같이 Data width를 8,16, 32... 라고 기입하는 경우가 있습니다.
Data width : 8, 16
MT40A4G8을 두 개를 하나의 MIG IP로 연결하여 사용하는 경우에는 Data width가 16이 됩니다. 위와 같이 Data width를 8, 16으로 기입하면 MIG IP에서 8과 16중에서 선택할 수 있게 됩니다.
MT40A2G8
1.
사용할 MT40A4G8BAF-062E는 max 3200 MT/s 입니다. 하지만 MIG IP의 max performance는 사용할 FPGA Device에 따라 다릅니다.
( MT40A4G8BAF-062E의 062E는 Key Timing Parameter로 Data Rate이 3200 MT/s를 의미합니다. )
여기서는 사용할 FPGA Device와 그에 따른 MIG IP의 max performance를 고려하여 2133 MT/s를 사용하려고 합니다.
2.
앞서 설명에서
MT40A4G8은 TwinDie로 MT40A2G8이 두 개가 있는 Device이기 때문에 TwinDIe라고 표현합니다.
따라서 여러 기본적인 Spec은 MT40A2G8의 Datasheet를 기준으로 합니다.
Specifications for base part number MT40A2G8 correlate to TwinDie manufacturing part number MT40A4G8.
라고 언급했습니다. 따라서 *.csv file의 여러가지 parameter는 MT40A2G8의 Datasheet를 참조하여야 합니다.
(아래의 링크를 클릭하면 MT40A2G8의 Datasheet를 download 받을 수 있습니다.)
MT40A2G8.pdf
3.
MT40A2G8의 Datasheet에서 page 328을 보면 Table 151: Backward Compatibility를 확인할 수 있습니다.
여기서 우리는 Key Timing Parameter인 062E (3200 MT/s)는 093 (2133 MT/s)과 호환되는 것을 확인할 수 있습니다.
따라서 Datasheet에서 각 Parameter의 Value를 찾을 때, "093" 혹은 "DDR4-2133" 기준의 Spec을 찾아야 합니다.
4.
MT40A2G8의 Datasheet에서 page 344의 Table 160을 보면 tWR는 15 ns 임을 알 수 있습니다.
그리고 tFAW는 보통 x4 DQ의 경우에 13 ns (1/2KB)로, x8 DQ의 경우에 21 ns (1KB)로, x16 경우에 30 ns (2KB)로 설정합니다. 따라서 tFAW는 21000 ps입니다.
5.
MT40A2G8의 Datasheet에서 page 333의 Table 154을 보면 tRCD, tRP, tRAS, CL (cas latency), CWL (cas write latency)를 확인할 수 있습니다.
Cas Write Latency (CWL)의 경우, 11 (1tCK preamble), 14 (2tCK preamble) 중 11을 선택합니다. 이유는 다음과 같습니다.
"In DDR4 Soft memory controller, the CWL timing parameter are always set to 1tCK write preamble mode. Also, 2T timing for the address/command bus is not supported with Ultrascale Soft DD4 MIG controller. So, we don't have any option to enable 2tCK preamble timing."
Min period는 937이지만 Max period는 1900을 넣으면 다음과 같이 Vivado의 warnning message를 보게 됩니다.
[Mig 66-120] Custom Part (C_MT40A4G8BAF-062E) with parameter: Max period having value: 1900 is invalid. The valid value for Max perid is 1600ps.
따라서 Max period는 1600이 됩니다.
6.
tRFC_dlr, tRRD_dlr, tCCD_3ds의 경우는 Datasheet에서 찾을 수 없습니다.
Xilinx에 문의하여 다음과 같은 답변을 받았습니다.
The parameters tRFC_dlr, tRRD_dlr and tCCD_3ds should be 0.
나머지 각각의 parameter들도 Datasheet에서 검색하면 확인이 가능합니다.
("093" 혹은 "DDR4-2133" 기준의 Spec을 찾아야 합니다)
7.
아래는 Datasheet의 검색을 통하여 정리한 모든 parameter의 value를 정리한 표 입니다.
( MIG IP의 memory parts list에서 찾기 쉽게 하기 위하여 Part Name에 "C_"를 넣었습니다. )
Parameter Name | Value |
Part Name | C_MT40A4G8BAF-062E |
Min period | 937 |
Max period | 1600 |
tCKE | 5000 ps |
tFAW | 21000 ps |
tFAW_dlr | 16 tck |
tMRD | 8 tck |
tRAS | 33000 ps |
tRCD | 15000 ps |
tREFI | 7800000 ps |
tRFC | 350000 ps |
tRRD_dlr | 0 |
tRP | 15000 ps |
tRRD_S | 5300 ps |
tRRD_L | 6400 ps |
tRRD_dlr | 0 |
tRTP | 7500 ps |
tWR | 15000 ps |
tWTR_S | 2500 ps |
tWTR_L | 7500 ps |
tXPR | 360 ns |
tZQCS | 128 tck |
tZQINIT | 1024 tck |
tCCD_3ds | 0 |
cas latency (CL) | 19 |
cas write latency (CWL) | 11 |
burst length | 8 |
8.
아래의 첨부 파일은 위 내용을 기입한 *.csv file 입니다.
How to enable Custom Parts Data File
1.
MIG IP에서 Memory Device Interface Speed (ps)의 Range가 750~1600으로 보이지만, *.csv file의 Min period가 937이기 때문에 937보다 작은 값을 기입할 수 없습니다.
2.
아래(animated GIF)와 같이 "Enable Custom Parts Data File"를 check한 후에, 작성한 *.csv file을 load하면 Memory Part의 List 중에 "C_MT40A4G8BAF-062E"을 확인할 수 있습니다.
도움이 되는 참고 자료
MIG IP에서 선택할 수 있는 Memory parts list에 대한 *.csv file이 있다면 당연히 Custom part를 위한 *.csv file 작성에 도움이 될 수 있습니다. 아래 BLOG의 내용을 보아 주세요. MIG IP에서 선택할 수 있는 Memory parts list에 대한 *.csv file을 확인할 수 있습니다.
(아래 BLOG에 언급된 경로 있는 "memparts.csv"와 "timingparams.csv"를 참고하면 됩니다.)
MIG IP의 Supported DDR4 Memory Parts List
MIG IP의 Supported DDR4 Memory Parts List
Introduction MIG (Memory Interface Generator) IP에서 Support하는 DDR4 Memory Parts List를 아래와 같이 GUI 상에서 확인할 수 있습니다. 이러한 DDR4 Memory Parts List를 파일로 확인할 수 있는지..
740280.tistory.com
지금까지 MIG IP가 Custom DDR4 SDRAM part를 인식할 수 있도록 *.csv 파일 작성법에 대하여 알아보았습니다.
여러분의 FPGA 설계에 조금이라도 도움이 되었으면 합니다.
오늘도 좋은 하루 되세요.
(공감, 구독, 댓글은 저에게 힘이 됩니다!)
Create Date: December 15, 2021
Posted By: Mouessee
Xilinx 본사는 한국 내에 Corporate and Sales Distributor로 MAKUS를 두고 있습니다.
Xilinx 국내 Corporate and Sales Distributor인 MAKUS는 XIlinx FPGA Device를 기술영업을 통해 판매하며 기술지원이 가능합니다.
MAKUS www.makus.co.kr
관련 BLOG
------------------------------
------------------------------
Design Guide for MIG IP (1/3)
Introduction Xilinx MIG (Memory Interface Generator) IP를 생성할 경우 User Logic과 연결되는 Interface는 두 가지가 있습니다. Standard User Interface AXI4 Interface 여기서는 Standard User Intrface..
740280.tistory.com
MIG IP에서 사용되는 3 종류의 Clock에 대하여
MIG IP에서 사용되는 3 종류의 Clock에 대하여
Introduction DDR3/4 memory interface를 위하여 사용하는 Xilinx MIG (Memory Interface Generator) IP에는 총 3 종류의 Clock이 있습니다. 지금부터 Xilinx MIG IP에 있는 3 종류의 Clock frequency와 DQ d..
740280.tistory.com
MIG IP의 Supported DDR4 Memory Parts List
MIG IP의 Supported DDR4 Memory Parts List
Introduction MIG (Memory Interface Generator) IP에서 Support하는 DDR4 Memory Parts List를 아래와 같이 GUI 상에서 확인할 수 있습니다. 이러한 DDR4 Memory Parts List를 파일로 확인할 수 있는지..
740280.tistory.com
'Xilinx > IPs' 카테고리의 다른 글
GTH의 reference Input Clock과 Data line rate 계산 방법 (2) | 2022.07.06 |
---|---|
MIG IP의 Supported DDR4 Memory Parts List (0) | 2022.06.23 |
How to create Xilinx MIG IP for Custom Part (0) | 2022.06.23 |
MIG IP에서 사용되는 3 종류의 Clock에 대하여 (0) | 2022.05.18 |
DisplayPort에 대한 Xilinx Solution (0) | 2022.05.16 |