Skip to content

sec

Component for Single Error Correction (SEC) in LPDDR5 architectures.

Sec

Bases: Base

Component for Single Error Correction (SEC) in LPDDR5.

This module handles SBE coverage (correcting single bit errors) and redistributes DBE failure rates (Double Bit Errors splitting into TBE). It also introduces a latent Single Bit (SB) fault source.

Source code in src/ecc_analyzer/models/lpddr5/sec.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
56
57
58
59
class Sec(Base):
    """Component for Single Error Correction (SEC) in LPDDR5.

    This module handles SBE coverage (correcting single bit errors) and redistributes
    DBE failure rates (Double Bit Errors splitting into TBE). It also introduces
    a latent Single Bit (SB) fault source.
    """

    def __init__(self, name: str):
        """Initializes the SEC component.

        Args:
            name (str): The descriptive name of the component.
        """
        self.sbe_dc_residual = 1.0
        self.sbe_dc_latent = 0.0

        self.dbe_to_dbe_p = 0.83
        self.dbe_to_tbe_p = 0.17

        self.sb_source = 0.1

        super().__init__(name)

    def configure_blocks(self):
        """Configures the root block.

        Combines latent fault injection (SB) with parallel processing of incoming
        SBE (Coverage) and DBE (Split) faults using a SumBlock.
        """
        self.root_block = SumBlock(
            self.name,
            [
                BasicEvent(FaultType.SB, self.sb_source, is_spfm=False),
                CoverageBlock(
                    FaultType.SBE,
                    self.sbe_dc_residual,
                    dc_rate_latent_cL=self.sbe_dc_latent,
                    is_spfm=True,
                ),
                SplitBlock(
                    "DBE_Split",
                    FaultType.DBE,
                    {
                        FaultType.DBE: self.dbe_to_dbe_p,
                        FaultType.TBE: self.dbe_to_tbe_p,
                    },
                    is_spfm=True,
                ),
            ],
        )

__init__(name)

Initializes the SEC component.

Parameters:

Name Type Description Default
name str

The descriptive name of the component.

required
Source code in src/ecc_analyzer/models/lpddr5/sec.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def __init__(self, name: str):
    """Initializes the SEC component.

    Args:
        name (str): The descriptive name of the component.
    """
    self.sbe_dc_residual = 1.0
    self.sbe_dc_latent = 0.0

    self.dbe_to_dbe_p = 0.83
    self.dbe_to_tbe_p = 0.17

    self.sb_source = 0.1

    super().__init__(name)

configure_blocks()

Configures the root block.

Combines latent fault injection (SB) with parallel processing of incoming SBE (Coverage) and DBE (Split) faults using a SumBlock.

Source code in src/ecc_analyzer/models/lpddr5/sec.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
def configure_blocks(self):
    """Configures the root block.

    Combines latent fault injection (SB) with parallel processing of incoming
    SBE (Coverage) and DBE (Split) faults using a SumBlock.
    """
    self.root_block = SumBlock(
        self.name,
        [
            BasicEvent(FaultType.SB, self.sb_source, is_spfm=False),
            CoverageBlock(
                FaultType.SBE,
                self.sbe_dc_residual,
                dc_rate_latent_cL=self.sbe_dc_latent,
                is_spfm=True,
            ),
            SplitBlock(
                "DBE_Split",
                FaultType.DBE,
                {
                    FaultType.DBE: self.dbe_to_dbe_p,
                    FaultType.TBE: self.dbe_to_tbe_p,
                },
                is_spfm=True,
            ),
        ],
    )