2024年5月23日木曜日

集積回路における信頼性問題の具体例

忘れるのでメモ.

・ハードエラー関係
Intel のチップセットのSATAコントローラの動作が徐々に基準を満たさなくなると言う話.確かポート1,2だけは大丈夫で,ポート1,2だけ使う製品(ノートPCとか)は出荷を継続して,デスクトップPCのマザーはリコールして大量廃棄したという話.

ルーターなど組み込みで使われている Atom C2000 が長期起動するとクロックが出なくなって止まるという話.

ソースが無いが,2件ともコアトランジスタに IO 電源をつないでしまったための HCI での劣化が原因と言われていた気がする.

Intel 第13世代,14世代CPU (Raptor Lake系)の動作の不具合(24/05/22追記)
最近(2024年)の Intel CPU 向けの自作 PC 向けマザーボードは電力制限がかなり緩くて CPUの消費電力がかなり高設定( PL1 や PL2 が 253W だったり,無制限になったり)なのだが,そのせいで CPU 自体に不可逆的な劣化が発生してしまうとのこと.Intel は Intel Baseline Profile というのを提供し,これを満たす BIOS を入れると PL1 が 125W,PL2 が 188W などに制限されるらしい.もちろん性能も落ちる.
電圧が原因であれば NBTI,電力や発熱が原因であれば HCI であろうか.
24/10/26追記
Intel によると,想定以上の高温高電圧環境での使用により,クロックツリーのトランジスタが劣化し,その結果クロックのデューティー比が不適切となりシステムの動作が不安定になったとのこと.BIOSの制御が不適切とか,プロセッサの電源管理アルゴリズムが不適切とか,4つのシナリオを挙げている.マイクロコードのアップデートで(これ以上の劣化は)回避できるとのこと.

・ソフトエラー関係
日本語の記事はこちらが詳しい
ECC によって保護されていないため宇宙線による誤動作が多発し,その部分を無効化して性能を猛烈に悪化させつつ使うか,そもそもまともに長時間動かせなくて諦めた,というお話である.

「高温下において特定のデータを特定の順番で処理を実施した」時に,システムが不正にシャットダウンし保存データに異常が発生するとのこと.対策として周波数を800MHzまで落とすか,マザーボードを作り替えるか,CPUを入れ替えるらしい.結局何が原因なのかはわからなかったが,状況から考えるとIR-Dropかdi/dtノイズだろうか.

・パッケージ関係
富士通の HDD コントローラ突然死
富士通の HDD に積んだ Cirrus Logic 製のコントローラ LSI がパッケージに起因する経年劣化で死亡するという話.日経では「富士通が製造を委託した」とあるが,がっつり Cirrus Logic のロゴが入っているし LSI チップを買ったようだ.パッケージ材料である住友ベークライトの「EME-U」に含まれる無機リンを構成する赤リンおよびその皮膜が高温高湿下でリン酸になり,それがピンの材料である Ag を溶かし配線を短絡した.

パッケージ起因のソフトエラー
[1] T. C. May and M. H. Woods, “Alpha-Particle-Induced Soft Errors in Dynamic Memories,” IEEE Trans. Electron Devices, vol. 26, no. 1, pp. 2–9, 1979, doi: 10.1109/T-ED.1979.19370.
パッケージに含まれる残留放射性元素がアルファ崩壊したときに放射されるアルファ線が集積回路に突入して生じるソフトエラー.不具合として「システムノイズ」「最低動作電圧」「センスアンプ」「特定パターン依存」など候補があったが,この論文によって放射性粒子起因の誤動作というのが新しい候補になった(?).「ソフトエラー」という一過性の故障や「クリティカルチャージ」という集積回路が"0","1"を反転するのに必要な電荷量の差などが定義された論文みたい.

・コンデンサ関係 (23/02/11追記)
第四級アンモニウム塩を利用したコンデンサが液漏れを起こし電解液が基盤や基板上の部品を腐食させる事故が一時期多発していた.Wikipediaの記事にもなっている.

NEC Tokin のプロートライザが使用中に劣化するらしく,デカップリング容量として採用したノートパソコンの死亡例が一時期よく観察された.腕に自信のある人はプロートライザを剥がしてタンタルコンデンサに入れ替えるらしいが...

タンタルコンデンサは小さい逆電圧でも電流が流れる上,短絡モードで故障するので,使い方にはかなり気をつけないといけない.交流や電源電圧・電流がグラグラ動く箇所のデカップリングコンデンサとして使うと壊れる可能性があります.テクトロはタンタルコンデンサが好きなのか,燃えて壊れた報告がいくつか[1][2]あります.

2024年5月14日火曜日

DesignCompilerでモジュールごとの面積内訳を見る

 DesignCompiler でモジュールごとの面積内訳を見たい場合,階層構造の展開をやめた上で,report_area -hierarchy オプションを付ける.compile_ultra はデフォルトで階層を展開して論理と回路を最適化してしまうので,-no_autoungroup オプションを付ける.

