blob: de03be978173f962a016d40d94c1309d7abd88fa [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// tl_${xbar.name} package generated by `tlgen.py` tool
<%
unames = [x.name.replace('.', '__').upper() for x in xbar.devices]
name_len = max([len(un) for un in unames])
%>\
package tl_${xbar.name}_pkg;
% for uname, device in zip(unames, xbar.devices):
<%
lname = uname.ljust(name_len)
%>\
## Address
% if device.xbar == False:
localparam logic [31:0] ADDR_SPACE_${lname} = 32'h ${"%08x" % device.addr_range[0][0]};
% else:
## Xbar device
localparam logic [${len(device.addr_range)-1}:0][31:0] ADDR_SPACE_${lname} = {
% for addr in list(reversed(device.addr_range)):
32'h ${"%08x" % addr[0]}${"," if not loop.last else ""}
% endfor
};
% endif
% endfor
% for uname, device in zip(unames, xbar.devices):
<%
lname = uname.ljust(name_len)
%>\
## Mask
% if device.xbar == False:
localparam logic [31:0] ADDR_MASK_${lname} = 32'h ${"%08x" % (device.addr_range[0][1] - device.addr_range[0][0])};
% else:
## Xbar
localparam logic [${len(device.addr_range)-1}:0][31:0] ADDR_MASK_${lname} = {
% for addr in list(reversed(device.addr_range)):
32'h ${"%08x" % (addr[1] - addr[0])}${"," if not loop.last else ""}
% endfor
};
% endif
% endfor
localparam int N_HOST = ${len(xbar.hosts)};
localparam int N_DEVICE = ${len(xbar.devices)};
typedef enum int {
% for device in xbar.devices:
## Create enum type for hosts( or blocks) connecting to the device
## Device Node has one upstream port. So tl_device_h2d can be directly used
<%
u_name = ''.join(device.name.title().replace('.', '_').split('_'));
%>\
% if loop.last:
Tl${u_name} = ${loop.index}
% else:
Tl${u_name} = ${loop.index},
% endif
% endfor
} tl_device_e;
typedef enum int {
% for host in xbar.hosts:
## Create enum type for downstream connecting to each host
## Host Node has one downstream port. so tl_host_h2d can be directly used
<%
u_name = ''.join(host.name.title().replace('.', '_').split('_'));
%>\
% if loop.last:
Tl${u_name} = ${loop.index}
% else:
Tl${u_name} = ${loop.index},
% endif
% endfor
} tl_host_e;
endpackage