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
380
OpenMPW 2023 技術ぽい理解
OpenMPW GF-1 (2023 12 〆切)参加したいですね。ちょっと資料を書いてみました。ただ、情報が古いので、最新の情報にあたってください。
りょうす
November 10, 2023
Tweet
Share
More Decks by りょうす
See All by りょうす
RFSoCでPynqを試す
ryos36
0
41
Other Decks in Programming
See All in Programming
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
3
350
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
1
240
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
0
200
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
950
Prompt Engineering for Developers @ AWS Community Day Adria 2024
slobodan
0
120
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
160
PagerDuty を軸にした On-Call 構築と運用課題の解決 / PagerDuty Japan Community Meetup 4
horimislime
1
100
qmuntal/stateless のススメ
sgash708
0
110
レガシーな Android アプリのリアーキテクチャ戦略
oidy
1
170
のびしろを広げる巻き込まれ力:偶然を活かすキャリアの作り方/oso2024
takahashiikki
1
350
僕がつくった48個のWebサービス達
yusukebe
17
16k
とにかくAWS GameDay!AWSは世界の共通言語!.pdf / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
0
160
Featured
See All Featured
Six Lessons from altMBA
skipperchong
26
3.4k
Ruby is Unlike a Banana
tanoku
96
11k
The Invisible Side of Design
smashingmag
297
50k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.6k
[RailsConf 2023] Rails as a piece of cake
palkan
51
4.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Faster Mobile Websites
deanohume
304
30k
Making the Leap to Tech Lead
cromwellryan
132
8.9k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
41
9.2k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Building Your Own Lightsaber
phodgson
102
6k
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. 最終的にレイアウトの位置調整とかして組み上げる。 専⾨家がいるから 今⽇はオミット
おしまい