Skip to content

dram_trim

Component for trimming and distributing failure rates for the DRAM hardware layer (LPDDR4).

DramTrim

Bases: Base

Handles the redistribution of SBE, DBE, and TBE faults for both residual and latent paths.

This component uses a SumBlock to apply parallel split operations that redistribute fault rates according to specific hardware trimming factors defined for LPDDR4.

Source code in src/ecc_analyzer/models/lpddr4/dram_trim.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class DramTrim(Base):
    """Handles the redistribution of SBE, DBE, and TBE faults for both residual and latent paths.

    This component uses a SumBlock to apply parallel split operations that redistribute
    fault rates according to specific hardware trimming factors defined for LPDDR4.
    """

    def __init__(self, name: str):
        """Initializes the DramTrim component with hardware-specific split distribution parameters.

        Args:
            name (str): The descriptive name of the component.
        """
        self.spfm_sbe_split = {FaultType.SBE: 0.94}
        self.spfm_dbe_split = {FaultType.SBE: 0.11, FaultType.DBE: 0.89}
        self.spfm_tbe_split = {
            FaultType.SBE: 0.009,
            FaultType.DBE: 0.15,
            FaultType.TBE: 0.83,
        }

        self.lfm_sbe_split = {FaultType.SBE: 0.94}
        self.lfm_dbe_split = {FaultType.SBE: 0.11, FaultType.DBE: 0.89}

        super().__init__(name)

    def configure_blocks(self):
        """Configures the root block as a collection of split operations.

        Each split block redistributes the specified fault type according to the defined ratios.
        Both SPFM (residual) and LFM (latent) paths are processed in parallel.
        """
        self.root_block = SumBlock(
            self.name,
            [
                SplitBlock("SPFM_SBE_Split", FaultType.SBE, self.spfm_sbe_split, is_spfm=True),
                SplitBlock("SPFM_DBE_Split", FaultType.DBE, self.spfm_dbe_split, is_spfm=True),
                SplitBlock("SPFM_TBE_Split", FaultType.TBE, self.spfm_tbe_split, is_spfm=True),
                SplitBlock("LFM_SBE_Split", FaultType.SBE, self.lfm_sbe_split, is_spfm=False),
                SplitBlock("LFM_DBE_Split", FaultType.DBE, self.lfm_dbe_split, is_spfm=False),
            ],
        )

__init__(name)

Initializes the DramTrim component with hardware-specific split distribution parameters.

Parameters:

Name Type Description Default
name str

The descriptive name of the component.

required
Source code in src/ecc_analyzer/models/lpddr4/dram_trim.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def __init__(self, name: str):
    """Initializes the DramTrim component with hardware-specific split distribution parameters.

    Args:
        name (str): The descriptive name of the component.
    """
    self.spfm_sbe_split = {FaultType.SBE: 0.94}
    self.spfm_dbe_split = {FaultType.SBE: 0.11, FaultType.DBE: 0.89}
    self.spfm_tbe_split = {
        FaultType.SBE: 0.009,
        FaultType.DBE: 0.15,
        FaultType.TBE: 0.83,
    }

    self.lfm_sbe_split = {FaultType.SBE: 0.94}
    self.lfm_dbe_split = {FaultType.SBE: 0.11, FaultType.DBE: 0.89}

    super().__init__(name)

configure_blocks()

Configures the root block as a collection of split operations.

Each split block redistributes the specified fault type according to the defined ratios. Both SPFM (residual) and LFM (latent) paths are processed in parallel.

Source code in src/ecc_analyzer/models/lpddr4/dram_trim.py
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def configure_blocks(self):
    """Configures the root block as a collection of split operations.

    Each split block redistributes the specified fault type according to the defined ratios.
    Both SPFM (residual) and LFM (latent) paths are processed in parallel.
    """
    self.root_block = SumBlock(
        self.name,
        [
            SplitBlock("SPFM_SBE_Split", FaultType.SBE, self.spfm_sbe_split, is_spfm=True),
            SplitBlock("SPFM_DBE_Split", FaultType.DBE, self.spfm_dbe_split, is_spfm=True),
            SplitBlock("SPFM_TBE_Split", FaultType.TBE, self.spfm_tbe_split, is_spfm=True),
            SplitBlock("LFM_SBE_Split", FaultType.SBE, self.lfm_sbe_split, is_spfm=False),
            SplitBlock("LFM_DBE_Split", FaultType.DBE, self.lfm_dbe_split, is_spfm=False),
        ],
    )