File size: 795 Bytes
2ff82ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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