FC2カウンター FPGAの部屋 Xilinx ISEについて

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ISE14.7で”ERROR:MapLib:979 - LUT? symbol”が出た時の応急対処

”ISE14.1, 14.2 で”ERROR:MapLib:979 - LUT5 symbol”が出る“というブログ記事を書きましたが、またISE14.7 で、”ERROR:MapLib:979 - LUT6 symbol”が出てしまいました。
前回はPlanAheadプロジェクトに移行することで回避出来ましたが、今回、MAPのプロパティをいじってみます。
-u オプション (Trim Unconnected Signals) のチェックを外すとMAP は通りました。
LUT6_Error_140904.png

これで、本当に良いのかどうか?はわかりません。とりあえず、MAPエラーを回避する方法でした。。。

MAP によるロジックの自動削除に関しては、“AR# 23990 11.1 MAP - MAP によるロジックの自動削除に関するマスタ アンサー”がためになります。

(追記)
MAPは通ったんですが、BitGenのDRCでエラーになりました。やはり、この方法は使えないようです。
  1. 2014年09月04日 10:24 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:0

インプリメントとシミュレーションでのRAM及びROMの初期値

今回のプロジェクトでは、AXI VDMAのレジスタを設定するコントローラ (reg_set_axi_lite_master.v) で、AXI VDMAのアドレスと設定値を保存しておくテキストファイル vdma_reg_set.txt の値を使用して、AXI4 Lite Masterアクセスを行う予定だ。
vdma_reg_set.txtは、reg_set_axi_lite_master.vと同じフォルダに置いてある。(”AXI VDMAのレジスタ設定用AXI Lite Master IPの作製2(シミュレーション)”参照)
VDMA_test_10_130712.png

この状態でVDMA_testプロジェクト全体をインプリメントすると、BRAMに初期値が入る。
VDMA_test_11_130712.png

このまま、ISimでシミュレーションを行うと、rom の初期値は入っていない。
VDMA_test_12_130712.png

プロジェクトのトップフォルダに vdma_reg_set.txt を置いた。
VDMA_test_13_130712.png

シミュレーションを行ったところ、rom に初期値がロードされた。
VDMA_test_14_130712.png

ISimの場合、BRAMの初期値ファイルはプロジェクトのトップフォルダに置く必要があり、インプリメントの時には、初期値ファイルを呼んでいるVerilog HDLファイル (reg_set_axi_lite_master.v) と同じフォルダに置く必要がある。これは、あくまでデフォルトの状態であり、オプションでフォルダをできるのかもしれないが、気をつけておく必要があると思う。
  1. 2013年07月12日 05:04 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:0

WebPACK ツール インストールを使用していると IP コアを作成できない

WebPACK14.4でCore Generator でIPコアを作ろうとしても作成できないとうバグがありましたが、アンサーが出ています。ツイッターで、shintamainjp さんに教えてもらいました。
アンサーです。

14.4 CORE Generator - WebPACK ツール インストールを使用していると IP コアを作成できない


環境変数を XIL_CG_LOAD_ALL_FAMILIES=true に設定すれば良いようです。

これで、WebPACK14.4を使うことができそうです。私は、Embedded Edition をインストールしてしまったので、どなたか確かめられる方、確かめてコメント欄でレポートして頂けないでしょうか?よろしくお願いします。
  1. 2013年03月10日 08:25 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:5

Linux のSDK14.4 からZedBoard をコンフィグレーションし、ソフトを起動した

前回、SDK14.4でコンパイルすることができたので、ZedBoardをコンフィグレーションしてみた。

VirtualBox4.2.6 上のLinux12.10 にISE14.4 をインストールしてあるため、VirtualBox ウインドウのデバイス -> USBデバイス -> Digilent USB Device [900] を選択して、Windows 7 へのマウントを切り離し、Ubuntu にマウントした。
ISE_for_Linux_47_130225.png

