summaryrefslogtreecommitdiff
path: root/python/m5/objects/Ethernet.mpy
blob: 0065a238f9f300c1e044e48773552b654b06e303 (plain)
1
2
3
4
5
6
7
8
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
from Device import DmaDevice
from Pci import PciDevice

simobj EtherInt(SimObject):
    type = 'EtherInt'
    abstract = True
    peer = Param.EtherInt(NULL, "peer interface")

simobj EtherLink(SimObject):
    type = 'EtherLink'
    int1 = Param.EtherInt("interface 1")
    int2 = Param.EtherInt("interface 2")
    delay = Param.Latency('0us', "packet transmit delay")
    speed = Param.NetworkBandwidth('100Mbps', "link speed")
    dump = Param.EtherDump(NULL, "dump object")

simobj EtherBus(SimObject):
    type = 'EtherBus'
    loopback = Param.Bool(True, "send packet back to the sending interface")
    dump = Param.EtherDump(NULL, "dump object")
    speed = Param.NetworkBandwidth('100Mbps', "bus speed in bits per second")

simobj EtherTap(EtherInt):
    type = 'EtherTap'
    bufsz = Param.Int(10000, "tap buffer size")
    dump = Param.EtherDump(NULL, "dump object")
    port = Param.UInt16(3500, "tap port")

simobj EtherDump(SimObject):
    type = 'EtherDump'
    file = Param.String("dump file")

simobj EtherDev(DmaDevice):
    type = 'EtherDev'
    hardware_address = Param.EthernetAddr(NextEthernetAddr,
        "Ethernet Hardware Address")

    dma_data_free = Param.Bool(False, "DMA of Data is free")
    dma_desc_free = Param.Bool(False, "DMA of Descriptors is free")
    dma_read_delay = Param.Latency('0us', "fixed delay for dma reads")
    dma_read_factor = Param.Latency('0us', "multiplier for dma reads")
    dma_write_delay = Param.Latency('0us', "fixed delay for dma writes")
    dma_write_factor = Param.Latency('0us', "multiplier for dma writes")
    dma_no_allocate = Param.Bool(True, "Should we allocate cache on read")

    rx_filter = Param.Bool(True, "Enable Receive Filter")
    rx_delay = Param.Latency('1us', "Receive Delay")
    tx_delay = Param.Latency('1us', "Transmit Delay")

    intr_delay = Param.Latency('0us', "Interrupt Delay")
    payload_bus = Param.Bus(NULL, "The IO Bus to attach to for payload")
    physmem = Param.PhysicalMemory(parent.any, "Physical Memory")
    tlaser = Param.Turbolaser(parent.any, "Turbolaser")

simobj NSGigE(PciDevice):
    type = 'NSGigE'
    hardware_address = Param.EthernetAddr(NextEthernetAddr,
        "Ethernet Hardware Address")

    cycle_time = Param.Frequency('100MHz', "State machine processor frequency")

    dma_data_free = Param.Bool(False, "DMA of Data is free")
    dma_desc_free = Param.Bool(False, "DMA of Descriptors is free")
    dma_read_delay = Param.Latency('0us', "fixed delay for dma reads")
    dma_read_factor = Param.Latency('0us', "multiplier for dma reads")
    dma_write_delay = Param.Latency('0us', "fixed delay for dma writes")
    dma_write_factor = Param.Latency('0us', "multiplier for dma writes")
    dma_no_allocate = Param.Bool(True, "Should we allocate cache on read")


    rx_filter = Param.Bool(True, "Enable Receive Filter")
    rx_delay = Param.Latency('1us', "Receive Delay")
    tx_delay = Param.Latency('1us', "Transmit Delay")

    rx_fifo_size = Param.MemorySize('128kB', "max size in bytes of rxFifo")
    tx_fifo_size = Param.MemorySize('128kB', "max size in bytes of txFifo")

    m5reg = Param.UInt32(0, "Register for m5 usage")

    intr_delay = Param.Latency('0us', "Interrupt Delay in microseconds")
    payload_bus = Param.Bus(NULL, "The IO Bus to attach to for payload")
    physmem = Param.PhysicalMemory(parent.any, "Physical Memory")

simobj EtherDevInt(EtherInt):
    type = 'EtherDevInt'
    device = Param.EtherDev("Ethernet device of this interface")

simobj NSGigEInt(EtherInt):
    type = 'NSGigEInt'
    device = Param.NSGigE("Ethernet device of this interface")

simobj Sinic(PciDevice):
    type = 'Sinic'
    hardware_address = Param.EthernetAddr(NextEthernetAddr,
        "Ethernet Hardware Address")

    cycle_time = Param.Frequency('100MHz', "State machine processor frequency")

    dma_read_delay = Param.Latency('0us', "fixed delay for dma reads")
    dma_read_factor = Param.Latency('0us', "multiplier for dma reads")
    dma_write_delay = Param.Latency('0us', "fixed delay for dma writes")
    dma_write_factor = Param.Latency('0us', "multiplier for dma writes")

    rx_filter = Param.Bool(True, "Enable Receive Filter")
    rx_delay = Param.Latency('1us', "Receive Delay")
    tx_delay = Param.Latency('1us', "Transmit Delay")

    rx_max_copy = Param.MemorySize('16kB', "rx max copy")
    tx_max_copy = Param.MemorySize('16kB', "tx max copy")
    rx_fifo_size = Param.MemorySize('64kB', "max size of rx fifo")
    tx_fifo_size = Param.MemorySize('64kB', "max size of tx fifo")
    rx_fifo_threshold = Param.MemorySize('48kB', "rx fifo high threshold")
    tx_fifo_threshold = Param.MemorySize('16kB', "tx fifo low threshold")

    intr_delay = Param.Latency('0us', "Interrupt Delay in microseconds")
    payload_bus = Param.Bus(NULL, "The IO Bus to attach to for payload")
    physmem = Param.PhysicalMemory(parent.any, "Physical Memory")

simobj SinicInt(EtherInt):
    type = 'SinicInt'
    device = Param.Sinic("Ethernet device of this interface")