AR# 60860

|

7 Series FPGAs Transceiver Wizard v3.3 - リリース ノートおよび既知の問題

説明

このアンサーでは、Vivado 2014.2 デザイン ツールでリリースされた 7 Series FPGAs Transceiver Wizard v3.3 のリリース ノートおよび既知の問題を示します。

ソリューション

既知の問題およびリリース ノート




問題 1 :

説明 : Vivado ラボ ツール オプションが GUI で有効になっている場合にサンプル デザインを生成すると、デザインでは合成を実行できず、次のようなエラー メッセージが表示されます。

ERROR IP vio_0.xci' is locked, its synthesis output product is in the reset state and cannot be generated. Therefore, no out-of-context (OOC) run will be created. Please select 'Report IP Status' from 'Tools/Report' or run Tcl command 'report_ip_status' for more information.


回避策 :

次のコマンドを使用して、サンプル デザインで生成された ILA および VIO XCI をアップグレードしてください。

upgrade_ip -vlnv xilinx.com:ip:vio:3.0 [get_ips  vio_0]
upgrade_ip -vlnv xilinx.com:ip:ila:4.0 [get_ips  ila_1]
upgrade_ip -vlnv xilinx.com:ip:ila:4.0 [get_ips  ila_0]

修正予定 : 2014.3
CR : 799843 



問題 2 :

説明 : 基準クロック周波数が DRP クロック周波数よりも小さいと、シンクロナイザーでは CPLLRESET パルスがミスされるため、RESETDONE が見られません。

回避策 :

<component_name>_gt ファイルで次のロジックを置き換えます。

always @(posedge gtrefclk0_in)
begin
  cpllpd_wait <= {cpllpd_wait[94:0], 1'b0};
  cpllreset_wait <= {cpllreset_wait[126:0], 1'b0};
end

assign cpllpd_ovrd_i = cpllpd_wait[95];
assign cpllreset_ovrd_i = cpllreset_wait[127];

assign cpll_pd_i = cpllpd_ovrd_i;

  <component_name>_sync_block sync_cpllreset
        (
           .clk             (gtrefclk0_in),
           .data_in         (cpllreset_in),
           .data_out        (cpllreset_sync)
        );

assign cpll_reset_i = cpllreset_sync || cpllreset_ovrd_i;


これを次のに置き換えます。


wire    ack_i;
reg     flag = 1'b0;
reg     flag2 = 1'b0;
reg     ack_flag = 1'b0;
  // Internal Signals
  wire data_sync1;
  wire data_sync2;
  wire data_sync3;
  wire data_sync4;
  wire data_sync5;
  wire data_sync6;
  wire ack_sync1;
  wire ack_sync2;
  wire ack_sync3;
  wire ack_sync4;
  wire ack_sync5;
  wire ack_sync6;

always @(posedge gtrefclk0_in)
begin
  cpllpd_wait <= {cpllpd_wait[94:0], 1'b0};
  cpllreset_wait <= {cpllreset_wait[126:0], 1'b0};
end

assign cpllpd_ovrd_i = cpllpd_wait[95];
assign cpllreset_ovrd_i = cpllreset_wait[127];

assign cpll_pd_i = cpllpd_ovrd_i;


always @(posedge drpclk_in)
begin
if(cpllreset_in == 1'b1 && ack_flag == 1'b0)
begin
    flag <= !flag;
    flag2 <= 1'b1;
end
else
begin
    flag <= flag; 
    flag2 <= 1'b0;
end
end


always @(posedge drpclk_in)
begin
if(flag2 == 1'b1)
ack_flag <= 1'b1;
else if(ack_i == 1'b1)
ack_flag <= 1'b0;
end



  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
    .INIT (1'b0)
  ) data_sync_reg1 (
    .C  (gtrefclk0_in),
    .D  (flag),
    .Q  (data_sync1)
  );


  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
   .INIT (1'b0)
  ) data_sync_reg2 (
  .C  (gtrefclk0_in),
  .D  (data_sync1),
  .Q  (data_sync2)
  );


  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
   .INIT (1'b0)
  ) data_sync_reg3 (
  .C  (gtrefclk0_in),
  .D  (data_sync2),
  .Q  (data_sync3)
  );

  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
   .INIT (1'b0)
  ) data_sync_reg4 (
  .C  (gtrefclk0_in),
  .D  (data_sync3),
  .Q  (data_sync4)
  );

  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
   .INIT (1'b0)
  ) data_sync_reg5 (
  .C  (gtrefclk0_in),
  .D  (data_sync4),
  .Q  (data_sync5)
  );

  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
   .INIT (1'b0)
  ) data_sync_reg6 (
  .C  (gtrefclk0_in),
  .D  (data_sync5),
  .Q  (data_sync6)
  );

assign cpllreset_sync = data_sync5 ^ data_sync6;

  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
 FD #(
   .INIT (1'b0)
  ) ack_sync_reg1 (
  .C  (drpclk_in),
  .D  (data_sync6),
  .Q  (ack_sync1)
  );

  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
   .INIT (1'b0)
  ) ack_sync_reg2 (
  .C  (drpclk_in),
  .D  (ack_sync1),
  .Q  (ack_sync2)
 );

  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
   .INIT (1'b0)
  ) ack_sync_reg3 (
  .C  (drpclk_in),
  .D  (ack_sync2),
  .Q  (ack_sync3)
  );

  (* shreg_extract = "no", ASYNC_REG = "TRUE" *)
  FD #(
   .INIT (1'b0)
  ) ack_sync_reg4 (
  .C  (drpclk_in),
  .D  (ack_sync3),
  .Q  (ack_sync4)
  );


assign ack_i = ack_sync3 ^ ack_sync4;

assign cpll_reset_i = cpllreset_sync || cpllreset_ovrd_i;


XDC 制約をアップデートする必要もあります。  

次の行を XDC に追加します。

set_false_path -to [get_cells -hierarchical -filter {NAME =~ *ack_sync_reg1}]

修正予定 : 2014.3
CR : 793340


AR# 60860
日付 07/17/2014
ステータス アクティブ
種類 リリース ノート
デバイス 詳細 概略
IP
People Also Viewed