SDKで、Xilinx Tools メニュー -> Program FPGA を選択して、FPGAをコンフィグレーションしようとしたがエラーになってしまった。

次に、何がおかしいのかを確かめるために、より現象がわかりやすい iMPACT で確かめて見ることにした。
impact コマンドを入力して、iMPACT を起動した。

iMPACT でinitialize Chain を行ったところ、windrv6 がロードされないので、ケーブル・ドライバを再インストールしてくれというメッセージが出た。アンサー・レコードの22648 に書いてあるそうだ。
ISE_for_Linux_49_130225.png

アンサー・レコードの22648 は、”10.1 iMPACT - Linux OS/カーネル バージョン 2.4 へのザイリンクス ケーブル ドライバーのインストール”だった。
アンサー・レコードの22648 によると

詳細は、次の『USB Cable Installation Guide』 (UG344) および install_drivers.tar.gz アーカイブを参照してください。


のことだった。
早速、『USB Cable Installation Guide』を参照しながら、install_drivers.tar.gz アーカイブをダウンロードして、インストールすることにした。
install_drivers.tar.gz アーカイブを展開すると、install_drivers ディレクトリができた。その中に、readme.txt があってインストール方法が書いてあった。下に引用する。

Note: Root permission is required to perform the steps described in this section.

1) Disconnect all Xilinx USB cables from the host computer.
2) Open a shell or terminal console.
3) Extract the driver script and its support files to a local drive of the machine
where the cable will be used by typing:
tar xzvf install_drivers.tar.gz
The extraction creates a directory named install_drivers in the current directory.
4) Navigate to the install_drivers directory by typing:
cd install_drivers
5) Run the script by typing:
./install_drivers
6) When the installation is complete, reconnect the cable.
7. Change permissions on the USB / PC4 driver by typing: chmod 666 /dev/windrvr6.


上のインストール方法に従って、インストールを行った。

cd
cd Work/install_drivers
sudo ./install_drivesr


エラーが発生してしまった。
ISE_for_Linux_60_130226.png

そうだ。dash shell から/bin/sh に切り替えてみよう。ということで、sudo dpkg-reconfigure -plow dash コマンドを入力して、/bin/sh に切り替えてから、もう一度、sudo ./install_drivesr コマンドを実行した。だが、やはりエラーだった。
ISE_for_Linux_61_130226.png

ls /dev コマンドで、/dev ディレクトリを見ても、windrv6 は存在しなかった。
ISE_for_Linux_62_130226.png

よって、この方法は諦めることにした。

次に、Ubuntu にダウンロード・ケーブルをマウントした時のUSBの状況を、lsusb コマンドで見た。
ISE_for_Linux_51_130226.png

それによると、ZedBoard のPROGポートをUbuntuにマウントした場合には、FT232H として見えていた。(最初のピンクの四角の中)

次に、Digilent社のXUP USB-JTAG Programming Cable があったので、これをUbuntuにマウントすると、Xilinx, Inc. として見えた(上の図の2番めのピンクの四角の中)
ISE_for_Linux_50_130225.png

これで、iMPACT を立ち上げると、zynq が見えた。
ISE_for_Linux_52_130226.png

iMPACT を終了して、xsdk コマンドでSDKを立ち上げた。

、Xilinx Tools メニュー -> Program FPGA を選択して、FPGAをコンフィグレーションした。
ISE_for_Linux_58_130226.png

コンフィグレーション成功した。下にメッセージを示す。

19:16:31 INFO : FPGA configured successfully with bitstream /home/masaaki/HDL/ZedBoard/ZedBoard_CamDisp_wHDMI_144_2/ZedBoard_CamDisp_wHDMI.sdk/SDK/SDK_Export/system_hw_platform/download.bit.


Run Configuration を作成して、Run を実行した。
ISE_for_Linux_59_130226.png

ソフトウェアが動作して、カメラ画像がディスプレイに出力された。成功だ。

