DRAMCtrl.py (10393:0fafa62b6c01) | DRAMCtrl.py (10394:70cfafa17653) |
---|---|
1# Copyright (c) 2012-2014 ARM Limited 2# All rights reserved. 3# 4# The license below extends only to copyright in the software and shall 5# not be construed as granting a license to any other intellectual 6# property including but not limited to intellectual property relating 7# to a hardware implementation of the functionality of the software 8# licensed hereunder. You may use the software subject to the license --- 97 unchanged lines hidden (view full) --- 106 # the physical organisation of the DRAM 107 device_bus_width = Param.Unsigned("data bus width in bits for each DRAM "\ 108 "device/chip") 109 burst_length = Param.Unsigned("Burst lenght (BL) in beats") 110 device_rowbuffer_size = Param.MemorySize("Page (row buffer) size per "\ 111 "device/chip") 112 devices_per_rank = Param.Unsigned("Number of devices/chips per rank") 113 ranks_per_channel = Param.Unsigned("Number of ranks per channel") | 1# Copyright (c) 2012-2014 ARM Limited 2# All rights reserved. 3# 4# The license below extends only to copyright in the software and shall 5# not be construed as granting a license to any other intellectual 6# property including but not limited to intellectual property relating 7# to a hardware implementation of the functionality of the software 8# licensed hereunder. You may use the software subject to the license --- 97 unchanged lines hidden (view full) --- 106 # the physical organisation of the DRAM 107 device_bus_width = Param.Unsigned("data bus width in bits for each DRAM "\ 108 "device/chip") 109 burst_length = Param.Unsigned("Burst lenght (BL) in beats") 110 device_rowbuffer_size = Param.MemorySize("Page (row buffer) size per "\ 111 "device/chip") 112 devices_per_rank = Param.Unsigned("Number of devices/chips per rank") 113 ranks_per_channel = Param.Unsigned("Number of ranks per channel") |
114 115 # default to 0 bank groups per rank, indicating bank group architecture 116 # is not used 117 # update per memory class when bank group architecture is supported 118 bank_groups_per_rank = Param.Unsigned(0, "Number of bank groups per rank") |
|
114 banks_per_rank = Param.Unsigned("Number of banks per rank") 115 # only used for the address mapping as the controller by 116 # construction is a single channel and multiple controllers have 117 # to be instantiated for a multi-channel configuration 118 channels = Param.Unsigned(1, "Number of channels") 119 120 # timing behaviour and constraints - all in nanoseconds 121 --- 20 unchanged lines hidden (view full) --- 142 tRTP = Param.Latency("Read to precharge") 143 144 # time to complete a burst transfer, typically the burst length 145 # divided by two due to the DDR bus, but by making it a parameter 146 # it is easier to also evaluate SDR memories like WideIO. 147 # This parameter has to account for burst length. 148 # Read/Write requests with data size larger than one full burst are broken 149 # down into multiple requests in the controller | 119 banks_per_rank = Param.Unsigned("Number of banks per rank") 120 # only used for the address mapping as the controller by 121 # construction is a single channel and multiple controllers have 122 # to be instantiated for a multi-channel configuration 123 channels = Param.Unsigned(1, "Number of channels") 124 125 # timing behaviour and constraints - all in nanoseconds 126 --- 20 unchanged lines hidden (view full) --- 147 tRTP = Param.Latency("Read to precharge") 148 149 # time to complete a burst transfer, typically the burst length 150 # divided by two due to the DDR bus, but by making it a parameter 151 # it is easier to also evaluate SDR memories like WideIO. 152 # This parameter has to account for burst length. 153 # Read/Write requests with data size larger than one full burst are broken 154 # down into multiple requests in the controller |
155 # tBURST is equivalent to the CAS-to-CAS delay (tCCD) 156 # With bank group architectures, tBURST represents the CAS-to-CAS 157 # delay for bursts to different bank groups (tCCD_S) |
|
150 tBURST = Param.Latency("Burst duration (for DDR burst length / 2 cycles)") 151 | 158 tBURST = Param.Latency("Burst duration (for DDR burst length / 2 cycles)") 159 |
160 # CAS-to-CAS delay for bursts to the same bank group 161 # only utilized with bank group architectures; set to 0 for default case 162 # tBURST is equivalent to tCCD_S; no explicit parameter required 163 # for CAS-to-CAS delay for bursts to different bank groups 164 tCCD_L = Param.Latency("0ns", "Same bank group CAS to CAS delay") 165 |
|
152 # time taken to complete one refresh cycle (N rows in all banks) 153 tRFC = Param.Latency("Refresh cycle time") 154 155 # refresh command interval, how often a "ref" command needs 156 # to be sent. It is 7.8 us for a 64ms refresh requirement 157 tREFI = Param.Latency("Refresh command interval") 158 159 # write-to-read, same rank turnaround penalty --- 6 unchanged lines hidden (view full) --- 166 # this does not correlate to a memory timing parameter and encompasses: 167 # 1) RD-to-RD, 2) WR-to-WR, 3) RD-to-WR, and 4) WR-to-RD 168 # different rank bus delay 169 tCS = Param.Latency("Rank to rank switching time") 170 171 # minimum row activate to row activate delay time 172 tRRD = Param.Latency("ACT to ACT delay") 173 | 166 # time taken to complete one refresh cycle (N rows in all banks) 167 tRFC = Param.Latency("Refresh cycle time") 168 169 # refresh command interval, how often a "ref" command needs 170 # to be sent. It is 7.8 us for a 64ms refresh requirement 171 tREFI = Param.Latency("Refresh command interval") 172 173 # write-to-read, same rank turnaround penalty --- 6 unchanged lines hidden (view full) --- 180 # this does not correlate to a memory timing parameter and encompasses: 181 # 1) RD-to-RD, 2) WR-to-WR, 3) RD-to-WR, and 4) WR-to-RD 182 # different rank bus delay 183 tCS = Param.Latency("Rank to rank switching time") 184 185 # minimum row activate to row activate delay time 186 tRRD = Param.Latency("ACT to ACT delay") 187 |
188 # only utilized with bank group architectures; set to 0 for default case 189 tRRD_L = Param.Latency("0ns", "Same bank group ACT to ACT delay") 190 |
|
174 # time window in which a maximum number of activates are allowed 175 # to take place, set to 0 to disable 176 tXAW = Param.Latency("X activation window") 177 activation_limit = Param.Unsigned("Max number of activates in window") 178 179 # Currently rolled into other params 180 ###################################################################### 181 --- 87 unchanged lines hidden (view full) --- 269 device_rowbuffer_size = '1kB' 270 271 # 8x8 configuration, so 8 devices 272 devices_per_rank = 8 273 274 # Use a single rank 275 ranks_per_channel = 1 276 | 191 # time window in which a maximum number of activates are allowed 192 # to take place, set to 0 to disable 193 tXAW = Param.Latency("X activation window") 194 activation_limit = Param.Unsigned("Max number of activates in window") 195 196 # Currently rolled into other params 197 ###################################################################### 198 --- 87 unchanged lines hidden (view full) --- 286 device_rowbuffer_size = '1kB' 287 288 # 8x8 configuration, so 8 devices 289 devices_per_rank = 8 290 291 # Use a single rank 292 ranks_per_channel = 1 293 |
294 # DDR4 has 2 (x16) or 4 (x4 and x8) bank groups 295 # Set to 4 for x4, x8 case 296 bank_groups_per_rank = 4 297 |
|
277 # DDR4 has 16 banks (4 bank groups) in all 278 # configurations. Currently we do not capture the additional 279 # constraints incurred by the bank groups 280 banks_per_rank = 16 281 282 # 1200 MHz 283 tCK = '0.833ns' 284 285 # 8 beats across an x64 interface translates to 4 clocks @ 1200 MHz | 298 # DDR4 has 16 banks (4 bank groups) in all 299 # configurations. Currently we do not capture the additional 300 # constraints incurred by the bank groups 301 banks_per_rank = 16 302 303 # 1200 MHz 304 tCK = '0.833ns' 305 306 # 8 beats across an x64 interface translates to 4 clocks @ 1200 MHz |
307 # tBURST is equivalent to the CAS-to-CAS delay (tCCD) 308 # With bank group architectures, tBURST represents the CAS-to-CAS 309 # delay for bursts to different bank groups (tCCD_S) |
|
286 tBURST = '3.333ns' 287 | 310 tBURST = '3.333ns' 311 |
312 # @2400 data rate, tCCD_L is 6 CK 313 # CAS-to-CAS delay for bursts to the same bank group 314 # tBURST is equivalent to tCCD_S; no explicit parameter required 315 # for CAS-to-CAS delay for bursts to different bank groups 316 tCCD_L = '5ns'; 317 |
|
288 # DDR4-2400 17-17-17 289 tRCD = '14.16ns' 290 tCL = '14.16ns' 291 tRP = '14.16ns' 292 tRAS = '32ns' 293 | 318 # DDR4-2400 17-17-17 319 tRCD = '14.16ns' 320 tCL = '14.16ns' 321 tRP = '14.16ns' 322 tRAS = '32ns' 323 |
294 # Here using the average of RRD_S and RRD_L 295 tRRD = '4.1ns' | 324 # RRD_S (different bank group) for 1K page is MAX(4 CK, 3.3ns) 325 tRRD = '3.3ns' 326 327 # RRD_L (same bank group) for 1K page is MAX(4 CK, 4.9ns) 328 tRRD_L = '4.9ns'; 329 |
296 tXAW = '21ns' 297 activation_limit = 4 298 tRFC = '260ns' 299 300 tWR = '15ns' 301 302 # Here using the average of WTR_S and WTR_L 303 tWTR = '5ns' --- 268 unchanged lines hidden --- | 330 tXAW = '21ns' 331 activation_limit = 4 332 tRFC = '260ns' 333 334 tWR = '15ns' 335 336 # Here using the average of WTR_S and WTR_L 337 tWTR = '5ns' --- 268 unchanged lines hidden --- |