[prim] Make prim_clock_inverter a tech specific prim

Signed-off-by: Michael Schaffner <msf@google.com>
diff --git a/hw/ip/prim/prim.core b/hw/ip/prim/prim.core
index f9c7779..eee3a5d 100644
--- a/hw/ip/prim/prim.core
+++ b/hw/ip/prim/prim.core
@@ -18,7 +18,6 @@
       - lowrisc:prim:flop
       - lowrisc:prim:flop_2sync
     files:
-      - rtl/prim_clock_inverter.sv
       - rtl/prim_clock_gating_sync.sv
       - rtl/prim_alert_pkg.sv
       - rtl/prim_alert_receiver.sv
diff --git a/hw/ip/prim/prim_clock_inv.core b/hw/ip/prim/prim_clock_inv.core
new file mode 100644
index 0000000..96227eb
--- /dev/null
+++ b/hw/ip/prim/prim_clock_inv.core
@@ -0,0 +1,25 @@
+CAPI=2:
+# Copyright lowRISC contributors.
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+
+name: "lowrisc:prim:clock_inv"
+description: "Clock inverter with scanmode bypass mux"
+filesets:
+  primgen_dep:
+    depend:
+      - lowrisc:prim:prim_pkg
+      - lowrisc:prim:primgen
+
+generate:
+  impl:
+    generator: primgen
+    parameters:
+      prim_name: clock_inv
+
+targets:
+  default:
+    filesets:
+      - primgen_dep
+    generate:
+      - impl
diff --git a/hw/ip/prim_generic/prim_generic_clock_inv.core b/hw/ip/prim_generic/prim_generic_clock_inv.core
new file mode 100644
index 0000000..b606644
--- /dev/null
+++ b/hw/ip/prim_generic/prim_generic_clock_inv.core
@@ -0,0 +1,45 @@
+CAPI=2:
+# Copyright lowRISC contributors.
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+
+name: "lowrisc:prim_generic:clock_inv"
+description: "Clock inverter with scanmode bypass mux"
+filesets:
+  files_rtl:
+    depend:
+      - lowrisc:prim:assert
+      - lowrisc:prim:clock_mux2
+    files:
+      - rtl/prim_generic_clock_inv.sv
+    file_type: systemVerilogSource
+
+  files_verilator_waiver:
+    depend:
+      # common waivers
+      - lowrisc:lint:common
+    files:
+      # - lint/prim_generic_clock_inv.vlt
+    file_type: vlt
+
+  files_ascentlint_waiver:
+    depend:
+      # common waivers
+      - lowrisc:lint:common
+    files:
+      # - lint/prim_generic_clock_inv.waiver
+    file_type: waiver
+
+  files_veriblelint_waiver:
+    depend:
+      # common waivers
+      - lowrisc:lint:common
+      - lowrisc:lint:comportable
+
+targets:
+  default:
+    filesets:
+      - tool_verilator   ? (files_verilator_waiver)
+      - tool_ascentlint  ? (files_ascentlint_waiver)
+      - tool_veriblelint ? (files_veriblelint_waiver)
+      - files_rtl
diff --git a/hw/ip/prim/rtl/prim_clock_inverter.sv b/hw/ip/prim_generic/rtl/prim_generic_clock_inv.sv
similarity index 69%
rename from hw/ip/prim/rtl/prim_clock_inverter.sv
rename to hw/ip/prim_generic/rtl/prim_generic_clock_inv.sv
index 3113c55..ddae18a 100644
--- a/hw/ip/prim/rtl/prim_clock_inverter.sv
+++ b/hw/ip/prim_generic/rtl/prim_generic_clock_inv.sv
@@ -5,7 +5,7 @@
 // Clock inverter
 //   Varies on the process
 
-module prim_clock_inverter #(
+module prim_generic_clock_inv #(
   parameter bit HasScanMode = 1'b1
 ) (
   input        clk_i,
@@ -15,10 +15,10 @@
 
   if (HasScanMode) begin : gen_scan
     prim_clock_mux2 i_dft_tck_mux (
-     .clk0_i ( ~clk_i     ),
-     .clk1_i ( clk_i      ), // bypass the inverted clock for testing
-     .sel_i  ( scanmode_i ),
-     .clk_o  ( clk_no     )
+      .clk0_i ( ~clk_i     ),
+      .clk1_i ( clk_i      ), // bypass the inverted clock for testing
+      .sel_i  ( scanmode_i ),
+      .clk_o  ( clk_no     )
     );
   end else begin : gen_noscan
     logic unused_scanmode;
@@ -26,4 +26,4 @@
     assign clk_no = ~clk_i;
   end
 
-endmodule
+endmodule : prim_generic_clock_inv
diff --git a/hw/ip/spi_device/rtl/spi_device.sv b/hw/ip/spi_device/rtl/spi_device.sv
index 3e9b7b5..f7f9ed1 100644
--- a/hw/ip/spi_device/rtl/spi_device.sv
+++ b/hw/ip/spi_device/rtl/spi_device.sv
@@ -314,7 +314,7 @@
   logic sck_n;
   logic rst_spi_n;
 
-  prim_clock_inverter u_clk_spi (.clk_i(cio_sck_i), .clk_no(sck_n), .scanmode_i);
+  prim_clock_inv u_clk_spi (.clk_i(cio_sck_i), .clk_no(sck_n), .scanmode_i);
   assign clk_spi_in  = (cpha ^ cpol) ? sck_n    : cio_sck_i   ;
   assign clk_spi_out = (cpha ^ cpol) ? cio_sck_i    : sck_n   ;
 
diff --git a/hw/ip/spi_device/spi_device.core b/hw/ip/spi_device/spi_device.core
index 6938161..6fcc6d8 100644
--- a/hw/ip/spi_device/spi_device.core
+++ b/hw/ip/spi_device/spi_device.core
@@ -11,6 +11,7 @@
       - lowrisc:ip:tlul
       - lowrisc:prim:all
       - lowrisc:prim:clock_gating
+      - lowrisc:prim:clock_inv
       - lowrisc:prim:ram_2p_adv
     files:
       - rtl/spi_device_reg_pkg.sv