なお、ZedBoard のPROGポート経由では、アンサー・レコード42728、”13.x/14.x iMPACT/ChipScope/XMD - Digilent プログラム ケーブルには LibUSB1.0 パッケージをインストールする必要がある”を参考に、 libusb 1.0 パッケージをインストールしてみたが、やはり、ダウンロード・ケーブルとして認識されなかった。

VirtualBox4.2.6 上のUbuntu12.10 でのZedBoard のコンフィグレーションには、Digilent社のXUP USB-JTAG Programming Cable か、Xilinx社のダウンロード・ケーブルが必要のようだ。
  1. 2013年02月27日 05:11 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:0

LinuxでISEを使う1(VirtualBox上のUbuntuを使ってISE14.4をインストール)

ZedBoard用のLinux カーネルコンパイルのためにVirtualBox上にUbuntu12.10 32ビット版をインストールした。
このUbuntu12.10にせっかくなので、ISE14.4 をインストールしてみようと思う。ARMプロセッサのツールチェインもあるということだ。

VirtualBoxは50GBの固定ディスクをUbuntu用に確保してある。Oracle VM VirtualBox マネージャーの設定をクリックして、ディスプレイの設定で、拡張機能の3Dアクセラレーションを有効化(3) のチェックボックスにチェックを入れること。これをチェックしないとUbuntu上でウインドウのドラックなどがとっても遅くなる。
ISE_for_Linux_1_130221.png

・Xilinxのサイトから Xilinx_ISE_DS_Lin_14.4_P.49d.3.0.tar をUbuntu 上にダウンロードして、展開した。
ISE_for_Linux_2_130221.png

レグシム ブログISE WebPack 13.3 インストール(ESXi-Ubuntu 11.10) を参照させてもらって、Ubuntu 上にISE14.4 をインストールしてみようと思う。

結局、最初にWebPACKをインストールして、うまく行ったのですが、ISE14.4のバグでCoreGenがバグってしまいました。再度、System Editon をインストールしようとしたら、50GBの固定ディスクを使いきってしまったので、200GBの固定ディスクを取ってSystem Editon をインストールしました。使用メモリはISEは750MBでも行けましたが、PlanAheadはスワップしまくりでした。1.5GBメモリを与えればインプリメント出来ました。現在は2GBのメモリを仮想マシンに与えています。



・パーミッションの設定を行なって xsetup を起動した。
ISE_for_Linux_3_130221.png

・ISEのインストーラーが起動した。
ISE_for_Linux_4_130221.png

・ライセンスを承認して、Edition を選択した。(下の図では、WebPACKを選択していますが、他のEdition を選択したほうが良いです(ISE14.4はWebPACKにバグがあるから)。現在はSystem Edition を選択しています)
ISE_for_Linux_5_130221.png

・インストールオプションを選択する。Install Cable Drivers にはチェックしないほうが良いそうです。
ISE_for_Linux_6_130221.png

・インストールするディレクトリを選択するダイアログは、そのままとした。
ISE_for_Linux_7_130221.png

・サマリが表示された。Install ボタンをクリックした。
ISE_for_Linux_8_130221.png

・インストールが進んで、ライセンス認証のダイアログが出た。Nextボタンをクリックした。
ISE_for_Linux_9_130221.png

・Windows ではうまく行ったConnect Now ボタンではブラウザでライセンス認証画面に行かなかったので、Save Infomation ボタンをクリックした。
ISE_for_Linux_10_130221.png

・Xilinx_Connet_Later.html を自分の Home にセーブした。
ISE_for_Linux_11_130221.png

・Xilinx_Connet_Later.html をダブルクリックして起動した。
ISE_for_Linux_12_130221.png

・Xilinx社のラインセンス認証サイトに飛んで、認証を行なった。
ISE_for_Linux_13_130221.png

・Windows 同様、ライセンス・ファイル (Xilinx.lic) をメール添付でもらって、ライセンス認証ダイアログでCopy License を行うとライセンスが認証された。(WebPACKライセンスです)
ISE_for_Linux_14_130221.png

