blob: 79fc4c7439731e21b7bed7af62064201d1217757 [file] [log] [blame]
lowRISC Contributors802543a2019-08-31 12:12:56 +01001# Copyright lowRISC contributors.
2# Licensed under the Apache License, Version 2.0, see LICENSE for details.
3# SPDX-License-Identifier: Apache-2.0
4
Timothy Chen09d859b2019-11-08 14:01:12 -08005import logging as log
Weicai Yangfd2c22e2020-02-11 18:37:14 -08006
Eunchan Kimcb28a172019-10-08 16:35:48 -07007from mako import exceptions
lowRISC Contributors802543a2019-08-31 12:12:56 +01008from mako.template import Template
9from pkg_resources import resource_filename
10
11from .item import NodeType
12from .xbar import Xbar
13
14
Eunchan Kim8f2cb382020-05-13 11:53:09 -070015def generate(xbar: Xbar, library_name: str = "ip") -> str:
lowRISC Contributors802543a2019-08-31 12:12:56 +010016 """generate uses elaborated model then creates top level Xbar module
17 with prefix.
18 """
19
20 xbar_rtl_tpl = Template(
Michael Schaffnerc7039362019-10-22 16:16:06 -070021 filename=resource_filename('tlgen', 'xbar.rtl.sv.tpl'))
lowRISC Contributors802543a2019-08-31 12:12:56 +010022 xbar_pkg_tpl = Template(
Michael Schaffnerc7039362019-10-22 16:16:06 -070023 filename=resource_filename('tlgen', 'xbar.pkg.sv.tpl'))
Weicai Yanga495d202019-12-05 15:36:27 -080024 xbar_core_tpl = Template(
25 filename=resource_filename('tlgen', 'xbar.core.tpl'))
Eunchan Kim9191f262020-07-30 16:37:40 -070026 xbar_hjson_tpl = Template(
27 filename=resource_filename('tlgen', 'xbar.hjson.tpl'))
Eunchan Kimcb28a172019-10-08 16:35:48 -070028 try:
29 out_rtl = xbar_rtl_tpl.render(xbar=xbar, ntype=NodeType)
30 out_pkg = xbar_pkg_tpl.render(xbar=xbar)
Eunchan Kim8f2cb382020-05-13 11:53:09 -070031 out_core = xbar_core_tpl.render(xbar=xbar,
32 ntype=NodeType,
33 library_name=library_name)
Eunchan Kim9191f262020-07-30 16:37:40 -070034 out_hjson = xbar_hjson_tpl.render(xbar=xbar)
Eunchan Kim837c7962020-04-30 12:15:49 -070035 except: # noqa: E722
Eunchan Kimcb28a172019-10-08 16:35:48 -070036 log.error(exceptions.text_error_template().render())
37
Eunchan Kim9191f262020-07-30 16:37:40 -070038 results = []
39 results.append(("rtl/autogen/xbar_%s.sv" % (xbar.name), out_rtl))
40 results.append(("rtl/autogen/tl_%s_pkg.sv" % (xbar.name), out_pkg))
41 results.append(("xbar_%s.core" % (xbar.name), out_core))
42 results.append(("data/autogen/xbar_%s.hjson" % (xbar.name), out_hjson))
43
44 return results