AR# 12953

|

7.0 Synplify - インスタンシエートした FDRE、FDR、FDSE、FDS プリミティブが保存できない

説明

キーワード : Synplify, Virtex, Virtex-II, System, Generator, FDR, FDS, preserve, primitive, 保存, プリミティブ

重要度 : 重要

概要 :
インスタンシエートされた同期セット/リセット フリップフロップ プリミティブ (FDR、FDRE、FDS、FDSE) が Virtex デザインに含まれています。 マップ後に Synplify がそのインスタンシエートされたプリミティブを FD と置き換えてしまいます。

この問題は、Synplify および Synplify Pro 7.0 でのバグが原因となっており、FDR、FDRE、FDRE、または FDS プリミティブに影響を与えてしまいます。 このバグは、これらのフリップフロップの制御信号 (クロック イネーブルおよびセット/リセット) が定数になっている場合に発生します。

この問題はバージョン 7.0.1 で修正されています。最新版の Synplify は http://www.synplicity.com から入手できます。


この問題を回避するには、ポートを信号/ワイヤに接続し、その信号/ワイヤに syn_keep 属性を付けます。

ソリューション

1

VHDL の例 :

fdse_reg : FDSE
port map(c => clk,
d => in_sig,
q => out_sig,
ce => '1',
s => '0');

クロック イネーブルを 1 に、セットを 0 に設定すると、通常の FD コンポーネントのように動作をします。 このため、Synplify でこの FDSE が FD に変更されます。 この結果、レジスタのパワー アップ値が 1 から 0 に変更されます。 FDSE はインスタンシエートされているため、Synplify でこの値を変更すると問題が発生します。

パッチをインストールせずに問題を回避するには、コンポーネントを次のようにインスタンシエートします。

signal zero : std_logic;
signal one : std_logic;

attribute syn_keep : Boolean;
attribute syn_keep of zero : signal is true;
attribute syn_keep of one : signal is true;

fdse_reg : fdse
port map(c => clk,
d => in_sig,
q => out_sig,
ce => one,
s => zero);

2

Verilog の例 :

FDSE u1 (.D(d), .C(clk), .Q(q), .CE(1'b1), .S(1'b0));

クロック イネーブルを 1 に、セットを 0 に設定すると、通常の FD コンポーネントのように動作をします。 このため、Synplify でこの FDSE が FD に変更されます。 この結果、レジスタのパワー アップ値が 1 から 0 に変更されます。 FDSE はインスタンシエートされているため、Synplify でこの値を変更すると問題が発生します。

パッチをインストールせずに問題を回避するには、コンポーネントを次のようにインスタンシエートします。

wire zero /* synthesis syn_keep=1 */;
wire one /* synthesis syn_keep=1 */;

FDSE u1 (.D(d), .C(clk), .Q(q), .CE(one), .S(zero));
AR# 12953
日付 10/24/2005
ステータス アーカイブ
種類 ??????
People Also Viewed