・ISEのインストールが終了した。
ISE_for_Linux_15_130221.png

次からは、ダウンロードケーブルのドライバをインストールする。Xilinx JTAG Linux が参考になるそうだ。

・下のコマンドを実行した。

sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev fxload


ISE_for_Linux_16_130221.png


・/opt/Xilinx ディレクトリに移動して、usb-driver をgit からリポジトリをクローンした。

cd /opt/Xilinx
sudo git clone git://git.zerfleddert.de/usb-driver


ISE_for_Linux_17_130221.png


・usb-driver のディレクトリに入って、make した。

cd usb-driver/
sudo make


ISE_for_Linux_18_130221.png


・home ディレクトリの.bashrc の最後の行に下のPATH 設定を記述した。

PATH=$PATH:/opt/Xilinx/14.4/ISE_DS/ISE/bin/lin:/opt/Xilinx/14.4/ISE_DS/PlanAhead/bin:/opt/Xilinx/Vivado/2012.4/bin


ISE_for_Linux_19_130221.png

source .bashrc コマンドを実行して、.bashrc の内容を反映させた。

ise コマンドをターミナルから実行すると、ISEが起動した。サンプルをインプリメントしてみた。問題なくインプリメントができた。
ISE_for_Linux_20_130221.png

・配置配線後のPlanAhead を起動してみた。問題ない。
ISE_for_Linux_21_130221.png

planAhead コマンドをターミナルから実行して、PlanAhead を起動し、BFTサンプルのインプリメントを行った。こっちも問題無くインプリメントが行えた。
ISE_for_Linux_22_130221.png

vivado コマンドをターミナルから実行して、Vivado を起動し、PlanAhead と同じBFTサンプルのインプリメントを行った。問題無くインプリメントが行えた。PlanAhead とロジック素子の配置の様子の違いを比べてほしい。Vivado の方がロジック素子の配置がまとまっている。
ISE_for_Linux_23_130221.png
  1. 2013年02月21日 05:54 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:2

ISE14.1, 14.2 で”ERROR:MapLib:979 - LUT5 symbol”が出る

AXIバスに非標準のHDLを書いてしまったので、キャラクタ・ディスプレイ・コントローラAXI4スレーブIPを駆動するAXI4マスタIPを書き換えたりしている。単体シミュレーションは通ったのだが、ISE14.1 (Project Navigator) でインプリメントするところで、BitGenがエラーになってしまう。エラーは、”ERROR:MapLib:979 - LUT5 symbol”とそれに類似しているエラーがたくさん出る。ISE14.1だったので、ISE14.2でやってみても同様にエラーだった。
bitgen_error_1_121023.png

アンサーを見ると、”11.3 Virtex-5 FPGA MAP - Global Optimization オプションの組み合わせに関連したロジック破損”があってMAPのプロパティで出てくる”-global_opt speed”などのオプションでエラーが出ているとのことだった。見たところオプションは入っていなかった。
bitgen_error_2_121023.png

MAPオプションを変えてやってみたが同様だった。
bitgen_error_3_121023.png

考えてみたら、MAPでエラーが出るのではなく、BitGenでエラーが出る。なぜ、BitGenでMAPエラー?ということだが、エラーチェックのためか?BitGenでは論理合成からひと通りやっているようだ。なぜMAPでひかからなくてBitGenで?という話もある。BitGenのDRCエラーチェックを外してみたが、同様にエラーだった。
bitgen_error_6_121023.png

いよいよ、エラーを解消する手段が無い。。。実は以前、XPSプロジェクト単体でやっていた時にMAPでエラーが出ていたが、ISEのプロジェクトの下にXPSプロジェクトをおいたら大丈夫になったことがあった

次にPlanAhead14.1 でやってみることにした。
PlanAheadではエラーは無かった。
bitgen_error_7_121023.png
  1. 2012年10月23日 05:55 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:0

