Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenMPW 2023 技術ぽい理解

りょうす
November 10, 2023

OpenMPW 2023 技術ぽい理解

OpenMPW GF-1 (2023 12 〆切)参加したいですね。ちょっと資料を書いてみました。ただ、情報が古いので、最新の情報にあたってください。

りょうす

November 10, 2023
Tweet

More Decks by りょうす

Other Decks in Programming

Transcript

  1. 現状の私の知識 • MakeLSI: でコンパレータを作った • ゆるふわな知識 • KiCAD は使えた •

    Spice も使えた • Klayout も使えた • テープアウトしたのは秋⽥先⽣で細かい最終作業はしていない • 半導体プロセスの専⾨知識はない • 半導体の知識はゼロ(習ったことがない) • オームの法則が成り⽴たない世界!? • 当然?物性も知らない(学⽣時代は哲学専攻orテニス専攻!!) • 初歩のラジオを中学⽣の時にかじった • ハンダはイモハンダ専⾨(はんだ付けの⼈ではない) • 「酸化膜が〜〜」と⾔われてもピンとこない りょうす @ryos36 不正確な⽤語の使い⽅とかあったら こっそり教えてください 修正対応します
  2. 7/26 まで解決した?こと • efabless という会社があるということが分かった • OpenLane というツールを試してみればよさそうなことが分 かった •

    すぐに使えるのか?→つかってみた。結構⼤変じゃん(後述) • デジタルには Caravel というデバッグツールがあるということ が分かった • アナログはどうするのか不明
  3. 7/26 まで解決した?こと • efabless という会社があるということが分かった • OpenLane というツールを試してみればよさそうなことが分 かった •

    すぐに使えるのか?→つかってみた。結構⼤変じゃん(後述) • デジタルには Caravel というデバッグツールがあるということ が分かった • アナログはどうするのか不明 7/26 情報が古くてすいません。おいついてません。 ISHI 会に⼊って情報をゲットしてください。
  4. ためしに 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 を複数使った⽅式になっているので 本家の情報をちゃんと⾒た⽅がよい
  5. 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 は デジタルでは⾮推奨
  6. ちょっとした歴史 • 私が作った Docker のおおもとは iic-osic-tools です。 IIC(Institute for Integrated

    Circuits) が ⽤意している Analog にもフォーカスした OpenLane の flow を実現する Docker 環 境です。 • さらに本を正すと efabless の FOSS-ASIC-TOOLS ですが、こ ちらは開発が⽌まっています。 • efabless としては efabless/openlane と efabless/openlane- tools をメンテナンス管理しているようです。 各ツールには歴史があってそれらをちょっと 知ってると理解の助けになる。 初学者はそもそも⽤語がわからず⾟い(経験談)
  7. ⽤語 • MPW • Multi Project Wafer(⽇本ではシャトルとか⾔っていた?) • Efabless •

    会社名 • OpenLane • ツール名 • OpenROAD • ツール名でもあり、団体名でもある • Caravel • Efabless が提供してくれている RISC-V を使ったデバッグ環境? • Open_PDKs • むむむ ということで 今回、私が出来ることは⽤語の解説か? しかも2023/7あたりの私の理解 (すいません) なんか、こういう⽤語って新規のユーザが抵抗あるから、だれかもっとわかりやすい PPT つくってくれ。正直 MPW とかいわれてもわからなかった(私の体験)
  8. Open_PDKs に注意 • http://opencircuitdesign.com/open_pdks/ • このサイトは Open_PDKs • 複数形の s

    をつけて Open の後にも _ をつけて明確化している • OpenPDK というものはない • さも OpenGL とかと同じ並びであるかのように書く⼈が世界中にいる。 • OpenPDK という⾔葉は何かを具体的に指していない(ゆるふわな感じ) • PDK ってそもそも各ファウンダリが提供するものだし • Open_PDKs はそれをなるべく揃えよう(統⼀)としている。 • ただ、ツールに必要なのをがちゃがちゃいれていて整理されてはいない 個⼈の感想です 電卓とか携帯 とかと同じで市⺠権を獲得 するかも
  9. OpenLane とは? • efabless が⽤意しているツール • これを使えばほぼ、Verilog の知識で MPW を乗り切れるはず

    だ(たぶんね) • Github で管理されている • efabless/openlane • efabless/openlane-tools
  10. OpenLane とは? verilator による Verilog-HDL(RTL) の⽂法チェック • Verilator : ツールの名称(Verilog-HDL

    の⾼速シミュレーション) • Verilog-HDL: ⾔語 • RTL: Resister Transfer Level
  11. OpenLane とは? open pdks として⽤意 sky130 gf180MCU open pdks: NDA

    不要といういみでオープンな pdk を集めたもの。 OpenPDK という、何を指すのか不明な名称には意図的にしなかった 模様。ログを⾒ると気を使っていることがうかがえる。
  12. 提供されている open pdk(s) • sky130 • A と B があるみたい

    • gf180mcu • 10v と 3.3/5/6v が提供されているはず(10v はたぶん今回は使わない?) • 現状 pdk に含まれるファイルは各フェーズで必要そうなものを えいや〜とまとめたもので、なに?これ?というはフローと書 くツールの状況を全部把握しないとわからない 今回はこっち
  13. 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 ではないフローを提供している
  14. そういえば tcl、、、 • 各ツールはどういうわけあ tcl を基本としている。 • xschem • たちあげると

    tcl の CUI(REPL?) と GUI が⽴ち会がある • OpenROAD • たちあげると tcl の CUI(REPL?) が⽴ち上がる。
  15. OpenROAD コマンド • Tcl の CUI(REPL?) • STA • Floorplan

    • Placment • Routing • とかかな?今後ちゃんと調べる
  16. iic のDocker は正式じゃないけど、、、 • Anaconda つかうのもいいかも どうやら Python の venv

    + 疑似ルートにインストールさ れた、ツール群のようだ。 ツールは疑似ルートにインストールすればホストへの影 響を少なくできる。しかし、ホストのツールも呼べるの で Docker のように完全に隔離された環境ではない。 簡単だけど再現性は Docker ほどではない
  17. caravel_user_project をつかう(はずよ) • https://github.com/efabless/caravel_user_project • むかしはなんか verilator のチェックで落ちていたけど • いまは⼤丈夫みたい(未確認)

    • PR も出してみたが、、、採⽤されずに、問題は解決した模様 • わたしがなんかしないといけないみたい? • だれか教えてください(github をよくわかってない)
  18. 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,
  19. 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
  20. 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) );
  21. xschem たちあげ • 表紙がチュートリアルになっている • コピペすればよい • gf180mcu はうまくいってない •

    ⽇本語でチュートリアルを ⽤意すれば便利そう 専⾨家がいるから 今⽇はオミット
  22. アナログどんなフローになる? 1. まずは回路図書く :Xscheme 2. 回路図から spice の cir (サーキットの略でしょう)

    を抽出する(各ツールに⽤意されてい るはず) 3. ngspice とかでシミュレーションする 4. この時、 gf180 のモデルをどっかで読み込まないといけないはず。 思ったとおりの結 果げられたかチェック 5. うまく⾔ったら、回路図を読み取りながら今度は Klayout でお絵描き。 6. 回路図からレイアウトに⾃動変換するツールはないので⾃分で頑張る このとき gf180 のレイヤ情報が必要 できたら DRC かけてレイアウトが問題ないかチェック。LVS かけ て回路図的に等価もチェック。 7. 寄⽣成分抽出(LPE またはPEXと呼ばれる)をやって再度シミュレーションで確認 8. そうするといくつもパーツが出来上がってくるので、これを統合する。⼿で P&R する のでしょう。 9. 最終的にレイアウトの位置調整とかして組み上げる。 専⾨家がいるから 今⽇はオミット