AR# 55302

Vivado 合成 - 実行時間を短縮するための HDL コード記述方法

説明

このアンサーでは、実行時間を短縮するための HDL コード記述方法を説明します。

ソリューション

次のサンプル Verilog コードでは、実行時間が長くなるる可能性があります。

module test4 (clk,din,dout);

parameter WIDTH = 20000;
input clk;
input [WIDTH-1:0] din;
output reg [WIDTH-1:0] dout;

generate
begin
    genvar i;
    for(i=0;i<WIDTH;i=i+1)
    begin
        always@(posedge clk)
         dout[i] <= din[i];
    end
end    
endgenerate

endmodule

上記のサンプル コードには always 文を含む for loop 文があることが、実行時間の長くなる原因となっています。

実行時間を短縮するには、このサンプル Verilog コードを次のように変更します。

module test4 (clk,din,dout);

parameter WIDTH = 20000;
input clk;
input [WIDTH-1:0] din;
output reg [WIDTH-1:0] dout;

integer i;
generate
begin
    always@(posedge clk)
    begin   
     for(i=0;i<WIDTH;i=i+1)
       dout[i] <= din[i];
    end
end   
endgenerate

endmodule

上記のサンプル コードでは、loop 文が always 文の下に移動しており、実行時間の短縮に役立ちます。この HDL コード記述例を、実行時間を短縮する有効な方法として考慮してください。

AR# 55302
日付 06/21/2013
ステータス アクティブ
種類 既知の問題
ツール