CapacitorPro
Q

HSPICE 中電阻模型輸入方式與 Corner 驗證:電阻變異為什麼看不出差異?

A

在半導體設計中, HSPICE 是業界最標準的類比電路仿真工具。關於電阻在 HSPICE 中的輸入方式與 Corner 驗證結果,工程師常見的困惑是:「電阻模型的變異跑完後,出來的數值跟沒變異一樣?」這通常不是軟體問題,而是模型本身的設定問題。

HSPICE 電阻的基本輸入語法

方法一:直接指定電阻值

R1 net1 net2 10k

這是最簡單的方式,R1 為 10kΩ 的理想電阻,不隨溫度或電壓變化。

方法二:使用模型(Model Card)

R1 net1 net2 modelname W=10u L=1u
.MODEL RNM RES (
+   RSH = 100       ; Sheet resistance (Ω/sq)
+   PRWG = 0.05     ; Width gain effect coefficient
+   PCAL = 0.01     ; Calibration coefficient
+   TC1 = 0.001     ; Temperature coefficient 1
+   TC2 = 0.0001    ; Temperature coefficient 2
+   LINT = 0.1u     ; Length offset
+)

這種方式可以描述寬度效應、溫度係數等非理想特性。

為什麼 Corner 跑完數值幾乎不變?

這個問題的原因有兩個可能:

原因一:模型參數本身沒有設變異範圍

如果你的 .model card 裡只有 nominal 值(如 RSH=100),而沒有設定 +/- 變異(Monte Carlo 或 corner),那跑任何模式結果當然相同。

原因二:Corner 定義中沒有涵蓋電阻參數

打開你的 corner deck(如 fets.corn 或 rc_corn)查看,是否有類似这樣的宣告:

.param R_Top=1.0 R_Bot=1.0

如果沒有,電阻就會以 nominal 值計算,導致看不出變異。

Flash ADC 中的電阻 Model Name 語法

對於 Flash ADC 這類需要大量電阻分壓網路的電路,建議使用:

R ladders 0 vref電阻 model=RES_W pchk yes
+   w=1u l=5u m=1

在 HSPICE 中,分壓網路可以用「砍數(M)」參數一口氣建立多個相等電阻的串聯,等效於:

R1 0 n1 1k
R2 n1 n2 1k
R3 n2 n3 1k
... 改寫成:
RX 0 vref 1k m=15   ; 等效為 15 個 1kΩ 串聯

正確設定電阻變異的步驟

  1. 在 .param 區段正確定義電阻參數的變異範圍(如 ±20%)
  2. 確認 .model card 包含 TC1、TC2(溫度係數)
  3. 在 corner deck 中加入 res_corner = 1.1 或 0.9 之類的參數
  4. 檢查 .lib 語法:.lib some_corners.txt tt 應該確實被載入
相關分類:電阻
HSPICE 中電阻模型輸入方式與 Corner 驗證:電阻變異為什麼看不出差異?|CapacitorPro