from __future__ import annotations from collections.abc import Generator from typing import TYPE_CHECKING import simpy from kernbench.components.base import ComponentBase if TYPE_CHECKING: from kernbench.components.context import ComponentContext from kernbench.topology.types import Node class PcieEpComponent(ComponentBase): """PCIe endpoint: protocol processing overhead before forwarding. Applies overhead_ns (from node.attrs) for PCIe protocol handling, then forwards via inherited _forward_txn(). """ def __init__(self, node: Node, ctx: ComponentContext | None = None) -> None: super().__init__(node, ctx) def run(self, env: simpy.Environment, nbytes: int) -> Generator: overhead_ns = float(self.node.attrs.get("overhead_ns", 0.0)) yield env.timeout(overhead_ns)