dc_shell> compile_ultra -no_autoungroup
dc_shell> report_area -hierarchy

  1. design_vision> report_area -hierarchy
  2. ****************************************
  3. Report : area
  4. Design : cpu_top_wo_mem
  5. Version: R-2020.09-SP4
  6. Date : Tue May 14 10:42:04 2024
  7. ****************************************
  8.  
  9. Information: Updating design information... (UID-85)
  10. Warning: Design 'cpu_top_wo_mem' contains 1 high-fanout nets. A fanout number of 1000 will be used for delay calculations involving these nets. (TIM-134)
  11. Library(s) Used:
  12.  
  13. mrow_0p7 (File: /home/xxx/mrow_0p7.db)
  14.  
  15. Number of ports: 579
  16. Number of nets: 17670
  17. Number of cells: 17221
  18. Number of combinational cells: 15986
  19. Number of sequential cells: 1226
  20. Number of macros/black boxes: 0
  21. Number of buf/inv: 3293
  22. Number of references: 22
  23.  
  24. Combinational area: 8079.139917
  25. Buf/Inv area: 2618.919946
  26. Noncombinational area: 539.439997
  27. Macro/Black Box area: 0.000000
  28. Net Interconnect area: undefined (Wire load has zero net area)
  29.  
  30. Total cell area: 8618.579914
  31. Total area: undefined
  32.  
  33. Hierarchical area distribution
  34. ------------------------------
  35.  
  36. Global cell area Local cell area
  37. ------------------ ----------------------------
  38. Hierarchical cell Absolute Percent Combi- Noncombi- Black-
  39. Total Total national national boxes Design
  40. -------------------------------- --------- ------- --------- --------- ------ ----------------
  41. cpu_top_wo_mem 8618.5799 100.0 1204.0700 47.0800 0.0000 cpu_top_wo_mem
  42. alu_0 1550.5800 18.0 1550.5800 0.0000 0.0000 alu
  43. decoder_0 91.5500 1.1 91.5500 0.0000 0.0000 decoder
  44. gpi_0 3.5200 0.0 1.7600 1.7600 0.0000 gpi
  45. gpo_0 8.3600 0.1 6.6000 1.7600 0.0000 gpo
  46. hardware_counter_0 142.5900 1.7 128.5100 14.0800 0.0000 hardware_counter
  47. regfile_0 4915.3600 57.0 4478.8800 436.4800 0.0000 regfile
  48. uart_0 307.0500 3.6 290.7700 16.2800 0.0000 uart
  49. uart_rx_0 348.4200 4.0 326.4200 22.0000 0.0000 uart_rx
  50. -------------------------------- --------- ------- --------- --------- ------ ----------------
  51. Total 8079.1399 539.4400 0.0000
  52.  
  53. 1
 

同じように,電力も階層ごとに見ることが出来ます.
dc_shell> report_power -hierarchy

  1. design_vision> report_power -hierarchy
  2. ****************************************
  3. Report : power
  4. -hier
  5. -analysis_effort low
  6. Design : cpu_top_wo_mem
  7. Version: R-2020.09-SP4
  8. Date : Tue May 14 10:43:05 2024
  9. ****************************************
  10.  
  11.  
  12. Library(s) Used:
  13.  
  14. mrow_0p7 (File: /home/xxx/mrow_0p7.db)
  15.  
  16.  
  17. Operating Conditions: mrow_0p7 Library: mrow_0p7
  18. Wire Load Model Mode: top
  19.  
  20. Design Wire Load Model Library
  21. ------------------------------------------------
  22. cpu_top_wo_mem wl1 mrow_0p7
  23.  
  24.  
  25. Global Operating Voltage = 0.7
  26. Power-specific unit information :
  27. Voltage Units = 1V
  28. Capacitance Units = 1.000000pf
  29. Time Units = 1ps
  30. Dynamic Power Units = 1 W (derived from V,C,T units)
  31. Leakage Power Units = 1pW
  32.  
  33.  
  34. --------------------------------------------------------------------------------
  35. Switch Int Leak Total
  36. Hierarchy Power Power Power Power %
  37. --------------------------------------------------------------------------------
  38. cpu_top_wo_mem 90.595 N/A 3.24e+06 N/A N/A
  39. hardware_counter_0 (hardware_counter)
  40. 12.242 N/A 3.04e+04 N/A N/A
  41. gpo_0 (gpo) 0.789 N/A 5.75e+03 N/A N/A
  42. gpi_0 (gpi) 0.000 5.31e-04 1.56e+03 5.31e-04 N/A
  43. uart_rx_0 (uart_rx) 0.293 N/A 8.16e+04 N/A N/A
  44. uart_0 (uart) 12.376 N/A 6.87e+04 N/A N/A
  45. alu_0 (alu) 0.000 0.000 6.24e+05 6.24e-07 N/A
  46. regfile_0 (regfile) 2.594 N/A 1.85e+06 N/A N/A
  47. decoder_0 (decoder) 41.427 N/A 2.64e+04 N/A N/A
  48. 1

compile_ultra はデフォルトで階層を展開するので,
dc_shell> compile -ungroup_all
dc_shellcompile_ultra
compile コマンドと compiler_ultra コマンドを併用する必要は無いようだ.DesignCompiler R-2020.09-SP4 でのお話です.