りあく徒の備忘録

誘導抵抗とか保守反動とか

趣味で半導体集積回路設計できる時代来てるぜ

この記事はTCU-CTRL場外乱闘 Advent Calender(2023)の12月18日のぶんです。

adventar.org

昨日はりゅーの君の「性癖を書いてたら大学生活が終わってた件について」でした。シナリオが描けるってすごいなぁ。

ちなみにりゅーの君の被保護者であるCTRLマスコットキャラクターアンナちゃんですが、前に作った集積回路の空きスペースに仕込んでおいたんですよね。もう出来てるので、まだ見ていないけど顕微鏡で見たら見える・・・はず。

160ミクロンのアンナちゃん

ちなみに明日はまる君の「今年描いた絵を振り返ってみて思ったことについて」の予定です。予定です。絵が描けるってすごいなぁ。

ロリ、いいよね。でもセロリは嫌いなんだよね。野菜の。違いはセがあるかないか。してみると、ロリってのはセがなくて、背もないというわけ。はは、どういうわけ?

 

もういいや、半導体集積回路を設計しよう!

 

申し遅れましたわたくし、なんかそういう感じの研究室に所属しているりあく徒です。そろそろ卒論の季節ですね。ヤバいね。

 

といっても研究室の勧誘をしに来たわけじゃありません。

同じ学科の2年生以下って該当者がほぼおらんし。

大学とか研究とか関係なく、個人で、趣味で、集積回路を設計できるんだよというメッセージを、体験に基づいて皆さんにお伝えしたいと思います。

 

つまりあなたもちゃんとこの記事の射程範囲です。

集積回路設計とは

以下かなりいい加減なことを書くので、本格的に気になった人はちゃんと調べてくださいね。

ICチップの例(オープンソースではないが研究室で設計したもの)

集積回路(Integrated Circuit, IC)は、現代文明の要です。「この世界は黒い体躯に銀の足をジャラジャラ生やしたゲジゲジの上に成り立っている」という神話的世界観を今考えました。お好きな神話に組み込んでおいてください。これであなたは組み込み系エンジニア。

チップの中にはたいていトランジスタがたくさん詰め込まれていて、いろんな機能を実現しています。インテルのCPUとかNVIDIAGPUなんかは集積回路の華ともいえる存在でしょう。そういうデジタル回路だけでなく、音声信号を増幅するアンプみたいなアナログのICもたくさん存在しています。

 

当今、電子工作といえばこういうICを買ってきてよしなに組み合わせることを云う。

 

云うんだけどそればかりじゃなくて、この文字通りのブラックボックス”の中身も作ってみようじゃないかというワケですね。

オープンなツールとPDK

C言語ソフトウェアの開発にはエディタとコンパイラが必要になりますね。同様に、集積回路の設計には専用のCADツールPDKというのが要ります。

Cならエディタもコンパイラも、イマドキはネット環境さえあればVimgccをサクッと拝借して使えちゃうわけですが、集積回路はどうか。

集積回路用のCADツールは、プロプライエタリでバカ高いどころか個人じゃ買えないソフトヘゲモニーを握っているのですが、オープンソースの代替ツールが整備されています。

プロプライエタリでバカ高いどころか個人じゃ買えないソフトのイメージ
(大変お世話になっております)

PDKとはプロセス・デザイン・キットの略で、工場が受け付ける回路設計の規格みたいなものです。こちらも、工場(TSMCとか)と機密保持契約を結んだりなんだりしてからでないと手に入れられないのが普通ですが、気前よくPDKをオープンにしている工場が北米らへんの合衆国にあるのでそこのを使います。

機能を考える

ではお試しに、みんな大好き、NAND回路を作ってみます。
(いろいろ端折るのでこれ見ながらマネするのは無謀だとおもいます)

NAND回路のイメージ

NANDがあればnandeも出来る、というのは周知のとおり。

回路を描く

回路エディタはxschem(旧twitterschem)を使います。勝手にエックス・スケムと読んでましたがエックス・スキームらしいです。

$xschem nandemo.sch

で起動します。

起動直後のxschem

ちょちょいとNAND回路を書きました。応用情報にギリギリ出ないぐらいの、難度。
MOSトランジスタの記号とNANDの挙動は出たハズ)

NAND回路

シミュレーション機能も付いてます。とてもNANDですね。

シミュレーション結果

レイアウトする

