※ この不具合は、以下の Quartus Prime で解消されています。詳細は、下記 FAQ をご覧ください。

 ・Intel® Quartus® Prime Standard Edition Software v21.1 and later
 ・Intel® Quartus® Prime Pro Edition Software v21.3 and later

 [FAQ] Why does programming a configuration device with Cyclone® IV E EP4CE75 devices fail when a jtag indirect configuration (.jic) file is used?

 

--------------------------------------------------------------------------------------------------------

 

こんにちは。

マクニカでインテル® FPGA 製品の技術サポートをしている インテル・F・ハナコ です。

 

Cyclone® IV の EP4CE75 を使用しているユーザー必見!

FPGA 経由でコンフィグレーション ROM に jic ファイルを書き込む際に発生する不具合のワークアラウンドをご紹介します。

不具合の状況

以下の条件において、不具合が確認されています。

Tool

Quartus® II 13.1.4 以降

(Quartus Prime Standard Edition および Lite Edition を含む)

FPGA EP4CE75
転送するファイル形式 .jic
実行内容

コンフィグレーション ROM に jic ファイルを転送するため、工場出荷時の Enhanced SFL image を使用して Program オプションを実行する.

 

<Programmer の GUI イメージ>

Programmer で

発生する

エラーメッセージ

Error (209025) Can't recognize silicon ID for device …

不具合の要因

Quartus II 13.1.4 以降 および Quartus Prime の Programmer に装備された EP4CE75 用の Enhanced Serial Flash Loader (以下 Enhanced SFL) イメージにバグがあります。

Quartus Prime Standard および Lite Edition の ver.20.1 でも改善されていません。

▲ ページトップへ戻る

回避策

EP4CE75 用の SFL IP を自作し、その sof ファイルで jic ファイルをコンフィグレーション ROM へ転送します。

 

作業手順は以下のとおりです。

  1. SFL IPを作成
  2. トップデザインに SFL IP をインプリメント
  3. 自作の SFL IP 用にタイミング制約を追加
  4. コンパイル
  5. EP4CE75 に sof ファイルをダウンロード
  6. jic ファイルをダウンロード

 

それでは、この作業内容をご案内します。

▲ ページトップへ戻る

1. SFL IP を作成

Quartus Prime において、ワークアラウンド用のプロジェクトを新規作成し、ターゲットデバイスに EP4CE75 を選択します。

 

Tools メニュー > IP Catalog において、"Serial Flash Loader Intel FPGA IP" を選択します。

(ver.17.1 以前の Quartus Prime で作成する場合は、IP 名が Altera Serial Flash Loader IP です。)

IP Catalog

IP に対して任意名および生成するフォルダーを指定し、General タブにおいて以下のオプションを有効にします。


Use enhanced mode SFL = On

 

Serial Flash Loader Intel FPGA IP

[Generate HDL] ボタンをクリックし、生成させる言語を指定します。

言語を選択

[Generate] ボタンをクリックし、SFL IP を生成します。

▲ ページトップへ戻る

2. トップデザインに SFL IP をインプリメント

File メニュー > New により白紙のデザインファイルを開き、最上位デザインを作成します。

エンティティ名は任意です。

手順1 で作成した SFL IP を最上位デザインにインプリメントします。

 (IP の生成されたフォルダー内にあるインスタンス用のテンプレートを活用すると便利です。)

 

SFL IP をイネーブルにするため、入力の noe_in ポートを GND へ接続します。

以下は、VHDL のデザイン例です。

デザイン例 (VHDL)

Assignments メニュー > Device > Device and Pin Options > Unused Pins を指定し

未使用ユーザー I/O ピンを以下のとおりに設定します。

 

Reserved all unused pins: As input tri-stated with weak pull-up

Reserved all unused pins

▲ ページトップへ戻る

3. 自作の SFL IP 用にタイミング制約を追加

SFL IP に対してタイミング制約ファイル (.sdc) を作成します。

メーカーの Web ページ Knowledge Base で公開されている制約を参考にしてください。

