description: >
    Implement to provide DIMM attributes.
properties:
    - name: MemoryDataWidth
      type: uint16
      description: >
          Data width of Memory.
    - name: MemorySizeInKB
      type: size
      description: >
          Memory size of DIMM in Kilobyte.
    - name: MemoryDeviceLocator
      type: string
      description: >
          Socket on base board where Memory located, for example CPU1_DIMM_B1.
    - name: MemoryType
      type: enum[self.DeviceType]
      description: >
          Type of memory.
    - name: MemoryTypeDetail
      type: string
      description: >
          Additional detail on Memory, such as Synchronous, Static column, etc.
    - name: MaxMemorySpeedInMhz
      type: uint16
      description: >
          The maximum capable clock speed of Memory, in megahertz.
    - name: MemoryAttributes
      type: size
      description: >
          Rank attributes of Memory. Means how many groups of memory chips on
          the dimm.
    - name: MemoryConfiguredSpeedInMhz
      type: uint16
      description: >
          Configured clock speed to Memory, in megahertz.
    - name: ECC
      type: enum[self.Ecc]
      description: >
          Error-Correcting Code.
    - name: CASLatencies
      type: uint16
      description: >
          CAS Latency (CL) values are supported. The CAS latency is the delay
          between the time at which the column address and the column address
          strobe signal are presented to the memory module and the time at which
          the corresponding data is made available by the memory module.
    - name: RevisionCode
      type: uint16
      description: >
          Revision code provided by the individual manufacturer.
    - name: FormFactor
      type: enum[self.FormFactor]
      description: >
          The base module type of the memory.
    - name: MemoryTotalWidth
      type: uint16
      description: >
          The bus width, in bits.
    - name: AllowedSpeedsMT
      type: array[uint16]
      description: >
          Speeds supported by this memory in megatransfers.
    - name: MemoryMedia
      type: enum[self.MemoryTech]
      default: Unknown
      description: >
          Memory Technology of this memory.

enumerations:
    - name: Ecc
      description: >
          Error-Correcting Code.
      values:
          - name: NoECC
            description: >
                No ECC support.
          - name: SingleBitECC
            description: >
                Single bit data errors can be corrected by ECC.
          - name: MultiBitECC
            description: >
                Multibit data errors can be corrected by ECC.
          - name: AddressParity
            description: >
                Address parity errors can be corrected.
    - name: MemoryTech
      description: >
          This property shall contain the type ofmemory that this Resource
          represents.
      values:
          - name: Other
            description: >
                Some devices which are not defined in SMBIOS table.
          - name: Unknown
            description: >
                Unknown device.
          - name: DRAM
            description: >
                The memory module is comprised of volatile memory.
          - name: NVDIMM_N
            description: >
                The memory module is comprised of volatile memory backed by
                non-volatile memory.
          - name: NVDIMM_F
            description: >
                The memory module is comprised of non-volatile memory.
          - name: NVDIMM_P
            description: >
                The memory module is comprised of a combination of non-volatile
                and volatile memory.
          - name: IntelOptane
            description: >
                The memory module is an Intel Optane DC Persistent Memory
                Module.
    - name: DeviceType
      description: >
          This property shall contain the Memory Device Type as defined by
          SMBIOS.
      values:
          - name: Other
            description: >
                Some devices which are not defined in this table.
          - name: Unknown
            description: >
                Unknown device.
          - name: DRAM
            description: >
                Dynamic Random Access Memory.
          - name: EDRAM
            description: >
                Enhanced Dynamic Random Access Memory.
          - name: VRAM
            description: >
                Video Random Access Memory.
          - name: SRAM
            description: >
                Static Random Access Memory.
          - name: RAM
            description: >
                Random Access Memory.
          - name: ROM
            description: >
                Read Only Memory.
          - name: FLASH
            description: >
                Flash Memory.
          - name: EEPROM
            description: >
                Electrically Erasable Programmable Read Only Memory.
          - name: FEPROM
            description: >
                Flash Erasable Programmable Read Only Memory.
          - name: EPROM
            description: >
                Erasable Programmable Read Only Memory.
          - name: CDRAM
            description: >
                Cached Dynamic Random Access Memory.
          - name: ThreeDRAM
            description: >
                Three Dimensional Random Access Memory.
          - name: SDRAM
            description: >
                Synchronous Dynamic Random Access Memory.
          - name: DDR_SGRAM
            description: >
                Double Data Rate Synchronous Graphics Random-Access Memory.
          - name: RDRAM
            description: >
                Direct Rambus Dynamic Random Access Memory.
          - name: DDR
            description: >
                Double Data Rate SDRAM.
          - name: DDR2
            description: >
                Double Data Rate 2 SDRAM.
          - name: DDR2_SDRAM_FB_DIMM
            description: >
                DDR2 SDRAM Fully Buffered DIMM.
          - name: EDO
            description: >
                Extended Data Output Memory.
          - name: FastPageMode
            description: >
                Fast Page Mode Memory.
          - name: PipelinedNibble
            description: >
                Pipelined Nibble Memory.
          - name: DDR3
            description: >
                Double Data Rate 3 SDRAM.
          - name: FBD2
            description: >
                Fully Buffered DIMM 2.
          - name: DDR4
            description: >
                Double Data Rate 4 SDRAM.
          - name: LPDDR_SDRAM
            description: >
                Low-Power Double Data Rate SDRAM.
          - name: LPDDR2_SDRAM
            description: >
                Low-Power Double Data Rate 2 SDRAM.
          - name: LPDDR3_SDRAM
            description: >
                Low-Power Double Data Rate 3 SDRAM.
          - name: LPDDR4_SDRAM
            description: >
                Low-Power Double Data Rate 4 SDRAM.
          - name: Logical
            description: >
                Logical Non-volatile device.
          - name: HBM
            description: >
                High Bandwidth Memory
          - name: HBM2
            description: >
                High Bandwidth Memory Generation 2.
          - name: HBM3
            description: >
                High Bandwidth Memory Generation 3.
          - name: DDR2_SDRAM_FB_DIMM_PROB
            description: >
                DDR2 SDRAM Fully Buffered DIMM PROBE.
          - name: DDR4E_SDRAM
            description: >
                Double Data Rate 4 Extended Compliant SDRAM.
          - name: DDR5
            description: >
                Double Data Rate 5 SDRAM.
          - name: LPDDR5_SDRAM
            description: >
                Low-Power Double Data Rate 5 SDRAM.
    - name: FormFactor
      description: >
          Implementation form factor for this memory device.
      values:
          - name: RDIMM
            description: >
                Registered DIMM.
          - name: UDIMM
            description: >
                Unbuffered DIMM.
          - name: SO_DIMM
            description: >
                Small Outline DIMM.
          - name: LRDIMM
            description: >
                Load-reduced DIMMs.
          - name: Mini_RDIMM
            description: >
                mini Registered DIMM.
          - name: Mini_UDIMM
            description: >
                mini Unbuffered DIMM.
          - name: SO_RDIMM_72b
            description: >
                Small Outline Registered DIMM.
          - name: SO_UDIMM_72b
            description: >
                Small Outline Unbuffered DIMM.
          - name: SO_DIMM_16b
            description: >
                Small Outline DIMM 16 bit.
          - name: SO_DIMM_32b
            description: >
                Small Outline DIMM 32 bit.
          - name: Die
            description: >
                A die within a package.
