$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OpenMPW 2023 技術ぽい理解
Search
りょうす
November 10, 2023
Programming
0
550
OpenMPW 2023 技術ぽい理解
OpenMPW GF-1 (2023 12 〆切)参加したいですね。ちょっと資料を書いてみました。ただ、情報が古いので、最新の情報にあたってください。
りょうす
November 10, 2023
Tweet
Share
More Decks by りょうす
See All by りょうす
RFSoCでPynqを試す
ryos36
0
270
Other Decks in Programming
See All in Programming
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
380
チームをチームにするEM
hitode909
0
290
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
140
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
160
認証・認可の基本を学ぼう前編
kouyuume
0
190
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
110
エディターってAIで操作できるんだぜ
kis9a
0
700
Go コードベースの構成と AI コンテキスト定義
andpad
0
120
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.5k
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.2k
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
200
AWS CDKの推しポイントN選
akihisaikeda
1
240
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
56
14k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
How to train your dragon (web standard)
notwaldorf
97
6.4k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
A designer walks into a library…
pauljervisheath
210
24k
Documentation Writing (for coders)
carmenintech
76
5.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
390
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. 最終的にレイアウトの位置調整とかして組み上げる。 専⾨家がいるから 今⽇はオミット
おしまい