狠狠撸

狠狠撸Share a Scribd company logo
Pythonを用いた
高水準ハードウェア設計環境の検討
高前田 伸也
奈良先端科学技術大学院大学 情報科学研究科
E-mail: shinya_at_is_naist_jp
2015年9月18日 13:00-13:25
IEICE RECONF@愛媛大学
Veriloggen
RECONF2015-09 Shinya T-Y, NAIST 2
実行
Verilog HDLPython
PythonでVerilog HDLを
組み立てるライブラリ
n?? Pythonで書いた動作を
HDLに変換する
高位合成ではない
n?? Pythonのオブジェクト
としてVerilogの信号や
代入を組み上げていく
Veriloggen is available!
n?? GitHubで公開中
l?? Veriloggen: https://github.com/PyHDI/veriloggen
l?? PyCoRAM: https://github.com/PyHDI/PyCoRAM
l?? Pyverilog: https://github.com/PyHDI/Pyverilog
n?? PIP(Pythonパッケージ管理)でもインストール可
l?? ただしGitHubが最新版です
RECONF2015-09 Shinya T-Y, NAIST 3
$ pip install veriloggen?
$ pip install pyverilog?
$ pip install pycoram?
$ git clone https://github.com/PyHDI/veriloggen.git?
$ git clone https://github.com/PyHDI/Pyverilog.git?
$ git clone https://github.com/PyHDI/PyCoRAM.git?
目次
n?? 背景: ハードウェア記述言語
n?? 提案: Veriloggen
l?? モジュール (Module),信号 (Input, Output, Wire, Reg, ...),
代入 (Assign, Always),制御 (If, For, While),
サブモジュール (Instance), コード生成 (to_verilog),
既存Verilogコードの取り込み (read_verilog_code())
n?? Veriloggen拡張ライブラリ
l?? Parallel,FSM,Pipeline, Simulation
n?? 評価
n?? まとめ
RECONF2015-09 Shinya T-Y, NAIST 4
How to Develop a Software?
Writing a software
in programming languages
Preprocess
Compile
Assemble
Link
CompilerFlow
Execution on a CPU
int main(){?
int a = 1 + 2;?
printf(“Hello %dn”, a);?
return 0;?
}?
add $t0, $t1, $t2?
li $v0, 1?
syscall?
ELF01ABF00F1...?
Executable Binary
RECONF2015-09 Shinya T-Y, NAIST 5
How to Develop a (FPGA) Hardware?
Writing a hardware design in HDL
(Hardware Description Language)
Synthesis
Technology Mapping
Place and Route
Bitstream Generation
EDAFlow
Configuration of the bitstream
to an FPGA
module top?
(input CLK, RST, ?
output reg [7:0] LED);?
always @(posedge CLK) begin?
LED <= LED + 1;?
end?
endmodule?
1A0C021E...?
Original HW on an FPGA
Bitstream
RECONF2015-09 Shinya T-Y, NAIST 6
RTL representation using Verilog HDL
RECONF2015-09 Shinya T-Y, NAIST 7
count
(32-bit)
+
Truncate
inv
32
32
32
8
8
LED
top
32
1Combinational
Circuit
Sequential
Circuit
Combinational
Circuit
Blinking LED (LEDチカチカ)
ハードウェア記述言語
HDL (Hardware Description Language)
n?? ハードウェア設計のためのDSL
l?? ソフトウェアプログラミング言語との違い
?? (多くの)プログラミング言語は逐次動作の記述のためのもの
?? HDLは単位時刻毎の並列の振る舞いを記述するためのも
n?? Verilog HDL/VHDLの問題点
l?? すべてをレジスタ転送レベルで書かなければならないため大変
l?? 抽象度?再利用性が低い
n?? Verilog HDL/VHDLに変わる新しいHDL
l?? Bluespec: System Verilog + Haskell風味
l?? Chisel: Scalaベースのハードウェア設計DSL
l?? MyHDL: PythonベースHDL
l?? Synthesijer.Scala: ScalaでHDLを生成
RECONF2015-09 Shinya T-Y, NAIST 8
PyMTL [Lockhart+,MICRO’14]
Derek Lockhart+: PyMTL: A Unified Framework for Vertically Integrated Computer Architecture Research, ACM/IEEE MICRO-47 (2014)
Pythonでハードウェアを記述
3つのパラダイムをサポート
?? Functional Level (FL)
?? Cycle Level (CL)
?? Register Transfer Level (RTL)
RECONF2015-09 Shinya T-Y, NAIST 9
好きな言語でハードウェア開発したい
n?? ハードウェア設計は言語?ツールの選択肢が少ない
l?? ソフトウェア開発は用途と好みに応じて言語を選べる
?? C, C++, C#, Java, Python, Ruby, Perl, JavaScrit, Scala, Go, Haskell
l?? ハードウェア開発は?→選択肢が少ない
?? RTL: Verilog HDL, VHDL
?? 高級HDL: Chisel (Scala DSL), PyMTL (Python DSL), Veriloggen
?? 高位合成: C, C++, OpenCL, Java (Synthesijer), Python (PyCoRAM)
n?? 「好きな道具」で「好きなもの」を作る世界
?? 高位設計 ≠ C設計(Cベースが現状一番良いのは認める)
?? でもRubyで書きたい!Goで書きたい!Pythonで書きたい!
–? 発表者はPythonで書きたいのでこれからもいろいろやってみます
–? でも他の言語も検討中です
RECONF2015-09 Shinya T-Y, NAIST 10
Veriloggen
RECONF2015-09 Shinya T-Y, NAIST 11
実行
Verilog HDLPython
PythonでVerilog HDLを
組み立てるライブラリ
n?? Pythonで書いた動作を
HDLに変換する
高位合成ではない
n?? Pythonのオブジェクト
としてVerilogの信号や
代入を組み上げていく
n?? 当該オブジェクトの
to_verilog() を呼ぶと
Verilogのソースコード
のテキストに変換
例)たくさんLEDを追加してみる
RECONF2015-09 Shinya T-Y, NAIST 12
実行
モジュール (Module)
n?? 空のモジュールを作る: Moduleオブジェクトを作成する
l?? 引数はモジュール名
n?? Moduleオブジェクトのto_verilog()メソッドを呼び出すと
文字列形式でソースコードが取得できる
RECONF2015-09 Shinya T-Y, NAIST 13
信号 (Input, Output, Wire, Reg)
n?? Moduleオブジェクトの信号メソッドを呼び出すと
信号がモジュールに追加される
l?? 引数は信号名,幅,初期値(Reg, Integerのみ)
RECONF2015-09 Shinya T-Y, NAIST 14
代入 (Assign, Always)
n?? Moduleオブジェクトの
Assign, Alwaysメソッドを使う
l?? 代入は信号オブジェクトの
呼び出しで表現: count(value)
n?? Alwaysメソッド
l?? センシティビティリストが取れる
l?? Always文中での代入は
ノンブロッキング
l?? 複数の文を書ける (begin – end)
n?? Assignメソッド
l?? 代入されたオブジェクトを渡す
RECONF2015-09 Shinya T-Y, NAIST 15
代入 (Assign, Always)
n?? Moduleオブジェクトの
Assign, Alwaysメソッドを使う
l?? 代入は信号オブジェクトの
呼び出しで表現: count(value)
n?? Alwaysメソッド
l?? センシティビティリストが取れる
l?? Always文中での代入は
ノンブロッキング
l?? 複数の文を書ける (begin – end)
n?? Assignメソッド
l?? 代入されたオブジェクトを渡す
RECONF2015-09 Shinya T-Y, NAIST 16
制御 (If, For, While)
n?? 制御オブジェクトを作る
l?? Ifオブジェクトの
ElseメソッドでElse文が書ける
l?? For, While, Generateなどもある
n?? 制御オブジェクトもただの
Pythonのオブジェクト
l?? 定義の使い回しができる
RECONF2015-09 Shinya T-Y, NAIST 17
サブモジュール (Instance)
n?? ModuleオブジェクトのInstanceメソッドで追加する
l?? サブモジュール定義(sub),インスタンス名('uut'),
パラメータマップ(param_args (リスト?タプル形式)),
ポートマップ(port_args (リスト?タプル形式))
l?? copy_params/ports/sim_ports()や
connect_params/ports()などの便利メソッド
RECONF2015-09 Shinya T-Y, NAIST 18
コード生成 (to_verilog)
n?? Moduleオブジェクトのto_verilog()メソッドを呼び出すと
文字列形式でソースコードが取得できる
n?? Verilog HDLのソースコード解析?生成ツールキット
Pyverilogを利用
RECONF2015-09 Shinya T-Y, NAIST 19
Pyverilog: Verilog HDL解析?生成ツールキット
RECONF2015-09 Shinya T-Y, NAIST 20
Module
Analyzer
Syntax
Analyzer
Lexical
Analyzer
AST
Signal
Analyzer
Bind
Analyzer
Dataflow
State
Machine
Pattern
Matcher
Control-flow
Optimizer
Code
Generator
Active
Condition
Analyzer
Visualizer
Verilog HDL
Code
module TOP
(input CLK,
input RST,
output rslt, …
Graphical
Output
Verilog HDL
Code
module TOP
(input CLK,
input RST,
output rslt, …
Parser
Dataflow Analyzer
Control-flow Analyzer
Input
Output
AST
PythonでVerilog HDLのコード生成
1 import pyverilog.vparser.ast as vast
2 from pyverilog.ast_code_generator.codegen import ASTCodeGenerator
3
4 params = vast.Paramlist(())
5 clk = vast.Ioport( vast.Input(’CLK’) )
6 rst = vast.Ioport( vast.Input(’RST’) )
7 width = vast.Width( vast.IntConst(’7’), vast.IntConst(’0’) )
8 led = vast.Ioport( vast.Output(’led’, width=width) )
9 ports = vast.Portlist( (clk, rst, led) )
10 items = ( vast.Assign( vast.Identifier(’led’), vast.IntConst(’8’) ) ,)
11 ast = vast.ModuleDef("top", params, ports, items)
12
13 codegen = ASTCodeGenerator()
14 rslt = codegen.visit(ast)
15 print(rslt)
11 19, 14 13:53 codegen.py
1 module top
2 (
3 input [0:0] CLK,
4 input [0:0] RST,
5 output [7:0] led
6 );
7 assign led = 8;
8 endmodule
11 19, 14 14:15 generated.v
Python
Verilog HDL
Execute
RECONF2015-09 Shinya T-Y, NAIST 21
既存のVerilog HDLソースコードの取り込み
n?? read_verilog_module(), read_verilog_module_str()で
既存のソースコードをModuleオブジェクトに変換できる
l?? 辞書形式で一覧を返すので名前をキーにModuleが取得できる
n?? 変換後は通常の
Moduleオブジェクト
と同じように扱える
l?? Module名の変更,
変数や代入を追加,
など
l?? もちろんVerilogの
ソースコードへの
変換もできる
RECONF2015-09 Shinya T-Y, NAIST 22
Veriloggenで何ができるか?
n?? Verilog HDLのメタプログラミングができる
l?? 例)回路生成するレシピをPython+Veriloggenで定義して
アプリケーション規模に応じて回路を自動生成
?? Verilog HDLにはgenerate構文があるか機能は限定的
n?? 独自の高位合成コンパイラのバックエンドとして使える
l?? (PyCoRAMではない)Pythonベースの高位合成ツールとか?
l?? Post PyCoRAMを現在開発中???こうご期待
?? 制御とパイプラインを柔軟に結合する仕組み
?? 既存のVerilog HDL資源を再利用する仕組み
RECONF2015-09 Shinya T-Y, NAIST 23
Veriloggen拡張ライブラリ
n?? Veriloggenの基本機能はVerilog HDLと同等の記述能力
l?? 抽象度はほとんど変わらないが,Pythonの言語機能を利用して
Verilog HDLのソースコードを組み立てることができる
n?? より高い抽象度で設計するには?
→Veriloggenの基本機能をラップしたライブラリ
l?? Parallel: クロック同期での代入の管理
l?? FSM: 状態遷移機械の管理
l?? Pipeline: パイプライン回路の設計支援
l?? Simulation: シミュレーション用記述
RECONF2015-09 Shinya T-Y, NAIST 24
lib.Parallel: クロック同期代入管理
n?? Parallelオブジェクトの
addメソッドで代入を
追加する
l?? Alwaysを書かなくて良い
?? クロックやリセットは
後から付加する
l?? 代入条件や遅延が
付加できる
?? cond= ...
?? delay= ...
l?? make_always(clk, rst)で
alway文を生成
RECONF2015-09 Shinya T-Y, NAIST 25
lib.Parallel: 例
RECONF2015-09 Shinya T-Y, NAIST 26
lib.FSM: 状態遷移機械
n?? FSMオブジェクトの
addメソッドで代入を
追加する
l?? Alwaysを書かなくて良い
?? クロックやリセットは
後から付加する
l?? 代入条件や遅延が
付加できる
?? cond= ...
?? delay= ...
l?? make_always(clk, rst)で
alway文を生成
n?? goto_next()やgoto()で
状態遷移できる
l?? 遷移条件が付加できる
RECONF2015-09 Shinya T-Y, NAIST 27
lib.FSM: 例
RECONF2015-09 Shinya T-Y, NAIST 28
lib.Pipeline:
パイプライン設計支援
n?? データフローを定義
するだけで
パイプラインRTLが
生成される
l?? data, valid, readyの組で
変数を管理
?? valid, ready無しもOK
l?? inputメソッドで
通常の信号を
パイプライン変数に
l?? outputメソッドで
パイプライン変数を
通常の信号に変換
RECONF2015-09 Shinya T-Y, NAIST 29
RECONF2015-09 Shinya T-Y, NAIST 30
lib.simulation: テストベンチ実装支援
n?? テストベンチ実装によく使う機能をライブラリ化
l?? setup_waveform
?? 波形生成
l?? setup_clock
?? クロック生成
l?? setup_reset
?? リセット生成
l?? copy_paramsと
copy_sim_ports
を利用して
インスタンス
生成が簡単に
RECONF2015-09 Shinya T-Y, NAIST 31
評価
n?? 評価項目: ソースコード行数
n?? アプリケーション: 簡単な回路3種
l?? led: LEDチカチカ,テストベンチ無し
?? ライブラリ使用なし
l?? sum: BRAM上のデータの合計値計算,テストベンチ有り
?? FSM, simulationライブラリを使用
l?? sort: ソーティングネットワーク,8-入出力,テストベンチあり
?? FSM, simulationライブラリを使用
n?? 半分程度に削減可能→もう少しなんとかならないか?
RECONF2015-09 Shinya T-Y, NAIST 32
まとめ
RECONF2015-09 Shinya T-Y, NAIST 33
実行
Verilog HDLPython
Veriloggen
PythonでVerilog HDLを
組み立てるライブラリ
n?? Pythonで書いた動作を
HDLに変換する
高位合成ではない
n?? Pythonのオブジェクト
としてVerilogの信号や
代入を組み上げていく
Veriloggen is available!
n?? GitHubで公開中
l?? Veriloggen: https://github.com/PyHDI/veriloggen
l?? PyCoRAM: https://github.com/PyHDI/PyCoRAM
l?? Pyverilog: https://github.com/PyHDI/Pyverilog
n?? PIP(Pythonパッケージ管理)でもインストール可
l?? ただしGitHubが最新版です
RECONF2015-09 Shinya T-Y, NAIST 34
$ pip install veriloggen?
$ pip install pyverilog?
$ pip install pycoram?
$ git clone https://github.com/PyHDI/veriloggen.git?
$ git clone https://github.com/PyHDI/Pyverilog.git?
$ git clone https://github.com/PyHDI/PyCoRAM.git?

More Related Content

What's hot (20)

濒颈产辫驳别苍でパケット操作
濒颈产辫驳别苍でパケット操作濒颈产辫驳别苍でパケット操作
濒颈产辫驳别苍でパケット操作
slankdev
?
础痴齿-512(フォーマット)详解
础痴齿-512(フォーマット)详解础痴齿-512(フォーマット)详解
础痴齿-512(フォーマット)详解
MITSUNARI Shigeo
?
尝颈蝉辫マシン?シミュレータの绍介
尝颈蝉辫マシン?シミュレータの绍介尝颈蝉辫マシン?シミュレータの绍介
尝颈蝉辫マシン?シミュレータの绍介
たけおか しょうぞう
?
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
Rui Watanabe
?
骋辞による颈翱厂アフ?リの开発
骋辞による颈翱厂アフ?リの开発骋辞による颈翱厂アフ?リの开発
骋辞による颈翱厂アフ?リの开発
Takuya Ueda
?
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
?
闯补惫补厂肠谤颈辫迟难読化読経
闯补惫补厂肠谤颈辫迟难読化読経闯补惫补厂肠谤颈辫迟难読化読経
闯补惫补厂肠谤颈辫迟难読化読経
Yosuke HASEGAWA
?
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
Hiroki Nakahara
?
π计算
π计算π计算
π计算
Yuuki Takano
?
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
Seiji Hiraki
?
贵笔骋础アクセラレータの作り方
贵笔骋础アクセラレータの作り方贵笔骋础アクセラレータの作り方
贵笔骋础アクセラレータの作り方
Mr. Vengineer
?
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
marsee101
?
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
mmitti
?
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGAPolyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGA
ryos36
?
証明プログラミング超入门
証明プログラミング超入门証明プログラミング超入门
証明プログラミング超入门
Kyoko Kadowaki
?
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
?
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
?
低レイヤー入门
低レイヤー入门低レイヤー入门
低レイヤー入门
demuyan
?
初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法
kazkiti
?
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
?
濒颈产辫驳别苍でパケット操作
濒颈产辫驳别苍でパケット操作濒颈产辫驳别苍でパケット操作
濒颈产辫驳别苍でパケット操作
slankdev
?
础痴齿-512(フォーマット)详解
础痴齿-512(フォーマット)详解础痴齿-512(フォーマット)详解
础痴齿-512(フォーマット)详解
MITSUNARI Shigeo
?
骋辞による颈翱厂アフ?リの开発
骋辞による颈翱厂アフ?リの开発骋辞による颈翱厂アフ?リの开発
骋辞による颈翱厂アフ?リの开発
Takuya Ueda
?
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
?
闯补惫补厂肠谤颈辫迟难読化読経
闯补惫补厂肠谤颈辫迟难読化読経闯补惫补厂肠谤颈辫迟难読化読経
闯补惫补厂肠谤颈辫迟难読化読経
Yosuke HASEGAWA
?
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
Hiroki Nakahara
?
贵笔骋础アクセラレータの作り方
贵笔骋础アクセラレータの作り方贵笔骋础アクセラレータの作り方
贵笔骋础アクセラレータの作り方
Mr. Vengineer
?
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
marsee101
?
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
mmitti
?
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGAPolyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGA
ryos36
?
証明プログラミング超入门
証明プログラミング超入门証明プログラミング超入门
証明プログラミング超入门
Kyoko Kadowaki
?
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
?
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実?される秘密 - JITコンパイラ??(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
?
低レイヤー入门
低レイヤー入门低レイヤー入门
低レイヤー入门
demuyan
?
初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法
kazkiti
?
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
?

Similar to 笔测迟丑辞苍を用いた高水準ハードウェア设计环境の検讨 (20)

Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
Noboru Irieda
?
贬颈惫别と滨尘辫补濒补のおいしいとこ取り
贬颈惫别と滨尘辫补濒补のおいしいとこ取り贬颈惫别と滨尘辫补濒补のおいしいとこ取り
贬颈惫别と滨尘辫补濒补のおいしいとこ取り
Yukinori Suda
?
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
?
160705-03 RTミドルウエア講習会?名城大
160705-03 RTミドルウエア講習会?名城大160705-03 RTミドルウエア講習会?名城大
160705-03 RTミドルウエア講習会?名城大
openrtm
?
翱辫别苍颁辞苍迟谤补颈濒のソースコードを探検しよう!
翱辫别苍颁辞苍迟谤补颈濒のソースコードを探検しよう!翱辫别苍颁辞苍迟谤补颈濒のソースコードを探検しよう!
翱辫别苍颁辞苍迟谤补颈濒のソースコードを探検しよう!
Takashi Sogabe
?
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
Tomoya Nakayama
?
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
shigeki_ohtsu
?
笔测迟丑辞苍颈蝉迟补が翱颁补尘濒を実用する方法
笔测迟丑辞苍颈蝉迟补が翱颁补尘濒を実用する方法笔测迟丑辞苍颈蝉迟补が翱颁补尘濒を実用する方法
笔测迟丑辞苍颈蝉迟补が翱颁补尘濒を実用する方法
Yosuke Onoue
?
笔测迟丑辞苍用ゲームエンジン笔测虫别濒で游んでみた
笔测迟丑辞苍用ゲームエンジン笔测虫别濒で游んでみた笔测迟丑辞苍用ゲームエンジン笔测虫别濒で游んでみた
笔测迟丑辞苍用ゲームエンジン笔测虫别濒で游んでみた
Hirofumi Watanabe
?
颁#勉强会
颁#勉强会颁#勉强会
颁#勉强会
hakugakucafe
?
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
?
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
?
Php in ruby
Php in rubyPhp in ruby
Php in ruby
do_aki
?
顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング
顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング
顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング
terurou
?
コードの自动修正によって実现する、机能开発を止めないフレームワーク移行
コードの自动修正によって実现する、机能开発を止めないフレームワーク移行コードの自动修正によって実现する、机能开発を止めないフレームワーク移行
コードの自动修正によって実现する、机能开発を止めないフレームワーク移行
gree_tech
?
笔测蚕迟ではじめる骋鲍滨プログラミング
笔测蚕迟ではじめる骋鲍滨プログラミング笔测蚕迟ではじめる骋鲍滨プログラミング
笔测蚕迟ではじめる骋鲍滨プログラミング
Ransui Iso
?
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
?
SDSoC 2016.3+yocto project
SDSoC 2016.3+yocto projectSDSoC 2016.3+yocto project
SDSoC 2016.3+yocto project
Hidemi Ishihara
?
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
Noboru Irieda
?
贬颈惫别と滨尘辫补濒补のおいしいとこ取り
贬颈惫别と滨尘辫补濒补のおいしいとこ取り贬颈惫别と滨尘辫补濒补のおいしいとこ取り
贬颈惫别と滨尘辫补濒补のおいしいとこ取り
Yukinori Suda
?
160705-03 RTミドルウエア講習会?名城大
160705-03 RTミドルウエア講習会?名城大160705-03 RTミドルウエア講習会?名城大
160705-03 RTミドルウエア講習会?名城大
openrtm
?
翱辫别苍颁辞苍迟谤补颈濒のソースコードを探検しよう!
翱辫别苍颁辞苍迟谤补颈濒のソースコードを探検しよう!翱辫别苍颁辞苍迟谤补颈濒のソースコードを探検しよう!
翱辫别苍颁辞苍迟谤补颈濒のソースコードを探検しよう!
Takashi Sogabe
?
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
shigeki_ohtsu
?
笔测迟丑辞苍颈蝉迟补が翱颁补尘濒を実用する方法
笔测迟丑辞苍颈蝉迟补が翱颁补尘濒を実用する方法笔测迟丑辞苍颈蝉迟补が翱颁补尘濒を実用する方法
笔测迟丑辞苍颈蝉迟补が翱颁补尘濒を実用する方法
Yosuke Onoue
?
笔测迟丑辞苍用ゲームエンジン笔测虫别濒で游んでみた
笔测迟丑辞苍用ゲームエンジン笔测虫别濒で游んでみた笔测迟丑辞苍用ゲームエンジン笔测虫别濒で游んでみた
笔测迟丑辞苍用ゲームエンジン笔测虫别濒で游んでみた
Hirofumi Watanabe
?
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
?
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
?
Php in ruby
Php in rubyPhp in ruby
Php in ruby
do_aki
?
顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング
顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング
顿尝搁言语による厂颈濒惫别谤濒颈驳丑迟プログラミング
terurou
?
コードの自动修正によって実现する、机能开発を止めないフレームワーク移行
コードの自动修正によって実现する、机能开発を止めないフレームワーク移行コードの自动修正によって実现する、机能开発を止めないフレームワーク移行
コードの自动修正によって実现する、机能开発を止めないフレームワーク移行
gree_tech
?
笔测蚕迟ではじめる骋鲍滨プログラミング
笔测蚕迟ではじめる骋鲍滨プログラミング笔测蚕迟ではじめる骋鲍滨プログラミング
笔测蚕迟ではじめる骋鲍滨プログラミング
Ransui Iso
?
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
?

More from Shinya Takamaeda-Y (20)

オープンソースコンパイラ狈狈驳别苍でつくるエッジ?ディープラーニングシステム
オープンソースコンパイラ狈狈驳别苍でつくるエッジ?ディープラーニングシステムオープンソースコンパイラ狈狈驳别苍でつくるエッジ?ディープラーニングシステム
オープンソースコンパイラ狈狈驳别苍でつくるエッジ?ディープラーニングシステム
Shinya Takamaeda-Y
?
顿狈狈のモデル特化ハードウェアを生成するオープンソースコンパイラ狈狈驳别苍のデモ
顿狈狈のモデル特化ハードウェアを生成するオープンソースコンパイラ狈狈驳别苍のデモ顿狈狈のモデル特化ハードウェアを生成するオープンソースコンパイラ狈狈驳别苍のデモ
顿狈狈のモデル特化ハードウェアを生成するオープンソースコンパイラ狈狈驳别苍のデモ
Shinya Takamaeda-Y
?
ディープニューラルネットワーク向け拡张可能な高位合成コンパイラの开発
ディープニューラルネットワーク向け拡张可能な高位合成コンパイラの开発ディープニューラルネットワーク向け拡张可能な高位合成コンパイラの开発
ディープニューラルネットワーク向け拡张可能な高位合成コンパイラの开発
Shinya Takamaeda-Y
?
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Shinya Takamaeda-Y
?
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Shinya Takamaeda-Y
?
ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)
Shinya Takamaeda-Y
?
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
Shinya Takamaeda-Y
?
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)
Shinya Takamaeda-Y
?
マルチパラダイム型高水準ハードウェア设计环境の検讨
マルチパラダイム型高水準ハードウェア设计环境の検讨マルチパラダイム型高水準ハードウェア设计环境の検讨
マルチパラダイム型高水準ハードウェア设计环境の検讨
Shinya Takamaeda-Y
?
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
Shinya Takamaeda-Y
?
笔测迟丑辞苍による高位设计フレームワーク笔测颁辞搁础惭で贵笔骋础システムを开発してみよう
笔测迟丑辞苍による高位设计フレームワーク笔测颁辞搁础惭で贵笔骋础システムを开発してみよう笔测迟丑辞苍による高位设计フレームワーク笔测颁辞搁础惭で贵笔骋础システムを开発してみよう
笔测迟丑辞苍による高位设计フレームワーク笔测颁辞搁础惭で贵笔骋础システムを开発してみよう
Shinya Takamaeda-Y
?
コンピュータアーキテクチャ研究の最新動向?ISCA2015参加報告? @FPGAエクストリーム?コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向?ISCA2015参加報告? @FPGAエクストリーム?コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向?ISCA2015参加報告? @FPGAエクストリーム?コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向?ISCA2015参加報告? @FPGAエクストリーム?コンピューティング 第7回 (#fpgax #7)
Shinya Takamaeda-Y
?
窜测苍辩+笔测颁辞搁础惭(+顿别产颈补苍)入门
窜测苍辩+笔测颁辞搁础惭(+顿别产颈补苍)入门窜测苍辩+笔测颁辞搁础惭(+顿别产颈补苍)入门
窜测苍辩+笔测颁辞搁础惭(+顿别产颈补苍)入门
Shinya Takamaeda-Y
?
贵笔骋础?リコンフィギャラブルシステム研究の最新动向
贵笔骋础?リコンフィギャラブルシステム研究の最新动向贵笔骋础?リコンフィギャラブルシステム研究の最新动向
贵笔骋础?リコンフィギャラブルシステム研究の最新动向
Shinya Takamaeda-Y
?
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
Shinya Takamaeda-Y
?
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
Shinya Takamaeda-Y
?
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...
Shinya Takamaeda-Y
?
笔测颁辞搁础惭を用いたグラフ処理贵笔骋础アクセラレータ
笔测颁辞搁础惭を用いたグラフ処理贵笔骋础アクセラレータ笔测颁辞搁础惭を用いたグラフ処理贵笔骋础アクセラレータ
笔测颁辞搁础惭を用いたグラフ処理贵笔骋础アクセラレータ
Shinya Takamaeda-Y
?
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 ...
Shinya Takamaeda-Y
?
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)
Shinya Takamaeda-Y
?
オープンソースコンパイラ狈狈驳别苍でつくるエッジ?ディープラーニングシステム
オープンソースコンパイラ狈狈驳别苍でつくるエッジ?ディープラーニングシステムオープンソースコンパイラ狈狈驳别苍でつくるエッジ?ディープラーニングシステム
オープンソースコンパイラ狈狈驳别苍でつくるエッジ?ディープラーニングシステム
Shinya Takamaeda-Y
?
顿狈狈のモデル特化ハードウェアを生成するオープンソースコンパイラ狈狈驳别苍のデモ
顿狈狈のモデル特化ハードウェアを生成するオープンソースコンパイラ狈狈驳别苍のデモ顿狈狈のモデル特化ハードウェアを生成するオープンソースコンパイラ狈狈驳别苍のデモ
顿狈狈のモデル特化ハードウェアを生成するオープンソースコンパイラ狈狈驳别苍のデモ
Shinya Takamaeda-Y
?
ディープニューラルネットワーク向け拡张可能な高位合成コンパイラの开発
ディープニューラルネットワーク向け拡张可能な高位合成コンパイラの开発ディープニューラルネットワーク向け拡张可能な高位合成コンパイラの开発
ディープニューラルネットワーク向け拡张可能な高位合成コンパイラの开発
Shinya Takamaeda-Y
?
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Shinya Takamaeda-Y
?
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Shinya Takamaeda-Y
?
ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)
Shinya Takamaeda-Y
?
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
Shinya Takamaeda-Y
?
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)
Shinya Takamaeda-Y
?
マルチパラダイム型高水準ハードウェア设计环境の検讨
マルチパラダイム型高水準ハードウェア设计环境の検讨マルチパラダイム型高水準ハードウェア设计环境の検讨
マルチパラダイム型高水準ハードウェア设计环境の検讨
Shinya Takamaeda-Y
?
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
Shinya Takamaeda-Y
?
笔测迟丑辞苍による高位设计フレームワーク笔测颁辞搁础惭で贵笔骋础システムを开発してみよう
笔测迟丑辞苍による高位设计フレームワーク笔测颁辞搁础惭で贵笔骋础システムを开発してみよう笔测迟丑辞苍による高位设计フレームワーク笔测颁辞搁础惭で贵笔骋础システムを开発してみよう
笔测迟丑辞苍による高位设计フレームワーク笔测颁辞搁础惭で贵笔骋础システムを开発してみよう
Shinya Takamaeda-Y
?
コンピュータアーキテクチャ研究の最新動向?ISCA2015参加報告? @FPGAエクストリーム?コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向?ISCA2015参加報告? @FPGAエクストリーム?コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向?ISCA2015参加報告? @FPGAエクストリーム?コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向?ISCA2015参加報告? @FPGAエクストリーム?コンピューティング 第7回 (#fpgax #7)
Shinya Takamaeda-Y
?
窜测苍辩+笔测颁辞搁础惭(+顿别产颈补苍)入门
窜测苍辩+笔测颁辞搁础惭(+顿别产颈补苍)入门窜测苍辩+笔测颁辞搁础惭(+顿别产颈补苍)入门
窜测苍辩+笔测颁辞搁础惭(+顿别产颈补苍)入门
Shinya Takamaeda-Y
?
贵笔骋础?リコンフィギャラブルシステム研究の最新动向
贵笔骋础?リコンフィギャラブルシステム研究の最新动向贵笔骋础?リコンフィギャラブルシステム研究の最新动向
贵笔骋础?リコンフィギャラブルシステム研究の最新动向
Shinya Takamaeda-Y
?
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
Shinya Takamaeda-Y
?
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
Shinya Takamaeda-Y
?
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...
Shinya Takamaeda-Y
?
笔测颁辞搁础惭を用いたグラフ処理贵笔骋础アクセラレータ
笔测颁辞搁础惭を用いたグラフ処理贵笔骋础アクセラレータ笔测颁辞搁础惭を用いたグラフ処理贵笔骋础アクセラレータ
笔测颁辞搁础惭を用いたグラフ処理贵笔骋础アクセラレータ
Shinya Takamaeda-Y
?
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 ...
Shinya Takamaeda-Y
?
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)
Shinya Takamaeda-Y
?

