トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2019-8-22

Microwatt

A tiny Open POWER ISA softcore written in VHDL 2008だそうなので,とりあえず合成してみた.

git clone https://github.com/antonblanchard/microwatt.git

して fpga/topleve.vhd をトップにVivadoでプロジェクト作成.
VivadoでVHDL 2008を解釈するにはファイルタイプを指定しないといけないので,
tclコンソールで

set_property FILE_TYPE {VHDL 2008} [get_files *.vhd]
set_property FILE_TYPE {VHDL 2008} [get_files *.vhdl]

とかする.
clock_generatorはIP Catalogから選んで生成.
よくわからないけど,とりあえず,合成通すためってことで,入力125MHz→出力100MHzでコア生成.


合成時にuPythonのファームウェアを読み込むようなので,READMEに従ってuPythonをビルド.

git clone https://github.com/mikey/micropython
cd micropython
git checkout powerpc
cd ports/powerpc
make -j$(nproc)

PowerPC用のgccは,https://toolchains.bootlin.com/ からダウンロード.
uPythonはfirmware.elfとfirmware.binができるので,
とりあえずfirmware.binをhexdumpでHEX文字列に変換.


xdcは,exStickGE用に,

set_property -dict {PACKAGE_PIN W11 IOSTANDARD LVCMOS33} [get_ports clk]
create_clock -period 8.000 -name sys_clk_pin -waveform {0.000 4.000} -add [get_ports clk]
set_property -dict {PACKAGE_PIN D19 IOSTANDARD LVCMOS33} [get_ports reset_n]
set_property -dict {PACKAGE_PIN C14 IOSTANDARD LVCMOS33} [get_ports uart0_txd]
set_property -dict {PACKAGE_PIN C15 IOSTANDARD LVCMOS33} [get_ports uart0_rxd]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property CFGBVS VCCO [current_design]

と用意.


合成してみたら100MHzだとタイミングメットせず.残念.

Worst Negative Slack: -2.049ns

らしい.リソースは,LUT 15692, LUTRAM 91, FF 4643,BRAM 256,DSP 16とか.


KWS聴講

KWS@北千住で中原先生の招待講演きいてきた.
座長をおおせつかっていたので特別席でよかった.
Kは軽井沢じゃなくて,回路になってしまって久しいのだなあ,とか.

最近は姿勢推定のアプリが人気らしい

クラウドと組み込みの違い
  • FPGA Acceleration in the era of high level design, J.Freeman
    • cloud
      • many classes(1000s)
      • large workloads
      • high efficiency (perf./W)
      • server form factor
    • Embedded
      • Few classes(< 10)
      • Realtime frame rates
      • Low coast & low power
      • Custom from factor

リアルタイムもあれこれ

Ship classification from SAR image based on deep learning
https://link.springer.com/chapter/10.1007/978-3-030-01054-6_2

プラットフォーム
  • RPi - Jetson Nano - FPGA(Ultra96) - EdgeTPU
  • 柔軟性 -> R&Dコスト
  • 柔軟な設計法

推論アクセラレータ

Light-weight approach
  • fully pipelining vs. stage pipelining(= GPU)
  • 混合精度
  • スパース化
  • Separable Convolution
    • Point-wise + Depth-wise
    • Shift-net, Shuflle-net
    • 初段をTernaryでスピードも精度もあがる
      • 精度もあがる,のか.

probablistics approach - 統計的手法
  • PCAで可視化 (多次元を二次元にマッピング)
  • ノイズくわえる
    • NCNN

Systematic Approach
  • 入力画像と精度のトレードオフ
    • たとえば,OpenPoseで 368x368 -> 128x128
  • タイル分割
    • 前処理・後処理
  • Synetgy: Algorithm-hardware co-design for convnet accelerators on embedded fpgas

次のトレンド
  • 学習のアクセラレータ
    • なんか具体的にかわったの?
      • Lottery Ticket(?)
      • スパースありきで学習してもいい
  • DA的には設計デザインチョイス