[tlgen] Revise core file template to be unique

Xbar can be generated in multiple top. Now it accepts the library name
in VLNV format. So topgen can create core file with `top_earlgrey` or
something else for another top.

Signed-off-by: Eunchan Kim <eunchan@opentitan.org>
diff --git a/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_main_sim.core b/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_main_sim.core
index 69d1515..f011f57 100644
--- a/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_main_sim.core
+++ b/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_main_sim.core
@@ -9,7 +9,7 @@
 filesets:
   files_dv:
     depend:
-      - lowrisc:ip:xbar_main
+      - lowrisc:top_earlgrey:xbar_main
       - lowrisc:dv:dv_utils
       - lowrisc:dv:xbar_tb
       - lowrisc:dv:xbar_main_bind
diff --git a/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.core b/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.core
index ae5f028..c76aa9e 100644
--- a/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.core
+++ b/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.core
@@ -4,7 +4,7 @@
 # SPDX-License-Identifier: Apache-2.0
 #
 # xbar_main core file generated by `tlgen.py` tool
-name: "lowrisc:ip:xbar_main:0.1"
+name: "lowrisc:top_earlgrey:xbar_main:0.1"
 description: "Generated RTL xbar_main"
 
 filesets:
diff --git a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_peri_sim.core b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_peri_sim.core
index 2612b89..53240b0 100644
--- a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_peri_sim.core
+++ b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_peri_sim.core
@@ -9,7 +9,7 @@
 filesets:
   files_dv:
     depend:
-      - lowrisc:ip:xbar_peri
+      - lowrisc:top_earlgrey:xbar_peri
       - lowrisc:dv:dv_utils
       - lowrisc:dv:xbar_tb
       - lowrisc:dv:xbar_peri_bind
diff --git a/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/xbar_peri.core b/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/xbar_peri.core
index 8aea20f..fd455a5 100644
--- a/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/xbar_peri.core
+++ b/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/xbar_peri.core
@@ -4,7 +4,7 @@
 # SPDX-License-Identifier: Apache-2.0
 #
 # xbar_peri core file generated by `tlgen.py` tool
-name: "lowrisc:ip:xbar_peri:0.1"
+name: "lowrisc:top_earlgrey:xbar_peri:0.1"
 description: "Generated RTL xbar_peri"
 
 filesets:
diff --git a/hw/top_earlgrey/top_earlgrey.core b/hw/top_earlgrey/top_earlgrey.core
index 32c681d..227174f 100644
--- a/hw/top_earlgrey/top_earlgrey.core
+++ b/hw/top_earlgrey/top_earlgrey.core
@@ -33,8 +33,8 @@
       - lowrisc:constants:top_pkg
       - lowrisc:ip:nmi_gen
       - lowrisc:ip:usbdev
-      - lowrisc:ip:xbar_main
-      - lowrisc:ip:xbar_peri
+      - lowrisc:top_earlgrey:xbar_main
+      - lowrisc:top_earlgrey:xbar_peri
       - lowrisc:ip:rstmgr
       - lowrisc:tlul:headers
       - lowrisc:prim:all
diff --git a/util/tlgen/generate.py b/util/tlgen/generate.py
index ff2a177..0f97bff 100644
--- a/util/tlgen/generate.py
+++ b/util/tlgen/generate.py
@@ -12,7 +12,7 @@
 from .xbar import Xbar
 
 
-def generate(xbar: Xbar) -> str:
+def generate(xbar: Xbar, library_name: str = "ip") -> str:
     """generate uses elaborated model then creates top level Xbar module
     with prefix.
     """
@@ -27,7 +27,9 @@
     try:
         out_rtl = xbar_rtl_tpl.render(xbar=xbar, ntype=NodeType)
         out_pkg = xbar_pkg_tpl.render(xbar=xbar)
-        out_core = xbar_core_tpl.render(xbar=xbar, ntype=NodeType)
+        out_core = xbar_core_tpl.render(xbar=xbar,
+                                        ntype=NodeType,
+                                        library_name=library_name)
     except:  # noqa: E722
         log.error(exceptions.text_error_template().render())
 
diff --git a/util/tlgen/generate_tb.py b/util/tlgen/generate_tb.py
index 5fc0674..68aa68b 100644
--- a/util/tlgen/generate_tb.py
+++ b/util/tlgen/generate_tb.py
@@ -12,7 +12,9 @@
 from .xbar import Xbar
 
 
-def generate_tb(xbar: Xbar, dv_path: Path) -> str:  # xbar: Xbar -> str
+def generate_tb(xbar: Xbar,
+                dv_path: Path,
+                library_name: str = "ip") -> str:  # xbar: Xbar -> str
     # list all the generate files for TB
     tb_files = [
         "xbar_env_pkg__params.sv", "tb__xbar_connect.sv", "xbar.sim.core",
@@ -45,6 +47,6 @@
 
         with dv_filepath.open(mode='w', encoding='UTF-8') as fout:
             try:
-                fout.write(tpl.render(xbar=xbar))
+                fout.write(tpl.render(xbar=xbar, library_name=library_name))
             except:  # noqa: E722 for general exception handling
                 log.error(exceptions.text_error_template().render())
diff --git a/util/tlgen/xbar.core.tpl b/util/tlgen/xbar.core.tpl
index e2ed6fb..c3a0e3d 100644
--- a/util/tlgen/xbar.core.tpl
+++ b/util/tlgen/xbar.core.tpl
@@ -4,7 +4,7 @@
 # SPDX-License-Identifier: Apache-2.0
 #
 # xbar_${xbar.name} core file generated by `tlgen.py` tool
-name: "lowrisc:ip:xbar_${xbar.name}:0.1"
+name: "lowrisc:${library_name}:xbar_${xbar.name}:0.1"
 description: "Generated RTL xbar_${xbar.name}"
 
 filesets:
diff --git a/util/tlgen/xbar.sim.core.tpl b/util/tlgen/xbar.sim.core.tpl
index 1ae4a59..d027786 100644
--- a/util/tlgen/xbar.sim.core.tpl
+++ b/util/tlgen/xbar.sim.core.tpl
@@ -9,7 +9,7 @@
 filesets:
   files_dv:
     depend:
-      - lowrisc:ip:xbar_${xbar.name}
+      - lowrisc:${library_name}:xbar_${xbar.name}
       - lowrisc:dv:dv_utils
       - lowrisc:dv:xbar_tb
       - lowrisc:dv:xbar_${xbar.name}_bind
diff --git a/util/topgen.py b/util/topgen.py
index 0884e1f..ba52aa6 100755
--- a/util/topgen.py
+++ b/util/topgen.py
@@ -63,7 +63,8 @@
             log.error("Elaboration failed." + repr(xbar))
 
         try:
-            out_rtl, out_pkg, out_core = tlgen.generate(xbar)
+            out_rtl, out_pkg, out_core = tlgen.generate(
+                xbar, "top_" + top["name"])
         except:  # noqa: E722
             log.error(exceptions.text_error_template().render())
 
@@ -88,7 +89,7 @@
             fout.write(out_core)
 
         # generate testbench for xbar
-        tlgen.generate_tb(xbar, dv_path)
+        tlgen.generate_tb(xbar, dv_path, "top_" + top["name"])
 
 
 def generate_alert_handler(top, out_path):