Update ClockGate.sv to support GF22 ClockGate.sv updated to support GF22. Also refactored for readablility. Change-Id: Ie12f006a44abb6da2c2c189997ad8264a9063bb9
diff --git a/hdl/verilog/ClockGate.sv b/hdl/verilog/ClockGate.sv index 1dfb778..52a3aef 100644 --- a/hdl/verilog/ClockGate.sv +++ b/hdl/verilog/ClockGate.sv
@@ -24,16 +24,28 @@ output clk_o ); -`ifndef USE_GENERIC -CKLNQD10BWP6T20P96CPDLVT u_cg( - .TE(te), - .E(enable), - .CP(clk_i), - .Q(clk_o) -); -`else +/////////////////////////// +/// ClockGate Selection /// +/////////////////////////// +`ifdef USE_TSMC12FFC + // TSMC12FFC Specific ClockGate + CKLNQD10BWP6T20P96CPDLVT u_cg( + .TE(te), + .E(enable), + .CP(clk_i), + .Q(clk_o) + ); +`elsif USE_GF22 + // GF22 Specific ClockGate + SC7P5T_CKGPRELATNX8_CSC36L u_cg ( + .CLK(clk_i), + .E(enable), + .TE(te), + .Z(clk_o) + ); -`ifdef FPGA_XILINX +`elsif FPGA_XILINX + // Xilinx FPGA Specific ClockGate BUFGCE #( .SIM_DEVICE("ULTRASCALE_PLUS") ) u_bufgce ( @@ -42,6 +54,7 @@ .O (clk_o) ); `else + // Default: Verilator implementation logic en_latch /* verilator clock_enable */; always_latch begin if (!clk_i) begin @@ -49,8 +62,6 @@ end end assign clk_o = en_latch & clk_i; -`endif // FPGA_XILINX - -`endif // USE_GENERIC +`endif endmodule // ClockGate