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

Other Decks in Programming

Transcript

  1. OpenMPW GF-1
    参加したいですね
    りょうす
    @ryos36
    2023/11/10

    View full-size slide

  2. りょうす
    @ryos36
    Who Are You?

    View full-size slide

  3. 雑誌の記事書いてます
    2023年インタフェース12⽉号の別冊付録
    2023年インタフェース10⽉号の別冊付録
    りょうす
    @ryos36

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. Analog VS Digital
    • Analog

    View full-size slide

  8. Analog VS Digital
    • Digital
    • たぶんFPGAの知識+根性でいけるはず
    ぜんぶ使い切る
    のは⼤変らしい
    Cra2yPierr0t — 2023/07/16 09:51
    さんのコメントから勝⼿に引⽤

    View full-size slide

  9. ためしに 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 を複数使った⽅式になっているので
    本家の情報をちゃんと⾒た⽅がよい

    View full-size slide

  10. 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 は
    デジタルでは⾮推奨

    View full-size slide

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

    View full-size slide

  12. ⽇本語の情報
    • https://vlsi.jp/learn_lsi.html
    • たぶんここが⼀番情報としては的確
    • 「経験者は語る」
    • ただし私が確認した訳ではない
    • だれかトライして報告して!

    View full-size slide

  13. OpenLane と OpenROAD
    ⼤⽂字⼩⽂字がめんどくさい

    View full-size slide

  14. ⽤語
    • MPW
    • Multi Project Wafer(⽇本ではシャトルとか⾔っていた?)
    • Efabless
    • 会社名
    • OpenLane
    • ツール名
    • OpenROAD
    • ツール名でもあり、団体名でもある
    • Caravel
    • Efabless が提供してくれている RISC-V を使ったデバッグ環境?
    • Open_PDKs
    • むむむ
    ということで
    今回、私が出来ることは⽤語の解説か?
    しかも2023/7あたりの私の理解
    (すいません)
    なんか、こういう⽤語って新規のユーザが抵抗あるから、だれかもっとわかりやすい
    PPT つくってくれ。正直 MPW とかいわれてもわからなかった(私の体験)

    View full-size slide

  15. Open_PDKs に注意
    • http://opencircuitdesign.com/open_pdks/
    • このサイトは Open_PDKs
    • 複数形の s をつけて Open の後にも _ をつけて明確化している
    • OpenPDK というものはない
    • さも OpenGL とかと同じ並びであるかのように書く⼈が世界中にいる。
    • OpenPDK という⾔葉は何かを具体的に指していない(ゆるふわな感じ)
    • PDK ってそもそも各ファウンダリが提供するものだし
    • Open_PDKs はそれをなるべく揃えよう(統⼀)としている。
    • ただ、ツールに必要なのをがちゃがちゃいれていて整理されてはいない
    個⼈の感想です
    電卓とか携帯
    とかと同じで市⺠権を獲得
    するかも

    View full-size slide

  16. OpenLane とは?
    • efabless が⽤意しているツール
    • これを使えばほぼ、Verilog の知識で MPW を乗り切れるはず
    だ(たぶんね)
    • Github で管理されている
    • efabless/openlane
    • efabless/openlane-tools

    View full-size slide

  17. OpenLane とは?
    最新版は
    verilator に
    よる Lint が
    ⼊っている
    最新 = 2023/7⽉ごろ

    View full-size slide

  18. OpenLane とは?
    基本的にデジタルに対応したフロー

    View full-size slide

  19. OpenLane とは?
    verilator による
    Verilog-HDL(RTL)
    の⽂法チェック
    • Verilator : ツールの名称(Verilog-HDL の⾼速シミュレーション)
    • Verilog-HDL: ⾔語
    • RTL: Resister Transfer Level

    View full-size slide

  20. OpenLane とは?
    Synthesis : 合成
    各ファブが⽤意す
    るスタンダードセ
    ルの集まりに変換
    • ファブ:⼯場?
    • スタンダードセル:and とか or などが⽤意されている

    View full-size slide

  21. OpenLane とは?
    STA:static timing
    analysis
    各セルが持ってい
    る情報から遅延を
    解析

    View full-size slide

  22. OpenLane とは?
    DFT?
    よくわからない

    View full-size slide

  23. OpenLane とは?
    OpenROAD!!
    後述

    View full-size slide

  24. OpenLane とは?
    OpenROAD!!
    後述
    後半はよくわからない。
    今後調べる
    寄⽣成分抽出(LPE またはPEXと呼ばれる)をやって再度シミュ
    レーションで確認、、、とかやっているらしい。⾃信なし

    View full-size slide

  25. OpenLane とは? open pdks として⽤意
    sky130
    gf180MCU
    open pdks: NDA 不要といういみでオープンな pdk を集めたもの。
    OpenPDK という、何を指すのか不明な名称には意図的にしなかった
    模様。ログを⾒ると気を使っていることがうかがえる。

    View full-size slide

  26. 提供されている open pdk(s)
    • sky130
    • A と B があるみたい
    • gf180mcu
    • 10v と 3.3/5/6v が提供されているはず(10v はたぶん今回は使わない?)
    • 現状 pdk に含まれるファイルは各フェーズで必要そうなものを
    えいや〜とまとめたもので、なに?これ?というはフローと書
    くツールの状況を全部把握しないとわからない
    今回はこっち

    View full-size slide

  27. OpenLane とは?
    実は詳細知る必要なし、、、のはず(⾃信なし)
    エラーが起こったら追ってかないといけないが
    エラー内容を Slack にあげると誰かが答えてくれると思うよ
    Verilog のソースさえ
    ⽤意すればいいはずだ

    View full-size slide

  28. 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 ではないフローを提供している

    View full-size slide

  29. そういえば tcl、、、
    • 各ツールはどういうわけあ tcl を基本としている。
    • xschem
    • たちあげると tcl の CUI(REPL?) と GUI が⽴ち会がある
    • OpenROAD
    • たちあげると tcl の CUI(REPL?) が⽴ち上がる。

    View full-size slide

  30. OpenROAD コマンド
    • Tcl の CUI(REPL?)
    • STA
    • Floorplan
    • Placment
    • Routing
    • とかかな?今後ちゃんと調べる

    View full-size slide

  31. OpenROAD flow フローとしての
    OpenROAD
    なかで
    OpenROAD
    というコマンドを使っ
    ている(はず)

    View full-size slide

  32. OpenROAD は Proprietary PDKs にも対応
    OpenLane との違い

    View full-size slide

  33. OpenLane でもOpenROADコマンドとし
    て使われている

    View full-size slide

  34. OpenROAD の詳細は知る必要がない(はず)
    実は詳細知る必要なし、、、のはず(⾃信なし)
    エラーが起こったら追ってかないといけないが
    エラー内容を Slack にあげると誰かが答えてくれると思うよ

    View full-size slide

  35. 実⾷
    7⽉時点の話だけどね

    View full-size slide

  36. OpenLane を試す
    • iic-osic-tools を使って可能
    • https://note.com/akira_tsuchiya/n/nf770aa77b785
    • caravel_user_project をつかう
    OpenMPW GF-1
    では本家のツール
    を使いましょう
    これはお試し

    View full-size slide

  37. Caravelってなに?
    あらかじめ⽤意されあ
    た RISC-V のデバッグ
    システム

    View full-size slide

  38. Caravelってなに?
    ユーザはCARAVEL の外を
    設計

    View full-size slide

  39. Caravelってなに?
    あらかじめ決められた
    デバッグシステムとIOの
    接点がある
    WB: WishBoneバス
    LA: ロジックアナライザ
    RISC-V というのがフレンドリー

    View full-size slide

  40. Caravelってなに?
    がちゃんこしてできあがり

    View full-size slide

  41. iic のDocker は正式じゃないけど、、、
    • Anaconda つかうのもいいかも
    どうやら Python の venv + 疑似ルートにインストールさ
    れた、ツール群のようだ。
    ツールは疑似ルートにインストールすればホストへの影
    響を少なくできる。しかし、ホストのツールも呼べるの
    で Docker のように完全に隔離された環境ではない。
    簡単だけど再現性は Docker ほどではない

    View full-size slide

  42. OpenROAD の情報
    • https://zenn.dev/szkharry/articles/80260188dd3cf3
    • https://zenn.dev/szkharry/articles/f033c3e1326ba2

    View full-size slide

  43. デジタルもうちょい詳しく
    といいつつ、この辺、ちゃんとやってないから
    だんだん説明があいまいになります
    “はず”ばっかりでスマソ

    View full-size slide

  44. caravel_user_project をつかう(はずよ)
    • https://github.com/efabless/caravel_user_project
    • むかしはなんか verilator のチェックで落ちていたけど
    • いまは⼤丈夫みたい(未確認)
    • PR も出してみたが、、、採⽤されずに、問題は解決した模様
    • わたしがなんかしないといけないみたい?
    • だれか教えてください(github をよくわかってない)

    View full-size slide

  45. 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,

    View full-size slide

  46. 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

    View full-size slide

  47. 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)
    );

    View full-size slide

  48. アナログはどうするよ?
    専⾨家に任せましょう

    View full-size slide

  49. OpenLane は使わないことが判明
    • iic-osic-tools は OpenLane ⽤のツール
    • Chipathon では OpenROAD を使う
    専⾨家がいるから
    今⽇はオミット

    View full-size slide

  50. xschem たちあげ
    • 表紙がチュートリアルになっている
    • コピペすればよい
    • gf180mcu はうまくいってない
    • ⽇本語でチュートリアルを
    ⽤意すれば便利そう
    専⾨家がいるから
    今⽇はオミット

    View full-size slide

  51. なんかようわからんがやってみる
    専⾨家がいるから
    今⽇はオミット

    View full-size slide

  52. gaw で波形を⾒ることができる
    専⾨家がいるから
    今⽇はオミット

    View full-size slide

  53. xschem べんり
    • スクリプトは登録できるので外部コマンドと連携が可能
    • チュートリアルを⽤意すると導⼊がはやそう
    専⾨家がいるから
    今⽇はオミット

    View full-size slide

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

    View full-size slide

  55. おしまい

    View full-size slide