CMSIS-DSP: Improvement to testing scripts
diff --git a/CMSIS/DSP/Testing/addToRegDB.py b/CMSIS/DSP/Testing/addToRegDB.py
index 3e7a54a..cf6297d 100755
--- a/CMSIS/DSP/Testing/addToRegDB.py
+++ b/CMSIS/DSP/Testing/addToRegDB.py
@@ -23,12 +23,13 @@
 MKINTFIELD=['ID','MAX']
 MKREALFIELD=['MAXREGCOEF']
 MKDATEFIELD=['DATE']
-MKKEYFIELD=['CATEGORY', 'PLATFORM', 'CORE', 'COMPILER','TYPE']
+MKKEYFIELD=['CATEGORY', 'PLATFORM', 'CORE', 'COMPILER','TYPE','RUN']
 MKKEYFIELDID={'CATEGORY':'categoryid', 
    'PLATFORM':'platformid', 
    'CORE':'coreid', 
    'COMPILER':'compilerid',
-   'TYPE':'typeid'}
+   'TYPE':'typeid',
+   'RUN':'runid'}
 
 # For table value extraction
 VALSTRFIELD=['NAME','VERSION','Regression']
@@ -58,7 +59,7 @@
   colsToKeep=[]
   cols = list(full.columns)
   params=diff(elem.params.full , elem.params.summary)
-  common = diff(cols + ["TYPE"] , ['OLDID'] + params)  
+  common = diff(cols + ["TYPE","RUN"] , ['OLDID'] + params)  
  
   for field in common:
        if field in MKSTRFIELD:
@@ -80,7 +81,7 @@
      sql = "CREATE TABLE %s (" % tableName
      cols = list(full.columns)
      params=diff(elem.params.full , elem.params.summary)
-     common = diff(cols + ["TYPE"] , ['OLDID'] + params)
+     common = diff(cols + ["TYPE","RUN"] , ['OLDID'] + params)
 
      sql += "%sid INTEGER PRIMARY KEY"  % (tableName)
      start = ","   
@@ -109,6 +110,7 @@
      sql += "FOREIGN KEY(platformid) REFERENCES PLATFORM(platformid),"
      sql += "FOREIGN KEY(coreid) REFERENCES CORE(coreid),"
      sql += "FOREIGN KEY(compilerid) REFERENCES COMPILER(compilerid)"
+     sql += "FOREIGN KEY(runid) REFERENCES RUN(runid)"
      sql += "  )"
      conn.execute(sql)
 
@@ -149,7 +151,7 @@
          return(None)
 
 
-def addRows(conn,elem,tableName,full):
+def addRows(conn,elem,tableName,full,runid=0):
    # List of columns we have in DB which is
    # different from the columns in the table
    compilerid = 0
@@ -218,7 +220,7 @@
         if field in VALBOOLFIELD:
             keys[field]=row[field]
         
-         
+       keys['RUN']=runid
        # Get foreign keys and create missing data
        for field in common:
         if field in VALKEYFIELD:
@@ -272,31 +274,34 @@
   conn.execute("INSERT INTO CONFIG(compilerid,platformid,coreid,date) VALUES(?,?,?,?)" ,(config['compilerid'],config['platformid'],config['coreid'],fullDate))
   conn.commit()
 
-def addOneBenchmark(elem,fullPath,db,group):
+def getGroup(a):
+    return(re.sub(r'^(.+)(F64|F32|F16|Q31|Q15|Q7|U32|U16|U8|S32|S16|S8)$',r'\1',a))
+
+def addOneBenchmark(elem,fullPath,db,group,runid):
    if os.path.isfile(fullPath):
       full=pd.read_csv(fullPath,dtype={'OLDID': str} ,keep_default_na = False)
       fullDate = datetime.datetime.now()
       full['DATE'] = fullDate
       if group:
-         tableName = group
+         tableName = getGroup(group)
       else:
-         tableName = elem.data["class"]
+         tableName = getGroup(elem.data["class"])
       conn = sqlite3.connect(db)
       createTableIfMissing(conn,elem,tableName,full)
-      config = addRows(conn,elem,tableName,full)
+      config = addRows(conn,elem,tableName,full,runid)
       addConfig(conn,config,fullDate)
       conn.close()
 
 
-def addToDB(benchmark,dbpath,elem,group):
+def addToDB(benchmark,dbpath,elem,group,runid):
   if not elem.data["deprecated"]:
      if elem.params:
          benchPath = os.path.join(benchmark,elem.fullPath(),"regression.csv")
          print("Processing %s" % benchPath)
-         addOneBenchmark(elem,benchPath,dbpath,group)
+         addOneBenchmark(elem,benchPath,dbpath,group,runid)
          
      for c in elem.children:
-       addToDB(benchmark,dbpath,c,group)
+       addToDB(benchmark,dbpath,c,group,runid)
 
 
 
@@ -306,6 +311,7 @@
 parser.add_argument('-b', nargs='?',type = str, default="FullBenchmark", help="Full Benchmark dir path")
 #parser.add_argument('-e', action='store_true', help="Embedded test")
 parser.add_argument('-o', nargs='?',type = str, default="reg.db", help="Regression benchmark database")
+parser.add_argument('-r', nargs='?',type = int, default=0, help="Run ID")
 
 parser.add_argument('others', nargs=argparse.REMAINDER)
 
@@ -321,7 +327,7 @@
       group=args.others[0] 
     else:
       group=None
-    addToDB(args.b,args.o,root,group)
+    addToDB(args.b,args.o,root,group,args.r)
     
 else:
     parser.print_help()
\ No newline at end of file