クロック イネーブルの最小化
既定では、HDL Coder™ は、クロック イネーブル付きのレジスタにマッピングするためのコードを生成し、DUT は最上位のクロック イネーブル端子をもちます。
クロック イネーブル付きのレジスタを生成しない場合は、クロック イネーブル ロジックを最小化できます。たとえば、ターゲット ハードウェアにクロック イネーブルのないレジスタがある場合、クロック イネーブル ロジックを最小化してハードウェアのリソースを節約できます。
次の VHDL® コードでは、クロック イネーブルを使用する、生成されたコードの既定のスタイルを説明します。enb
信号がクロック イネーブルです。
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;
次の VHDL コードでは、クロック イネーブルを最小化して生成されたコードのスタイルを説明します。
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;
GUI の使用
クロック イネーブルを最小化するには、HDL ワークフロー アドバイザーの [HDL コード生成] 、 [クロックと端子] タブで、[クロック イネーブルの最小化] を選択します。
コマンド ラインの使用
クロック イネーブルを最小化するには、coder.HdlConfig
構成オブジェクトの MinimizeClockEnables
プロパティを true
に設定します。以下に例を示します。
hdlCfg = coder.config('hdl') hdlCfg.MinimizeClockEnables = true;
制限
設計の特定領域でクロック速度を上昇することによる面積の最適化を指定した場合、クロック イネーブルを最小化することはできません。次の最適化を行う場合、クロック イネーブルの最小化はできません。
リソース共有
RAM マッピング
ループのストリーム
また、HDL ワークフロー アドバイザーの [HDL コード生成] 、 [詳細設定] タブで [RAM アーキテクチャ] を [クロック イネーブルを使用しない汎用 RAM] に設定した場合もクロック イネーブルの最小化はできません。