UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 11207

4.1i CORE Generator - C_REG_FD_V3_0.v コアで効率の悪いコーディング スタイルが使用されているため、Verilog ビヘイビア シミュレーションの実行に時間がかかる

説明

キーワード : CORE Generator, COREGen, C_REG_FD_V3_0.v, ModelSim , FDReg, simulation, long, time, シミュレーション

重要度 : 標準

概要 :
CORE Generator コアの Verilog ビヘイビア シミュレーションの実行に、長時間かかることがあります。 これは、Verilog で使用される C_REG_FD_V3_0.v モデルのコーディング スタイルが適正でないためです。 C_REG_FD_V3_0.v コアは、乗算器やブロック メモリなどほかのコアによっても使用されます。

現在の C_REG_FD_V3_0.v モデルでは、クロック エッジごとに大きい for-loop 文といくつかの CALL 機能が実行されます。 これにより、実行時間が長くなります。

ソリューション

この問題は、次の 4.1i IP アップデートに含まれる Base Blox V6.0 で修正されます。

シミュレーションの実行時間を短縮するには、次の例 1 のコードを例 2 のコードに置き換えて C_REG_FD_V3_0.v (/Xilinx/verilog/src/XilinxCoreLib directory) を変更します。例 2 の場合、例 1 のような loop 文はありません。

例 1 :

always@(posedge intCLK or intCE or intACLR or
intASET or
intAINIT)
begin
datatmp = data;

for(i = 0; i < C_WIDTH; i = i + 1)
begin
if(intACLR === 1'b1)
datatmp[i] = 1'b0;
else if(intACLR === 1'b0 && intASET === 1'b1)
datatmp[i] = 1'b1;
else if(intAINIT === 1'b1)
datatmp[i] = AIV[i];
else if(intACLR === 1'bx && intASET !== 1'b0)
datatmp[i] = 1'bx;
else if(intACLR != lastintACLR &&
lastintASET != intASET &&
lastintACLR === 1'b1 &&
lastintASET === 1'b1 &&
intACLR === 1'b0 &&
intASET === 1'b0)
datatmp[i] = 1'bx;
else
begin
...


例 2 :

always@(posedge intCLK or intCE or intACLR or
intASET or
intAINIT)
begin
datatmp = data;
if(intACLR === 1'b1)
datatmp = 'b0; // 0-extends to all bits
else if(intACLR === 1'b0 && intASET === 1'b1)
datatmp = {C_WIDTH{1'b1}}; // explicit sizing
else if(intAINIT === 1'b1)
datatmp = AIV;
else if(intACLR === 1'bx && intASET !== 1'b0)
datatmp = 'bx; // X-extends to all bits
else if(intACLR != lastintACLR &&
lastintASET != intASET &&
lastintACLR === 1'b1 &&
lastintASET === 1'b1 &&
intACLR === 1'b0 &&
intASET === 1'b0)
datatmp = 'bx; // X-extends to all bits
else
begin
...
AR# 11207
日付 09/11/2003
ステータス アーカイブ
種類 一般
このページをブックマークに追加