Skip to content

link_ecc

Component for the Link ECC interface in LPDDR5 architectures.

Bases: Base

Component for the Link ECC interface.

This block models the transmission errors on the interface (Source) and the corresponding Error Correction Code (Coverage) that mitigates these errors.

Source code in src/ecc_analyzer/models/lpddr5/link_ecc.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
class LinkEcc(Base):
    """Component for the Link ECC interface.

    This block models the transmission errors on the interface (Source) and
    the corresponding Error Correction Code (Coverage) that mitigates these errors.
    """

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

        Args:
            name (str): The descriptive name of the component.
        """
        self.sbe_if_source_rate = 5.050

        self.sbe_if_dc_residual = 1.0
        self.sbe_if_dc_latent = 1.0

        super().__init__(name)

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

        Using a PipelineBlock ensures that the faults generated by the BasicEvent (Source)
        are immediately processed by the CoverageBlock (ECC).
        """
        self.root_block = PipelineBlock(
            self.name,
            [
                BasicEvent(FaultType.SBE, self.sbe_if_source_rate, is_spfm=True),
                CoverageBlock(
                    FaultType.SBE,
                    self.sbe_if_dc_residual,
                    dc_rate_latent_cL=self.sbe_if_dc_latent,
                    is_spfm=True,
                ),
            ],
        )

Initializes the LinkEcc component.

Parameters:

Name Type Description Default
name str

The descriptive name of the component.

required
Source code in src/ecc_analyzer/models/lpddr5/link_ecc.py
16
17
18
19
20
21
22
23
24
25
26
27
def __init__(self, name: str):
    """Initializes the LinkEcc component.

    Args:
        name (str): The descriptive name of the component.
    """
    self.sbe_if_source_rate = 5.050

    self.sbe_if_dc_residual = 1.0
    self.sbe_if_dc_latent = 1.0

    super().__init__(name)

Configures the root block as a sequential pipeline.

Using a PipelineBlock ensures that the faults generated by the BasicEvent (Source) are immediately processed by the CoverageBlock (ECC).

Source code in src/ecc_analyzer/models/lpddr5/link_ecc.py
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def configure_blocks(self):
    """Configures the root block as a sequential pipeline.

    Using a PipelineBlock ensures that the faults generated by the BasicEvent (Source)
    are immediately processed by the CoverageBlock (ECC).
    """
    self.root_block = PipelineBlock(
        self.name,
        [
            BasicEvent(FaultType.SBE, self.sbe_if_source_rate, is_spfm=True),
            CoverageBlock(
                FaultType.SBE,
                self.sbe_if_dc_residual,
                dc_rate_latent_cL=self.sbe_if_dc_latent,
                is_spfm=True,
            ),
        ],
    )