class PCIeInterface: def __init__(self, version='4.0', lanes=4, max_gbps=15): self.version = version self.lanes = lanes self.max_gbps = max_gbps # GB/s self.latency_us = 2 # microseconds, typical for PCIe 4.0 def transfer_time(self, size_bytes): # Calculate time to transfer size_bytes at max_gbps (in seconds) gb = size_bytes / 1e9 time_s = gb / self.max_gbps return time_s def simulate_transfer(self, size_bytes, direction='write'): t = self.transfer_time(size_bytes) print(f"[PCIe] {direction.title()} {size_bytes/1e6:.2f} MB over PCIe {self.version} x{self.lanes} at {self.max_gbps} GB/s: {t*1e3:.3f} ms + {self.latency_us} us latency") return t + self.latency_us / 1e6