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
330
OpenMPW 2023 技術ぽい理解
OpenMPW GF-1 (2023 12 〆切)参加したいですね。ちょっと資料を書いてみました。ただ、情報が古いので、最新の情報にあたってください。
りょうす
November 10, 2023
Tweet
Share
More Decks by りょうす
See All by りょうす
RFSoCでPynqを試す
ryos36
0
11
Other Decks in Programming
See All in Programming
Introduction to GitOps
hwchiu
0
110
CSC307 Lecture 13
javiergs
PRO
0
150
Product Management LT会_クアンド新家
shinshin
0
260
How to use Macrobenchmark
veronikapj
0
160
みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがやばい #mackerelio #srenext
ne_sachirou
0
380
SRE チーム立ち上げ前に考えたこと・取り組んだこと / Considerations and Preparations Before Establishing an SRE Team
mackey0225
3
320
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
81k
DMMプラットフォームにおけるTiDBの導入から運用まで
pospome
7
3k
Trial
cairolibrary720
1
130
3 Effective Rules for Success with Signals in Angular
manfredsteyer
PRO
0
120
feature環境をGitHub ActionsとCloudFormationでいい感じに管理する
nealle
2
310
Harnessing Large Language Models for Training-free Video Anomaly Detection
tereka114
1
1.3k
Featured
See All Featured
A Philosophy of Restraint
colly
200
16k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
34
1.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
44
4.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
149
45k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Building Adaptive Systems
keathley
34
2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
12
3.8k
Practical Orchestrator
shlominoach
185
10k
Code Review Best Practice
trishagee
58
16k
Web Components: a chance to create the future
zenorocha
307
41k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
Scaling GitHub
holman
458
140k
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. 最終的にレイアウトの位置調整とかして組み上げる。 専⾨家がいるから 今⽇はオミット
おしまい