| # 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(xbar): #xbar: Xbar -> str |
| """generate uses elaborated model then creates top level Xbar module |
| with prefix. |
| """ |
| |
| xbar_rtl_tpl = Template( |
| filename=resource_filename('tlgen', 'xbar.rtl.sv.tpl')) |
| xbar_pkg_tpl = Template( |
| filename=resource_filename('tlgen', 'xbar.pkg.sv.tpl')) |
| #xbar_dv_tpl = Template( |
| # filename=resource_filename('tlgen', 'xbar.dv.sv.tpl')) |
| xbar_core_tpl = Template( |
| filename=resource_filename('tlgen', 'xbar.core.tpl')) |
| |
| try: |
| out_rtl = xbar_rtl_tpl.render(xbar=xbar, ntype=NodeType) |
| out_pkg = xbar_pkg_tpl.render(xbar=xbar) |
| out_core = xbar_core_tpl.render(xbar=xbar, ntype=NodeType) |
| except: |
| log.error(exceptions.text_error_template().render()) |
| |
| return (out_rtl, out_pkg, out_core) |