[topgen] Improve matching of prefix when renaming parameters
Topgen moves parameter prefixes like `Sec`, `RndCnst` and `MemSize` to
the beginning when generating the top-level parameter names. This messed
up the parameter `SecureIbex` which became `SecRvCoreIbexureIbex` in the
top level. With this commit, prefixes are only moved if they are
followed by an upper case letter. The parameter in the top level thus
becomes `RvCoreIbexSecureIbex`.
Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index 238033b..5fe50a9 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -5859,7 +5859,7 @@
type: bit
default: "1"
expose: "true"
- name_top: SecRvCoreIbexureIbex
+ name_top: RvCoreIbexSecureIbex
}
{
name: DmHaltAddr
diff --git a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_cw310.sv b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_cw310.sv
index 974b01f..6fb96dc 100644
--- a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_cw310.sv
+++ b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_cw310.sv
@@ -758,7 +758,7 @@
.RomCtrlBootRomInitFile(BootRomInitFile),
.RvCoreIbexRegFile(ibex_pkg::RegFileFPGA),
.RvCoreIbexPipeLine(1),
- .SecRvCoreIbexureIbex(0),
+ .RvCoreIbexSecureIbex(0),
.SramCtrlRetAonInstrExec(0),
.SramCtrlMainInstrExec(1),
.PinmuxAonTargetCfg(PinmuxTargetCfg)
diff --git a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
index 1950931..c5e834c 100644
--- a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
+++ b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
@@ -742,7 +742,7 @@
.RomCtrlBootRomInitFile(BootRomInitFile),
.RvCoreIbexRegFile(ibex_pkg::RegFileFPGA),
.RvCoreIbexPipeLine(1),
- .SecRvCoreIbexureIbex(0),
+ .RvCoreIbexSecureIbex(0),
.SramCtrlRetAonInstrExec(0),
.SramCtrlMainInstrExec(1),
.PinmuxAonTargetCfg(PinmuxTargetCfg)
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index a12318d..95977c4 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -88,7 +88,7 @@
parameter bit RvCoreIbexICacheECC = 1,
parameter bit RvCoreIbexBranchPredictor = 0,
parameter bit RvCoreIbexDbgTriggerEn = 1,
- parameter bit SecRvCoreIbexureIbex = 1,
+ parameter bit RvCoreIbexSecureIbex = 1,
parameter int unsigned RvCoreIbexDmHaltAddr =
tl_main_pkg::ADDR_SPACE_RV_DM__ROM + dm::HaltAddress[31:0],
parameter int unsigned RvCoreIbexDmExceptionAddr =
@@ -2389,7 +2389,7 @@
.ICacheECC(RvCoreIbexICacheECC),
.BranchPredictor(RvCoreIbexBranchPredictor),
.DbgTriggerEn(RvCoreIbexDbgTriggerEn),
- .SecureIbex(SecRvCoreIbexureIbex),
+ .SecureIbex(RvCoreIbexSecureIbex),
.DmHaltAddr(RvCoreIbexDmHaltAddr),
.DmExceptionAddr(RvCoreIbexDmExceptionAddr),
.PipeLine(RvCoreIbexPipeLine)
diff --git a/util/topgen/merge.py b/util/topgen/merge.py
index c3a69bf..c28ae05 100644
--- a/util/topgen/merge.py
+++ b/util/topgen/merge.py
@@ -4,6 +4,7 @@
import logging as log
import random
+import re
from collections import OrderedDict
from copy import deepcopy
from math import ceil, log2
@@ -107,9 +108,17 @@
param_prefixes = ["Sec", "RndCnst", "MemSize"]
name_top = cc_mod_name + param.name
for prefix in param_prefixes:
- if param.name.lower().startswith(prefix.lower()):
- name_top = (prefix + cc_mod_name +
- param.name[len(prefix):])
+ if not param.name.startswith(prefix):
+ continue
+ else:
+ if param.name == prefix:
+ raise ValueError(f'Module instance {mod_name} has a '
+ f'parameter {param.name} that is equal '
+ f'to prefix {prefix}.')
+
+ if re.match(prefix + '[A-Z].+$', param.name):
+ name_top = (prefix + cc_mod_name +
+ param.name[len(prefix):])
break
new_param['name_top'] = name_top
diff --git a/util/topgen/templates/chiplevel.sv.tpl b/util/topgen/templates/chiplevel.sv.tpl
index e6ee5cc..58c9a43 100644
--- a/util/topgen/templates/chiplevel.sv.tpl
+++ b/util/topgen/templates/chiplevel.sv.tpl
@@ -1097,7 +1097,7 @@
.RomCtrlBootRomInitFile(BootRomInitFile),
.RvCoreIbexRegFile(ibex_pkg::RegFileFPGA),
.RvCoreIbexPipeLine(1),
- .SecRvCoreIbexureIbex(0),
+ .RvCoreIbexSecureIbex(0),
.SramCtrlRetAonInstrExec(0),
.SramCtrlMainInstrExec(1),
.PinmuxAonTargetCfg(PinmuxTargetCfg)