| # 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, library_name: str = "ip") -> 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_core_tpl = Template( | 
 |         filename=resource_filename('tlgen', 'xbar.core.tpl')) | 
 |     xbar_hjson_tpl = Template( | 
 |         filename=resource_filename('tlgen', 'xbar.hjson.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, | 
 |                                         library_name=library_name) | 
 |         out_hjson = xbar_hjson_tpl.render(xbar=xbar) | 
 |     except:  # noqa: E722 | 
 |         log.error(exceptions.text_error_template().render()) | 
 |  | 
 |     results = [] | 
 |     results.append(("rtl/autogen/xbar_%s.sv" % (xbar.name), out_rtl)) | 
 |     results.append(("rtl/autogen/tl_%s_pkg.sv" % (xbar.name), out_pkg)) | 
 |     results.append(("xbar_%s.core" % (xbar.name), out_core)) | 
 |     results.append(("data/autogen/xbar_%s.hjson" % (xbar.name), out_hjson)) | 
 |  | 
 |     return results |