FC2カウンター FPGAの部屋 Vivado

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

FPGAの部屋

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

Windows 10 Fall Creators Update をかけるとVivado 2017.3 が起動しない

今朝、Windows のUpdate があって、Vivado 2017.3 が動かなくなった。
今回のアップデートは、Windows 10 Fall Creators Update がかかってしまい、Vivado 2017.3 が起動しなかった。
これはなひたふさんのツィートで知ったのだが、Windows 10 Fall Creators Update をかけてしまうと、Vivado 2017.3 が起動しないということだ。
解決策はツィートにあるように、”AR# 69908 2017.3 - Windows 10 Fall Creators Update で Vivado が起動しない”を参照のこと。
AR#69908 を引用しておく。

1.(Vivado インストール ディレクトリ)\2017.3\bin\unwrapped\win64.o に移動する。
2.vivado.exe を vivado.exe.backup に名前を変更してバックアップをとる。
3.vivado-vg.exe をコピーして同じフォルダーに貼り付ける。
4.vivado-vg - Copy.exe を vivado.exe に名前を変更する。

  1. 2017年11月16日 14:40 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

白線追従走行用畳み込みニューラルネットワーク・システムをVivado 2017.3にアップデート

白線追従走行用畳み込みニューラルネットワーク・システムの製作7(白線間を走行)”で白線間を走行した白線間走行用畳み込みニューラルネットワークをVivado 2017.2 からVivado 2017.3 にアップデートしてみた。

ZYBO_0_172_8 フォルダのZYBO_0_153 プロジェクトをZYBO_0_173_8 フォルダにコピーして、Vivado 2017.3 でプロジェクトを読み込んだ。
IP Status 画面からIP をアップグレードして、論理合成、インプリメントしたところでエラー発生。
Vivado_2017_3_1_171022.png

エラー内容を貼っておく

[Place 30-640] Place Check : This design requires more Slice LUTs cells than are available in the target device. This design requires 19586 of such cell types but only 17600 compatible sites are available in the target device. Please analyze your synthesis results and constraints to ensure the design is mapped to Xilinx primitives as expected. If so, please consider targeting a larger device. Please set tcl parameter "drc.disableLUTOverUtilError" to 1 to change this error to warning.



結局、LUTのリソース使用量が 100 % を超えているということだった。

Vivado 2017.2 を立ち上げてみてみるとLUT は87 % だった。
Vivado_2017_3_2_171022.png

正確には 87.36 % だった。
Vivado_2017_3_3_171022.png

どのIP がそんなに増えてしまったのか?調査するためにOpen Synthesized Design をクリックして、Tools -> Report -> Report Utilization... をクリックして各IP のリソース使用量を調査した。
その画面を示す。
Vivado_2017_3_4_171022.png

ps7_0_axi_periph が 6043 LUTs は多い。
Vivado 2017.2 のプロジェクトと比べてみよう。
Vivado_2017_3_5_171022.png

Vivado 2017.2 はps7_0_axi_periph の使用LUT 数は1379 だった。
Vivado 2017.3 のps7_0_axi_periph のリソース使用量はVivado 2017.2 の ps7_0_axi_periph のリソース使用量に比べて約4.4 倍だった。

これはおかしいので、ps7_0_axi_periph をいったん削除して、もう一度、入れなおした。
その後、論理合成、インプリメント、ビットストリームの生成を行った。
成功した。レポートを示す。
Vivado_2017_3_6_171023.png

ハードウェアをエクスポートして、SDK を立ち上げて、cam_disp3_axis アプリケーション・プロジェクトを作成した。
Vivado_2017_3_7_171023.png

Program FPGA してから、cam_disp3_axis.elf を走らせたところカメラ画像が表示された。動作した。成功だ。

しかし、Vivado 2017.2 から Vivado 2017.3 へのアップデートでも危ないということが分かった。
2016 でもそうだったし、.2 から .3 へのアップデートが危ないということだろうか?
  1. 2017年10月23日 04:58 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Vivado 2017.3 をインストールした

遅ればせながら、Vivado 2017.3 をインストールした。
白線間走行畳み込みニューラルネットワーク・システムをZYBO Z7-20で動作させる3(ガボール・フィルタの追加)”のZYBO_Z7_0 プロジェクトをインプリメントしてみたが、問題なかった。
VirtualBox 上の Ubuntu 16.04 にもインストールしたが問題なくインストールできた。下はWindows のVivado 2017.3 のZYBO_Z7_0 プロジェクトと右側にVirtualBox 上の Ubuntu 16.04 にインストールしたVivado 2017.3 が見えているところだ。
Vivado_2017_3_1_171016.png

