[ipgen] Add countermeasure check to IPgen

See #10071 for reference.

Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/util/ipgen/renderer.py b/util/ipgen/renderer.py
index d7bbf10..4231e74 100644
--- a/util/ipgen/renderer.py
+++ b/util/ipgen/renderer.py
@@ -13,6 +13,7 @@
 from mako import exceptions as mako_exceptions  # type: ignore
 from mako.lookup import TemplateLookup as MakoTemplateLookup  # type: ignore
 from reggen.ip_block import IpBlock
+from reggen.countermeasure import CounterMeasure
 
 from .lib import IpConfig, IpTemplate, TemplateParameter
 
@@ -267,10 +268,19 @@
                     f"{str(hjson_path)!r} does not exist.")
             rtl_path = output_dir_staging / 'rtl'
             rtl_path.mkdir(exist_ok=True)
+
+            obj = IpBlock.from_path(str(hjson_path), [])
+
+            # If this block has countermeasures, we grep for RTL annotations in
+            # all .sv implementation files and check whether they match up
+            # with what is defined inside the Hjson.
+            sv_files = rtl_path.glob('*.sv')
+            rtl_names = CounterMeasure.search_rtl_files(sv_files)
+            obj.check_cm_annotations(rtl_names, str(hjson_path))
+
             # TODO: Pass on template parameters to reggen? Or enable the user
             # to set a different set of parameters in the renderer?
-            reggen.gen_rtl.gen_rtl(IpBlock.from_path(str(hjson_path), []),
-                                   str(rtl_path))
+            reggen.gen_rtl.gen_rtl(obj, str(rtl_path))
 
             # Write IP configuration (to reproduce the generation process).
             # TODO: Should the ipconfig file be written to the instance name,