Skip to content

sec

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

Sec

Bases: Base

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

This module handles SBE coverage and redistributes DBE failure rates into TBEs. It uses a PipelineBlock to ensure that local sources are added before diagnostic coverage and split operations are applied.

Source code in src/ecc_analyzer/models/lpddr4/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
class Sec(Base):
    """Component for Single Error Correction (SEC) in LPDDR4 architectures.

    This module handles SBE coverage and redistributes DBE failure rates into TBEs.
    It uses a PipelineBlock to ensure that local sources are added before
    diagnostic coverage and split operations are applied.
    """

    def __init__(self, name: str):
        """Initializes the SEC component with specific diagnostic coverage and failure rates.

        Args:
            name (str): The descriptive name of the component.
        """
        self.sec_ecc_dc = 1.0
        self.dbe_to_dbe_p = 0.83
        self.dbe_to_tbe_p = 0.17

        self.sb_source = 0.1
        self.dbe_source = 172.0

        super().__init__(name)

    def configure_blocks(self):
        """Configures the internal block structure as a sequential pipeline.

        This ensures fault sources are injected first, followed by coverage application
        and final rate redistribution.
        """
        self.root_block = SumBlock(
            self.name,
            [
                BasicEvent(FaultType.SB, self.sb_source, is_spfm=False),
                BasicEvent(FaultType.DBE, self.dbe_source, is_spfm=False),
                CoverageBlock(FaultType.SBE, self.sec_ecc_dc),
                SplitBlock(
                    "DBE_to_TBE_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 with specific diagnostic coverage and failure rates.

Parameters:

Name Type Description Default
name str

The descriptive name of the component.

required
Source code in src/ecc_analyzer/models/lpddr4/sec.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def __init__(self, name: str):
    """Initializes the SEC component with specific diagnostic coverage and failure rates.

    Args:
        name (str): The descriptive name of the component.
    """
    self.sec_ecc_dc = 1.0
    self.dbe_to_dbe_p = 0.83
    self.dbe_to_tbe_p = 0.17

    self.sb_source = 0.1
    self.dbe_source = 172.0

    super().__init__(name)

configure_blocks()

Configures the internal block structure as a sequential pipeline.

This ensures fault sources are injected first, followed by coverage application and final rate redistribution.

Source code in src/ecc_analyzer/models/lpddr4/sec.py
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
def configure_blocks(self):
    """Configures the internal block structure as a sequential pipeline.

    This ensures fault sources are injected first, followed by coverage application
    and final rate redistribution.
    """
    self.root_block = SumBlock(
        self.name,
        [
            BasicEvent(FaultType.SB, self.sb_source, is_spfm=False),
            BasicEvent(FaultType.DBE, self.dbe_source, is_spfm=False),
            CoverageBlock(FaultType.SBE, self.sec_ecc_dc),
            SplitBlock(
                "DBE_to_TBE_Split",
                FaultType.DBE,
                {
                    FaultType.DBE: self.dbe_to_dbe_p,
                    FaultType.TBE: self.dbe_to_tbe_p,
                },
                is_spfm=True,
            ),
        ],
    )