diff --git a/src/SConscript b/src/SConscript index 7eb810a9c2..e40262a75d 100644 --- a/src/SConscript +++ b/src/SConscript @@ -149,13 +149,21 @@ class SimObject(PySource): enums = dict() tags = dict() - def __init__(self, source, *, sim_objects=[], enums=[], + def __init__(self, source, *, sim_objects=None, enums=None, tags=None, add_tags=None): '''Specify the source file and any tags (automatically in the m5.objects package)''' + if sim_objects is None: + if enums is None: + error(f"SimObject({source}...) must list c++ sim_objects or " + "enums (set either to [] if there are none).") + sim_objects = [] + if enums is None: + enums = [] + super().__init__('m5.objects', source, tags, add_tags) if self.fixed: - raise AttributeError("Too late to call SimObject now.") + error("Too late to call SimObject now.") SimObject.sim_objects[self.modpath] = sim_objects SimObject.enums[self.modpath] = enums diff --git a/src/cpu/o3/SConscript b/src/cpu/o3/SConscript index a20e30d42d..ba021a892a 100755 --- a/src/cpu/o3/SConscript +++ b/src/cpu/o3/SConscript @@ -32,7 +32,7 @@ Import('*') if 'O3CPU' in env['CPU_MODELS']: SimObject('FUPool.py', sim_objects=['FUPool']) - SimObject('FuncUnitConfig.py') + SimObject('FuncUnitConfig.py', sim_objects=[]) SimObject('O3CPU.py', sim_objects=['O3CPU'], enums=[ 'SMTFetchPolicy', 'SMTQueuePolicy', 'CommitPolicy']) diff --git a/src/dev/SConscript b/src/dev/SConscript index db3163e76f..755ddb541a 100644 --- a/src/dev/SConscript +++ b/src/dev/SConscript @@ -35,7 +35,7 @@ Source('isa_fake.cc') Source('dma_device.cc') Source('dma_virt_device.cc') -SimObject('IntPin.py') +SimObject('IntPin.py', sim_objects=[]) Source('intpin.cc') DebugFlag('IsaFake') diff --git a/src/systemc/SConscript b/src/systemc/SConscript index ef7e79b69d..57cb1d947d 100644 --- a/src/systemc/SConscript +++ b/src/systemc/SConscript @@ -32,4 +32,4 @@ env.UseSystemcCheck(warn=True) env.Append(CPPPATH=Dir('ext')) -SimObject('Tlm.py') +SimObject('Tlm.py', sim_objects=[])