半導体回路設計やりがちなミス
なんだかんだ半導体回路設計を10年以上やっているらしいので、私が見たり聞いたり体験したやりがちなミスをまとめてみよう
- Floating netが低温で電流リーク
- 電源の接続間違いだったり、マルチ電源間のレベルシフトだったり、とにかく電源をまたぐと何かが起きる。電源をまたぐときはavdd_ok的なやつで入力をgatingするかstateをちゃんと定義しておこう
- 低温だとfloating netが高インピーダンスになりがちなので、バグる
- High-z checkのシミュレーションをちゃんと回そう
- バイアス電流生成回路の起動不良
- Constant-gmとかの内部でループがかかってるやつは結構ヤバい
- (Enableなしの場合は)電源の立ち上がり時間依存が結構あるので、電源の立ち上がり時間が不明なときはマージンを持って設計しよう。電源の立ち上がりが早いと死にがち
- Startup回路は結構むずいので、時間をかけよう
- I/Oパッドのプルダウン/プルアップ設定(リセット時)
- GPIOなどのどこに行くかよく分からないI/Oパッドのリセット時のstateも結構鬼門
- とりあえずプルダウンにしとくと、電源立ち上げ/立下り時に他のチップの入出力と衝突しがち
- 自分が死んでるのに外からback powerしてくる迷惑な場合がよくある
- 可能な限り全てのuse caseを確認しよう
- LDOのInrush currentを考えるのを忘れる
- でかい容量がぶら下がってるLDOは結構巨大なinrush currentを発生しがち
- LDOを起動したら電圧降下してチップリセットみたいな状況になりがち
- Power gridをよく考えよう
- カレントミラーの倍率を大きくしすぎて、製造時バラつきで死ぬ
- 体感だと1:8以上は結構やばい
- シミュレーションで大丈夫でも、densityの勾配とかで問題起こしがち
- 電流とのトレードオフ
- オペアンプ全般
- だいたいSFかFSの高温/低温で死ぬ
- ちゃんとコーナーシミュレーション回そう
- 単純な信号の接続間違え
- これも結構多い。特に_bシグナルの極性間違いとか。
- できるだけ高い階層で可能な限り検証しよう
- 全部のビットを検証するのは無理なので優先順位を考えて検証しよう
- TO直前のダミーデバイス追加で電源/グランドショート
- ダミーだろうが何だろうが修正したらせめてDC simくらい回そう
- DAC全般
- 単純な接続ミスとかしがちなので、しょうもないDACでもちゃんとstep sizeくらいは網羅的に検証しておこう
- ミスマッチ全般
案外問題にならないやつ
- シミュレーション可能なパフォーマンス(TYP)
- ゲインとかループの安定性とか
- たぶんみんなここに意識が集中してるんだろう
- TYP conditionのオペアンプでミスってる人はほぼ見たことない
- せいぜい検証をサボってコーナーで死ぬくらい
- RLC寄生成分
- やばいやつは大体みんなすでに考慮してる
- だいたいの場合はfunctionはするので、パフォーマンスを犠牲にすれば製品化はできる
分かっててもどうにもならないやつ
- GND bounce
- 考えるだけ無駄なので、心を無にして祈ろう
- Spur coupling
- どこでカップリングしてるんだよ!
- Spurのband widthの見積もり不可能
- Mechanical stress関係
- だいたい意味不明
- 再現性あったりなかったり
- Flicker noise関係
- 微細プロセスの小さいデバイスだと、かなりシミュレーションから外してくるので出たとこ勝負な感じ。まあ2.0テープアウトで直せばいいや
- トリミングのステップサイズとtuning range
- 製造バラつきのお気持ち次第で結構むずいので、2.0テープアウトで微調整しがち
- 非同期&割り込み全般
- グリッチはかなりめんどいし、予想不可能
- とにかくめんどい