Skip to content

sec_ded_trim

Component for trimming and distributing residual and latent fault rates after SEC-DED processing (LPDDR4).

SecDedTrim

Bases: Base

Component for trimming and distributing residual and latent fault rates after SEC-DED processing.

This module chains sequential split operations for SBE, DBE, and TBE fault types to model the final trimming behavior of the LPDDR4 architecture.

Source code in src/ecc_analyzer/models/lpddr4/sec_ded_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
51
52
53
54
55
class SecDedTrim(Base):
    """Component for trimming and distributing residual and latent fault rates after SEC-DED processing.

    This module chains sequential split operations for SBE, DBE, and TBE fault types to
    model the final trimming behavior of the LPDDR4 architecture.
    """

    def __init__(self, name: str):
        """Initializes the SecDedTrim component with predefined split parameters.

        Args:
            name (str): The descriptive name of the component.
        """
        self.spfm_sbe_split = {FaultType.SBE: 0.89}
        self.spfm_dbe_split = {FaultType.SBE: 0.20, FaultType.DBE: 0.79}
        self.spfm_tbe_split = {
            FaultType.SBE: 0.03,
            FaultType.DBE: 0.27,
            FaultType.TBE: 0.70,
        }

        self.lfm_sbe_split = {FaultType.SBE: 0.89}
        self.lfm_dbe_split = {FaultType.SBE: 0.20, FaultType.DBE: 0.79}
        self.lfm_tbe_split = {
            FaultType.SBE: 0.03,
            FaultType.DBE: 0.27,
            FaultType.TBE: 0.70,
        }

        super().__init__(name)

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

        Redistributes faults for both residual (SPFM) and latent (LFM) paths.
        """
        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),
                SplitBlock("LFM_TBE_Split", FaultType.TBE, self.lfm_tbe_split, is_spfm=False),
            ],
        )

__init__(name)

Initializes the SecDedTrim component with predefined split parameters.

Parameters:

Name Type Description Default
name str

The descriptive name of the component.

required
Source code in src/ecc_analyzer/models/lpddr4/sec_ded_trim.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def __init__(self, name: str):
    """Initializes the SecDedTrim component with predefined split parameters.

    Args:
        name (str): The descriptive name of the component.
    """
    self.spfm_sbe_split = {FaultType.SBE: 0.89}
    self.spfm_dbe_split = {FaultType.SBE: 0.20, FaultType.DBE: 0.79}
    self.spfm_tbe_split = {
        FaultType.SBE: 0.03,
        FaultType.DBE: 0.27,
        FaultType.TBE: 0.70,
    }

    self.lfm_sbe_split = {FaultType.SBE: 0.89}
    self.lfm_dbe_split = {FaultType.SBE: 0.20, FaultType.DBE: 0.79}
    self.lfm_tbe_split = {
        FaultType.SBE: 0.03,
        FaultType.DBE: 0.27,
        FaultType.TBE: 0.70,
    }

    super().__init__(name)

configure_blocks()

Configures the root block as a collection of split operations.

Redistributes faults for both residual (SPFM) and latent (LFM) paths.

Source code in src/ecc_analyzer/models/lpddr4/sec_ded_trim.py
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
def configure_blocks(self):
    """Configures the root block as a collection of split operations.

    Redistributes faults for both residual (SPFM) and latent (LFM) paths.
    """
    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),
            SplitBlock("LFM_TBE_Split", FaultType.TBE, self.lfm_tbe_split, is_spfm=False),
        ],
    )