XPS13.1入のISE13.4プロジェクトをISE14.1に変換

今回は、ISE13.4の”AXI4マスタIPの作製3(インプリメント)”で作ったXPSが入っているプロジェクトをISE14.1に変換してみた。
ISE14.1を立ちあげて変換ダイアログが出てくるので変換をした。XPSも立ちあげて変換したが、やはりIPのバージョンが変更されているようだ。無事に変換できたと思って、インプリメントしてみたところ、エラーが出てしまった。
ISE141_1_120510.png

ERROR:EDK:4070 - INSTANCE: clock_generator_0, PORT: PSDONE - invalid port in use
when ISVALID="(C_CLKOUT15_VARIABLE_PHASE || C_CLKOUT14_VARIABLE_PHASE ||C_CLKOUT13_VARIABLE_PHASE || C_CLKOUT12_VARIABLE_PHASE ||C_CLKOUT11_VARIABLE_PHASE || C_CLKOUT10_VARIABLE_PHASE || C_CLKOUT9_VARIABLE_PHASE || C_CLKOUT8_VARIABLE_PHASE ||C_CLKOUT7_VARIABLE_PHASE || C_CLKOUT6_VARIABLE_PHASE |
|C_CLKOUT5_VARIABLE_PHASE || C_CLKOUT4_VARIABLE_PHASE || C_CLKOUT3_VARIABLE_PHASE || C_CLKOUT2_VARIABLE_PHASE ||C_CLKOUT1_VARIABLE_PHASE || C_CLKOUT0_VARIABLE_PHASE)" evaluates to FALSE.
Please remove the port from your design -
H:\HDL\FndtnISEWork\Spartan6\Atlys\Atlys_XPS_CDC_SVGA_141\system.mhs line 167


system.mhs の167行目は”BEGIN clock_generator”だった。clock_generator の部分の記述を下に示す。

BEGIN clock_generator
PARAMETER INSTANCE = clock_generator_0
PARAMETER HW_VER = 4.03.a
PARAMETER C_EXT_RESET_HIGH = 0
PARAMETER C_CLKIN_FREQ = 100000000
PARAMETER C_CLKOUT0_FREQ = 600000000
PARAMETER C_CLKOUT0_GROUP = PLL0
PARAMETER C_CLKOUT0_BUF = FALSE
PARAMETER C_CLKOUT1_FREQ = 600000000
PARAMETER C_CLKOUT1_PHASE = 180
PARAMETER C_CLKOUT1_GROUP = PLL0
PARAMETER C_CLKOUT1_BUF = FALSE
PARAMETER C_CLKOUT2_FREQ = 100000000
PARAMETER C_CLKOUT2_GROUP = PLL0
PARAMETER C_CLKOUT3_FREQ = 40000000
PARAMETER C_CLKOUT3_GROUP = PLL0
PORT LOCKED = proc_sys_reset_0_Dcm_locked
PORT CLKOUT2 = clk_100_0000MHzPLL0
PORT RST = RESET
PORT CLKOUT0 = clk_600_0000MHzPLL0_nobuf
PORT CLKOUT1 = clk_600_0000MHz180PLL0_nobuf
PORT CLKIN = GCLK
PORT PSDONE = clock_generator_0_PSDONE
PORT CLKOUT3 = clock_generator_0_CLKOUT3
END


”PORT PSDONE = clock_generator_0_PSDONE”を削除した。
ISE141_2_120510.png

この状態でXPSでProjectメニューからDesign Rule Check を行ったところ、問題は無くなったようだ。
ISE141_3_120510.png

XPSを閉じて、もう一度、Project Navigator でインプリメントを行ったところ動作した。
ISE141_4_120512.png

このプロジェクトでのISE13.4からISE14.1へのプロジェクト変換では、完全には変換できずに手動による変換が必要だった。
  1. 2012年05月10日 05:21 |
  2. Xilinx ISEについて
  3. | トラックバック:0
  4. | コメント:0
»