Device.py revision 1366
12810Srdreslin@umich.edufrom FunctionalMemory import FunctionalMemory
212500Snikos.nikoleris@arm.com
311051Sandreas.hansson@arm.com# This device exists only because there are some devices that I don't
411051Sandreas.hansson@arm.com# want to have a Platform parameter because it would cause a cycle in
511051Sandreas.hansson@arm.com# the C++ that cannot be easily solved.
611051Sandreas.hansson@arm.com#
711051Sandreas.hansson@arm.com# The real solution to this problem is to pass the ParamXXX structure
811051Sandreas.hansson@arm.com# to the constructor, but with the express condition that SimObject
911051Sandreas.hansson@arm.com# parameter values are not to be available at construction time.  If
1011051Sandreas.hansson@arm.com# some further configuration must be done, it must be done during the
1111051Sandreas.hansson@arm.com# initialization phase at which point all SimObject pointers will be
1211051Sandreas.hansson@arm.com# valid.
1311051Sandreas.hansson@arm.comsimobj FooPioDevice(FunctionalMemory):
1411051Sandreas.hansson@arm.com    type = 'PioDevice'
1511051Sandreas.hansson@arm.com    abstract = True
162810Srdreslin@umich.edu    addr = Param.Addr("Device Address")
172810Srdreslin@umich.edu    mmu = Param.MemoryController(Super, "Memory Controller")
182810Srdreslin@umich.edu    io_bus = Param.Bus(NULL, "The IO Bus to attach to")
192810Srdreslin@umich.edu    pio_latency = Param.Tick(1, "Programmed IO latency in bus cycles")
202810Srdreslin@umich.edu
212810Srdreslin@umich.edusimobj FooDmaDevice(FooPioDevice):
222810Srdreslin@umich.edu    type = 'DmaDevice'
232810Srdreslin@umich.edu    abstract = True
242810Srdreslin@umich.edu
252810Srdreslin@umich.edusimobj PioDevice(FooPioDevice):
262810Srdreslin@umich.edu    type = 'PioDevice'
272810Srdreslin@umich.edu    abstract = True
282810Srdreslin@umich.edu    platform = Param.Platform(Super, "Platform")
292810Srdreslin@umich.edu
302810Srdreslin@umich.edusimobj DmaDevice(PioDevice):
312810Srdreslin@umich.edu    type = 'DmaDevice'
322810Srdreslin@umich.edu    abstract = True
332810Srdreslin@umich.edu
342810Srdreslin@umich.edu