レイアウトツールはklayoutです。

$klayout

起動直後のklayout

そもそもレイアウトというのは言葉の通り、シリコンのどこにどうトランジスタを置いて、どう配線するかを決定するという、凄まじく泥臭いお絵描きです。

トランジスタを直接お絵描きしてもいいですが、テンプレートがあります。
NMOSトランジスタはこんな感じ。

テンプレNMOSトランジスタ

トランジスタ4つを並べたら・・・

上ふたつがPMOS、下ふたつがNMOS

金属線で配線します。ペイントソフトで四角形をペタペタ塗ったり線描いたりするイメージ。

金属配線
(青斜線が第一層目、紫斜線が第二層目。
メタルの略で"メタいち""メタに"とか呼ぶとそれっぽいぞ。)

端子に名前を付けたら、ハイ完成!
だいたい30ミクロン四方に収まるNAND回路が描けました。

端子名を付けて完成したレイアウト
もちろん便宜上のものでありこの文字は印刷されない

デバッグ

レイアウトをダーっと描いて一発でOKということはまずないと思った方がいいです。

ソフトウェアでもそうですが、この世の摂理でしょうか。

以下のふたつのチェックをクリアする必要があります。

  • DRC(デザイン・ルール・チェック)
    • 許容できない要素が無いか(配線が細すぎるとか、配線同士が近すぎるとか)
  • LVS(レイアウト vs. スケマティック)
    • 回路図とレイアウトが食い違ってないか

DRCエラーの例

LVSエラーの例

このふたつのチェックを、エラーが出なくなるまで回しまくります。

エラーなし

オールグリーン。おめでとう、集積回路の設計が完了したぞ!


(他にもこまごまとした仕上げ作業があるんですが・・・そして往々にしてそこに一番時間がかかったりする。これもまた世の摂理か。)

Open MPW

klayoutでレイアウトを保存すると、この例では”nandemo.gds”というGDS形式のファイルになります。基本的な考え方でいうと、このGDSファイルを工場に提出するとICになります

さて、普通はオリジナルICの製造にはン百万円、ン千万というお金がかかります。まあ、「実物にならなくても設計しただけで満足~」という楽しみ方もあるでしょうが、なるべくなら作りたい。

 

でもそんな金はない。

 

そんなあなたにOpen MPW

Open MPW概念のシンプルな曼陀羅あるいは魔法陣

Open MPWというのは、簡単に言うとGoogleの金でICを製造してもらえるやつです。神。
ただしいろいろ条件付きで、抽選です。
条件のひとつとして、設計をオープンソースにしなければなりません。これまでOSSなツールで設計してきたわけですが、その成果物もオープンでないといけないわけです。
また抽選ですが、落ちると次回の抽選で優先順位が上がるらしいので、根気強く応募し続ければいつか当たるらしいです。

というわけで実際に作るところはGoogle様頼みなところはありますが、とにかくフリー&オープンな感じで集積回路を作れちゃうんですよ。

界隈が盛り上がってインフラがもっと整備されていったら、将来的には少額(数万円ぐらい)で確実に作れるようになったりしねぇかなぁ、と夢想して、とりあえずこんな記事を書いた次第。

おわりに

いかがでしたでしょうか?趣味で集積回路を設計する雰囲気が伝わったでしょうか。

本当は体験談という体で書こうとしたんですが、紆余曲折がありすぎてうまく文章に纏める自信がなかったのでこんな形式にしました。

実際に僕が何をしたのかというと、12/11が最終締め切りだったGFMPW-1というシャトルに、NOT回路を提出しました。当選を待つのみです。

はい、NANDですらありませんNOTです。時間が無かった・・・。

抽選を待っているNOT回路

それも、単独ではなくてISHI会という国内のIC自作コミュニティの相乗りプロジェクトに参加してのことです。やりかたもISHI会の人たちにいろいろ教えていただきました。もし自作ICに興味が湧いたら、こういうコミュニティを覗いて戸を叩くのが一番の近道であると思います。

個人でできる!と大見栄張って結局集団やないかいというツッコミはご遠慮ください。

おわりに2(ツー)

18日のアドカレの予定でしたが、まるまる一週間遅れました。

時間がなかったわけではないんです。しかし超ド級のスランプに陥っていたのでCities:Skylines2を遊んだりアニメ版スクールデイズを周回したりして"充電"してました。

メリークリスマス