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
420
OpenMPW 2023 技術ぽい理解
OpenMPW GF-1 (2023 12 〆切)参加したいですね。ちょっと資料を書いてみました。ただ、情報が古いので、最新の情報にあたってください。
りょうす
November 10, 2023
Tweet
Share
More Decks by りょうす
See All by りょうす
RFSoCでPynqを試す
ryos36
0
80
Other Decks in Programming
See All in Programming
AWSのLambdaで PHPを動かす選択肢
rinchoku
2
360
103 Early Hints
sugi_0000
1
330
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
360
return文におけるstd::moveについて
onihusube
1
1.4k
非ブラウザランタイムとWeb標準 / Non-Browser Runtimes and Web Standards
petamoriken
0
410
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
200
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
260
Findy Team+ Awardを受賞したかった!ベストプラクティス応募内容をふりかえり、開発生産性向上もふりかえる / Findy Team Plus Award BestPractice and DPE Retrospective 2024
honyanya
0
130
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
270
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
980
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
350
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
540
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
940
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Being A Developer After 40
akosma
89
590k
How GitHub (no longer) Works
holman
312
140k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
19
2.3k
A better future with KSS
kneath
238
17k
It's Worth the Effort
3n
183
28k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
230
The World Runs on Bad Software
bkeepers
PRO
66
11k
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. 最終的にレイアウトの位置調整とかして組み上げる。 専⾨家がいるから 今⽇はオミット
おしまい