SlideShare 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

研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
 
Starc verilog hdl2013d
Starc verilog hdl2013dStarc verilog hdl2013d
Starc verilog hdl2013d
Kiyoshi Ogawa
 
Threads and Callbacks for Embedded Python
Threads and Callbacks for Embedded PythonThreads and Callbacks for Embedded Python
Threads and Callbacks for Embedded Python
Yi-Lung Tsai
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
Hideki Takase
 
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモAnaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
ayohe
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
ryos36
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
Kiyoshi Ogawa
 
unique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるときunique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるとき
Shintarou Okada
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
 
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor SkochinskyインテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
CODE BLUE
 
I2CでRaspberry Piから 複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御するI2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから 複数の周辺機器を制御する
Hirokazu Nishio
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
Hideki Takase
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
Mr. Vengineer
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
 
VerilatorとSystemCでSoftware Driven Verification
VerilatorとSystemCでSoftware Driven VerificationVerilatorとSystemCでSoftware Driven Verification
VerilatorとSystemCでSoftware Driven Verification
Mr. Vengineer
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
Masakazu Asama
 
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
NTT DATA Technology & Innovation
 
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John HaanBasic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Ceph Community
 
Yoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作るYoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作る
shimadah
 

What's hot (20)

研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
Starc verilog hdl2013d
Starc verilog hdl2013dStarc verilog hdl2013d
Starc verilog hdl2013d
 
Threads and Callbacks for Embedded Python
Threads and Callbacks for Embedded PythonThreads and Callbacks for Embedded Python
Threads and Callbacks for Embedded Python
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモAnaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
 
unique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるときunique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるとき
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor SkochinskyインテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
 
I2CでRaspberry Piから 複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御するI2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから 複数の周辺機器を制御する
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 
VerilatorとSystemCでSoftware Driven Verification
VerilatorとSystemCでSoftware Driven VerificationVerilatorとSystemCでSoftware Driven Verification
VerilatorとSystemCでSoftware Driven Verification
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
 
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John HaanBasic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
 
Yoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作るYoctoで綺麗なkernel configを作る
Yoctoで綺麗なkernel configを作る
 

Similar to Pythonを用いた高水準ハードウェア設計環境の検討

Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
Noboru Irieda
 
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
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
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
Takashi Sogabe
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
Tomoya Nakayama
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
Atsuo Ishimoto
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話shigeki_ohtsu
 
PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法Yosuke Onoue
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
Atsuo Ishimoto
 
Python用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみたPython用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみた
Hirofumi Watanabe
 
C#勉強会
C#勉強会C#勉強会
C#勉強会
hakugakucafe
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPUTakuro Iizuka
 
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiKen'ichi Sakiyama
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
 
Php in ruby
Php in rubyPhp in ruby
Php in rubydo_aki
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
 

Similar to Pythonを用いた高水準ハードウェア設計環境の検討 (20)

Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
 
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
 
PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 
Python用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみたPython用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみた
 
Open modeler
Open modelerOpen modeler
Open modeler
 
C#勉強会
C#勉強会C#勉強会
C#勉強会
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 

More from Shinya Takamaeda-Y

オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
Shinya Takamaeda-Y
 
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモDNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
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
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
Shinya Takamaeda-Y
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
Shinya Takamaeda-Y
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
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
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
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
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
Shinya Takamaeda-Y
 

More from Shinya Takamaeda-Y (20)

オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
 
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモDNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
 
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
 
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
 
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)
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
 
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...
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 
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アクセラレータの開発
 

Recently uploaded

遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 

Recently uploaded (8)

遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 

Pythonを用いた高水準ハードウェア設計環境の検討

  • 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