ruby: Removed if else statement in create_system
authorBrad Beckmann <Brad.Beckmann@amd.com>
Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)
committerBrad Beckmann <Brad.Beckmann@amd.com>
Sat, 30 Jan 2010 04:29:33 +0000 (20:29 -0800)
Based on Steve's suggestion, the ugly if-elif statement and multiple protocol
module import calls are removed and replaced with exec statements using the
protocol string.

configs/ruby/Ruby.py

index 65adc152ea28efad3a812fb666336dbc46d5ce41..d6889ef1ac8e1967114204b19d921fed43f5c875 100644 (file)
@@ -32,50 +32,20 @@ from m5.objects import *
 from m5.defines import buildEnv
 from m5.util import addToPath
 
-import MOESI_hammer
-import MESI_CMP_directory
-import MOESI_CMP_directory
-import MI_example
-import MOESI_CMP_token
+protocol = buildEnv['PROTOCOL']
 
-def create_system(options, physmem, piobus = None, dma_devices = []):
+exec "import %s" % protocol
 
-    protocol = buildEnv['PROTOCOL']
+def create_system(options, physmem, piobus = None, dma_devices = []):
 
-    if protocol == "MOESI_hammer":
-        (cpu_sequencers, dir_cntrls, all_cntrls) = \
-            MOESI_hammer.create_system(options, \
-                                       physmem, \
-                                       piobus, \
-                                       dma_devices)
-    elif protocol == "MESI_CMP_directory":
-        (cpu_sequencers, dir_cntrls, all_cntrls) = \
-            MESI_CMP_directory.create_system(options, \
-                                             physmem, \
-                                             piobus, \
-                                             dma_devices)
-    elif protocol == "MOESI_CMP_directory":
+    try:
         (cpu_sequencers, dir_cntrls, all_cntrls) = \
-            MOESI_CMP_directory.create_system(options, \
-                                          physmem, \
-                                          piobus, \
-                                          dma_devices)
-    elif protocol == "MI_example":
-        (cpu_sequencers, dir_cntrls, all_cntrls) = \
-            MI_example.create_system(options, \
-                                     physmem, \
-                                     piobus, \
-                                     dma_devices)
-    elif protocol == "MOESI_CMP_token":
-        (cpu_sequencers, dir_cntrls, all_cntrls) = \
-            MOESI_CMP_token.create_system(options, \
-                                          physmem, \
-                                          piobus, \
-                                          dma_devices)
-    else:
-         print "Error: unsupported ruby protocol"
-         sys.exit(1)
-
+          eval("%s.create_system(options, physmem, piobus, dma_devices)" \
+               % protocol)
+    except:
+        print "Error: could not create sytem for ruby protocol %s" % protocol
+        sys.exit(1)
+        
     #
     # Important: the topology constructor must be called before the network
     # constructor.