今のところ別に問題はないが、Vivado HLS の性能はCNN のコンパイルに関する限りでは、まだ Vivado HLS 2016.4 の方が良いと思う。
  1. 2017年10月16日 05:16 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Bash on Windows 10にVivado WebPACK 2017.2をインストールした2(日本語表示)

Bash on Windows 10にVivado WebPACK 2017.2をインストールした”の続き。

前回は、Xmingを起動してから、Bash on Windows 10 からVivado を起動したところ GUI 上でLinux バージョンのVivado を起動することができた。今回は、日本語を表示できるようにしてみた。

Xming の日本語表示についてはXfont をインストールしたり、いろいろとやってみたが、うまく行かなかった。ツィッターで聞いたところ、tethys さんが教えてくれた。ありがとうございました。

その方法は、「 [WSL]BashOnWindows(WSL)のGUIの日本語表示」の Windows10 に入ってる Windows フォントを使う方法だ。
下の2つのコマンドをBash on Windows 10 上で実行する。
sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/WindowsFonts
sudo fc-cache -fv

Win10_Ubuntu_Vivado_14_170718.png

その後、vivado を立ち上げたところ、日本語が表示できるようになった。
Win10_Ubuntu_Vivado_15_170718.png

次に、X サーバーだが、Xming だとVivado を立ち上げてもWindow 10 のタスクバーに表示されるアイコンはXming のX のアイコンなのだが、VcXsrv というX サーバーを使用すると、Vivado のアイコンがタスクバーに表示されるようになった。(「WindowsでリモートのLinuxのGUIアプリを表示させる-Xサーバ VcXsrv」参照)
これも善し悪しで、Windows のアイコンと見分けがつかなくなるという欠点はあるのだが、VcXsrv を使うことにした。

次に日本語入力だが、結論から言うと、GUI 上での日本語入力は諦めて、Windows の方からSublime text 上で日本語入力することにした。
Bash on Windows 10 のroot は「【シェル芸人への道】Bash on Windowsを探検する」によると、

C:\Users\Masaaki\AppData\Local\lxss

にありました。
Win10_Ubuntu_Vivado_16_170719.png

Vivado のトップHDL のあるC:\Users\Masaaki\AppData\Local\lxss\home\marsee\HDL\project_1\project_1.srcs\sources_1\bd\base_zynq\hdl フォルダに行った。
Win10_Ubuntu_Vivado_17_170719.png

base_zynq_wrapper.vhd をWindow 10 上のSublime text で編集し、日本語を書きこんだ。
Win10_Ubuntu_Vivado_18_170719.png

Vivado 2017.2 上でbase_zynq_wrapper.vhd を開いてみると、Sublime text で編集した日本語が表示されている。
Win10_Ubuntu_Vivado_19_170719.png

日本語はWindow 10 上のSublime text で入力してもよいと思った。ただし、入力してもVivado には追加入力されたということを認識できないので、自分で論理合成結果をクリアする必要があるようだ。
  1. 2017年07月19日 05:06 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Bash on Windows 10にVivado WebPACK 2017.2をインストールした

Vengineerの戯言」ブログの「Bash on Windows 10でVivado 2017.2」でWindows 10のPowerShell で動作するUbuntu 16.04 上でVivado 2017.2 をインストールするという記事が載っていた。それを参照して、自分でもWindows 10 のUbuntu 16.04 にVivado WebPACK 2017.2 をインストールしてみた。

まずは、左下のウインドウアイコンを右クリックして、右クリックメニューからWindows PowerShell を起動した。
update, upgrade コマンドを入力する。
sudo apt-get update
sudo apt-get upgrade

Win10_Ubuntu_Vivado_1_170717.png

Xming は既にインストールしてあるので、Xming を立ち上げた。次に、x11-apps をインストールした。続けてJava をインストールした。
sudo apt-get install x11-apps
sudo apt-get install default_jre
sudo apt-get install default_jdk


カレント・ディレクトリにXilinx_Vivado_SDK_2017.2_0616_1_Lin64.bin を貼り付けて
sudo ./Xilinx_Vivado_SDK_2017.2_0616_1_Lin64.bin
を実行するとDISPLAY 変数をセットしないといわれてエラーだった。
export DISPLAY=:0.0
を実行して、もう一度、
sudo ./Xilinx_Vivado_SDK_2017.2_0616_1_Lin64.bin
を実行するとVivado のインストーラーが上がってきた。
Win10_Ubuntu_Vivado_3_170717.png

その後はLinuxでのインストールと同様に、インストール画面を表示されたので、WebPACKを選択して、インストールを開始した。
Win10_Ubuntu_Vivado_2_170717.png

インストール途中でエラーが出てしまった。今のインストール先は、/mnt/d/Xilinx ディレクトリだ。
Win10_Ubuntu_Vivado_4_170717.png

