[dvsim] Update `tests` key behavior in regressions

This was encountered in #3040. The `common_sim_cfg.hjson` adds a
`sanity` regression target without specifying the `tests` key, with the
assumption that each individual IP's cfg hjson will update the `sanity`
regression with the required list of tests. In PR #3040, the sanity
tests in some of the IPs had to be commented out due to some other
issues. But on doing so, running `sanity` regression ended up adding ALL
available tests for regression for that particular DUT, since the `tests`
key remained empty list (originally intended behavior). This PR fixes
that behavior. So to sum up:

Previous behavior of the `tests` key was as follows:
- `tests` member of class `Regression` in `Modes.py` defaulted to empty
  list
- If in regressions (in the hjson), it continues to remain an empty
  list after all hjson source are parsed, then ALL available tests are
  run

New behavior is as follows:
- `tests` member of class `Regression` in `Modes.py` now defaults to
  `None`
- If in regressions (in the hjson) it is set to an empty list, and
  eventually remains an empty list after all hjson sources are parsed,
  then no tests are run
- If in regressions (in the hjson) it is entirely omitted, such that
  after all hjson sources are parsed, it continues to hold the value of
  `None`, the ALL available tests are run

Signed-off-by: Srikrishna Iyer <sriyer@google.com>
diff --git a/hw/dv/data/common_sim_cfg.hjson b/hw/dv/data/common_sim_cfg.hjson
index c3b4614..48a4286 100644
--- a/hw/dv/data/common_sim_cfg.hjson
+++ b/hw/dv/data/common_sim_cfg.hjson
@@ -112,23 +112,21 @@
   regressions: [
     {
       name: sanity
+      tests: []
       reseed: 1
     }
 
     {
       name: all
-      tests: []
     }
 
     {
       name: all_once
       reseed: 1
-      tests: []
     }
 
     {
       name: nightly
-      tests: []
       en_sim_modes: ["cov"]
     }
   ]
diff --git a/util/dvsim/Modes.py b/util/dvsim/Modes.py
index ac6ef6d..bf0243d 100644
--- a/util/dvsim/Modes.py
+++ b/util/dvsim/Modes.py
@@ -84,7 +84,7 @@
             self_attr_val = getattr(self, attr)
             mode_attr_val = getattr(mode, attr)
 
-            if type(self_attr_val) is list:
+            if type(self_attr_val) is list and type(mode_attr_val) is list:
                 self_attr_val.extend(mode_attr_val)
                 setattr(self, attr, self_attr_val)
 
@@ -422,7 +422,7 @@
         self.type = ""
         if not hasattr(self, "mname"):
             self.mname = "regression"
-        self.tests = []
+        self.tests = None
         self.reseed = None
         self.test_names = []
         self.excl_tests = []  # TODO: add support for this
@@ -520,7 +520,7 @@
                 regression_obj.run_opts.extend(run_mode_obj.run_opts)
 
             # Unpack tests
-            if regression_obj.tests == []:
+            if regression_obj.tests is None:
                 log.log(VERBOSE,
                         "Unpacking all tests in scope for regression \"%s\"",
                         regression_obj.name)