Slide 1

Slide 1 text

RustとLSI開発 dalance

Slide 2

Slide 2 text

LSIの設計とは ● ソフトウェアの場合 ○ ソースコードを書く ○ コンパイル ○ 実行 ● LSI の場合 ○ ソースコードを書く(例えば SystemVerilog などで) ○ コンパイル(的な何か) ○ 製造

Slide 3

Slide 3 text

LSIの設計とは ● ソフトウェアの場合 ○ ソースコードを書く ○ コンパイル ○ 実行 ● LSI の場合 ○ ソースコードを書く(例えば SystemVerilog などで) ○ コンパイル(的な何か) ○ 製造 よく似ているので、同じような開発 手法やツールが使える。 CI とか git とか。

Slide 4

Slide 4 text

ソフトと違うところ ● ソフトウェアの場合 ○ ソースコードを書く ○ コンパイル ○ 実行 ● LSI の場合 ○ ソースコードを書く(例えば SystemVerilog などで) ○ コンパイル(的な何か) ○ 製造 ここの規模感はだいぶ違う。 コンパイル 1 回に数日~数週間 中間ファイルが数 GB ~数百 GB

Slide 5

Slide 5 text

ソフトと違うところ ● ソフトウェアの場合 ○ ソースコードを書く ○ コンパイル ○ 実行 ● LSI の場合 ○ ソースコードを書く(例えば SystemVerilog などで) ○ コンパイル(的な何か) ○ 製造 ここの規模感はだいぶ違う。 コンパイル 1 回に数日~数週間 中間ファイルが数 GB ~数百 GB 大きなファイルを素早く扱うための サポートツールをRustで書いてます

Slide 6

Slide 6 text

作ったもの(1) ● amber ○ いわゆる grep alternative ○ 大きなファイルを分割してマルチスレッドで検索する ■ ここだけなら ripgrep にも勝っている(普通の検索は ripgrep ものすごく速いです) ● ptags ○ ctags ( vim 用の tag 生成プログラム)のラッパー ■ LSI 開発時のリポジトリは 1TB 近くになるので、 ctags を普通に実行すると終わらない ○ .gitignore と git-lfs を除外して、マルチスレッドで並列実行できる

Slide 7

Slide 7 text

作ったもの(2) ● pipecolor ○ 標準出力をパイプで受け取って色付けするツール ■ 正規表現でマッチさせて好きな色を付けられる ○ LSI 系のツールは cargo/rustc のように色がつかなくて分かりにくいので ● procs ○ プロセス情報表示ツール( ps alternative ) ■ 標準でカラー表示できて、簡単に絞り込める ○ LSI 系のツールは貴重な!ライセンスをつかんだまま死んでしまうことがある

Slide 8

Slide 8 text

まとめ ● LSI 開発で(無理やり?) Rust 使ってます ● Rust の良いところ ○ 開発速度が速い: cargo/crates.io のおかげで ○ 実行速度が速い:データが大きくても困らない ○ エラーハンドリング:予想外の例外で落ちたりしない