Main Content

Minimize Clock Enables

By default, HDL Coder™ generates code in a style that is intended to map to registers with clock enables, and the DUT has a top-level clock enable port.

If you do not want to generate registers with clock enables, you can minimize the clock enable logic. For example, if your target hardware contains registers without clock enables, you can save hardware resources by minimizing the clock enable logic.

The following VHDL® code shows the default style of generated code, which uses clock enables. The enb signal is the clock enable:

Unit_Delay_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay_out1 <= to_signed(0, 32);
    ELSIF clk'EVENT AND clk = '1' THEN
      IF enb = '1' THEN
        Unit_Delay_out1 <= In1_signed;
      END IF;
    END IF;
  END PROCESS Unit_Delay_process;

The following VHDL code shows the style of code you generate if you minimize clock enables:

Unit_Delay_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay_out1 <= to_signed(0, 32);
    ELSIF clk'EVENT AND clk = '1' THEN
      Unit_Delay_out1 <= In1_signed;
    END IF;
  END PROCESS Unit_Delay_process;

Using the GUI

To minimize clock enables, in the HDL Workflow Advisor, on the HDL Code Generation > Clocks & Ports tab, select Minimize clock enables.

Using the Command Line

To minimize clock enables, in the coder.HdlConfig configuration object, set the MinimizeClockEnables property to true. For example:

hdlCfg = coder.config('hdl')
hdlCfg.MinimizeClockEnables = true;

Limitations

If you specify area optimizations that the coder implements by increasing the clock rate in certain regions of the design, you cannot minimize clock enables. The following optimizations prevent clock enable minimization:

  • Resource sharing

  • RAM mapping

  • Loop streaming

Clock enable minimization is also prevented by setting RAM architecture to Generic RAM without clock enable in the HDL Workflow Advisor on the HDL Code Generation > Advanced tab.