SlideShare a Scribd company logo
1 of 34
Download to read offline
PythonとVeriloggenを用いた
RTL設計メタプログラミング
高前田 伸也
奈良先端科学技術大学院大学 情報科学研究科
E-mail: shinya_at_is_naist_jp
2016年3月2日
第3回人工知能とHW/SW協調設計
ワークショップ
@宜野湾マリン支援センター
Veriloggen[高前田,IEICE RECONF'15]:
PythonによるRTLメタプログラミング
Design Generator by Python
from veriloggen import *
m = Module('blinkled')
clk = m.Input('CLK')
led = m.Output('LED', 8)
count = m.Reg('count', 32)
m.Assign( led(count[31:24]) )
m.Always(Posedge(clk)(
count( count + 1 ) )
hdl = m.to_verilog()
print(hdl)
blinkled
CLK RST
LED count
assign
always
Veriloggen Object
module blinkled (
input CLK,
output [7:0] LED
);
reg [31:0] count;
assign LED = count[31:24];
always @(posedge CLK) begin
count <= count + 1;
end
endmodule
Verilog Source Code
module
input
CLK
input
RST
blinkled
Verilog AST
to_verilog()
Verilog
AST
Generator
Verilog
Code
Generator
Run on Python Interpreter
Verilog HDLコードの
組み立てルールをPythonの
言語機能を活用して記述
Verilog HDLによる回路記
述・
テストベンチが生成される
実行
Trax2016-03 Shinya T-Y, NAIST 2
Verilogコードをオブジェクトとして表現
Moduleオブジェクト
Pythonの言語機能を用いて
オブジェクトを組み立てる
(mの)Regオブジェクト
"count <= 0"オブジェクト
"count==1023"オブジェクト
Ifオブジェクト
(mの)Alwaysオブジェクト
完成したModule
オブジェクトをリターン
Trax2016-03 Shinya T-Y, NAIST 3
コード生成 (to_verilog)
n Moduleオブジェクトのto_verilog()メソッドを呼び出す
と文字列形式でソースコードが取得できる
n Verilog HDLのソースコード解析・生成ツールキット
Pyverilogを利用
Trax2016-03 Shinya T-Y, NAIST 4
Veriloggenの利用例:メソッド切り出しによる
コーディングパターン再利用
RAM I/Fのコーディングパターン
2つのI/Fを追加
Trax2016-03 Shinya T-Y, NAIST 5
Veriloggenとその他の処理系との違い
n 高位合成や高位DSLはソースコードそのものが回路定義
l リフレクションを利用:ソースコード情報を取得
l ソースコードを「コンパイラで」解析しデータフロー等に変換
l 回路を追加するにはソースコードを追加する必要がある
• 頻出パターンもコード化しないといけないL
l 生成元言語のサブセットのみ対応L
n Veriloggenは明示的にHDLを組み立てる
l リフレクション未使用:ソースコードそのもの定義は無関係
l ソースコードの「実行」によりデータフロー等を構築
l 回路の追加は明示的なオブジェクト操作で実現される
• 頻出パターンはメソッド切り出しができるJ
l 生成元言語のすべての機能を利用できるJ
l ソフトウェア文法をそのままHW化はできないL
Trax2016-03 Shinya T-Y, NAIST 6
ソフトウェア要件
n 対応OS:Pythonとiverilogが動作すれば何でもOKなはず
l 普段は Ubuntu 14.04とMac OS X 10.11 で検証しています
n 必要なソフトウェア
l Icarus Verilog: 0.9.6 以上(ただし10.xはNG)
l Python: 2.7 or 3.4 以上(3.5がおすすめ)
l Python pip(Pythonパッケージ管理ソフトウェア): 7.1.2 以上
l virtualenv(Python仮想環境管理ツール,推奨): 12.0.7 以上
• "pip install virtualenv" でインストールできる
l pytest, pytest-pythonpath(テスト用ツール,必要があれば)
• pytest: 2.8.2, pytest-pythonpath: 0.7 以上
• "pip install pytest pytesth-pythonpath" でインストールできる
l git(バージョン管理,推奨)
Trax2016-03 Shinya T-Y, NAIST 7
Getting Started, Veriloggen!
n python3, pip, virtualenvはインストール済みとします
n Virtualenv環境を作る
n Veriloggenをインストールする
l スライド作成時(2016年3月1日)の最新版 0.6.1
n 以上(簡単でしょ?)
mkdir test_vg
cd test_vg
virtualenv --python=python3 .
source bin/activate
pip install pytest pytest-pythonpath
pip install veriloggen
Trax2016-03 Shinya T-Y, NAIST 8
再掲: Veriloggenを用いたRTL設計フロー
Design Generator by Python
from veriloggen import *
m = Module('blinkled')
clk = m.Input('CLK')
led = m.Output('LED', 8)
count = m.Reg('count', 32)
m.Assign( led(count[31:24]) )
m.Always(Posedge(clk)(
count( count + 1 ) )
hdl = m.to_verilog()
print(hdl)
blinkled
CLK RST
LED count
assign
always
Veriloggen Object
module blinkled (
input CLK,
output [7:0] LED
);
reg [31:0] count;
assign LED = count[31:24];
always @(posedge CLK) begin
count <= count + 1;
end
endmodule
Verilog Source Code
module
input
CLK
input
RST
blinkled
Verilog AST
to_verilog()
Verilog
AST
Generator
Verilog
Code
Generator
Run on Python Interpreter
Verilog HDLコードの
組み立てルールをPythonの
言語機能を活用して記述
Verilog HDLによる回路記
述・
テストベンチが生成される
実行
Trax2016-03 Shinya T-Y, NAIST 9
では早速Lチカ
n サンプルコード一式をダウンロードする
n veriloggen/hello_led.py を開く
git clone https://github.com/PyHDI/veriloggen.git
cd veriloggen
emacs hello_led.py
Trax2016-03 Shinya T-Y, NAIST 10
Trax2016-03 Shinya T-Y, NAIST 11
Lチカ本体
生成
(blinkled)
テストベンチ
生成
(test)
本スクリプトを
実行する際の
コード
Trax2016-03 Shinya T-Y, NAIST 12
早速Lチカ回路を合成・シミュレーション
n hello_led.pyを実行する
n 波形(uut.vcd)をGTKwaveで観測する
python3 hello_led.py
gtkwave uut.vcd &
Trax2016-03 Shinya T-Y, NAIST 13
生成されたVerilog HDLコードを確認する
Trax2016-03 Shinya T-Y, NAIST 14
Veriloggen.FSM
n HDLでのFSMの
組み立ては面倒
n FSMライブラリを
使おう
l addメソッドで代入を
追加する
l クロックやリセットは
後から付加する
l 代入条件や遅延が
付加できる
• cond= ...
• delay= ...
l make_always()で
alway文を生成
Trax2016-03 Shinya T-Y, NAIST 15
FSMライブラリを使ってみる
n veriloggen/examples/fsm_example を開く
l examples, testsにサンプルが多数あります
l FSMの例としては examples/bram もおすすめ
cd veriloggen/examples/fsm_example
emacs fsm_example.py
Trax2016-03 Shinya T-Y, NAIST 16
fsm_example.py (1): 入出力・FSMオブジェクト
n 好きに入出力を定義する(Input, Output, Reg, ...)
n FSMオブジェクトを作る
l FSMオブジェクトにステート遷移情報を追加していく
Trax2016-03 Shinya T-Y, NAIST 17
fsm_example.py (2): FSM定義を追加していく
goto_next(): 次のステートに移る
add(): 現在のステートでの処理を追加する
delayを付けるとnサイクル遅れて実行される
add()・goto_next()共に condを付けると条件
が成立するときのみ実行される
keepを付けるとnサイクル
連続で実行される
Trax2016-03 Shinya T-Y, NAIST 18
fsm_example.py (3): Always文を合成する
必要があればreset文や追加の代入文を追加できる
モジュールオブジェクトmをリターン
Trax2016-03 Shinya T-Y, NAIST 19
動かしてみる
n fsm_example.pyを実行する
n 生成されたVerilog HDLコードを確認する
python3 fsm_example.py
emacs tmp.v
Trax2016-03 Shinya T-Y, NAIST 20
長いFSMができる
Trax2016-03 Shinya T-Y, NAIST 21
BRAMの例も見てみる
n veriloggen/examples/bram を開く
cd veriloggen/examples/bram
emacs bram.py
Trax2016-03 Shinya T-Y, NAIST 22
bram.py (1):
BRAMの定義
n個のポートを追加する
Reg array
n個のAlways文を
追加する
Trax2016-03 Shinya T-Y, NAIST 23
bram.py (2): BRAMを使う
BRAMの定義を生成
BRAMポートを
追加する
BRAM
インスタンスを作る
Trax2016-03 Shinya T-Y, NAIST 24
bram.py (3): BRAMにFSMを使ってアクセスする
FSMオブジェクトを作る
各ポートの初期値
各ポートの定義
Trax2016-03 Shinya T-Y, NAIST 25
動かしてみる
n bram.pyを実行する
n 生成されたVerilog HDLコードを確認する
python3 bram.py
emacs tmp.v
Trax2016-03 Shinya T-Y, NAIST 26
BRAMにアクセスするハードウェアができる
Trax2016-03 Shinya T-Y, NAIST 27
Veriloggen.Dataflow:オペレータオーバーロード
によるデータフロー設計
SWとして実行可能な
普通のPythonのメソッド定義
SWとして実行可能な
普通のPythonのメソッド定義
Trax2016-03 Shinya T-Y, NAIST 28
例)
4点FFT
Veriloggen.Dataflow:オペレータオーバーロード
によるデータフロー設計
SWとして実行可能な
普通のPythonのメソッド定義
データフロー変数の生成前述のメソッド定義に通常の変数
ではなくデータフロー変数を渡す
出力ポート
設定と
Verilog
モジュール
生成
Trax2016-03 Shinya T-Y, NAIST 29
Veriloggen.Dataflow:
データフローグラフ
delay
dout3
delay
R
delay
R
delay
R
Cond
R
<
0
Cond
0
<
R
delay
R
Cond
0
Cond
01 2
delay
R
<
R
delay
R
Cond
L
delay
R
2 1
<
0
Cond
0
<
R
delay
R
Cond
0
Cond
0 1 2
L
delay
R
delay
R
Cond
L
delay
R
2 1
<
0
Cond
0
delay
R
delay
R
L
delay
R
din0
L
delay
R
21
din1
R
delay
R
12
delay
R
delay
R
1 2
delay
R
din2
R
delay
R
delay
R
1 2
delay
R
delay
R
delay
R
din3
R
delay
dout2
R
Cond
0
Cond
02 1
dout0 dout1
2 1
delay
R
L
delay
R
2 1
1 2
Trax2016-03 Shinya T-Y, NAIST 30
データフローグラフ生成
遅延レジスタが自動挿入
されたパイプライン回路
パイプライン入力
パイプライン出力
例)
4点ソート
オペレータオーバーロードによる
データフロー変数の組み立て
add
add(+)演算子の
オペレータ
オーバーロード
Dataflow.Plus
オブジェクトを
リターン
Trax2016-03 Shinya T-Y, NAIST 31
Dataflowライブラリを使ってみる: FFT
n veriloggen/examples/dataflow_fft4 を開く
l 他にも dataflow_fftN, dataflow_sort, dataflow_matmul がある
n 動かしてみる
n こんな感じ
l 左は整数としての結果,右は固定小数としての結果
cd veriloggen/examples/dataflow_fft4
emacs dataflow_fft4.py
python3 dataflow_fft4.py
Trax2016-03 Shinya T-Y, NAIST 32
Dataflowライブラリを使ってみる: ソート
n veriloggen/examples/dataflow_sort を開く
n 動かしてみる
n こんな感じ
l 入力は [100, 99, 98, ..., 93]
l 出力は [93, ..., 98, 99, 100]
になるはず
l 上がIcarus Verilogでの結果
l 下がSWとして同一メソッドの
実行結果→一致している!
cd veriloggen/examples/dataflow_sort
emacs dataflow_sort.py
python3 dataflow_sort.py
Trax2016-03 Shinya T-Y, NAIST 33
まとめ
n Veriloggenは便利!
l 安定版はPyPIから
l 最新版はGitHubからどうぞ
git clone https://github.com/PyHDI/veriloggen.git
pip install veriloggen
Trax2016-03 Shinya T-Y, NAIST 34

More Related Content

What's hot

Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
 
ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法
nishio
 

What's hot (20)

TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
TensorFlow計算グラフ最適化処理
TensorFlow計算グラフ最適化処理TensorFlow計算グラフ最適化処理
TensorFlow計算グラフ最適化処理
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
 
Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討
 
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
 
LLVM最適化のこつ
LLVM最適化のこつLLVM最適化のこつ
LLVM最適化のこつ
 
ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
4bit-CPU : TD4の解説
4bit-CPU : TD4の解説4bit-CPU : TD4の解説
4bit-CPU : TD4の解説
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
 

Similar to PythonとVeriloggenを用いたRTL設計メタプログラミング

ぱっと見でわかるC++11
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11
えぴ 福田
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
Kiwamu Okabe
 

Similar to PythonとVeriloggenを用いたRTL設計メタプログラミング (20)

Pact言語によるセキュアなスマートコントラクト開発
Pact言語によるセキュアなスマートコントラクト開発Pact言語によるセキュアなスマートコントラクト開発
Pact言語によるセキュアなスマートコントラクト開発
 
Python Data-Visualization Package Status
Python Data-Visualization Package StatusPython Data-Visualization Package Status
Python Data-Visualization Package Status
 
ぱっと見でわかるC++11
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
 
GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713
 
DockerCon '17 Feedback at PaaS JP
DockerCon '17 Feedback at PaaS JPDockerCon '17 Feedback at PaaS JP
DockerCon '17 Feedback at PaaS JP
 
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオン
 
Etnet2015.slide
Etnet2015.slideEtnet2015.slide
Etnet2015.slide
 
VHDL-2008が好きなんです
VHDL-2008が好きなんですVHDL-2008が好きなんです
VHDL-2008が好きなんです
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみようGoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 

More from Shinya Takamaeda-Y

More from Shinya Takamaeda-Y (20)

オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
 
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
 
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
 
ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
 
マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討
 
A CGRA-based Approach for Accelerating Convolutional Neural Networks
A CGRA-based Approachfor Accelerating Convolutional Neural NetworksA CGRA-based Approachfor Accelerating Convolutional Neural Networks
A CGRA-based Approach for Accelerating Convolutional Neural Networks
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
 
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
 
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...
 
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
 
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
 
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...
PyCoRAM: Yet Another Implementation of CoRAM Memory Architecture for Modern F...
 
むかし名言集bot作りました!
むかし名言集bot作りました!むかし名言集bot作りました!
むかし名言集bot作りました!
 
APGAS言語X10を用いたオンチップネットワークシミュレーションの並列化
APGAS言語X10を用いたオンチップネットワークシミュレーションの並列化APGAS言語X10を用いたオンチップネットワークシミュレーションの並列化
APGAS言語X10を用いたオンチップネットワークシミュレーションの並列化
 
Mapping Applications with Collectives over Sub-communicators on Torus Network...
Mapping Applications with Collectives over Sub-communicators on Torus Network...Mapping Applications with Collectives over Sub-communicators on Torus Network...
Mapping Applications with Collectives over Sub-communicators on Torus Network...
 

PythonとVeriloggenを用いたRTL設計メタプログラミング