D: ドライブは十分に容量があるので、たぶん、行先のディレクトリが長すぎるのでは?と思う。
Win10_Ubuntu_Vivado_5_170717.png

今度はデフォルトのディレクトリパスの /opt/Xilinx にした。
Win10_Ubuntu_Vivado_6_170717.png

Win10_Ubuntu_Vivado_7_170717.png

インストール終了。成功した。
Win10_Ubuntu_Vivado_8_170717.png

Ubuntu16.04にVivado 2016.4をインストール”を参考に設定を行った。

gedit が無いのでインストールした。
sudo apt install gedit

gedit で .bashrc を編集する。
gedit .bashrc

.bashrc の下に以下の3行を追加した。
source /opt/Xilinx/Vivado/2017.2/settings64.sh
alias xsdk='env SWT_GTK3=0 xsdk'
alias vivado='env SWT_GTK3=0 vivado'

(2017/07/18:追記 export DISPLAY=:0.0 も追加しておいた方が良い)
Win10_Ubuntu_Vivado_9_170717.png

.bashrc の内容を反映。
source .bashrc

.Xilinx のオーナーを自分に変更する。
sudo chown -R marsee:marsee .Xilinx/

Vivado を起動した。
Vivado &
Win10_Ubuntu_Vivado_10_170717.png

Vivado が起動した。
Win10_Ubuntu_Vivado_11_170717.png

ZC702 のExample Project を生成してみた。
Win10_Ubuntu_Vivado_12_170717.png

論理合成、インプリメント、ビットストリームの生成も通った。
Win10_Ubuntu_Vivado_13_170718.png

ただし、日本語の表示と入力はまだできない。日本語を表示させるとトーフになってしまう。
  1. 2017年07月17日 08:00 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Ubuntu 16.04 にVivado Design Edition がインストールできない

Ubuntu 16.04 にVivado のDesign Edition がインストールできない。(現在のバージョンは、2017.2)

理由は、HostID が ”000000000000”になってしまうからだ。
HostID_all0_1_170709.png

原因は、Ubuntu 16 では、イーサネットの名前が enp0s3 とかになってしまって、eth0 が無くなってしまったからのようだ。
HostID_all0_2_170709.png

AR# 60510 ライセンス - Vivado License Manager (VLM) に使用するマシンの HostID が「000000000000」と表示される”を見つけてやってみたが、私のUbuntu 16.04 ではファイルが無いと言われてダメだった。

Vivado のライセンス・マネージャーがUbuntu 16.04 に対応してくれることを望む。
(2017/07/10:まっちゃんさんのアドバイスのおかげで eth0 にできました。ありがとうございました。詳しくはコメント欄をご覧ください。)

なお、WebPACKはライセンスが必要ないので、問題なくインストールすることができた。
Ubuntu16.04にVivado 2016.4をインストール”を参照。
  1. 2017年07月09日 08:48 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:3

SDKのベアメタル・アプリケーションで時間を計測する方法(Zynq)

SDKのベアメタル・アプリケーションで時間を計測する方法とPYNQボードでのテストについて書いておく。

なお、”ZYBOでのベアメタルの時刻取得方法について”を参照させて頂いた。ありがとうございます。

ZYBOでのベアメタルの時刻取得方法について”によると、XTime_GetTime() を使用するそうだ。そして、Zynq のCortex-A9 プロセッサのクロックの1/2 の周波数でタイマーが動作しているとのことだった。
PYNQボードの動作クロックを見てみたが、650 MHz だったので、325 MHz で動作しているということで間違いないようだ。

私もアプリケーションソフトの xttime_test を作成して、XTime_GetTime() についてテストしてみた。使用した基板はPYNQボードだ。
XTtime_test_1_170707.png

xttime_test.elf を起動すると、1.000246 ms と表示された。
XTtime_test_2_170707.png

usleep(1000) を行っているので、1 ms のはずだ。大体合っている。

次に、usleep(1000); をコメントアウトして、sleep(10); のコメントアウトを外した。
XTtime_test_3_170707.png

10000.000252 ms なので、10 秒だ。別にストップウォッチでも計ってみたが、合っている。大丈夫そうだ。
XTime_GetTime() は経過時間の計測に使えるということが分かった。

xttime_test.c を貼っておく。

/* * xttime_test.c * *  Created on: 2017/07/06 *      Author: Ono */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "xtime_l.h"

int main(){
    XTime start_time, end_time;

    printf("Start\n");
    XTime_GetTime(&start_time);
    usleep(1000);
    //sleep(10);
    XTime_GetTime(&end_time);
    printf("end\n");

    printf("usleep_time = %lf ms\n", (double)((long long int)end_time-(long long int)start_time)/325000.0);
}

  1. 2017年07月07日 04:35 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0
»