[xbar/dv] xbar TB automation
Generate xbar TB by tlgen and move common xbar TB to hw/sv/xbar_dv
Signed-off-by: Weicai Yang <weicai@google.com>
diff --git a/util/tlgen/generate_tb.py b/util/tlgen/generate_tb.py
new file mode 100644
index 0000000..91e41f2
--- /dev/null
+++ b/util/tlgen/generate_tb.py
@@ -0,0 +1,36 @@
+# Copyright lowRISC contributors.
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+
+import logging as log
+
+from mako import exceptions
+from mako.template import Template
+from pkg_resources import resource_filename
+
+from .item import NodeType
+from .xbar import Xbar
+
+
+def generate_tb(xbar, dv_path): #xbar: Xbar -> str
+ # list all the generate files for TB
+ tb_files = [
+ "xbar_env_pkg__params.sv", "tb__xbar_connect.sv", "xbar.sim.core",
+ "xbar.bind.sv", "Makefile"
+ ]
+
+ for fname in tb_files:
+ tpl = Template(filename=resource_filename('tlgen', fname + '.tpl'))
+
+ # some files need to be renamed
+ if fname == "xbar.sim.core":
+ fname = "xbar_%s_sim.core" % (xbar.name)
+ elif fname == "xbar.bind.sv":
+ fname = "xbar_%s_bind.sv" % (xbar.name)
+
+ dv_filepath = dv_path / fname
+ with dv_filepath.open(mode='w', encoding='UTF-8') as fout:
+ try:
+ fout.write(tpl.render(xbar=xbar))
+ except:
+ log.error(exceptions.text_error_template().render())