blob: d29c562bb273b2be5c6a2353079646d5a68f3304 [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
# # Lint as: python3
#
"""Generate FPV CSR read and write assertions from validated register JSON tree
"""
import logging as log
from mako import exceptions
from mako.template import Template
from pkg_resources import resource_filename
from .access import HwAccess, SwRdAccess, SwWrAccess
from .gen_rtl import json_to_reg
# function get write property name
def wpname(r):
return r.name + "_wr_p"
# function get read property name
def rpname(r):
return r.name + "_rd_p"
def gen_fpv(obj, outdir):
# obj: OrderedDict
block = json_to_reg(obj)
gen_assertion(block, outdir)
def gen_assertion(block, outdir):
# Read Register templates
fpv_csr_tpl = Template(
filename=resource_filename('reggen', 'fpv_csr.sv.tpl'))
# Generate pkg.sv with block name
with open(outdir + "/" + block.name + "_csr_assert_fpv.sv", 'w') as fout:
try:
fout.write(
fpv_csr_tpl.render(block=block,
HwAccess=HwAccess,
SwRdAccess=SwRdAccess,
SwWrAccess=SwWrAccess))
except: # noqa: 722
log.error(exceptions.text_error_template().render())
return 1
return 0