## 参考例
create_clock -name {altera_reserved_tck} -period 100.000 -waveform { 0.000 50.000 } [get_ports {altera_reserved_tck}]
create_generated_clock -name {ALTERA_DCLK} -source [get_ports {altera_reserved_tck}] -master_clock {altera_reserved_tck} \
[get_ports {*altserial_flash_loader_component|\GEN_ASMI_TYPE_1:asmi_inst~ALTERA_DCLK}]
##
set_input_delay -add_delay  -clock [get_clocks {altera_reserved_tck}]  20.000 [get_ports {altera_reserved_tdi}]
set_input_delay -add_delay  -clock [get_clocks {altera_reserved_tck}]  20.000 [get_ports {altera_reserved_tms}]
set_input_delay -add_delay  -clock [get_clocks {ALTERA_DCLK}]  11.000 [get_ports \
{*altserial_flash_loader_component|\GEN_ASMI_TYPE_1:asmi_inst~ALTERA_DATA0}]
##
set_output_delay -add_delay  -clock [get_clocks {altera_reserved_tck}]  20.000 [get_ports {altera_reserved_tdo}]
set_output_delay -add_delay -max -clock [get_clocks {ALTERA_DCLK}]  0.000 [get_ports \
{*altserial_flash_loader_component|\GEN_ASMI_TYPE_1:asmi_inst~ALTERA_DCLK}]
set_output_delay -add_delay  -clock_fall -clock [get_clocks {ALTERA_DCLK}]  0.000 [get_ports \
{*altserial_flash_loader_component|\GEN_ASMI_TYPE_1:asmi_inst~ALTERA_DCLK}]
set_output_delay -add_delay  -clock [get_clocks {ALTERA_DCLK}]  13.000 [get_ports \
{*altserial_flash_loader_component|\GEN_ASMI_TYPE_1:asmi_inst~ALTERA_SCE}]
set_output_delay -add_delay  -clock [get_clocks {ALTERA_DCLK}]  8.000 [get_ports \
{*altserial_flash_loader_component|\GEN_ASMI_TYPE_1:asmi_inst~ALTERA_SDO}]
##
remove_clock_groups -all
##
set_false_path -from [get_ports {altera_reserved_tck}] -through [get_nets \
{*altserial_flash_loader_component|\ENHANCED_PGM:sfl_inst_enhanced|dclkin~0}] -to [get_keepers \
{*altserial_flash_loader_component|\GEN_ASMI_TYPE_1:asmi_inst~ALTERA_DCLK}]

[注意] \GEN_ASMI_TYPE_1 の末尾番号は異なる場合があります。

 

sdc ファイル作成し保存後、下記メニューで .sdc をプロジェクトに登録します。

Assignments メニュー > Settings > Timing Analyzer カテゴリ

▲ ページトップへ戻る

4. コンパイル

コンパイルを実行します。

Processing メニュー > Start Compilation

▲ ページトップへ戻る

5. EP4CE75 に sof ファイルをダウンロード

Programmer を起動します。(Tools メニュー > Programmer)

Hardware Setup を設定し、Mode に JTAG を選択します。

コンパイルで生成された sof ファイルをセットし、Program/Configure オプションを有効 (On) にします。

Programmer (SFL 用 .sof をセット)

[Start] ボタンをクリックして、EP4CE75 へデータを転送します。

書き込み完了後、Programmer の画面から sof ファイルを [Delete] ボタンにより削除してください。

▲ ページトップへ戻る

6. jic ファイルをダウンロード

Programmer にあらかじめ作成しておいた jic ファイルを登録します。

jic ファイルの Program/Configure オプションを有効 (On) にします。

Programmer (.jic をセット)

[参考: jic ファイル作成]

Quartus® ガイド - プログラミング・ファイルの生成と変換 (Convert Programming Files)

FPGA 経由で EPCQ デバイスへプログラミング (JIC プログラミング)

 

Factory default enhanced SFL image の Program/Configure オプションのみを無効 (Off) にします。

※ 手順5 により、SFL イメージは EP4CE75 へダウンロード済み

Programmer (jic ファイルのみを転送)

[Start] ボタンをクリックし、jic ファイルのみをダウンロードします。

 

以上で作業は終了です。

EP4CE75 経由でコンフィグレーション ROM へ jic ファイルを書き込む際は、この方法で回避してください。 

 ▲ ページトップへ戻る

おすすめ記事/資料はこちら

インテル® FPGA の開発フロー/FPGA トップページ

Quartus® ガイド - プログラミング・ファイルの生成と変換(Convert Programming Files)

FPGA 経由で EPCQ デバイスへプログラミング(JIC プログラミング)

 

おすすめ FAQ はこちら

インテル® FPGA 関連の FAQ

jic ファイル / Programmer 関連の FAQ