2005-01-15 10:12:25 +01:00
|
|
|
from FunctionalMemory import FunctionalMemory
|
|
|
|
|
|
|
|
# This device exists only because there are some devices that I don't
|
|
|
|
# want to have a Platform parameter because it would cause a cycle in
|
|
|
|
# the C++ that cannot be easily solved.
|
|
|
|
#
|
|
|
|
# The real solution to this problem is to pass the ParamXXX structure
|
|
|
|
# to the constructor, but with the express condition that SimObject
|
|
|
|
# parameter values are not to be available at construction time. If
|
|
|
|
# some further configuration must be done, it must be done during the
|
|
|
|
# initialization phase at which point all SimObject pointers will be
|
|
|
|
# valid.
|
|
|
|
simobj FooPioDevice(FunctionalMemory):
|
|
|
|
type = 'PioDevice'
|
2005-02-03 03:13:01 +01:00
|
|
|
abstract = True
|
2005-01-15 10:12:25 +01:00
|
|
|
addr = Param.Addr("Device Address")
|
2005-03-16 06:40:48 +01:00
|
|
|
mmu = Param.MemoryController(parent.any, "Memory Controller")
|
2005-01-15 10:12:25 +01:00
|
|
|
io_bus = Param.Bus(NULL, "The IO Bus to attach to")
|
|
|
|
pio_latency = Param.Tick(1, "Programmed IO latency in bus cycles")
|
|
|
|
|
|
|
|
simobj FooDmaDevice(FooPioDevice):
|
|
|
|
type = 'DmaDevice'
|
2005-02-03 03:13:01 +01:00
|
|
|
abstract = True
|
2005-01-15 10:12:25 +01:00
|
|
|
|
|
|
|
simobj PioDevice(FooPioDevice):
|
2005-02-03 03:13:01 +01:00
|
|
|
type = 'PioDevice'
|
2005-01-15 10:12:25 +01:00
|
|
|
abstract = True
|
2005-03-16 06:40:48 +01:00
|
|
|
platform = Param.Platform(parent.any, "Platform")
|
2005-01-15 10:12:25 +01:00
|
|
|
|
|
|
|
simobj DmaDevice(PioDevice):
|
2005-02-03 03:13:01 +01:00
|
|
|
type = 'DmaDevice'
|
2005-01-15 10:12:25 +01:00
|
|
|
abstract = True
|
|
|
|
|