File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -57,19 +57,29 @@ module tc_clk_inverter (
5757
5858endmodule
5959
60- module tc_clk_mux2 (
60+ module tc_clk_mux2 # (
61+ // / Using BUFGMUX on FPGA can allocate limited clock ressources
62+ // / to non clock signals. It can also create long buffer chain
63+ // / depending on your design.
64+ // / If you need your signal to be buffered, use EN_BUF_FPGA = 0
65+ parameter bit EN_BUF_FPGA = 1'b0
66+ )(
6167 input logic clk0_i,
6268 input logic clk1_i,
6369 input logic clk_sel_i,
6470 output logic clk_o
6571);
6672
67- BUFGMUX i_BUFGMUX (
68- .S ( clk_sel_i ),
69- .I0 ( clk0_i ),
70- .I1 ( clk1_i ),
71- .O ( clk_o )
72- );
73+ if (EN_BUF_FPGA ) begin
74+ BUFGMUX i_BUFGMUX (
75+ .S ( clk_sel_i ),
76+ .I0 ( clk0_i ),
77+ .I1 ( clk1_i ),
78+ .O ( clk_o )
79+ );
80+ end else begin
81+ assign clk_o = clk_sel_i ? clk1_i : clk0_i;
82+ end
7383
7484endmodule
7585
Original file line number Diff line number Diff line change @@ -71,7 +71,11 @@ endmodule
7171// reset state during the transition phase. If you need dynamic switching
7272// between arbitrary input clocks without introducing glitches, have a look at
7373// the clk_mux_glitch_free cell in the pulp-platform/common_cells repository.
74- module tc_clk_mux2 (
74+ module tc_clk_mux2 # (
75+ // / EN_BUF_FPGA is used when avoiding to use buffered clk mux on FPGA.
76+ // / (see tc_clk_xilinx.sv)
77+ parameter bit EN_BUF_FPGA = 1'b0
78+ )(
7579 input logic clk0_i,
7680 input logic clk1_i,
7781 input logic clk_sel_i,
You can’t perform that action at this time.
0 commit comments