Weicai Yang | a495d20 | 2019-12-05 15:36:27 -0800 | [diff] [blame^] | 1 | # Copyright lowRISC contributors. |
| 2 | # Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| 3 | # SPDX-License-Identifier: Apache-2.0 |
| 4 | |
| 5 | import logging as log |
| 6 | |
| 7 | from mako import exceptions |
| 8 | from mako.template import Template |
| 9 | from pkg_resources import resource_filename |
| 10 | |
| 11 | from .item import NodeType |
| 12 | from .xbar import Xbar |
| 13 | |
| 14 | |
| 15 | def generate_tb(xbar, dv_path): #xbar: Xbar -> str |
| 16 | # list all the generate files for TB |
| 17 | tb_files = [ |
| 18 | "xbar_env_pkg__params.sv", "tb__xbar_connect.sv", "xbar.sim.core", |
| 19 | "xbar.bind.sv", "Makefile" |
| 20 | ] |
| 21 | |
| 22 | for fname in tb_files: |
| 23 | tpl = Template(filename=resource_filename('tlgen', fname + '.tpl')) |
| 24 | |
| 25 | # some files need to be renamed |
| 26 | if fname == "xbar.sim.core": |
| 27 | fname = "xbar_%s_sim.core" % (xbar.name) |
| 28 | elif fname == "xbar.bind.sv": |
| 29 | fname = "xbar_%s_bind.sv" % (xbar.name) |
| 30 | |
| 31 | dv_filepath = dv_path / fname |
| 32 | with dv_filepath.open(mode='w', encoding='UTF-8') as fout: |
| 33 | try: |
| 34 | fout.write(tpl.render(xbar=xbar)) |
| 35 | except: |
| 36 | log.error(exceptions.text_error_template().render()) |