# 4_01_02_AnnexL-R25_SPD_for_DDR4_SDRAM_Release_3_Sep2015.pdf
#
# JEDEC Standard No. 21-C
# Page 4.1.2.12.3 – 1
# Annex L: Serial Presence Detect (SPD) for DDR4 SDRAM Modules
# DDR4 SPD Document Release 3
# UDIMM Revision 1.1
# RDIMM Revision 1.1
# LRDIMM Revision 1.1
# NVDIMM Revision 1.0

{
	# Byte 0: Number of Bytes Used / Number of Bytes in SPD Device /
	#         CRC Coverage
	"SPD_Bytes_Used"						: 4,
	"SPD_Bytes_Total"						: 3,
	"CRC_Coverage"							: 1,

	# Byte 1: SPD Revision
	"SPD_Revision"							: 8,

	# Byte 2: Key Byte / DRAM Device Type
	"DRAM_Device_Type"						: 8,

	# Byte 3: Key Byte / Module Type
	"Base_Module_Type"						: 4,
	"Hybrid_Media"							: 3,
	"Is_Hybrid"							: 1,

	# Byte 4: SDRAM Density and Banks
	"SDRAM_Capacity"						: 4,
	"Bank_Address_Bits"						: 2,
	"Bank_Group_Bits"						: 2,

	# Byte 5: SDRAM Addressing
	"Column_Address_Bits"						: 3,
	"Row_Address_Bits"						: 3,
	"Byte_5_reserved"						: 2,

	# Byte 6:  SDRAM Package Type
	"Signal_Loading"						: 2,
	"Byte_6_reserved"						: 2,
	"Die_Count"							: 3,
	"SDRAM_Package_Type"						: 1,

	# Byte 7:  SDRAM Optional Features
	"Maximum_Activate_Count"					: 4,
	"Maximum_Activate_Window"					: 2,
	"Byte_7_reserved"						: 2,

	# Byte 8: SDRAM Thermal and Refresh Options
	"Byte_8_reserved"						: 8,

	# Byte 9:  Other SDRAM Optional Features
	"Byte_9_reserved"						: 5,
	"Soft_PPR"							: 1,
	"Post_Package_Repair"						: 2,

	# Byte 10: Secondary SDRAM Package Type
	"Secondary_Signal_Loading"					: 2,
	"Secondary_DRAM_Densityt_Ratio"					: 2,
	"Secondary_Die_Count"						: 3,
	"Secondary_SDRAM_Package_Type"					: 1,

	# Byte 11:  Module Nominal Voltage, VDD
	"DRAM_VDD_1_2_V"						: 2,
	"Byte_11_reserved"						: 6,

	# Byte 12: Module Organization
	"SDRAM_Device_Width"						: 3,
	"Number_of_Package_Ranks_per_DIMM"				: 3,
	"Rank_Mix"							: 1,
	"Byte_12_reserved"						: 1,

	# Byte 13: Module Memory Bus Width
	"Primary_bus_width_in_bits"					: 3,
	"Bus_width_extension_in_bits"					: 2,
	"Byte_13_reserved"						: 3,

	# Byte 14: Module Thermal Sensor
	"Byte_14_reserved"						: 7,
	"Thermal_Sensor"						: 1,

	# Byte 15:  Extended Module Type
	"Extended_Base_Module_Type"					: 4,
	"Byte_15_reserved"						: 4,

	# Byte 16: Reserved
	"Byte_16_reserved"						: 8,

	# Byte 17: Timebases
	"Fine_Timebase"							: 2,
	"Medium_Timebase"						: 2,
	"Byte_17_reserved"						: 4,

	# Byte 18:  SDRAM Minimum Cycle Time (tCKAVGmin)
	"tCKAVGmin"							: 8,

	# Byte 19:  SDRAM Maximum Cycle Time (tCKAVGmax)
	"tCKAVGmax"							: 8,

	# Bytes 20 - 23: CAS Latencies Supported
	"CL_7_Supported"						: 1,
	"CL_8_Supported"						: 1,
	"CL_9_Supported"						: 1,
	"CL_10_Supported"						: 1,
	"CL_11_Supported"						: 1,
	"CL_12_Supported"						: 1,
	"CL_13_Supported"						: 1,
	"CL_14_Supported"						: 1,

	"CL_15_Supported"						: 1,
	"CL_16_Supported"						: 1,
	"CL_17_Supported"						: 1,
	"CL_18_Supported"						: 1,
	"CL_19_Supported"						: 1,
	"CL_20_Supported"						: 1,
	"CL_21_Supported"						: 1,
	"CL_22_Supported"						: 1,

	"CL_23_Supported"						: 1,
	"CL_24_Supported"						: 1,
	"CL_25_Supported"						: 1,
	"CL_26_Supported"						: 1,
	"CL_27_Supported"						: 1,
	"CL_28_Supported"						: 1,
	"CL_29_Supported"						: 1,
	"CL_30_Supported"						: 1,

	"CL_31_Supported"						: 1,
	"CL_32_Supported"						: 1,
	"CL_33_Supported"						: 1,
	"CL_34_Supported"						: 1,
	"CL_35_Supported"						: 1,
	"CL_36_Supported"						: 1,
	"Byte_23_reserved"						: 1,
	"CL_range"							: 1,

	# Byte 24: Minimum CAS Latency Time (tAAmin)
	"tAAmin"							: 8,

	# Byte 25: Minimum RAS to CAS Delay Time (tRCDmin)
	"tRCDmin"							: 8,

	# Byte 26: Minimum Row Precharge Delay Time (tRPmin)
	"tRPmin"							: 8,

	# Bytes 27 - 29: Minimum Active to Precharge Delay Time (tRASmin)
	#               / Minimum Active to Active/Refresh Delay Time
	#               (tRCmin)
	"tRASmin_MSN"							: 4,
	"tRCmin_MSN"							: 4,
	"tRASmin_LSB"							: 8,
	"tRCmin_LSB"							: 8,

	# Bytes 30 - 31: Minimum Refresh Recovery Delay Time (tRFC1min)
	"tRFC1min_LSB"							: 8,
	"tRFC1min_MSB"							: 8,

	# Bytes 32 - 33: Minimum Refresh Recovery Delay Time (tRFC2min)
	"tRFC2min_LSB"							: 8,
	"tRFC2min_MSB"							: 8,

	# Bytes 34 - 35: Minimum Refresh Recovery Delay Time (tRFC4min)
	"tRFC4min_LSB"							: 8,
	"tRFC4min_MSB"							: 8,

	# Byte 36 - 37:  Minimum Four Activate Window Delay Time
	#               (tFAWmin)
	"tFAWmin_MSN"							: 4,
	"Byte_36_reserved"						: 4,
	"tFAWmin_LSB"							: 8,

	# Bytes 38: Minimum Activate to Activate Delay Time (tRRD_Smin),
	#                different bank group
	"tRRD_Smin"							: 8,

	# Byte 39: Minimum Activate to Activate Delay Time (tRRD_Lmin),
	#          same bank group
	"tRRD_Lmin"							: 8,

	# Byte 40: Minimum CAS to CAS Delay Time (tCCD_Lmin), same bank
	#          group
	"tCCD_Lmin"							: 8,

	# Byte 41 - 42: Minimum Write Recovery Time (tWRmin)
	"tWRmin_MSN"							: 4,
	"Byte_41_reserved"						: 4,
	"tWRmin_MSB"							: 8,

	# Byte 43-45: Minimum Write to Read Time (tWTR_Smin),
	#	      different bank group / Minimum Write to Read Time
	#	      (tWTR_Lmin), same bank group
	"tWTR_Smin_MSN"							: 4,
	"tWTR_Lmin_MSN"							: 4,
	"tWTR_Smin_LSB"							: 8,
	"tWTR_Lmin_LSB"							: 8,

	# Byte 46~59: Reserved, Base Configuration Section
	"Byte_46_59_reserved" [14]					: 8,

	# Byte 60: Connector to SDRAM Bit Mapping (DQ0-3)
	"DQ0_3"								: 8,
	# Byte 61: Connector to SDRAM Bit Mapping (DQ4-7)
	"DQ4_7"								: 8,

	# Byte 62: Connector to SDRAM Bit Mapping (DQ8-11)
	"DQ8_11"							: 8,

	# Byte 63: Connector to SDRAM Bit Mapping (DQ12-15)
	"DQ12_15"							: 8,

	# Byte 64: Connector to SDRAM Bit Mapping (DQ16-19)
	"DQ16_19"							: 8,

	# Byte 65: Connector to SDRAM Bit Mapping (DQ20-23)
	"DQ20_23"							: 8,

	# Byte 66: Connector to SDRAM Bit Mapping (DQ24-27)
	"DQ24_27"							: 8,

	# Byte 67: Connector to SDRAM Bit Mapping (DQ28-31)
	"DQ28_31"							: 8,

	# Byte 68: Connector to SDRAM Bit Mapping (CB0-3)
	"CB0_3"								: 8,

	# Byte 69: Connector to SDRAM Bit Mapping (CB4-7)
	"CB4_7"								: 8,

	# Byte 70: Connector to SDRAM Bit Mapping (DQ32-35)
	"DQ32_35"							: 8,

	# Byte 71: Connector to SDRAM Bit Mapping (DQ36-39)
	"DQ36_39"							: 8,

	# Byte 72: Connector to SDRAM Bit Mapping (DQ40-43)
	"DQ40_43"							: 8,

	# Byte 73: Connector to SDRAM Bit Mapping (DQ44-47)
	"DQ44_47"							: 8,

	# Byte 74: Connector to SDRAM Bit Mapping (DQ48-51)
	"DQ48_51"							: 8,

	# Byte 75: Connector to SDRAM Bit Mapping (DQ52-55)
	"DQ52_55"							: 8,

	# Byte 76: Connector to SDRAM Bit Mapping (DQ56-59)
	"DQ56_59"							: 8,

	# Byte 77: Connector to SDRAM Bit Mapping (DQ60-63)
	"DQ60_63"							: 8,

	# Bytes 78~116: Reserved, Base Configuration Section
	# Must be coded as 0x00
	"Byte_78_116_reserved" [39]					: 8,

	# Byte 117: Fine Offset for Minimum CAS to CAS Delay Time
	#           (tCCD_Lmin), same bank group
	"tCCD_Lmin"							: 8,

	# Byte 118: Fine Offset for Minimum Activate to Activate Delay
	#	    Time (tRRD_Lmin), same bank group
	"tRRD_Lmin"							: 8,

	# Byte 119:  Fine Offset for Minimum Activate to Activate Delay
	#	     Time (tRRD_Smin), different bank group
	"tRRD_Smin"							: 8,

	# Byte 120: Fine Offset for Minimum Active to Active/Refresh
	#	    Delay Time (tRCmin)
	"tRCmin"							: 8,

	# Byte 121: Fine Offset for Minimum Row Precharge Delay
	#           Time (tRPmin)
	"tRPmin"							: 8,

	# Byte 122: Fine Offset for Minimum RAS to CAS Delay
	#	    Time (tRCDmin)
	"tRCDmin"							: 8,

	# Byte 123: Fine Offset for Minimum CAS Latency Time (tAAmin)
	"tAAmin"							: 8,

	# Byte 124: Fine Offset for SDRAM Maximum Cycle Time
	#           (tCKAVGmax)
	"tCKAVGmax"							: 8,

	# Byte 125: Fine Offset for SDRAM Minimum Cycle Time
	#           (tCKAVGmin)
	"tCKAVGmin"							: 8,

	# Byte 126 - 127: Cyclical Redundancy Code (CRC) for
	#	    	  Base Configuration Section
	"CRC_Base_Configuration"					: 16,

# Standard Module Parameters - Overlay Bytes 128~191
#  Module Specific Bytes for Registered Memory Module Types

	# Byte 128: Raw Card Extension, Module Nominal Height
	"Module_Nominal_Height_Max"					: 5,
	"Raw_Card_Extension"						: 3,

	# Byte 129: Module Maximum Thickness
	"Module_Maximum_Thickness_Front"				: 4,
	"Module_Maximum_Thickness_Back"					: 4,

	# Byte 130: Reference Raw Card Used
	"Reference_Raw_Card"						: 5,
	"Reference_Raw_Card_Revision"					: 2,
	"Reference_Raw_Card_Extension"					: 1,

	# Byte 131: DIMM Attributes
	"Number_of_Registers_used_on_RDIMM"				: 2,
	"Number_of_DRAMS_on_RDIMM"					: 2,
	"Register_Type"							: 4,

	# Byte 132: RDIMM Thermal Heat Spreader Solution
	"Heat_Spreader_Thermal_Characteristics"				: 7,
	"Heat_Spreader_Solution"					: 1,

	# Byte 133 - 134: Register Manufacturer ID Code
	"Register_Manufacturer_ID_Code"					: 16,

	# Byte 135: Register Revision Number
	"Register_Revision_Number"					: 8,

	# Byte 136: Address Mapping from Register to DRAM
	"Rank_1_Mapping"						: 1,
	"Byte_136_Reserved"						: 7,

	# Byte 137: Register Output Drive Strength for
	#	    Control and Command/Address
	"Register_Output_Drive_CKE"					: 2,
	"Register_Output_Drive_ODT"					: 2,
	"Register_Output_Drive_Command_Address"				: 2,
	"Register_Output_Drive_Chip_Select"				: 2,

	# Byte 138: Register Output Drive Strength for Clock
	"Register_Output_Drive_Strength_Clock_Y0_Y2"			: 2,
	"Register_Output_Drive_Strength_Clock_Y1_Y3"			: 2,
	"Byte_138_reserved"						: 4,

	# Byte 139 - 191: Reserved
	"Byte_139_191" [53]						: 8,

# Unused
	# Byte 192 - 253: Unused
	"Byte_192_255_unused" [62]					: 8,

	# Byte 254 - 255: CRC for SPD Block 1
	"CRC_SPD_Block_1"						: 16,

# Reserved
	# Byte 256 - 319: Reserved
	"Byte_256_319_reserved" [64]					: 8,

# End User Programmable
	# Byte 384 - 511
	"End_User_Programmable"	[128]					: 8
}