Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OpenMPW 2023 技術ぽい理解
Search
りょうす
November 10, 2023
Programming
0
480
OpenMPW 2023 技術ぽい理解
OpenMPW GF-1 (2023 12 〆切)参加したいですね。ちょっと資料を書いてみました。ただ、情報が古いので、最新の情報にあたってください。
りょうす
November 10, 2023
Tweet
Share
More Decks by りょうす
See All by りょうす
RFSoCでPynqを試す
ryos36
0
140
Other Decks in Programming
See All in Programming
Vibe Coding の話をしよう
schroneko
13
3.6k
The Implementations of Advanced LR Parser Algorithm
junk0612
1
1.3k
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
6
1.4k
flutter_kaigi_mini_4.pdf
nobu74658
0
140
「理解」を重視したAI活用開発
fast_doctor
0
270
Laravel × Clean Architecture
bumptakayuki
PRO
0
130
On-the-fly Suggestions of Rewriting Method Deprecations
ohbarye
1
4.7k
2ヶ月で生産性2倍、お買い物アプリ「カウシェ」4チーム同時改善の取り組み
ike002jp
1
110
Orleans + Sekiban + SignalR でリアルタイムWeb作ってみた
tomohisa
0
220
ComposeでのPicture in Picture
takathemax
0
130
Serving TUIs over SSH with Go
caarlos0
0
540
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
230
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Statistics for Hackers
jakevdp
798
220k
Rails Girls Zürich Keynote
gr2m
94
13k
Facilitating Awesome Meetings
lara
54
6.3k
GitHub's CSS Performance
jonrohan
1030
460k
KATA
mclloyd
29
14k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.5k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
690
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Transcript
OpenMPW GF-1 参加したいですね りょうす @ryos36 2023/11/10
りょうす @ryos36 Who Are You?
雑誌の記事書いてます 2023年インタフェース12⽉号の別冊付録 2023年インタフェース10⽉号の別冊付録 りょうす @ryos36
現状の私の知識 • MakeLSI: でコンパレータを作った • ゆるふわな知識 • KiCAD は使えた •
Spice も使えた • Klayout も使えた • テープアウトしたのは秋⽥先⽣で細かい最終作業はしていない • 半導体プロセスの専⾨知識はない • 半導体の知識はゼロ(習ったことがない) • オームの法則が成り⽴たない世界!? • 当然?物性も知らない(学⽣時代は哲学専攻orテニス専攻!!) • 初歩のラジオを中学⽣の時にかじった • ハンダはイモハンダ専⾨(はんだ付けの⼈ではない) • 「酸化膜が〜〜」と⾔われてもピンとこない りょうす @ryos36 不正確な⽤語の使い⽅とかあったら こっそり教えてください 修正対応します
7/26 まで解決した?こと • efabless という会社があるということが分かった • OpenLane というツールを試してみればよさそうなことが分 かった •
すぐに使えるのか?→つかってみた。結構⼤変じゃん(後述) • デジタルには Caravel というデバッグツールがあるということ が分かった • アナログはどうするのか不明
7/26 まで解決した?こと • efabless という会社があるということが分かった • OpenLane というツールを試してみればよさそうなことが分 かった •
すぐに使えるのか?→つかってみた。結構⼤変じゃん(後述) • デジタルには Caravel というデバッグツールがあるということ が分かった • アナログはどうするのか不明 7/26 情報が古くてすいません。おいついてません。 ISHI 会に⼊って情報をゲットしてください。
Analog VS Digital • Analog
Analog VS Digital • Digital • たぶんFPGAの知識+根性でいけるはず ぜんぶ使い切る のは⼤変らしい Cra2yPierr0t
— 2023/07/16 09:51 さんのコメントから勝⼿に引⽤
ためしに iic-osic-tools (docker)をつかっ て OpenLane を試⾷ • https://note.com/akira_tsuchiya/n/nf770aa77b785 を参考に次の組み合わせで最後までエラーなしでフローが通る。 sky130A
でも sky130B でもOK。 • https://github.com/iic-jku/iic-osic-tools • 2023.06 バージョンであること latest が変わるとエラーになる可能性あり • https://github.com/ryos36/caravel_user_project • とりあえず現時点の main の HEAD を使う。efabless の caravel_user_project は通らない お試しにはいい けど、現⾏の efabless の OpenLane の仕組みは Docker を複数使った⽅式になっているので 本家の情報をちゃんと⾒た⽅がよい
Docker を⽤意しました • https://github.com/ishi-kai/oss-asic-tools-in-docker • iic-osic-tools のほぼコピー • 無駄に Discord
の Rich Presence に対応 • gf180mcu 未対応(今後対応予定) • OpenROAD 未対応(今後対応予定) • 現時点では Linux amd64 のみ • Macintosh は対応予定 お試しにはいい けど、現⾏の efabless の OpenLane の仕組みは Docker を複数使った⽅式になっているので 本家の情報をちゃんと⾒た⽅がよい 私の作った Docker は デジタルでは⾮推奨
ちょっとした歴史 • 私が作った Docker のおおもとは iic-osic-tools です。 IIC(Institute for Integrated
Circuits) が ⽤意している Analog にもフォーカスした OpenLane の flow を実現する Docker 環 境です。 • さらに本を正すと efabless の FOSS-ASIC-TOOLS ですが、こ ちらは開発が⽌まっています。 • efabless としては efabless/openlane と efabless/openlane- tools をメンテナンス管理しているようです。 各ツールには歴史があってそれらをちょっと 知ってると理解の助けになる。 初学者はそもそも⽤語がわからず⾟い(経験談)
⽇本語の情報 • https://vlsi.jp/learn_lsi.html • たぶんここが⼀番情報としては的確 • 「経験者は語る」 • ただし私が確認した訳ではない •
だれかトライして報告して!
OpenLane と OpenROAD ⼤⽂字⼩⽂字がめんどくさい
⽤語 • MPW • Multi Project Wafer(⽇本ではシャトルとか⾔っていた?) • Efabless •
会社名 • OpenLane • ツール名 • OpenROAD • ツール名でもあり、団体名でもある • Caravel • Efabless が提供してくれている RISC-V を使ったデバッグ環境? • Open_PDKs • むむむ ということで 今回、私が出来ることは⽤語の解説か? しかも2023/7あたりの私の理解 (すいません) なんか、こういう⽤語って新規のユーザが抵抗あるから、だれかもっとわかりやすい PPT つくってくれ。正直 MPW とかいわれてもわからなかった(私の体験)
Open_PDKs に注意 • http://opencircuitdesign.com/open_pdks/ • このサイトは Open_PDKs • 複数形の s
をつけて Open の後にも _ をつけて明確化している • OpenPDK というものはない • さも OpenGL とかと同じ並びであるかのように書く⼈が世界中にいる。 • OpenPDK という⾔葉は何かを具体的に指していない(ゆるふわな感じ) • PDK ってそもそも各ファウンダリが提供するものだし • Open_PDKs はそれをなるべく揃えよう(統⼀)としている。 • ただ、ツールに必要なのをがちゃがちゃいれていて整理されてはいない 個⼈の感想です 電卓とか携帯 とかと同じで市⺠権を獲得 するかも
OpenLane とは? • efabless が⽤意しているツール • これを使えばほぼ、Verilog の知識で MPW を乗り切れるはず
だ(たぶんね) • Github で管理されている • efabless/openlane • efabless/openlane-tools
OpenLane とは? 最新版は verilator に よる Lint が ⼊っている 最新
= 2023/7⽉ごろ
OpenLane とは? 基本的にデジタルに対応したフロー
OpenLane とは? verilator による Verilog-HDL(RTL) の⽂法チェック • Verilator : ツールの名称(Verilog-HDL
の⾼速シミュレーション) • Verilog-HDL: ⾔語 • RTL: Resister Transfer Level
OpenLane とは? Synthesis : 合成 各ファブが⽤意す るスタンダードセ ルの集まりに変換 • ファブ:⼯場?
• スタンダードセル:and とか or などが⽤意されている
OpenLane とは? STA:static timing analysis 各セルが持ってい る情報から遅延を 解析
OpenLane とは? DFT? よくわからない
OpenLane とは? OpenROAD!! 後述
OpenLane とは? OpenROAD!! 後述 後半はよくわからない。 今後調べる 寄⽣成分抽出(LPE またはPEXと呼ばれる)をやって再度シミュ レーションで確認、、、とかやっているらしい。⾃信なし
OpenLane とは? open pdks として⽤意 sky130 gf180MCU open pdks: NDA
不要といういみでオープンな pdk を集めたもの。 OpenPDK という、何を指すのか不明な名称には意図的にしなかった 模様。ログを⾒ると気を使っていることがうかがえる。
提供されている open pdk(s) • sky130 • A と B があるみたい
• gf180mcu • 10v と 3.3/5/6v が提供されているはず(10v はたぶん今回は使わない?) • 現状 pdk に含まれるファイルは各フェーズで必要そうなものを えいや〜とまとめたもので、なに?これ?というはフローと書 くツールの状況を全部把握しないとわからない 今回はこっち
OpenLane とは? 実は詳細知る必要なし、、、のはず(⾃信なし) エラーが起こったら追ってかないといけないが エラー内容を Slack にあげると誰かが答えてくれると思うよ Verilog のソースさえ ⽤意すればいいはずだ
OpenROAD とは? • The OpenROAD Project • プロジェクトとそれを進める団体名 • OpenROAD
というコマンド名 • OpenLane ないで使⽤されている • OpenROAD というフローもある • github に次のレポジトリがある • https://github.com/The-OpenROAD-Project/OpenROAD • OpenROAD というコマンド tcl • https://github.com/The-OpenROAD-Project/OpenROAD-flow- scripts • OpenROAD flow という OpenLane ではないフローを提供している
そういえば tcl、、、 • 各ツールはどういうわけあ tcl を基本としている。 • xschem • たちあげると
tcl の CUI(REPL?) と GUI が⽴ち会がある • OpenROAD • たちあげると tcl の CUI(REPL?) が⽴ち上がる。
OpenROAD コマンド • Tcl の CUI(REPL?) • STA • Floorplan
• Placment • Routing • とかかな?今後ちゃんと調べる
OpenROAD flow フローとしての OpenROAD なかで OpenROAD というコマンドを使っ ている(はず)
OpenROAD は Proprietary PDKs にも対応 OpenLane との違い
OpenLane でもOpenROADコマンドとし て使われている
OpenROAD の詳細は知る必要がない(はず) 実は詳細知る必要なし、、、のはず(⾃信なし) エラーが起こったら追ってかないといけないが エラー内容を Slack にあげると誰かが答えてくれると思うよ
実⾷ 7⽉時点の話だけどね
OpenLane を試す • iic-osic-tools を使って可能 • https://note.com/akira_tsuchiya/n/nf770aa77b785 • caravel_user_project をつかう
OpenMPW GF-1 では本家のツール を使いましょう これはお試し
Caravelってなに? あらかじめ⽤意されあ た RISC-V のデバッグ システム
Caravelってなに? ユーザはCARAVEL の外を 設計
Caravelってなに? あらかじめ決められた デバッグシステムとIOの 接点がある WB: WishBoneバス LA: ロジックアナライザ RISC-V というのがフレンドリー
Caravelってなに? がちゃんこしてできあがり
iic のDocker は正式じゃないけど、、、 • Anaconda つかうのもいいかも どうやら Python の venv
+ 疑似ルートにインストールさ れた、ツール群のようだ。 ツールは疑似ルートにインストールすればホストへの影 響を少なくできる。しかし、ホストのツールも呼べるの で Docker のように完全に隔離された環境ではない。 簡単だけど再現性は Docker ほどではない
OpenROAD の情報 • https://zenn.dev/szkharry/articles/80260188dd3cf3 • https://zenn.dev/szkharry/articles/f033c3e1326ba2
デジタルもうちょい詳しく といいつつ、この辺、ちゃんとやってないから だんだん説明があいまいになります “はず”ばっかりでスマソ
caravel_user_project をつかう(はずよ) • https://github.com/efabless/caravel_user_project • むかしはなんか verilator のチェックで落ちていたけど • いまは⼤丈夫みたい(未確認)
• PR も出してみたが、、、採⽤されずに、問題は解決した模様 • わたしがなんかしないといけないみたい? • だれか教えてください(github をよくわかってない)
WishBone(バス) • 有名なバス • 仕様は単純なんで FPGA ができればできるはずだ!! caravel_user_project/verilog/rtl/user_proj_example.v // Wishbone
Slave ports (WB MI A) input wb_clk_i, input wb_rst_i, input wbs_stb_i, input wbs_cyc_i, input wbs_we_i, input [3:0] wbs_sel_i, input [31:0] wbs_dat_i, input [31:0] wbs_adr_i, output wbs_ack_o, output [31:0] wbs_dat_o,
LA(ロジックアナライザ) • RISC-V から⾒ることができるはず • リアルのピンからも出せるのかな? • IRQ もある caravel_user_project/verilog/rtl/user_proj_example.v
// Logic Analyzer Signals input [127:0] la_data_in, output [127:0] la_data_out, input [127:0] la_oenb, // IOs input [BITS-1:0] io_in, output [BITS-1:0] io_out, output [BITS-1:0] io_oeb, // IRQ output [2:0] irq
caravel_user_project の中⾝ • ただのカウンタ counter #( .BITS(BITS) ) counter( .clk(clk),
.reset(rst), .ready(wbs_ack_o), .valid(valid), .rdata(rdata), .wdata(wbs_dat_i[BITS-1:0]), .wstrb(wstrb), .la_write(la_write), .la_input(la_data_in[63:64-BITS]), .count(count) );
アナログはどうするよ? 専⾨家に任せましょう
OpenLane は使わないことが判明 • iic-osic-tools は OpenLane ⽤のツール • Chipathon では
OpenROAD を使う 専⾨家がいるから 今⽇はオミット
xschem たちあげ • 表紙がチュートリアルになっている • コピペすればよい • gf180mcu はうまくいってない •
⽇本語でチュートリアルを ⽤意すれば便利そう 専⾨家がいるから 今⽇はオミット
なんかようわからんがやってみる 専⾨家がいるから 今⽇はオミット
gaw で波形を⾒ることができる 専⾨家がいるから 今⽇はオミット
xschem べんり • スクリプトは登録できるので外部コマンドと連携が可能 • チュートリアルを⽤意すると導⼊がはやそう 専⾨家がいるから 今⽇はオミット
アナログどんなフローになる? 1. まずは回路図書く :Xscheme 2. 回路図から spice の cir (サーキットの略でしょう)
を抽出する(各ツールに⽤意されてい るはず) 3. ngspice とかでシミュレーションする 4. この時、 gf180 のモデルをどっかで読み込まないといけないはず。 思ったとおりの結 果げられたかチェック 5. うまく⾔ったら、回路図を読み取りながら今度は Klayout でお絵描き。 6. 回路図からレイアウトに⾃動変換するツールはないので⾃分で頑張る このとき gf180 のレイヤ情報が必要 できたら DRC かけてレイアウトが問題ないかチェック。LVS かけ て回路図的に等価もチェック。 7. 寄⽣成分抽出(LPE またはPEXと呼ばれる)をやって再度シミュレーションで確認 8. そうするといくつもパーツが出来上がってくるので、これを統合する。⼿で P&R する のでしょう。 9. 最終的にレイアウトの位置調整とかして組み上げる。 専⾨家がいるから 今⽇はオミット
おしまい