Recently uploaded (8)

永島 陸, 徳丸 晴天, 畑 玲音, 松下 光範. イベントにおける地図の情報量がユーザ行動へ与える影響に関する分析, 情報処理学会研究報告, Vol.2...
永島 陸, 徳丸 晴天, 畑 玲音, 松下 光範. イベントにおける地図の情報量がユーザ行動へ与える影響に関する分析, 情報処理学会研究報告, Vol.2...永島 陸, 徳丸 晴天, 畑 玲音, 松下 光範. イベントにおける地図の情報量がユーザ行動へ与える影響に関する分析, 情報処理学会研究報告, Vol.2...
永島 陸, 徳丸 晴天, 畑 玲音, 松下 光範. イベントにおける地図の情報量がユーザ行動へ与える影響に関する分析, 情報処理学会研究報告, Vol.2...
Matsushita Laboratory
?
2025 01 スマート抵抗チェッカー
2025 01 スマート抵抗チェッカー2025 01 スマート抵抗チェッカー
2025 01 スマート抵抗チェッカー
arts yokohama
?
LoRa/LoRaWAN 5インチタッチスクリーン LTS5 日本語ユーザーマニュアル
LoRa/LoRaWAN 5インチタッチスクリーン LTS5 日本語ユーザーマニュアルLoRa/LoRaWAN 5インチタッチスクリーン LTS5 日本語ユーザーマニュアル
LoRa/LoRaWAN 5インチタッチスクリーン LTS5 日本語ユーザーマニュアル
CRI Japan, Inc.
?
2025 04 Dayne
2025 04 Dayne2025 04 Dayne
2025 04 Dayne
arts yokohama
?
2025 03 世代を繋ぎ、より高质で快适な学校生活へ、1から始まるコネクタス!!
2025 03 世代を繋ぎ、より高质で快适な学校生活へ、1から始まるコネクタス!!2025 03 世代を繋ぎ、より高质で快适な学校生活へ、1から始まるコネクタス!!
2025 03 世代を繋ぎ、より高质で快适な学校生活へ、1から始まるコネクタス!!
arts yokohama
?
わたしたちのAlexaスキル開発 by 筑波技術大学スマートスピーカーアプリ開発チーム
わたしたちのAlexaスキル開発 by 筑波技術大学スマートスピーカーアプリ開発チームわたしたちのAlexaスキル開発 by 筑波技術大学スマートスピーカーアプリ開発チーム
わたしたちのAlexaスキル開発 by 筑波技術大学スマートスピーカーアプリ開発チーム
National University Cooperation, Tsukuba University of Technology
?
Guidance for beginners and experts on how to set up a Windows driver developm...
Guidance for beginners and experts on how to set up a Windows driver developm...Guidance for beginners and experts on how to set up a Windows driver developm...
Guidance for beginners and experts on how to set up a Windows driver developm...
Atomu Hidaka
?
2025 02 TankyuDock
2025 02 TankyuDock2025 02 TankyuDock
2025 02 TankyuDock
arts yokohama
?
永島 陸, 徳丸 晴天, 畑 玲音, 松下 光範. イベントにおける地図の情報量がユーザ行動へ与える影響に関する分析, 情報処理学会研究報告, Vol.2...
永島 陸, 徳丸 晴天, 畑 玲音, 松下 光範. イベントにおける地図の情報量がユーザ行動へ与える影響に関する分析, 情報処理学会研究報告, Vol.2...永島 陸, 徳丸 晴天, 畑 玲音, 松下 光範. イベントにおける地図の情報量がユーザ行動へ与える影響に関する分析, 情報処理学会研究報告, Vol.2...
永島 陸, 徳丸 晴天, 畑 玲音, 松下 光範. イベントにおける地図の情報量がユーザ行動へ与える影響に関する分析, 情報処理学会研究報告, Vol.2...
Matsushita Laboratory
?
2025 01 スマート抵抗チェッカー
2025 01 スマート抵抗チェッカー2025 01 スマート抵抗チェッカー
2025 01 スマート抵抗チェッカー
arts yokohama
?
LoRa/LoRaWAN 5インチタッチスクリーン LTS5 日本語ユーザーマニュアル
LoRa/LoRaWAN 5インチタッチスクリーン LTS5 日本語ユーザーマニュアルLoRa/LoRaWAN 5インチタッチスクリーン LTS5 日本語ユーザーマニュアル
LoRa/LoRaWAN 5インチタッチスクリーン LTS5 日本語ユーザーマニュアル
CRI Japan, Inc.
?
2025 03 世代を繋ぎ、より高质で快适な学校生活へ、1から始まるコネクタス!!
2025 03 世代を繋ぎ、より高质で快适な学校生活へ、1から始まるコネクタス!!2025 03 世代を繋ぎ、より高质で快适な学校生活へ、1から始まるコネクタス!!
2025 03 世代を繋ぎ、より高质で快适な学校生活へ、1から始まるコネクタス!!
arts yokohama
?
Guidance for beginners and experts on how to set up a Windows driver developm...
Guidance for beginners and experts on how to set up a Windows driver developm...Guidance for beginners and experts on how to set up a Windows driver developm...
Guidance for beginners and experts on how to set up a Windows driver developm...
Atomu Hidaka
?

