[tool] Add nice debug info for Mako
Debugging Mako template error is quite hard. With this PR, at least it
gives the exact location in the template file when error occurs.
Reference: https://docs.makotemplates.org/en/latest/usage.html#handling-exceptions
diff --git a/util/reggen/gen_dv.py b/util/reggen/gen_dv.py
index 751a5df..3de9f0b 100644
--- a/util/reggen/gen_dv.py
+++ b/util/reggen/gen_dv.py
@@ -8,6 +8,7 @@
import operator
import sys
+from mako import exceptions
from mako.template import Template
from pkg_resources import resource_filename
@@ -57,8 +58,11 @@
# Generate pkg.sv with block name
with open(outdir + "/" + block.name + "_reg_block.sv", 'w') as fout:
- fout.write(
- uvm_reg_tpl.render(block=block,
- HwAccess=HwAccess,
- SwRdAccess=SwRdAccess,
- SwWrAccess=SwWrAccess))
+ try:
+ fout.write(
+ uvm_reg_tpl.render(block=block,
+ HwAccess=HwAccess,
+ SwRdAccess=SwRdAccess,
+ SwWrAccess=SwWrAccess))
+ except:
+ log.error(exceptions.text_error_template().render())
diff --git a/util/reggen/gen_rtl.py b/util/reggen/gen_rtl.py
index 3aaa949..14e1475 100644
--- a/util/reggen/gen_rtl.py
+++ b/util/reggen/gen_rtl.py
@@ -9,6 +9,7 @@
import sys
from mako.template import Template
+from mako import exceptions
from pkg_resources import resource_filename
from .data import *
@@ -185,17 +186,23 @@
# Generate pkg.sv with block name
with open(outdir + "/" + block.name + "_reg_pkg.sv", 'w',
encoding='UTF-8') as fout:
- fout.write(
- reg_pkg_tpl.render(block=block,
- HwAccess=HwAccess,
- SwRdAccess=SwRdAccess,
- SwWrAccess=SwWrAccess))
+ try:
+ fout.write(
+ reg_pkg_tpl.render(block=block,
+ HwAccess=HwAccess,
+ SwRdAccess=SwRdAccess,
+ SwWrAccess=SwWrAccess))
+ except:
+ log.error(exceptions.text_error_template().render())
# Generate top.sv
with open(outdir + "/" + block.name + "_reg_top.sv", 'w',
encoding='UTF-8') as fout:
- fout.write(
- reg_top_tpl.render(block=block,
- HwAccess=HwAccess,
- SwRdAccess=SwRdAccess,
- SwWrAccess=SwWrAccess))
+ try:
+ fout.write(
+ reg_top_tpl.render(block=block,
+ HwAccess=HwAccess,
+ SwRdAccess=SwRdAccess,
+ SwWrAccess=SwWrAccess))
+ except:
+ log.error(exceptions.text_error_template().render())