devices.py (11722:f15f02d8c79e) devices.py (11756:0d38e56356c7)
1# Copyright (c) 2016 ARM Limited
2# All rights reserved.
3#
4# The license below extends only to copyright in the software and shall
5# not be construed as granting a license to any other intellectual
6# property including but not limited to intellectual property relating
7# to a hardware implementation of the functionality of the software
8# licensed hereunder. You may use the software subject to the license

--- 160 unchanged lines hidden (view full) ---

169 cpu_voltage, *cpu_config)
170 def addL1(self):
171 pass
172
173
174class SimpleSystem(LinuxArmSystem):
175 cache_line_size = 64
176
1# Copyright (c) 2016 ARM Limited
2# All rights reserved.
3#
4# The license below extends only to copyright in the software and shall
5# not be construed as granting a license to any other intellectual
6# property including but not limited to intellectual property relating
7# to a hardware implementation of the functionality of the software
8# licensed hereunder. You may use the software subject to the license

--- 160 unchanged lines hidden (view full) ---

169 cpu_voltage, *cpu_config)
170 def addL1(self):
171 pass
172
173
174class SimpleSystem(LinuxArmSystem):
175 cache_line_size = 64
176
177 def __init__(self, **kwargs):
177 def __init__(self, caches, mem_size, **kwargs):
178 super(SimpleSystem, self).__init__(**kwargs)
179
180 self.voltage_domain = VoltageDomain(voltage="1.0V")
181 self.clk_domain = SrcClockDomain(clock="1GHz",
182 voltage_domain=Parent.voltage_domain)
183
184 self.realview = VExpress_GEM5_V1()
185

--- 5 unchanged lines hidden (view full) ---

191 self.intrctrl = IntrControl()
192 self.terminal = Terminal()
193 self.vncserver = VncServer()
194
195 self.iobus = IOXBar()
196 # CPUs->PIO
197 self.iobridge = Bridge(delay='50ns')
198 # Device DMA -> MEM
178 super(SimpleSystem, self).__init__(**kwargs)
179
180 self.voltage_domain = VoltageDomain(voltage="1.0V")
181 self.clk_domain = SrcClockDomain(clock="1GHz",
182 voltage_domain=Parent.voltage_domain)
183
184 self.realview = VExpress_GEM5_V1()
185

--- 5 unchanged lines hidden (view full) ---

191 self.intrctrl = IntrControl()
192 self.terminal = Terminal()
193 self.vncserver = VncServer()
194
195 self.iobus = IOXBar()
196 # CPUs->PIO
197 self.iobridge = Bridge(delay='50ns')
198 # Device DMA -> MEM
199 self.dmabridge = Bridge(delay='50ns',
200 ranges=self.realview._mem_regions)
199 mem_range = self.realview._mem_regions[0]
200 mem_range_size = long(mem_range[1]) - long(mem_range[0])
201 assert mem_range_size >= long(Addr(mem_size))
202 self._mem_range = AddrRange(start=mem_range[0], size=mem_size)
203 self._caches = caches
204 if self._caches:
205 self.iocache = IOCache(addr_ranges=[self._mem_range])
206 else:
207 self.dmabridge = Bridge(delay='50ns',
208 ranges=[self._mem_range])
201
202 self._pci_devices = 0
203 self._clusters = []
204 self._num_cpus = 0
205
206 def attach_pci(self, dev):
207 dev.pci_bus, dev.pci_dev, dev.pci_func = (0, self._pci_devices + 1, 0)
208 self._pci_devices += 1
209 self.realview.attachPciDevice(dev, self.iobus)
210
211 def connect(self):
212 self.iobridge.master = self.iobus.slave
213 self.iobridge.slave = self.membus.master
214
209
210 self._pci_devices = 0
211 self._clusters = []
212 self._num_cpus = 0
213
214 def attach_pci(self, dev):
215 dev.pci_bus, dev.pci_dev, dev.pci_func = (0, self._pci_devices + 1, 0)
216 self._pci_devices += 1
217 self.realview.attachPciDevice(dev, self.iobus)
218
219 def connect(self):
220 self.iobridge.master = self.iobus.slave
221 self.iobridge.slave = self.membus.master
222
215 self.dmabridge.master = self.membus.slave
216 self.dmabridge.slave = self.iobus.master
223 if self._caches:
224 self.iocache.mem_side = self.membus.slave
225 self.iocache.cpu_side = self.iobus.master
226 else:
227 self.dmabridge.master = self.membus.slave
228 self.dmabridge.slave = self.iobus.master
217
218 self.gic_cpu_addr = self.realview.gic.cpu_addr
219 self.realview.attachOnChipIO(self.membus, self.iobridge)
220 self.realview.attachIO(self.iobus)
221 self.system_port = self.membus.slave
222
223 def numCpuClusters(self):
224 return len(self._clusters)

--- 36 unchanged lines hidden ---
229
230 self.gic_cpu_addr = self.realview.gic.cpu_addr
231 self.realview.attachOnChipIO(self.membus, self.iobridge)
232 self.realview.attachIO(self.iobus)
233 self.system_port = self.membus.slave
234
235 def numCpuClusters(self):
236 return len(self._clusters)

--- 36 unchanged lines hidden ---