笔测迟丑辞苍を用いた高水準ハードウェア设计环境の検讨

  • 2. Veriloggen RECONF2015-09 Shinya T-Y, NAIST 2 実行 Verilog HDLPython PythonでVerilog HDLを 組み立てるライブラリ n?? Pythonで書いた動作を HDLに変換する 高位合成ではない n?? Pythonのオブジェクト としてVerilogの信号や 代入を組み上げていく
  • 3. Veriloggen is available! n?? GitHubで公開中 l?? Veriloggen: https://github.com/PyHDI/veriloggen l?? PyCoRAM: https://github.com/PyHDI/PyCoRAM l?? Pyverilog: https://github.com/PyHDI/Pyverilog n?? PIP(Pythonパッケージ管理)でもインストール可 l?? ただしGitHubが最新版です RECONF2015-09 Shinya T-Y, NAIST 3 $ pip install veriloggen? $ pip install pyverilog? $ pip install pycoram? $ git clone https://github.com/PyHDI/veriloggen.git? $ git clone https://github.com/PyHDI/Pyverilog.git? $ git clone https://github.com/PyHDI/PyCoRAM.git?
  • 4. 目次 n?? 背景: ハードウェア記述言語 n?? 提案: Veriloggen l?? モジュール (Module),信号 (Input, Output, Wire, Reg, ...), 代入 (Assign, Always),制御 (If, For, While), サブモジュール (Instance), コード生成 (to_verilog), 既存Verilogコードの取り込み (read_verilog_code()) n?? Veriloggen拡張ライブラリ l?? Parallel,FSM,Pipeline, Simulation n?? 評価 n?? まとめ RECONF2015-09 Shinya T-Y, NAIST 4
  • 5. How to Develop a Software? Writing a software in programming languages Preprocess Compile Assemble Link CompilerFlow Execution on a CPU int main(){? int a = 1 + 2;? printf(“Hello %dn”, a);? return 0;? }? add $t0, $t1, $t2? li $v0, 1? syscall? ELF01ABF00F1...? Executable Binary RECONF2015-09 Shinya T-Y, NAIST 5
  • 6. How to Develop a (FPGA) Hardware? Writing a hardware design in HDL (Hardware Description Language) Synthesis Technology Mapping Place and Route Bitstream Generation EDAFlow Configuration of the bitstream to an FPGA module top? (input CLK, RST, ? output reg [7:0] LED);? always @(posedge CLK) begin? LED <= LED + 1;? end? endmodule? 1A0C021E...? Original HW on an FPGA Bitstream RECONF2015-09 Shinya T-Y, NAIST 6
  • 7. RTL representation using Verilog HDL RECONF2015-09 Shinya T-Y, NAIST 7 count (32-bit) + Truncate inv 32 32 32 8 8 LED top 32 1Combinational Circuit Sequential Circuit Combinational Circuit Blinking LED (LEDチカチカ)
  • 8. ハードウェア記述言語 HDL (Hardware Description Language) n?? ハードウェア設計のためのDSL l?? ソフトウェアプログラミング言語との違い ?? (多くの)プログラミング言語は逐次動作の記述のためのもの ?? HDLは単位時刻毎の並列の振る舞いを記述するためのも n?? Verilog HDL/VHDLの問題点 l?? すべてをレジスタ転送レベルで書かなければならないため大変 l?? 抽象度?再利用性が低い n?? Verilog HDL/VHDLに変わる新しいHDL l?? Bluespec: System Verilog + Haskell風味 l?? Chisel: Scalaベースのハードウェア設計DSL l?? MyHDL: PythonベースHDL l?? Synthesijer.Scala: ScalaでHDLを生成 RECONF2015-09 Shinya T-Y, NAIST 8
  • 9. PyMTL [Lockhart+,MICRO’14] Derek Lockhart+: PyMTL: A Unified Framework for Vertically Integrated Computer Architecture Research, ACM/IEEE MICRO-47 (2014) Pythonでハードウェアを記述 3つのパラダイムをサポート ?? Functional Level (FL) ?? Cycle Level (CL) ?? Register Transfer Level (RTL) RECONF2015-09 Shinya T-Y, NAIST 9
  • 10. 好きな言語でハードウェア開発したい n?? ハードウェア設計は言語?ツールの選択肢が少ない l?? ソフトウェア開発は用途と好みに応じて言語を選べる ?? C, C++, C#, Java, Python, Ruby, Perl, JavaScrit, Scala, Go, Haskell l?? ハードウェア開発は?→選択肢が少ない ?? RTL: Verilog HDL, VHDL ?? 高級HDL: Chisel (Scala DSL), PyMTL (Python DSL), Veriloggen ?? 高位合成: C, C++, OpenCL, Java (Synthesijer), Python (PyCoRAM) n?? 「好きな道具」で「好きなもの」を作る世界 ?? 高位設計 ≠ C設計(Cベースが現状一番良いのは認める) ?? でもRubyで書きたい!Goで書きたい!Pythonで書きたい! –? 発表者はPythonで書きたいのでこれからもいろいろやってみます –? でも他の言語も検討中です RECONF2015-09 Shinya T-Y, NAIST 10
  • 11. Veriloggen RECONF2015-09 Shinya T-Y, NAIST 11 実行 Verilog HDLPython PythonでVerilog HDLを 組み立てるライブラリ n?? Pythonで書いた動作を HDLに変換する 高位合成ではない n?? Pythonのオブジェクト としてVerilogの信号や 代入を組み上げていく n?? 当該オブジェクトの to_verilog() を呼ぶと Verilogのソースコード のテキストに変換
  • 13. モジュール (Module) n?? 空のモジュールを作る: Moduleオブジェクトを作成する l?? 引数はモジュール名 n?? Moduleオブジェクトのto_verilog()メソッドを呼び出すと 文字列形式でソースコードが取得できる RECONF2015-09 Shinya T-Y, NAIST 13
  • 14. 信号 (Input, Output, Wire, Reg) n?? Moduleオブジェクトの信号メソッドを呼び出すと 信号がモジュールに追加される l?? 引数は信号名,幅,初期値(Reg, Integerのみ) RECONF2015-09 Shinya T-Y, NAIST 14
  • 15. 代入 (Assign, Always) n?? Moduleオブジェクトの Assign, Alwaysメソッドを使う l?? 代入は信号オブジェクトの 呼び出しで表現: count(value) n?? Alwaysメソッド l?? センシティビティリストが取れる l?? Always文中での代入は ノンブロッキング l?? 複数の文を書ける (begin – end) n?? Assignメソッド l?? 代入されたオブジェクトを渡す RECONF2015-09 Shinya T-Y, NAIST 15
  • 16. 代入 (Assign, Always) n?? Moduleオブジェクトの Assign, Alwaysメソッドを使う l?? 代入は信号オブジェクトの 呼び出しで表現: count(value) n?? Alwaysメソッド l?? センシティビティリストが取れる l?? Always文中での代入は ノンブロッキング l?? 複数の文を書ける (begin – end) n?? Assignメソッド l?? 代入されたオブジェクトを渡す RECONF2015-09 Shinya T-Y, NAIST 16
  • 17. 制御 (If, For, While) n?? 制御オブジェクトを作る l?? Ifオブジェクトの ElseメソッドでElse文が書ける l?? For, While, Generateなどもある n?? 制御オブジェクトもただの Pythonのオブジェクト l?? 定義の使い回しができる RECONF2015-09 Shinya T-Y, NAIST 17
  • 18. サブモジュール (Instance) n?? ModuleオブジェクトのInstanceメソッドで追加する l?? サブモジュール定義(sub),インスタンス名('uut'), パラメータマップ(param_args (リスト?タプル形式)), ポートマップ(port_args (リスト?タプル形式)) l?? copy_params/ports/sim_ports()や connect_params/ports()などの便利メソッド RECONF2015-09 Shinya T-Y, NAIST 18
  • 19. コード生成 (to_verilog) n?? Moduleオブジェクトのto_verilog()メソッドを呼び出すと 文字列形式でソースコードが取得できる n?? Verilog HDLのソースコード解析?生成ツールキット Pyverilogを利用 RECONF2015-09 Shinya T-Y, NAIST 19
  • 20. Pyverilog: Verilog HDL解析?生成ツールキット RECONF2015-09 Shinya T-Y, NAIST 20 Module Analyzer Syntax Analyzer Lexical Analyzer AST Signal Analyzer Bind Analyzer Dataflow State Machine Pattern Matcher Control-flow Optimizer Code Generator Active Condition Analyzer Visualizer Verilog HDL Code module TOP (input CLK, input RST, output rslt, … Graphical Output Verilog HDL Code module TOP (input CLK, input RST, output rslt, … Parser Dataflow Analyzer Control-flow Analyzer Input Output AST
  • 21. PythonでVerilog HDLのコード生成 1 import pyverilog.vparser.ast as vast 2 from pyverilog.ast_code_generator.codegen import ASTCodeGenerator 3 4 params = vast.Paramlist(()) 5 clk = vast.Ioport( vast.Input(’CLK’) ) 6 rst = vast.Ioport( vast.Input(’RST’) ) 7 width = vast.Width( vast.IntConst(’7’), vast.IntConst(’0’) ) 8 led = vast.Ioport( vast.Output(’led’, width=width) ) 9 ports = vast.Portlist( (clk, rst, led) ) 10 items = ( vast.Assign( vast.Identifier(’led’), vast.IntConst(’8’) ) ,) 11 ast = vast.ModuleDef("top", params, ports, items) 12 13 codegen = ASTCodeGenerator() 14 rslt = codegen.visit(ast) 15 print(rslt) 11 19, 14 13:53 codegen.py 1 module top 2 ( 3 input [0:0] CLK, 4 input [0:0] RST, 5 output [7:0] led 6 ); 7 assign led = 8; 8 endmodule 11 19, 14 14:15 generated.v Python Verilog HDL Execute RECONF2015-09 Shinya T-Y, NAIST 21
  • 22. 既存のVerilog HDLソースコードの取り込み n?? read_verilog_module(), read_verilog_module_str()で 既存のソースコードをModuleオブジェクトに変換できる l?? 辞書形式で一覧を返すので名前をキーにModuleが取得できる n?? 変換後は通常の Moduleオブジェクト と同じように扱える l?? Module名の変更, 変数や代入を追加, など l?? もちろんVerilogの ソースコードへの 変換もできる RECONF2015-09 Shinya T-Y, NAIST 22
  • 23. Veriloggenで何ができるか? n?? Verilog HDLのメタプログラミングができる l?? 例)回路生成するレシピをPython+Veriloggenで定義して アプリケーション規模に応じて回路を自動生成 ?? Verilog HDLにはgenerate構文があるか機能は限定的 n?? 独自の高位合成コンパイラのバックエンドとして使える l?? (PyCoRAMではない)Pythonベースの高位合成ツールとか? l?? Post PyCoRAMを現在開発中???こうご期待 ?? 制御とパイプラインを柔軟に結合する仕組み ?? 既存のVerilog HDL資源を再利用する仕組み RECONF2015-09 Shinya T-Y, NAIST 23
  • 24. Veriloggen拡張ライブラリ n?? Veriloggenの基本機能はVerilog HDLと同等の記述能力 l?? 抽象度はほとんど変わらないが,Pythonの言語機能を利用して Verilog HDLのソースコードを組み立てることができる n?? より高い抽象度で設計するには? →Veriloggenの基本機能をラップしたライブラリ l?? Parallel: クロック同期での代入の管理 l?? FSM: 状態遷移機械の管理 l?? Pipeline: パイプライン回路の設計支援 l?? Simulation: シミュレーション用記述 RECONF2015-09 Shinya T-Y, NAIST 24
  • 25. lib.Parallel: クロック同期代入管理 n?? Parallelオブジェクトの addメソッドで代入を 追加する l?? Alwaysを書かなくて良い ?? クロックやリセットは 後から付加する l?? 代入条件や遅延が 付加できる ?? cond= ... ?? delay= ... l?? make_always(clk, rst)で alway文を生成 RECONF2015-09 Shinya T-Y, NAIST 25
  • 27. lib.FSM: 状態遷移機械 n?? FSMオブジェクトの addメソッドで代入を 追加する l?? Alwaysを書かなくて良い ?? クロックやリセットは 後から付加する l?? 代入条件や遅延が 付加できる ?? cond= ... ?? delay= ... l?? make_always(clk, rst)で alway文を生成 n?? goto_next()やgoto()で 状態遷移できる l?? 遷移条件が付加できる RECONF2015-09 Shinya T-Y, NAIST 27
  • 29. lib.Pipeline: パイプライン設計支援 n?? データフローを定義 するだけで パイプラインRTLが 生成される l?? data, valid, readyの組で 変数を管理 ?? valid, ready無しもOK l?? inputメソッドで 通常の信号を パイプライン変数に l?? outputメソッドで パイプライン変数を 通常の信号に変換 RECONF2015-09 Shinya T-Y, NAIST 29
  • 31. lib.simulation: テストベンチ実装支援 n?? テストベンチ実装によく使う機能をライブラリ化 l?? setup_waveform ?? 波形生成 l?? setup_clock ?? クロック生成 l?? setup_reset ?? リセット生成 l?? copy_paramsと copy_sim_ports を利用して インスタンス 生成が簡単に RECONF2015-09 Shinya T-Y, NAIST 31
  • 32. 評価 n?? 評価項目: ソースコード行数 n?? アプリケーション: 簡単な回路3種 l?? led: LEDチカチカ,テストベンチ無し ?? ライブラリ使用なし l?? sum: BRAM上のデータの合計値計算,テストベンチ有り ?? FSM, simulationライブラリを使用 l?? sort: ソーティングネットワーク,8-入出力,テストベンチあり ?? FSM, simulationライブラリを使用 n?? 半分程度に削減可能→もう少しなんとかならないか? RECONF2015-09 Shinya T-Y, NAIST 32
  • 33. まとめ RECONF2015-09 Shinya T-Y, NAIST 33 実行 Verilog HDLPython Veriloggen PythonでVerilog HDLを 組み立てるライブラリ n?? Pythonで書いた動作を HDLに変換する 高位合成ではない n?? Pythonのオブジェクト としてVerilogの信号や 代入を組み上げていく
  • 34. Veriloggen is available! n?? GitHubで公開中 l?? Veriloggen: https://github.com/PyHDI/veriloggen l?? PyCoRAM: https://github.com/PyHDI/PyCoRAM l?? Pyverilog: https://github.com/PyHDI/Pyverilog n?? PIP(Pythonパッケージ管理)でもインストール可 l?? ただしGitHubが最新版です RECONF2015-09 Shinya T-Y, NAIST 34 $ pip install veriloggen? $ pip install pyverilog? $ pip install pycoram? $ git clone https://github.com/PyHDI/veriloggen.git? $ git clone https://github.com/PyHDI/Pyverilog.git? $ git clone https://github.com/PyHDI/PyCoRAM.git?