diff --git a/util/dvsim/Deploy.py b/util/dvsim/Deploy.py
index e61e687..7ec8494 100644
--- a/util/dvsim/Deploy.py
+++ b/util/dvsim/Deploy.py
@@ -12,6 +12,7 @@
 import shlex
 import sys
 import time
+from collections import OrderedDict
 
 import hjson
 from tabulate import tabulate
@@ -231,7 +232,7 @@
                                       " | awk '{print $2}'")
                     rm_dirs = rm_dirs.replace('\n', ' ')
                     dirs = dirs.replace(rm_dirs, "")
-                    os.system("/usr/bin/rm -rf " + rm_dirs)
+                    os.system("/bin/rm -rf " + rm_dirs)
         except IOError:
             log.error("Failed to delete old run directories!")
         return dirs
@@ -328,7 +329,7 @@
             return "%02i:%02i:%02i" % (hh, mm, ss)
 
         def dispatch_items(items):
-            item_names = {}
+            item_names = OrderedDict()
             for item in items:
                 if item.target not in item_names.keys():
                     item_names[item.target] = ""
@@ -346,7 +347,7 @@
             all_done = True
             for target in status.keys():
                 if "target_done" in status[target].keys(): continue
-                stats = {}
+                stats = OrderedDict()
                 stats["Q"] = 0
                 stats["D"] = 0
                 stats["P"] = 0
@@ -372,14 +373,14 @@
             return all_done
 
         all_done = False
-        status = {}
+        status = OrderedDict()
         print_status_flag = True
 
         # Queue all items
         queued_items.extend(items)
         for item in queued_items:
             if item.target not in status.keys():
-                status[item.target] = {}
+                status[item.target] = OrderedDict()
             status[item.target][item] = "Q"
 
         while not all_done:
@@ -403,7 +404,7 @@
                         queued_items.extend(item.sub)
                         for sub_item in item.sub:
                             if sub_item.target not in status.keys():
-                                status[sub_item.target] = {}
+                                status[sub_item.target] = OrderedDict()
                             status[sub_item.target][sub_item] = "Q"
                 status[item.target][item] = item.status
 
@@ -615,7 +616,7 @@
             if os.path.exists(self.cov_db_test_dir):
                 log.log(VERBOSE, "Deleting coverage data of failing test:\n%s",
                         self.cov_db_test_dir)
-                os.system("/usr/bin/rm -rf " + self.cov_db_test_dir)
+                os.system("/bin/rm -rf " + self.cov_db_test_dir)
 
     @staticmethod
     def get_seed():
diff --git a/util/dvsim/OneShotCfg.py b/util/dvsim/OneShotCfg.py
index a4d94fc..28a8887 100644
--- a/util/dvsim/OneShotCfg.py
+++ b/util/dvsim/OneShotCfg.py
@@ -7,6 +7,7 @@
 
 import logging as log
 import sys
+from collections import OrderedDict
 
 from Deploy import *
 from FlowCfg import FlowCfg
@@ -52,8 +53,8 @@
         self.regressions = []
 
         # Flow results
-        self.result = {}
-        self.result_summary = {}
+        self.result = OrderedDict()
+        self.result_summary = OrderedDict()
 
         self.dry_run = args.dry_run
 
diff --git a/util/dvsim/SimCfg.py b/util/dvsim/SimCfg.py
index e0d04a5..c70c075 100644
--- a/util/dvsim/SimCfg.py
+++ b/util/dvsim/SimCfg.py
@@ -7,6 +7,7 @@
 
 import logging as log
 import sys
+from collections import OrderedDict
 
 from testplanner import class_defs, testplan_utils
 
@@ -94,7 +95,7 @@
         self.deploy = []
         self.cov_merge_deploy = None
         self.cov_report_deploy = None
-        self.results_summary = {}
+        self.results_summary = OrderedDict()
 
         # If is_master_cfg is set, then each cfg will have its own cov_deploy.
         # Maintain an array of those in cov_deploys.
@@ -504,6 +505,8 @@
                 results_str += self.cov_report_deploy.cov_results
                 self.results_summary[
                     "Coverage"] = self.cov_report_deploy.cov_total
+            else:
+                self.results_summary["Coverage"] = "--"
 
             # append link of detail result to block name
             self.results_summary["Name"] = self._get_results_page_link(
@@ -534,7 +537,8 @@
             row = []
             for title in item.results_summary:
                 row.append(item.results_summary[title])
-            if row != []: table.append(row)
+            if row == []: continue
+            table.append(row)
         self.results_summary_md = "## " + self.results_title + " (Summary)\n"
         self.results_summary_md += "### " + self.timestamp_long + "\n"
         self.results_summary_md += tabulate(table,
diff --git a/util/dvsim/testplanner/class_defs.py b/util/dvsim/testplanner/class_defs.py
index b7a2522..a7c9eed 100644
--- a/util/dvsim/testplanner/class_defs.py
+++ b/util/dvsim/testplanner/class_defs.py
@@ -6,6 +6,7 @@
 
 import re
 import sys
+from collections import OrderedDict
 
 import mistletoe
 from tabulate import tabulate
@@ -161,7 +162,7 @@
     def __init__(self, name):
         self.name = name
         self.entries = []
-        self.results_summary = {}
+        self.results_summary = OrderedDict()
         self.results = ""
 
         if name == "":
