[prim_mubi*_sync] Remove explicit mux prim to improve coverage
See #16586
Signed-off-by: Michael Schaffner <msf@google.com>
diff --git a/hw/ip/prim/rtl/prim_mubi12_sync.sv b/hw/ip/prim/rtl/prim_mubi12_sync.sv
index 956f40c..30ee2d6 100644
--- a/hw/ip/prim/rtl/prim_mubi12_sync.sv
+++ b/hw/ip/prim/rtl/prim_mubi12_sync.sv
@@ -90,15 +90,10 @@
);
// if any xor indicates signal is unstable, output the reset
- // value.
- prim_clock_mux2 #(
- .NoFpgaBufG(1'b1)
- ) u_mux (
- .clk0_i(mubi_q[k]),
- .clk1_i(reset_value[k]),
- .sel_i(|sig_unstable_buf),
- .clk_o(mubi[k])
- );
+ // value. note that the input and output signals of this mux
+ // are driven/read by constrained primitive cells (regs, buffers),
+ // hence this mux can be implemented behaviorally.
+ assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
end
// Note regarding SVAs below:
diff --git a/hw/ip/prim/rtl/prim_mubi16_sync.sv b/hw/ip/prim/rtl/prim_mubi16_sync.sv
index ab46fbc..02be5a0 100644
--- a/hw/ip/prim/rtl/prim_mubi16_sync.sv
+++ b/hw/ip/prim/rtl/prim_mubi16_sync.sv
@@ -90,15 +90,10 @@
);
// if any xor indicates signal is unstable, output the reset
- // value.
- prim_clock_mux2 #(
- .NoFpgaBufG(1'b1)
- ) u_mux (
- .clk0_i(mubi_q[k]),
- .clk1_i(reset_value[k]),
- .sel_i(|sig_unstable_buf),
- .clk_o(mubi[k])
- );
+ // value. note that the input and output signals of this mux
+ // are driven/read by constrained primitive cells (regs, buffers),
+ // hence this mux can be implemented behaviorally.
+ assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
end
// Note regarding SVAs below:
diff --git a/hw/ip/prim/rtl/prim_mubi4_sync.sv b/hw/ip/prim/rtl/prim_mubi4_sync.sv
index 264355c..0239540 100644
--- a/hw/ip/prim/rtl/prim_mubi4_sync.sv
+++ b/hw/ip/prim/rtl/prim_mubi4_sync.sv
@@ -90,15 +90,10 @@
);
// if any xor indicates signal is unstable, output the reset
- // value.
- prim_clock_mux2 #(
- .NoFpgaBufG(1'b1)
- ) u_mux (
- .clk0_i(mubi_q[k]),
- .clk1_i(reset_value[k]),
- .sel_i(|sig_unstable_buf),
- .clk_o(mubi[k])
- );
+ // value. note that the input and output signals of this mux
+ // are driven/read by constrained primitive cells (regs, buffers),
+ // hence this mux can be implemented behaviorally.
+ assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
end
// Note regarding SVAs below:
diff --git a/hw/ip/prim/rtl/prim_mubi8_sync.sv b/hw/ip/prim/rtl/prim_mubi8_sync.sv
index 51b1a32..14e9254 100644
--- a/hw/ip/prim/rtl/prim_mubi8_sync.sv
+++ b/hw/ip/prim/rtl/prim_mubi8_sync.sv
@@ -90,15 +90,10 @@
);
// if any xor indicates signal is unstable, output the reset
- // value.
- prim_clock_mux2 #(
- .NoFpgaBufG(1'b1)
- ) u_mux (
- .clk0_i(mubi_q[k]),
- .clk1_i(reset_value[k]),
- .sel_i(|sig_unstable_buf),
- .clk_o(mubi[k])
- );
+ // value. note that the input and output signals of this mux
+ // are driven/read by constrained primitive cells (regs, buffers),
+ // hence this mux can be implemented behaviorally.
+ assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
end
// Note regarding SVAs below:
diff --git a/util/design/data/prim_mubi_sync.sv.tpl b/util/design/data/prim_mubi_sync.sv.tpl
index da497fe..d1ca6b4 100644
--- a/util/design/data/prim_mubi_sync.sv.tpl
+++ b/util/design/data/prim_mubi_sync.sv.tpl
@@ -90,15 +90,10 @@
);
// if any xor indicates signal is unstable, output the reset
- // value.
- prim_clock_mux2 #(
- .NoFpgaBufG(1'b1)
- ) u_mux (
- .clk0_i(mubi_q[k]),
- .clk1_i(reset_value[k]),
- .sel_i(|sig_unstable_buf),
- .clk_o(mubi[k])
- );
+ // value. note that the input and output signals of this mux
+ // are driven/read by constrained primitive cells (regs, buffers),
+ // hence this mux can be implemented behaviorally.
+ assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
end
// Note regarding SVAs below: