FC2カウンター FPGAの部屋 2024年04月
fc2ブログ

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

FPGAの部屋

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

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる6

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる5”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、論理合成、Place & Route、ビットファイルの生成を行った。今回は、Efinity Programmer を起動して、Xyloni Development Kit に Sapphire SoC のビットファイルを SPI Active モードで書き込んだ。

最初に、Xyloni Development Kit を Windows 11 のパソコンに USB ケーブルで接続した。

Efinity から Open Programmer ボタンをクリックした。
Efinity_251_240419.png

Efinity Programmer が起動した。
Select Image File ボタンをクリックした。
Efinity_252_240419.png

Open Image File ダイアログが表示された。
xyloni_sapphire.hex ファイルを選択して、開くボタンをクリックした。
Efinity_253_240419.png

Efinity Programmer に戻って、Programming Mode を SPI Active モードに変更した。
Efinity_254_240419.png

Start Program ボタンをクリックし、HEX ファイルを Xyloni Development Board に書き込んだ。
Efinity_255_240419.png

HEX ファイルの書き込みが終了した。
Efinity_256_240419.png

ログを貼っておく。

金 4月 19 24 04:24:47 - Valid device ID found: 0x00000000
金 4月 19 24 04:24:47 - Board Profile: Xyloni Developement Board
金 4月 19 24 04:27:56 - Valid device ID found: 0x00000000
金 4月 19 24 04:27:56 - Board Profile: Xyloni Developement Board
金 4月 19 24 04:27:56 - Using FTDI URL (SPI = ftdi://0x0403:0x6011:0:1/1, JTAG = ftdi://0x0403:0x6011:0:2/1)
金 4月 19 24 04:27:56 - SPI Active Programming on ftdi://0x0403:0x6011:0:1/1
金 4月 19 24 04:27:57 - Unrecognized Flash device. Will use Generic Flash profile. Please contact support if you face any problem.
金 4月 19 24 04:27:57 - Flash device: Generic Flash Profile. JEDEC id: 0xEF7018 @ SPI freq 6.0 MHz
金 4月 19 24 04:27:57 - Erasing 172 KiB from flash @ 0x00000000 (may take a while...)
金 4月 19 24 04:28:01 - Finished erase in 4 seconds
金 4月 19 24 04:28:01 - Writing 169 KiB to flash @ 0x00000000 ...
金 4月 19 24 04:28:03 - Finished write in 1 seconds
金 4月 19 24 04:28:03 - Reading 169 KiB from flash @ 0x00000000 ...
金 4月 19 24 04:28:03 - Finished read in 0 seconds
金 4月 19 24 04:28:03 - Flash verify successful
金 4月 19 24 04:28:03 - "SPI active" programming...done

  1. 2024年04月19日 04:44 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Petalinux をインストールする前にインストールしておきたいパッケージをインストールする

Petalinux をインストールする前にインストールしておきたいパッケージがあるが、それお一括でインストールするスクリプトファイルをダウンロードすることができる。

当然、Petalinux をインストールするので、Linux 限定だけど。WSL2 とかでもOKだと思う。

AR# 73296: PetaLinux: PetaLinux ビルド ホストに必要なパッケージをインストールする方法

ここから、plnx-env-setup.sh がダウンロードできて、それをスーパー・ユーザー・モードで実行する。
sudo ./plnx-env-setup.sh
  1. 2024年04月18日 17:25 |
  2. PetaLinux
  3. | トラックバック:0
  4. | コメント:0

Ubuntu のパソコンに Vitis 2022.1 をインストールしていると、”Generating installed device list”で止まってしまう

Ubuntu 22.04 のパソコンに Vitis 2022.1 をインストールするために、AMD からインストーラーをダウンロードして、インストールしていると”Generating installed device list”で止まってしまって、5時間以上進んでいなかった。

仕方なく、インストールをキャンセルした。

もう一度、インストーラーを起動してインストールしても同じ”Generating installed device list”で止まってしまう。

Vitis 2022.1 のサポートOS に Ubuntu 22.04 が入っていないのが、まずいのか?ということで、Ubuntu 22.04 を消して、Ubuntu 20.04 に変更して、再度 Vitis 2022.1 のインストーラーを起動して、インストールしたのだが、やはり”Generating installed device list”で止まってしまう。

ググってみると、”Vivado 2018.3 Final Processing hangs at 'Generating installed device list' on Ubuntu 19.04”が引っ掛かった。
Vivado 2018.3 Final Processing hangs at 'Generating installed device list' on Ubuntu 19.04”によると、2 つのパッケージをインストールすると、問題が解消できるようだ。

sudo apt intall libtinfo5
sudo apt intall libncurses5


早速、パッケージをインストールして Vitis 2022.1 のインストーラーを起動してみたが、数時間たってみると、Ubuntu が再起動していたようだった?失敗だ。orz

その後、Vitis 2023.2 をインストールしたら、インストールできたので、Vitis 2022.1 もインストールしたところ、成功した。。。良かった。
Vitis 2022.1 を 4 回インストールしてしまった。一回につき 58 GB 程度ダウンロードするから、232 GB ダウンロードしたのか? orz
  1. 2024年04月18日 05:13 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる5

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる4”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、Interface Designer を起動して、GPIO ピンの入れ替えや PLL の設定変更を行った。今回は、論理合成、Place & Route、ビットファイルの生成を行った。

Efinity Software の dashboard で Automated Flow であることを確認し、Synthesize ボタンをクリックした。
Efinity_246_240418.png

論理合成、Place & Route、ビットファイルの生成が実行された。
Efinity_247_240418.png

Result タブをクリックし、Synthesis -> xyloni_sapphire.map.rpt を確認した。
Efinity_248_240418.png

プリミティブの使用量を以下にしめす。

### ### Resource Summary (begin) ### ### ### 
INPUT  PORTS    :   33
OUTPUT PORTS    :   51

EFX_ADD         :   482
EFX_LUT4        :   3194
   1-2  Inputs  :   543
   3    Inputs  :   1043
   4    Inputs  :   1608
EFX_FF          :   2636
EFX_RAM_5K      :   18
EFX_GBUFCE      :   2
### ### Resource Summary (end) ### ### ###


Placement -> xyloni_sapphire.place.rpt を示す。
Efinity_249_240418.png

Place された後の最終的なリソース使用量を示す。

---------- Resource Summary (begin) ----------
Inputs: 31 / 96 (32.29%)
Outputs: 63 / 223 (28.25%)
Clocks: 2 / 16 (12.50%)
Logic Elements: 4972 / 7384 (67.33%)
    LE: LUTs/Adders: 3678 / 7384 (49.81%)
    LE: Registers: 2636 / 5280 (49.92%)
Memory Blocks: 18 / 24 (75.00%)
Multipliers: 0 / 8 (0.00%)
---------- Resource Summary (end) ----------



Routing -> xyloni_sapphire.timing.rpt を示す。
Efinity_250_240418.png

クロックのタイミング制約は満たされている。

---------- 1. Clock Frequency Summary (begin) ----------

User target constrained clocks
  Clock Name   Period (ns)  Frequency (MHz)    Waveform        Targets
io_systemClk      40.000        25.000      {0.000 20.000} {io_systemClk}  
jtag_inst1_TCK   100.000        10.000      {0.000 50.000} {jtag_inst1_TCK}

Maximum possible analyzed clocks frequency
  Clock Name   Period (ns)  Frequency (MHz)     Edge
io_systemClk      34.894        28.658         (R-R)
jtag_inst1_TCK    45.442        22.006         (F-R)

Geomean max period: 39.820

---------- Clock Frequency Summary (end) ---------------

  1. 2024年04月18日 05:01 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる4

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる3”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、top_soc.v の SPI_1 ポートの追加を行った。もう一度、論理合成、Place & Route、ビットファイルの生成を行った。GitHub の Efinix-Inc/xyloni の soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトの xyloni_sapphire.peri.xml と入れ替えた。今回は、Interface Designer を起動して、GPIO ピンの入れ替えや PLL の設定変更を行った。

Open Interface Designer ボタンをクリックし、Interface Designer を起動する。
Efinity_234_240416.png

Efinity Interface Designer が起動した。
Show/Hide GPIO Resouce Assigner ボタンをクリックし、GPIO Resource Assiger を表示する。
Efinity_235_240417.png

GPIO : Instance View タブが表示された。
system_gpio_0_io[0]Package Pin をダウブルクリックし、出てきた下向き三角をクリックすると、設定値がプルダウンメニューで表示された。プルダウンメニューから C9 を選択する。
Efinity_236_240417.png

このピンはすでに gpio_0_io[15] に接続済みなので、Assigning GPIO Instance ダイアログが表示された。
OK ボタンをクリックした。
Efinity_237_240417.png

system_gpio_0_io(0) の >Package Pin は C9 に割り当てられた。

次に、system_gpio_0_io[15] だが、Package Pin は system_gpio_0_io[0] に割り当てられてしまったので、ブランクになっている。
前の system_gpio_0_io[0] と同様ステップを踏んで、Package Pin を B3 に割り当てた。
Efinity_238_240417.png

次に PLL の設定を行う。
Efinity_239_240417.png

Block Editor の Manual Configuration タブをクリックした。
Reset Pin NamesystemClk_rstn に変更した。
Locked Pin NamesystemClk_locked に変更した。
Multipller (M)24 に設定した。
Pre Divider (N) を 1 に設定した。
Efinity_240_240417.png

下にスクロールした。
PLL Frequency の Psot Divider (O)1 に設定した。
Output Divider32 に設定した。
Output Frequncy (MHz) が 24.9975 になった。
Efinity_241_240417.png

左のウインドウの Design : T8T81 -> GPIO (30) -> io_asyncReset:GPIOR_02 をクリックした。
Pin Nameio_asyncResetn に変更した。
Efinity_242_240417.png

Check Design ボタンをクリックして、Check Design を行った。
Efinity_243_240417.png

Check Design が終了した。
Efinity_244_240417.png

最後に、File メニューから Edit Project... を選択した。
Project Editor ダイアログが表示された。
Design タブをクリックした。
Top Module/Entitytop_soc と入力した。
これを入力し忘れると、論理合成でエラーが出てしまう。
Efinity_245_240417.png
  1. 2024年04月17日 18:26 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる3

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる2”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、Verilog HDL ファイルや制約ファイルをインポートして、論理合成、Place & Route、ビットファイルの生成を行った。今回は、top_soc.v の SPI_1 ポートの追加を行った。もう一度、論理合成、Place & Route、ビットファイルの生成を行った。GitHub の Efinix-Inc/xyloni の soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトの xyloni_sapphire.peri.xml と入れ替えた。

xyloni_sapphire プロジェクトの top_soc.v を開いた。
ポート宣言のところの system_spi_0_... の記述をコピーし、ペーストして、system_spi_1_... に記述をすべて変更した。
Sapphire SoC の生成のところで、SPI_1 を追加したため、Example Design よりもポートが増えているからだ。
Efinity_223_240416.png

同じく、top_soc.v の memoryCheckerPass の行を削除する。
Efinity_224_240416.png

memoryCheckerPass の行を削除した。
Efinity_225_240416.png

次に top_soc.v の SapphireSoC IP のインスタンス部分で、SPI_0 の記述をコピー & ペーストして、SPI_1 の記述に変更する。
元の SPI_1 の記述を示す。
Efinity_226_240416.png

SPI_0 の接続をコピー & ペーストして、SPI_1 に変更した。
Efinity_227_240416.png

セーブ・ボタンをクリックして、セーブを行った。
Efinity を終了した。

Synthesize ボタンをクリックして論理合成、Place & Route、ビットファイルの生成を行った。
Efinity_228_240416.png

GitHub の Efinix-Inc/xyloni の code の横の下向き三角をクリックし、プルダウンメニューから Download ZIP を選択して、ZIP ファイルをダウンロードした。
Efinity_229_240416.png

xyloni-master.zip がダウンロードされた。
xyloni-master.zip を解凍した xyloni-master フォルダの名前を xyloni に変更した。

xyloni_sapphire プロジェクトのフォルダを見ると、xyloni_sapphire.peri.xml ファイルがあったので、これを削除する。
Efinity_230_240416.png

xyloni_sapphire.peri.xml ファイルを削除した。

xyloni\design\soc_Opal_t8\soc_Opal_hw_t8\Xyloni_kit\soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトにコピーする。
Efinity_231_240416.png

soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトにコピーした。
Efinity_232_240416.png

soc_opalSoc.peri.xml の名前を xyloni_sapphire.peri.xml に変更した。
Efinity_233_240416.png
  1. 2024年04月16日 04:53 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる2

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる1”の続き。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみようということで、前回は、Windows 11 のパソコンで、Efinity を起動して、xyloni_sapphire プロジェクトを作成した。そして、RISC-V プロセッサの IP である SapphireSoC IP を生成した。今回は、Verilog HDL ファイルや制約ファイルをインポートして、論理合成、Place & Route、ビットファイルの生成を行った。

SapphireSoC IP を生成したときに生成された T120F324_devkit の Verilog HDL ファイルを xyloni_sapphire プロジェクトにコピーして、プロジェクトに加える。

左のウインドウの Project タブの xyloni_sapphire -> Design を右クリックし、右クリックメニューから Add を選択した。
Efinity_217_240415.png

Open ダイアログが表示された。
C:\Users\marse\Documents\HDL\Efinity\xyloni_sapphire\ip\SapphireSoC\T120F324_devkit フォルダの top_soc.v を選択した。
File Option の Location の Copy to Project のチェックボックスをチェックした。
Open ボタンをクリックした。
Efinity_218_240415.png

top_soc.v が 左のウインドウの Project タブの xyloni_sapphire -> Design に加わった。

次に制約ファイルを xyloni_sapphire プロジェクトにコピーして、プロジェクトに加える。

左のウインドウの Project タブの xyloni_sapphire -> Constraint を右クリックし、右クリックメニューから Add を選択した。
Efinity_219_240415.png

Open ダイアログが表示された。
C:\Users\marse\Documents\HDL\Efinity\xyloni_sapphire\ip\SapphireSoC\T120F324_devkit フォルダの constraints.sdc を選択した。
File Option の Location の Copy to Project のチェックボックスをチェックした。
Open ボタンをクリックした。
Efinity_220_240415.png

constraints.sdc が左のウインドウの Project タブの xyloni_sapphire -> constraint に加わった。
Efinity_221_240415.png

Dashboard の Synthesize ボタンをクリックして、論理合成、Place & Route、ビットファイルの生成を行った。

ビットファイルの生成まで終了したが、Unassigned Core Pins が 71 個ある。
Efinity_222_240415.png
  1. 2024年04月15日 04:28 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる1

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみよう。
その第1弾として、RISC-V の IP の Sapphire SoC を生成する。

Windows 11 の Efinity 2023.2 を起動して、File メニューから Create Project... を選択した。
Name に xyloni_sapphire と入力した。
Location は C:\Users\marse\Documents\HDL\Efinity\xyloni_sapphire とした。
Family は Trion, Device はT8F81, Timing Model は C2 とした。
OK ボタンをクリックした。
Efinity_192_240414.png

xyloni_sapphire プロジェクトが作成された。
Efinity_187_240413.png

左のウインドウの Project タブの IP を右クリックし、右クリックメニューから New IP を選択した。
Efinity_193_240414.png

IP Catalog ダイアログが表示された。
Efinix -> Processors and Peripherals -> Sapphire SoC を選択して、Next>> ボタンをクリックした。
Efinity_194_240414.png

IP Configuration ダイアログが表示された。
SOC タブ
デフォルトの状態を下に示す。
Option と Frequency (MHz) と Cache を変更する。
Efinity_195_240414.png

Opetin を Lite に Frequency (MHz) を 25 MHz に、Cache のチェックボックスのチェックを外した。
Efinity_196_240414.png

Cache/Memory タブ
デフォルトの状態を下に示す。
Efinity_197_240414.png

External Memory Interface のチェックボックスのチェックを外した。
Efinity_198_240414.png

Debug タブ
Target Board/Cable/Module を Xyloni に変更した。
Efinity_199_240414.png

UART タブ
デフォルトのままとした。
Efinity_200_240414.png

SPI タブ
SPI は Flush と SD カードの 2 つのチャネルを使用するので、SPI 1 をイネーブルにするそうだ。
SPI 1 の Include the SPI 1 のチェックボックスにチェックを入れた。
Efinity_201_240414.png

I2C タブ
デフォルトのままとした。
Efinity_202_240414.png

GPIO タブ
GPIO 0 Bit Width を 16 ビットに変更した。
Efinity_203_240414.png

APB3 タブ
APB Slave 0 の Include the APB3 interface 0 のチェックボックスのチェックを外した。
Efinity_204_240414.png

AXI4 タブ
AXI Slave の Include the AXI4 Slave interface のチェックボックスのチェックを外した。
Efinity_205_240414.png

User Interrupt タブ
User A Interrupt の Include the User Interface A のチェックボックスのチェックを外した。
Efinity_206_240414.png

User Timer タブ
User Timer 0 の Include the User Timer 0 のチェックボックスのチェックを入れた。
Efinity_207_240414.png

Base Address タブ
Address Assignment Method はデフォルトの AUTO のままとした。
Efinity_208_240414.png

Deliverables タブ
Example Design (Ti60F255_devkit) と Example Design (Ti180J484_devkit) と Testbench/modelsim のチェックボックスのチェックを外した。
Efinity_209_240414.png

Summary タブ
Module Name に SapphireSoc を入力した。
Summary を確認し、Generate ボタンをクリックした。
Efinity_210_240414.png

Review generation configuration ダイアログが表示された。
Generate ボタンをクリックした。
Efinity_211_240414.png

Generation Success ダイアログが表示された。
OK ボタンをクリックした。
Efinity_212_240414.png

IP Catalog ダイアログの Close ボタンをクリックして、閉じた。
Efinity_213_240414.png

Efinity の左のウインドウの Project タブの IP の下に IP : SapphireSoC が追加された。
Efinity_214_240414.png

xyloni_sapphire フォルダを示す。
embedded_sw フォルダと IP フォルダが作られている。
Efinity_215_240414.png

xyloni_sapphire\ip\SapphireSoC フォルダを示す。
Deliverables タブで指定した T120F324_devkit のサンプル・デザインとテストベンチのフォルダが見える。
Efinity_216_240414.png
  1. 2024年04月14日 07:04 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Windows 11 では Efinity は C ドライブ限定で使用した方が良い

昨日の記事でもそうだが、Windows 11 の C ドライブにインストールした Efinity を使用して、D ドライブにプロジェクトを作成すると、デバイスが不正で、内部エラーになってしまうようだ。
Windows 11 の Efinity は C ドライブにインストールして、C ドライブにプロジェクトを作成した方が良い。

C ドライブにインストールした Efinity で D ドライブに Trion T8F81 の xyloni_sapphire プロジェクトを作成する。
Efinity 2023.2 を起動して、File メニューから Create Project... を選択した。
Name に xyloni_sapphire と入力した。
Location に D:/HDL/Efinity/xyloni_sapphire と入力した。つまり D ドライブにプロジェクトを作成する。
OK ボタンをクリックした。
Efinity_188_240413.png

Open Project ダイアログが表示された。
デバイスが不正だとのこと、OK ボタンをクリックするとプロジェクトが閉じて、アボートするようだ。
OK ボタンをクリックした。
Efinity_189_240413.png

Open Project ダイアログが表示された。
Internal error だそうだ。
OK ボタンをクリックした。
Efinity_190_240413.png

作成したプロジェクトは消えてしまった。
Efinity_191_240413.png

なお、C ドライブに xyloni_sapphire プロジェクトを先ほどと同じ設定で作成すると、 xyloni_sapphire プロジェクトが作成た。
Efinity_187_240413.png

安全性をみて、”Efinity は C ドライブにインストールして、C ドライブにプロジェクトを作成した方が良い”という結論になった。
  1. 2024年04月13日 20:26 |
  2. Efinity IDE
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる15(soc_sap_t8 をやってみる7)

”Xyloni Development Kit を使ってみる14(soc_sap_t8 をやってみる6)”の続き。

Sapphire SoC のサンプルが”Efinix-Inc/xyloni”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、ワークスペースのディレクトリ設定が間違っていたことに気づいたので、もう一度、Ubuntu 22.04 のパソコンでやり直してみたがやはり、OpenOCD の起動時にエラーになった。今回は、Ubuntu 22.04 のパソコンではうまく行かないので、Windows 11 のパソコンで xyloni をダウンロードして、Efinity で xyloni/design/soc_sap_t8/top_sapphire.xml を Open Project... で読み込んだところ、IP のアップデート・ダイアログが表示された。IP をアップデートしたら Internal Error で落ちてしまった。

(2024/04/13:追記) デバイスが不正だとエラーが出た原因は、C ドライブに Efinity をいインストールして、D ドライブにプロジェクトを置いているからだった。プロジェクトを C ドライブに移動したら、デバイスが不正だというエラーは出なくなった。ただし IP はアップデートしようとして失敗している。

Windows 11 のパソコンで xyloni//design/soc_sap_t8 をやってみよう。

https://github.com/Efinix-Inc/xyloni で code の下向き三角をクリックし、Download ZIP を選択し、ダウンロードを行った。
Efinity_178_240412.png

xyloni-master.zip がダウンロードできたので、解凍した。
xyloni-masterが解答できたので、xyloni に名前を変えた。
Efinity_179_240412.png

Efinity を起動して、File メニューから Open Project... を選択した。
Open Project File ダイアログが開いた。
xyloni/design/soc_sap_t8/top_sapphire.xml を選択し、Open ボタンをクリックした。
IP Upgrades ダイアログが表示された。
Yes ボタンをクリックした。
Efinity_180_240412.png

IP Upgrades が進んでいく。
Efinity_181_240412.png

IP Upgrades が Fail した。
Efinity_182_240412.png

OK ボタンをクリックした。
Open Project ダイアログが表示された。
デバイスが不正だとのこと、OK ボタンをクリックするとプロジェクトが閉じて、アボートするようだ。
OK ボタンをクリックした。
Efinity_183_240412.png

Open Project ダイアログが表示された。
Internal error だそうだ。
OK ボタンをクリックした。
Efinity_184_240412.png

プロジェクトがクローズされた。
Efinity_185_240412.png

ダメだったので、次からは、”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”を参考に、一から Sapphire SoC を実装してみよう。
最初に OpenOCD を Windows 11 にインストールする必要があるのだろうか?
”Sapphire RISC-V SoC Hardware and Software User Guide UG-RISCV-SAPPHIRE-v6.0 December 2023”の 8 ページの”Required Software”では、” The RISC-V IDE includes the following packages:”に”xPack GNU RISC-V Embedded GCC”と”OpenOCD Debugger”が入っているので、OpenOCD をインストールする必要はないみたいだ。
それじゃなぜ、Ubuntu 22.04 で OpenOCD をインストールする必要があったんだろうか?なぞだ?
  1. 2024年04月12日 04:21 |
  2. Efinity IDE
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる14(soc_sap_t8 をやってみる6)

Xyloni Development Kit を使ってみる13(soc_sap_t8 をやってみる5)”の続き。

Sapphire SoC のサンプルが”Efinix-Inc/xyloni”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、Efinity Programmer でFPGA をコンフィギュレーションし、Efinity RISC-V Embedded Software IDE で Run したところ、失敗した。その後、Run Configuration を変えて見たが、失敗した。OpenOCD が必要ということで、インストールしてから、Run してみたが、やはり失敗した。今回は、ワークスペースのディレクトリ設定が間違っていたことに気づいたので、もう一度、Ubuntu 22.04 のパソコンでやり直してみたがやはり、OpenOCD の起動時にエラーになった。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”を参照して、実行していく。ありがとうございます。

Xyloni Development Kit を使ってみる11(soc_sap_t8 をやってみる3)”の Efinity RISC-V Embedded Software IDE Launcher ダイアログのワークスペース設定時に新規作成したワークスペース・ディレクトリを指定していたのだが、”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”では、xyloni/design/soc_sap_t8/embedded_sw/sapphire0 をワークスペースとして指定するようなので、もう一度、やってみることにした。

efinity-riscv-ide-2023.2/Efinity-RISCV-IDE/efinity-riscv-ide/efinity-riscv-ide をダブルクリックして起動した。

Efinity RISC-V Embedded Software IDE Launcher ダイアログが表示された。
Workspace の Brows... ボタンをクリックした。
Select Workspace Directory ダイアログが開いた。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0 をワークスペースとして指定して、Launch ボタンをクリックした。
Efinity_186_L240411.png

Efinity RISC-V Embedded Software IDE が表示された。
Create a new Makefile project in a directory containing existing cod をクリックした。Makefile Project を生成する。
Efinity_187_L240411.png

New Project ダイアログが表示された。
Existing Code Location の Browse... ボタンをクリックした。

ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo を選択し、”開く”ボタンをクリックした。

New Project ダイアログで Finish ボタンをクリックした。

uartEchoDemo プロジェクトが生成された。
Efinity_188_L240411.png

左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから import... を選択した。

Import ダイアログが表示された。
C/C++ を展開して、C/C++ Project Settings を選択した。
Next > ボタンをクリックした。
Efinity_189_L240411.png

Settings file の Brows... ボタンをクリックした。

ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config/project_settings_soc.xml を選択した。
”開く”ボタンをクリックした。
Efinity_190_L240411.png

Select settings to import に Include Paths と # Symbols が入っている。
Finish ボタンをクリックした。

Efinity RISC-V Embedded Software IDE に戻った。
include パスが入っているのが見える。
Efinity_191_L240411.png

前のビルド結果が残っているので、削除する。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Clean Project を選択した。

前のビルド結果が削除された。
Efinity_192_L240411.png

左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Build Project を選択した。
ビルドが行われて成功した。
Efinity_193_L240411.png

Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Import... を選択した。

Import ダイアログが表示された。
Select 画面
Run/Debug を展開して、Launch Configuration を選択した。
Next > ボタンをクリックした。
Efinity_194_L240411.png

Import Launch Configuration 画面
From Directory の Browse... ボタンをクリックした。

xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config ディレクトリを選択して、”開く”ボタンをクリックした。

左のウインドウに config が入った。
config のチェックボックスにチェックを入れた。
右のウインドウに 3 つの項目が追加された。
default.launch だけチェックを残して、他の 2 つのチェックを外した。
Finish ボタンをクリックした。
Efinity_195_L240411.png

Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Run As -> Run Configuration を選択した。

Run Configuration ダイアログが表示された。
Create, manage, and run configuration 画面

GDB OpenOCD Debugging -> default をクリックした。
Efinity_196_L240411.png

Main のタブで Project の Brows... ボタンをクリックした。
Efinity_197_L240411.png

Project Selection ダイアログが表示された。
uartEchoDemo が選択されている。
OK ボタンをクリックした。
Efinity_198_L240411.png

C/C++ Application の Brows... ボタンをクリックした。

xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo/build/uartEchoDemo.elf を選択した。
”開く”ボタンをクリックした。

C/C++ Application にフルパスの uartEchoDemo.elf が入った。
Efinity_199_L240411.png

Debugger タブをクリックした。
Apply ボタンをクリックした。

Xyloni ボードを USB でパソコンに接続した。
Xyloni ボードには、”Xyloni Development Kit を使ってみる13(soc_sap_t8 をやってみる5)”ですでに soc_sap_t8 が ROM に書かれている。

Efinity RISC-V Embedded Software IDE の Run Configuration ダイアログで Run ボタンをクリックし、プログラムを走らせた。
Efinity_200_L240411.png

エラーになった。(画像を取るのを忘れてしまった)エラーメッセージを示す。

Open On-Chip Debugger 0.11.0
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
embedded:startup.tcl:26: Error: Can't find /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg
in procedure 'script' 
at file "embedded:startup.tcl", line 26


/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg となっていて、バックスラッシュになっている。
実際に fgdi.cfg はある。
Efinity_201_L240411.png

そこで、フルパスで指定してみた。
Efinity_202_L240411.png

やはりエラーになった。
Efinity_203_L240411.png

エラーメッセージを示す。

Open On-Chip Debugger 0.11.0
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg:13: Error: invalid command name "ftdi"
in procedure 'script' 
at file "embedded:startup.tcl", line 26
at file "/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg", line 13


やはり、エラーだった。。。もう一度、Windows 11 でやってみよう。
  1. 2024年04月11日 18:14 |
  2. Efinity RISC-V Embedded Software IDE
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる13(soc_sap_t8 をやってみる5)

Sapphire SoC のサンプルが”Efinix-Inc/xyloni”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、作成した uartEchoDemo の実行のための準備を進めて、Run Configuration を設定した。今回は、Efinity Programmer でFPGA をコンフィギュレーションし、Efinity RISC-V Embedded Software IDE で Run したところ、失敗した。その後、Run Configuration を変えて見たが、失敗した。OpenOCD が必要ということで、インストールしてから、Run してみたが、やはり失敗した。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”を参照して、実行していく。ありがとうございます。

soc_sap_t8 の hex ファイルを SPI Active モードで Xyloni に書き込む。
Efinity Software で Select Image file ボタンをクリックし、/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/outflow/soc_sap_t8.hex を選択した。
Programming Mode を SPI Active に変更した。
Efinity_175_L240409.png

Start Program ボタンをクリックし、ビットファイルを FPGA にコンフィギュレーションした。
Efinity_176_L240409.png

Efinity RISC-V Embedded Software IDE の Run Configuration ダイアログで Run ボタンをクリックし、プログラムを走らせた。
Efinity_177_L240409.png

エラーが発生した。
Efinity_178_L240409.png

Error in services launch sequence
Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\debug.cfg -c echo "Started by GNU MCU Eclipse"] failed.
Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\debug.cfg -c echo "Started by GNU MCU Eclipse"] failed.
Cannot run program "openocd": Unknown reason


よく見るとパスの区切りが \ になっている。
Run Configuration ダイアログの Debugger タブの Config options の \ を / に変更した。
Efinity_179_L240409.png

Apply ボタンをクリックしてから、Run ボタンをクリックした。
Efinity_180_L240409.png

やはりエラーだった。
Efinity_181_L240409.png

Error in services launch sequence
Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/debug.cfg -c echo "Started by GNU MCU Eclipse"] failed.
Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/debug.cfg -c echo "Started by GNU MCU Eclipse"] failed.
Cannot run program "openocd": Unknown reason


もしかして? OpenOCD インストールしてないかも?ということで、OpenOCD をインストールするために”OpenOCDのインストール for ubuntu”を参考に、OpenOCD をインストールした。
sudo apt install openocd
Efinity_182_L240409.png

インストールされてなかったようだ。。。orz
バージョンを確認した。
openocd -v
Efinity_183_L240409.png
バージョンは、

Open On-Chip Debugger 0.11.0

だった。

これで、もう一度 Efinity RISC-V Embedded Software IDE の Run Configuration ダイアログで Run ボタンをクリックすると、今度は、OpenOCD が Fail した。
Efinity_184_L240409.png

Run Configuration ダイアログの Debugger タブの Config options に

-c 'set CPU0_YAML /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/cpu0.yaml'

を追加しても同様にエラーだった。
Efinity_185_L240409.png
  1. 2024年04月11日 07:28 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる12(soc_sap_t8 をやってみる4)

Xyloni Development Kit を使ってみる11(soc_sap_t8 をやってみる3)”の続き。

Sapphire SoC のサンプルが”Efinix-Inc/xyloni”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、Efinity RISC-V Embedded Software IDE を起動して、uartEchoDemo プロジェクトを新規作成した。設定を行って、ビルドを行い成功した。今回は、作成した uartEchoDemo の実行のための準備を進めて、Run Configuration を設定した。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”RUN/DEBUGの設定を行う”を参照して、実行していく。ありがとうございます。

使用してるパソコンの OS は Ubuntu 22.04 だ。

Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Import... を選択した。
Efinity_160_L240408.png

Import ダイアログが表示された。
Select 画面
Run/Debug を展開して、Launch Configuration を選択した。
Next > ボタンをクリックした。
Efinity_161_L240408.png

Import Launch Configuration 画面
From Directory の Browse... ボタンをクリックした。
Efinity_162_L240408.png

xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config ディレクトリを選択して、”開く”ボタンをクリックした。
Efinity_163_L240408.png

左のウインドウに config が入った。
config のチェックボックスにチェックを入れた。
右のウインドウに 3 つの項目が追加された。
default.launch だけチェックを残して、他の 2 つのチェックを外した。
Finish ボタンをクリックした。
Efinity_164_L240408.png

Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Run As -> Run Configuration を選択した。
Efinity_165_L240408.png

Run Configuration ダイアログが表示された。
Create, manage, and run configuration 画面

GDB OpenOCD Debugging -> default をクリックした。
Main のタブで Project の Brows... ボタンをクリックした。
Efinity_166_L240408.png

Project Selection ダイアログが表示された。
uartEchoDemo が選択されている。
OK ボタンをクリックした。
Efinity_167_L240408.png

C/C++ Application の Brows... ボタンをクリックした。
Efinity_168_L240408.png

xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo/build/uartEchoDemo.elf を選択した。
”開く”ボタンをクリックした。
Efinity_169_L240408.png

C/C++ Application にフルパスの uartEchoDemo.elf が入った。
Debugger タブをクリックした。
Efinity_170_L240408.png

Debugger タブ
Config options は cpu0.yaml の記述がないので、そのままとした。
Efinity_171_L240408.png

Startup タブ
Efinity_172_L240408.png

Apply ボタンをクリックした。
  1. 2024年04月08日 04:25 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる11(soc_sap_t8 をやってみる3)

Xyloni Development Kit を使ってみる10(soc_sap_t8 をやってみる2)”の続き。

Sapphire SoC のサンプルが”Efinix-Inc/xyloni”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、Interface Designer を確認し、論理合成、Place & Route、ビットストリームを生成して、レポートを確認したところ、タイミング・エラーがあったが、このままやってみることにした。今回は、Efinity RISC-V Embedded Software IDE を起動して、uartEchoDemo プロジェクトを新規作成した。設定を行って、ビルドを行い成功した。

XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”を参照して、実行していく。ありがとうございます。

なお、使用してる OS は Ubuntu 22.04 だ。

efinity-riscv-ide-2023.2/Efinity-RISCV-IDE/efinity-riscv-ide/efinity-riscv-ide をダブルクリックした。
Efinity_143_L240407.png

Efinity RISC-V Embedded Software IDE Launcher ダイアログが表示された。
Workspace の Brows... ボタンをクリックした。
Select Workspace Directory ダイアログが開いた。
xyloni/design/soc_sap_t8 ディレクトリに行って、 workspace ディレクトリを新規作成して選択した。
(2024/04/11:追記) xyloni/design/soc_sap_t8/embedded_sw/sapphire0 をワークスペースとして指定するのが正しいようです。("Xyloni Development Kit を使ってみる14(soc_sap_t8 をやってみる6)"参照)
”開く”ボタンをクリックして終了した。
Efinity_144_L240407.png

Efinity RISC-V Embedded Software IDE Launcher ダイアログの Launch ボタンをクリックした。
Efinity RISC-V Embedded Software IDE が表示された。
Create a new Makefile project in a directory containing existing cod をクリックした。Makefile Project を生成する。
Efinity_145_L240407.png

New Project ダイアログが表示された。
Existing Code Location の Browse... ボタンをクリックした。
Efinity_146_L240407.png

ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo を選択し、”開く”ボタンをクリックした。
Efinity_147_L240407.png

Project Name に uartEchoDemo と入力した。
Finish ボタンをクリックした。
Efinity_148_L240407.png

uartEchoDemo プロジェクトが生成された。
Efinity_149_L240407.png

左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから import... を選択した。
Efinity_150_L240407.png

Import ダイアログが表示された。
C/C++ を展開して、C/C++ Project Settings を選択した。
Next > ボタンをクリックした。
Efinity_151_L240407.png

Settings file の Brows... ボタンをクリックした。
Efinity_152_L240407.png

ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config/project_settings_soc.xml を選択した。
”開く”ボタンをクリックした。
Efinity_153_L240407.png

Select settings to import に Include Paths と # Symbols が入っている。
Finish ボタンをクリックした。
Efinity_154_L240407.png

Efinity RISC-V Embedded Software IDE に戻った。
Efinity_155_L240407.png

前のビルド結果が残っているので、削除する。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Clean Project を選択した。
Efinity_156_L240407.png

前のビルド結果が削除された。
Efinity_157_L240407.png

左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Build Project を選択した。
Efinity_158_L240407.png

ビルドが行われて成功した。しかし、エラーの表示は消えていないのはなぜなんだ?
Efinity_159_L240407.png
  1. 2024年04月07日 11:04 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる10(soc_sap_t8 をやってみる2)

Xyloni Development Kit を使ってみる9(soc_sap_t8 をやってみる1)”の続き。

Sapphire SoC のサンプルが”Efinix-Inc/xyloni”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようということで、前回は、soc_sap_t8 プロジェクトを開き、HDL ファイルを確認し、sapphire0 IP の設定を確認した。今回は、Interface Designer を確認し、論理合成、Place & Route、ビットストリームを生成して、レポートを確認したところ、タイミング・エラーがあった。

Efinity Software から Open Interface Designer ボタンをクリックして、Interface Designer を起動した。
my_pll:PLL_0 を確認した。
Output Frequency (MHz)は 20.1369 MHz だった。20 MHz としたいところ、分周比の関係でこの周波数になったと思う。
Efinity_136_L240406.png

GPIO も割り当てられているのが分かる。

気になるのは、JTAG が割り当てられていることだ。
JTAG User Tap (1) で、 jtag_inst1:JTAG_USER1 が割り当てられている。
JTAG はもう 1 つ JTAG_USER2 があるようだ。
Efinity_141_L240406.png

制約ファイルの contraints.sdc を見たが、クロックの制約だけでなく、たくさん制約が書かれている。
Efinity_137_L240406.png

Efinity Software の dashboard で Automated Flow であることを確認し、Synthesize ボタンをクリックして、すべてのフローを実行した。

Result タブをクリックし、Placement -> soc_sap_t8.place.rpt ファイルを確認した。
Logic Elements は 6072 / 7384 (82.23%) 使用されている。かなり、リソース使用量を食っている。
Memory Blocks: 18 / 24 (75.00%) 使用されている。
Efinity_138_L240406.png

Result タブをクリックし、Routing -> soc_sap_t8.timing.rpt を確認した。
Timing でエラーが出ているが、io_systemClk は 25 MHz 程度で 20 MHz のクロックに対しては余裕がある。
Efinity_139_L240406.png

Slack がマイナスになっているのは、JTAG クロックから、io_systemClk へのクロックパスのようだ。
Efinity_140_L240406.png

View Timing Browser ボタンをクリックし、Timing Browser を表示するとクリティカル・パスがより一層明確に確認できるようだ。
Efinity_142_L240406.png

しかし、このタイミング・エラーはこちらではどうにもならないので、無視して先に進むことにしよう。
  1. 2024年04月06日 08:27 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる9(soc_sap_t8 をやってみる1)

Efinix の RISC-V プロセッサの Sapphire SoC を勉強する”で勉強した Sapphire SoC のサンプルが”Efinix-Inc/xyloni”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみよう。

Efinity を起動して、File メニューから Open Project... を選択した。
Open Project File ダイアログが開いた。
xyloni/design/soc_sap_t8/top_sapphire.xml を選択し、Open ボタンをクリックした。
soc_sap_t8 プロジェクトが開いた。
top_sapphire.v ファイルを開いた。
Efinity_119_L240405.png

左のウインドウの Project タブの IP -> IP: sapphire0 をダブルクリックしてファイルを開いた。
sapphire0.v ファイルが開いた。
Efinity_120_L240405.png

sapphire0 の構成を見てみよう。
左のウインドウの Project タブの IP -> IP: sapphire0 を右クリックし、右クリックメニューから Configure を選択した。
Efinity_121_L240405.png

IP Configuration ダイアログが表示された。
SOC タブ
Option は Standard で、Frequency は 20 MHz だった。
キャッシュは無し。
Efinity_122_L240405.png

Cache/Memory タブ
On-Chip RAM Size は 4KB だった。
Efinity_123_L240405.png

Debug タブ
Efinity_124_L240405.png

UART タブ
UART0 は必須のようだ。
Efinity_125_L240405.png

SPI タブ
SPI0 は必須のようだ。
Efinity_126_L240405.png

I2C タブ
I2C 0 は必須じゃないが、実装されている。
Efinity_127_L240405.png

GPIO タブ
GPIO 0 は実装されている。
Efinity_128_L240405.png

APB3 タブ
APB Slave Address Size は 64 KB が選択されていた。
Efinity_129_L240405.png

AXI4 タブ
残念ながら AXI4 Slave は生成される設定になっていない。
Efinity_130_L240405.png

User Interrupt タブ
User A Interrupt にチェックが入っていた。
Efinity_131_L240405.png

User Timer タブ
Timer は実装されていない。
Efinity_132_L240405.png

Base Address タブ
Address Assignment Method は AUTO だった。
Efinity_133_L240405.png

Deilverables タブ
Efinity_134_L240405.png

Summary タブ
これまでの設定が表示されていた。
Efinity_135_L240405.png

Close ボタンをクリックして、終了した。
  1. 2024年04月05日 05:02 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Efinix の RISC-V プロセッサの Sapphire SoC を勉強する

Github の Efinix-Inc/xyloni の xyloni/design/Efinity_tutorial は前回で終了した。次は、Efinix の IP の Sapphire RISC-V SoC を使用している Xiloni Development Kit のサンプル・プロジェクトの soc_sap_t8 をやってみようと思っている。
そこで今回は、Sapphire SoC を学習してみよう。

Efinix の”RISC-V SoC: 組み込みコンピューティングの推進”ページを読みながら Sapphire SoC に付いて学習する。
Efinix の”RISC-V SoC: 組み込みコンピューティングの推進”ページから引用して、ブログに書いていく。

Sapphire SoC
Efinity IP マネージャで必要なペリフェラルを選択し、SoC を構成することができるそうだ。

特徴を引用する。

・VexRiscv コア - 6 つのパイプラインステージ (フェッチ、インジェクタ、デコード、実行、メモリ、ライトバック)、割込処理、例外処理
・システムクロック: 20 ~ 400 MHz
・オンチップ RAM: 4 ~ 512 KB (SPI FLASH用のブートローダーを含む)
・DDR または HyperRAM メモリコントローラ
 ・メモリサイズサポート: 4 MB ~ 3.5 GB
 ・ユーザ設定可能な外部メモリバス周波数
 ・外部メモリアクセスのための半二重 AXI3 インターフェイス (最大 256 ビット)
 ・400 MHz DDR クロック周波数、800 Mbps
 ・200 MHz HyperRAM クロック周波数、400 Mbps
・ユーザロジック用の AXI マスタチャネル (最大 2 系統)
・ユーザロジック用の AXI スレーブチャネル (1 系統)
・浮動小数点ユニット
・Linux 用の MMU (メモリ マネジメント ユニット)
・カスタム命令セット (様々な機能を実現するための 1,024 ID)
・RISC-V アトミック拡張機能、Compressed 命令 (オプション)
・APB3 ペリフェラル:
 ・GPIO 最大 32 本
 ・I2C マスタ 最大 3 個
 ・Clint Timer
 ・PLIC
 ・SPI マスタ 最大 3 個 (最大 25 MHz)
 ・Timer 最大 3 個
 ・UART 最大 3 個
 ・APB3 ユーザペリフェラル 最大 5 個


PLIC は何かな?と思ってググって見たところ、”RISC-VのPLIC(Platform-Level Interrupt Controller)について”によると PLIC(Platform-Level Interrupt Controller) のようだ。

Sapphire SoC のブロック図を引用する。
Efinity_117_L240404.png

ユーザ・ロジックとは AXI4 インタフェースで接続だそうだ。これは嬉しい。
命令キャッシュとデータ・キャッシュもあるようだ。

SoC デザイン フローを引用する。
Efinity_118_L240404.png

ソフトウェアの作成は、”Ubuntu 22.04 に efinity-riscv-ide-2023.2 をインストールする”でインストールした efinity-riscv-ide-2023.2 を使用する。

Sapphire RISC-V SoC の使い方については、”Sapphire RISC-V SoC Hardware and Software User Guide UG-RISCV-SAPPHIRE-v6.0 December 2023”を参照する。
  1. 2024年04月04日 04:24 |
  2. Efinity IDE
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる8(Efinity_tutorial をやってみる5)

Xyloni Development Kit を使ってみる7(Efinity_tutorial をやってみる4)”の続き。

Github の Efinix-Inc/xyloni の xyloni/design/Efinity_tutorial をやってみようということで、前回は、Ubuntu 22.04 のパソコンで Xyloni Development Kit にプリインストールされている機能を確認し、Efinity Programmer を起動して、Efinity_tutorial のビットファイルをコンフィギュレーションして動作を確認した。今回は、外部入力クロックをやめて、内部オシレータの 10 kHz を使用して、カウンタを回した。

BGA49 と BGA 81 の T8 には 10 kHz の低周波オシレータが搭載されている。この低周波オシレータは常時動作している低消費電力回路のために用意されているようだ。(”T8 Data Sheet DST8-v5.1February 2024”の 16 ページの”Oscillator”参照)

最初に counter.vhd の Dataout に出力するカウンタのビット位置を cnt(29 downto 26) から cnt(17 downto 14) に変更する。これは、クロックが低速になるために速度を調整するためのようだ。
Efinity_106_L240402.png

制約ファイルの counterconstrain.sdc において、クロック間隔を 100000 ns に変更した。
Efinity_107_L240402.png

外部入力クロック・ピンを削除して、内部の低周波オシレータを使用する。
Efinity Software で Open Interface Designer ボタンをクリックし、Interface Designer を起動した。
左のウインドウの Design: T8F81 -> GPIO(7) -> clk : GPIOL_20 を右クリックし、右クリックメニューから Delete を選択し、削除した。
Efinity_108_L240402.png

左のウインドウの Design: T8F81 -> Oscillator(0) を右クリックし、右クリックメニューから Create Block を選択した。
Efinity_109_L240402.png

Block Editor で Instance Name を clk に変更した。
Efinity_110_L240402.png

Check Design ボタンをクリックして、Save ボタンでセーブした。
Efinity_111_L240402.png

Efinity Software の dashboard で Automated Flow であることを確認し、Synthesize ボタンをクリックして、すべてのフローを実行する。
Efinity_112_L240402.png

すべてのフローの実行が終了した。
Efinity_113_L240402.png

Efinity Software の左のウインドウでResult タブをクリックし、new_project.timing.rpt をダブルクリックして開いた。
10 kHz のところ、184.570 MHz で全く問題ない。

---------- 1. Clock Frequency Summary (begin) ----------

User target constrained clocks
 Clock Name  Period (ns)  Frequency (MHz)     Waveform        Targets
    clk       99999.992        0.010      {0.000 49999.996}    {clk}

Maximum possible analyzed clocks frequency
 Clock Name  Period (ns)  Frequency (MHz)     Edge
    clk         5.418        184.570         (R-R)

Geomean max period: 5.418

---------- Clock Frequency Summary (end) ---------------


Efinity_114_L240402.png

Efinity_tutorial のビットファイルをコンフィギュレーションする。
Efinity Software の Tools メニューから Open Programmer を選択した。

Efinity Programmer が起動した。
Select Image file ボタンをクリックし、/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/Efinity_tutorial/outflow/new_project.bit を選択した。

Start Program ボタンをクリックし、ビットファイルを FPGA にコンフィギュレーションした。
Efinity_115_L240402.png

ビットファイルのコンフィギュレーションが終了し、LED にカウンタの値が表示されている。成功だ。
Efinity_116_L240402.png

Efinity Programmer のログを貼っておく。

火 4月 2 24 03:51:58 - Valid device ID found: 0x00000000
火 4月 2 24 03:51:58 - Board Profile: Xyloni Developement Board
火 4月 2 24 03:53:06 - Valid device ID found: 0x00000000
火 4月 2 24 03:53:06 - Board Profile: Xyloni Developement Board
火 4月 2 24 03:53:06 - Using FTDI URL (SPI = ftdi://0x0403:0x6011/1, JTAG = ftdi://0x0403:0x6011/2)
火 4月 2 24 03:53:06 - jtag programming started!
火 4月 2 24 03:53:06 - JTAG Programming on ftdi://0x0403:0x6011/2
火 4月 2 24 03:53:06 - Programming '/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/Efinity_tutorial/outflow/new_project.bit' via JTAG at freq 6.0 MHz
火 4月 2 24 03:53:07 - ... finished with JTAG programming
火 4月 2 24 03:53:08 - Detecting device status...
火 4月 2 24 03:53:11 - Device is in user mode!

  1. 2024年04月03日 04:40 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる7(Efinity_tutorial をやってみる4)

Xyloni Development Kit を使ってみる6(Efinity_tutorial をやってみる3)”の続き。

Github の Efinix-Inc/xyloni の xyloni/design/Efinity_tutorial をやってみようということで、前回は、Place 、Route、ビットストリームの生成を行って、レポートを確認した。今回は、Ubuntu 22.04 のパソコンで Xyloni Development Kit にプリインストールされている機能を確認し、Efinity Programmer を起動して、Efinity_tutorial のビットファイルをコンフィギュレーションして動作を確認した。

Windows 11 では、Xyloni Development Kit にプリインストールされている機能を確認済みだ
USB ドライバ関連は鬼門のようなので、Ubuntu 22.04 のパソコンでも USB-UART の機能の確認は必要だと思う。

Ubuntu 22.04 の端末で、GTKTerm を起動した。
gtkterm &

GTKTerm が起動した。
Configuration メニューから Port を選択した。
Configuration ダイアログが表示された。
USB の Port は /dev/ttyUSB0 から /dev/ttyUSB3 まであったが、そのうちの /dev/ttyUSB2 を選択した。
Baud Rate は 115200 bps に設定した。
Efinity_100_L240331.png

Xyloni Development Kit の BTN1 を押すと、Xyloni Test Menu が表示された。

Enter キーを押すと、SD Card Info が表示された。
問題なさそうだ。
Efinity_101_L240331.png

さて、Efinity_tutorial のビットファイルをコンフィギュレーションする。
Efinity Software の Tools メニューから Open Programmer を選択した。

Efinity Programmer が起動した。
Select Image file ボタンをクリックし、/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/Efinity_tutorial/outflow/new_project.bit を選択した。
Efinity_102_L240331.png

Start Program ボタンをクリックし、ビットファイルを FPGA にコンフィギュレーションした。
Efinity_103_L240331.png

ビットファイルのコンフィギュレーションが終了し、LED にカウンタの値が表示されている。成功だ。
Efinity_105_L240331.png

Efinity Programmer のログを貼っておく。

月 4月 1 24 21:42:47 - Board Profile: Xyloni Developement Board
月 4月 1 24 21:42:57 - Valid device ID found: 0x00000000
月 4月 1 24 21:42:57 - Board Profile: Xyloni Developement Board
月 4月 1 24 21:42:57 - Using FTDI URL (SPI = ftdi://0x0403:0x6011/1, JTAG = ftdi://0x0403:0x6011/2)
月 4月 1 24 21:42:57 - jtag programming started!
月 4月 1 24 21:42:57 - JTAG Programming on ftdi://0x0403:0x6011/2
月 4月 1 24 21:42:57 - Programming '/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/Efinity_tutorial/outflow/new_project.bit' via JTAG at freq 6.0 MHz
月 4月 1 24 21:42:58 - ... finished with JTAG programming
月 4月 1 24 21:42:59 - Detecting device status...
月 4月 1 24 21:43:02 - Device is in user mode!


なお、JTAG で FPGA をコンフィギュレーションしているので、電源を ON/OFF すると、プリインストールされている機能に戻る。
  1. 2024年04月02日 04:00 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0

Xyloni Development Kit を使ってみる6(Efinity_tutorial をやってみる3)

Xyloni Development Kit を使ってみる5(Efinity_tutorial をやってみる2)”の続き。

Github の Efinix-Inc/xyloni の xyloni/design/Efinity_tutorial をやってみようということで、前回は、Interface Designer を起動して、IO ピン部分の割付を行った。今回は、Place 、Route、ビットストリームの生成を行って、レポートを確認した。

Efinity の dashboard の Toggle Automated Flow ボタンをクリックし、Automated Flow を有効にした。
Place ボタンをクリックした。
Efinity_96_L240331.png

Place 、Route、ビットストリームの生成が実行され、終了した。
Efinity_97_L240331.png

xyloni/design/Efinity_tutorial/outflow ディレクトリに new_project.bit と new_project.hex ファイルが生成された。
Efinity_104_L240331.png

Place のレポートを確認する。
new_project.place.rpt を確認した。
Efinity_98_L240331.png

---------- Resource Summary (begin) ----------
Inputs: 3 / 96 (3.12%)
Outputs: 4 / 223 (1.79%)
Clocks: 1 / 16 (6.25%)
Logic Elements: 36 / 7384 (0.49%)
    LE: LUTs/Adders: 31 / 7384 (0.42%)
    LE: Registers: 34 / 5280 (0.64%)
Memory Blocks: 0 / 24 (0.00%)
Multipliers: 0 / 8 (0.00%)
---------- Resource Summary (end) ----------


Route のタイミング・レポートを確認する。
new_project.timing.rpt を開いた。
Efinity_99_L240331.png

---------- 1. Clock Frequency Summary (begin) ----------

User target constrained clocks
 Clock Name  Period (ns)  Frequency (MHz)    Waveform      Targets
    clk         30.000        33.333      {0.000 15.000}    {clk}

Maximum possible analyzed clocks frequency
 Clock Name  Period (ns)  Frequency (MHz)     Edge
    clk         7.110        140.647         (R-R)

Geomean max period: 7.110

---------- Clock Frequency Summary (end) ---------------


clk も最高動作周波数は 140 MHz 以上で問題なさそうだ。
  1. 2024年04月01日 04:00 |
  2. Xyloni Development Kit
  3. | トラックバック:0
  4. | コメント:0