• 検索結果がありません。

RustからVerilogへのトランスパイラの実装

N/A
N/A
Protected

Academic year: 2021

シェア "RustからVerilogへのトランスパイラの実装"

Copied!
1
0
0

読み込み中.... (全文を見る)

全文

(1)情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2018-DPS-176 No.11 Vol.2018-EIP-81 No.11 2018/9/13. Rust から Verilog へのトランスパイラの実装 Implementation of Rust to Verilog Transpiler 高野 恵輔† 小田 哲也‡ 小畑 正貴‡ Keiuske Takano Tetsuya Oda Masaki Kohata 1. はじめに 近年、ストリーミング処理や、ディープラーニングなど の計算量の大きい処理が多用されている。これらの処理は 計算量に比例して処理時間も大きくなるため高速化を可能 にする演算器が求められている。このような状況で、処理 の高速化や電力消費量の削減が可能であるとして FPGA(Field Programmable Gate Array)が注目されている。し かしながら、FPGA を開発する際に使用される Verilog 等の HDL(Hardware Description Language)では開発時間が長期化 するだけでなくメモリ安全を保証することが困難である。 そこで本研究では、メモリ安全性を有する言語である Rust によってアルゴリズムを記述し、HDL のうち Verilog へと 変換するトランスパイラを実装した。. 2. トランスパイラ トランスパイラとは、あるプログラミング言語で記述さ れたソースコードを入力として受け取り、別のプログラミ ング言語の同等なコードを目的コードとして出力するツー ルである。提案システムは Rust から Verilog に変換するト ランスパイラである。 Rust[1]とは Mozilla が開発を支援するオープンソースの システムプログラミング言語である。コンパイラが、リソ ースの静的検証を事前に行い、異なる型の変数間での代入、 また不正なメモリ領域へのアクセスなどを防ぐことにより 型間やメモリ安全なバイナリを生成することで実現してい る。. 3. 提案システム[2] 本提案システムは Rust を用いたトランスパイラである。 Verilog の構文に対応させた構造体を定義することで Rust 上に Verilog のための AST(Abstruct Syntax Tree)実装を行う。. 図 1 ハードウェア用 AST 構築の手順 表 1 提案システムの出力した性能 \Resource Process Synthesis. FF. LUT 262(0.22%). Memory LUT 0(0.0%). 230(0.49%). Implementation. 230(0.49%). BRAM 0(0.0%). 262(0.22%). 0(0.0%). 0(0.0%). 4. 実験結果 実験として、提案システムで生成されたコードを FPGA 上に実装する。実装には Xilinx 製 FPGA の Zybo Z7-20 およ び、開発ソフト Vivado 2018.2 を用いた。表 1 に今回作成 した山登り法の Rust から出力した Verilog のコードを実装 した性能を示す。この回路では Synthesis(論理合成)および Implementation(配置配線)で使用される FPGA のリソースは どちらも FF(Flip-Flop)を 230 ブロック、LUT(LookUp Table) を 262 ブ ロ ッ ク 使 用 し て い た 。 Memory LUT や BRAM(Block RAM)はメモリを参照する回路ではなかった ので使用されることは無かった。. 5. おわりに. AST とは、抽象構文木のことで対象とした言語にとって 意味のない情報を取り除き、意味に関係のある情報のみを 抽出した木構造のデータ構造である。コンパイラやインタ プリタ内の中間処理として用いられる。提案システムでは Verilog の AST を Rust 上で構築することで機能を実現する。 図 1 に AST 構築の手順を示す。Verilog の module と対応さ せた VModule という構造体にメソッドを使用することで、 AST の構築を行う。コードの出力には、AST の構築が完了 した VModule から、実装している endmodule メソッドを呼 び出すことで出力することができる。. 本稿では、Rust から Verilog へのトランスパイラを実装 し 、 提案 シス テム を用 い て 山 登 り法 のア ルゴ リズ ム を Verilog のコードへ変換する実験を行った。その結果、変換 された Verilog のコードは Synthesis、Implementation でき、 Zybo Z7-20 内で使用されるリソースは FF が 230 ブロック で 0.49%、LUT が 262 ブロックで 0.22%であった。 今後は、様々なハードウェアを本ツールにより記述しコ ードの検証を進めていくとともに、機能拡張を行っていく 必要がある。. 現時点では標準出力からのみの出力をサポートしており、 コンパイルの完了と同時に標準出力より生成された Verilog のコードが出力される。生成構文は Verilog2001 に準拠し、 論理合成可能な構文を主としたライブラリとして実装した。. [1] N. D. Matsakis, F. S. Klock II, “The rust language”, ACM SIGAda Annual Conference on High Integrity Language Technology, Vol. 34, No.3, pp.103-104, 2014. [2] “ Verugent ” , Available at: https://github.com/RuSys/Verugent/ Accessed: 22 August 2018.. 参考文献. †岡山理科大学工学研究科システム科学専攻 ‡岡山理科大学工学部情報工学科. ⓒ 2018 Information Processing Society of Japan. 1.

(2)

図 1 に AST 構築の手順を示す。Verilog の module と対応さ

参照

関連したドキュメント

と言っても、事例ごとに意味がかなり異なるのは、子どもの性格が異なることと同じである。その

つまり、p 型の語が p 型の語を修飾するという関係になっている。しかし、p 型の語同士の Merge

「欲求とはけっしてある特定のモノへの欲求で はなくて、差異への欲求(社会的な意味への 欲望)であることを認めるなら、完全な満足な どというものは存在しない

Google マップ上で誰もがその情報を閲覧することが可能となる。Google マイマップは、Google マップの情報を基に作成されるため、Google

きも活発になってきております。そういう意味では、このカーボン・プライシングとい

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

SFP冷却停止の可能性との情報があるな か、この情報が最も重要な情報と考えて