blob: 9700c3d5722fbad397584cc255e29b121ef67d7a [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
${gencmd}
<%
def make_blocked_sv_literal(hexstr, randwidth):
"""This chops the random hexstring into manageable blocks of 64 chars such that the
lines do not get too long.
"""
# Make all-caps and drop '0x' preamble
hexstr = str(hexstr[2:]).upper()
# Block width in hex chars
blockwidth = 64
remainder = randwidth % (4*blockwidth)
numbits = remainder if remainder else 4*blockwidth
idx = 0
hexblocks = []
while randwidth > 0:
hexstr = hexstr[idx:]
randwidth -= numbits
idx = (numbits + 3) // 4
hexblocks.append(str(numbits) + "'h" + hexstr[0:idx])
numbits = 4*blockwidth
return hexblocks
%>
package top_${top["name"]}_rnd_cnst_pkg;
% for m in top["module"]:
% for p in filter(lambda p: p.get("randtype") in ["data", "perm"], m["param_list"]):
% if loop.first:
////////////////////////////////////////////
// ${m['name']}
////////////////////////////////////////////
% endif
// ${p['desc']}
parameter ${p["type"]} ${p["name_top"]} = {
% for block in make_blocked_sv_literal(p["default"], p["randwidth"]):
${block}${"" if loop.last else ","}
% endfor
};
% endfor
% endfor
endpackage : top_${top["name"]}_rnd_cnst_pkg