Bên trong bộ mô phỏng

Mạch có đường cong như diode hay transistor là mạch phi tuyến, nên không có công thức gọn để giải thẳng

Máy ra đường cong bằng cách tìm điện áp từng nút; điện trở cho đường thẳng, diode cho đường cong, điện áp thật nằm ở giao điểm.

Phi tuyến (nonlinear): dòng không tỉ lệ với điện áp, đồ thị là đường cong. Mạch nhỏ nhất có tính chất này là một diode nối tiếp một điện trở.

Xem lời đọc

Để ra những đường cong, máy phải tìm điện áp của từng nút. Mạch nhỏ nhất có đường cong là một diode nối tiếp một điện trở. Điện trở có dòng tỉ lệ với điện áp nên đồ thị là đường thẳng. Diode thì dòng tăng rất nhanh theo điện áp nên đồ thị là đường cong. Mạch có đường cong như vậy, như diode hay transistor, gọi là phi tuyến. Với đường cong lẫn đường thẳng, không có công thức đại số quen thuộc cho điện áp. Điện áp thật của mạch nằm ở giao điểm của hai đường. Máy phải tìm giao điểm đó bằng cách thử và sửa.

Diode là linh kiện hai chân cho dòng đi dễ theo một chiều; dòng tăng rất nhanh khi điện áp qua nó lớn hơn cỡ nửa vôn. Mạch nhỏ này còn giải được bằng hàm đặc biệt (Lambert W), nhưng mạch nghìn transistor thì không; lời nói 'không có công thức đại số quen thuộc'. Dòng qua điện trở (1 − V_A)/1 kΩ giảm khi V_A tăng, dòng diode tăng; hai dòng bằng nhau ở ≈ 0,63 V và ≈ 0,37 mA (ví dụ).

Mỗi nút của mạch có một phương trình dòng, vì dòng đi vào nút bằng dòng đi ra

Bộ giải viết phương trình dòng cho từng nút; mạch nghìn nút thì nghìn phương trình giải cùng lúc.

Tại mỗi nút, tổng dòng vào bằng tổng dòng ra (định luật dòng Kirchhoff). Viết gọn mọi phương trình nút gọi là phương pháp nút.

Xem lời đọc

Mỗi nút của mạch là một chỗ cần tìm điện áp. Tại mỗi nút, tổng dòng đi vào bằng tổng dòng đi ra. Mạch này chỉ có một nút chưa biết điện áp, nên chỉ có một phương trình. Dòng chảy qua điện trở vào nút phải bằng dòng chảy qua diode xuống đất. Cả hai dòng đều phụ thuộc cùng một điện áp chưa biết. Mạch có hàng nghìn nút thì có hàng nghìn phương trình như vậy, giải cùng lúc. Cách viết gọn mọi phương trình nút có tên là phương pháp nút.

Mạch ví dụ: nút giữa có dòng qua điện trở (1 − V_A)/1 kΩ đi vào và dòng diode đi ra; bằng nhau là một phương trình một ẩn V_A. Mạch n nút chưa biết thì n phương trình, n ẩn ảnh hưởng lẫn nhau. ngspice dùng 'modified nodal analysis' (thêm ẩn cho dòng qua pin); bài này chỉ nêu tên, không dạy ma trận.

Gần một điểm đoán, đường cong của diode gần trùng tiếp tuyến, nên mạch giải được như mạch tuyến tính

Đoán một điện áp, vẽ tiếp tuyến tại đó, giao điểm của tiếp tuyến với đường điện trở cho điện áp mới.

Tuyến tính hóa (linearization) là thay đường cong bằng đường thẳng tiếp tuyến tại điểm đoán. Đây là bước đầu của lặp Newton.

Xem lời đọc

Ta đoán điện áp của nút, ví dụ không phẩy sáu lăm vôn. Tiếp tuyến là đường thẳng chỉ chạm đường cong tại một điểm. Tại điểm đoán, ta vẽ tiếp tuyến của đường cong diode. Gần điểm đoán, tiếp tuyến gần trùng đường cong. Thay đường cong bằng đường thẳng, ta gọi là tuyến tính hóa. Lúc này mạch chỉ có đường thẳng, nên giải được bằng tay. Giao điểm của tiếp tuyến với đường điện trở cho điện áp mới thường gần điện áp đúng hơn.

Điểm đoán 0,65 V; dòng diode 0,72 mA; độ dốc 27,7 mS (= I_D/V_T); tiếp tuyến cắt đường điện trở ở 0,637 V (ví dụ). Tương đương diode thay bằng điện trở 36 Ω cộng nguồn dòng nhỏ; máy làm vậy cho mọi transistor. 'Thường gần hơn' vì điểm đoán xa dưới nghiệm có thể nhảy xa (xem cảnh 6).

Lặp tuyến tính hóa nhiều vòng đưa điện áp nút gần dần đáp số, và bộ giải dừng khi hội tụ

Lấy điện áp mới làm điểm đoán, lặp lại; bước nhích nhỏ đi rất nhanh; khi đủ nhỏ thì hội tụ.

Newton iteration (lặp Newton) là lặp lại tuyến tính hóa với điểm đoán mới. Convergence (hội tụ) là khi điện áp không còn đổi đáng kể giữa hai vòng.

Xem lời đọc

Ta lấy điện áp mới làm điểm đoán, rồi tuyến tính hóa lại. Mỗi vòng giải một mạch tuyến tính, và cho điện áp mới. Cách lặp này gọi là phương pháp Newton. Trong ví dụ, điện áp nút đổi từ không phẩy sáu lăm vôn xuống cỡ không phẩy sáu ba vôn. Độ đổi điện áp giữa hai vòng liền nhau gọi là bước nhích. Mỗi vòng, bước nhích thường nhỏ đi rất nhanh. Khi bước nhích nhỏ hơn một ngưỡng rất bé, bộ giải dừng. Lúc đó ta nói phép lặp đã hội tụ. Mạch hàng nghìn transistor cũng lặp như vậy, mỗi vòng giải một hệ phương trình tuyến tính lớn.

Bảng (kiểm bằng `diode-newton.py`, ví dụ): vòng 0: 0,6500 V; vòng 1: 0,6371 (nhích 0,013); vòng 2: 0,6329 (nhích 0,004); vòng 3: 0,6325 (nhích < 0,001); dòng ≈ 0,37 mA. ngspice dừng khi điện áp VÀ dòng đủ nhỏ (RELTOL, VNTOL, ABSTOL). Newton dùng tiếp tuyến nên cần hàm trơn; hàm gãy thì tiếp tuyến nhảy và lặp nhảy (cảnh 6, 7). Mạch lớn mỗi vòng giải hệ tuyến tính thưa, không dạy ở đây. Nguồn: ngspice manual.

Với quá độ, bộ giải chia thời gian thành các bước thời gian và lặp tới hội tụ ở từng bước

Tụ điện nhớ điện áp bước trước nên mỗi bước nối với bước kế; chỗ dốc bước nhỏ, chỗ phẳng tính thưa hơn.

Bộ giải chia thời gian thành các bước thời gian (time step).

Xem lời đọc

Với quá độ, điện áp đổi theo thời gian, như xung ra của cổng đảo. Bộ giải không tính liên tục, mà chia thời gian thành nhiều bước nhỏ. Ở mỗi bước thời gian, nó giải lại mạch bằng lặp Newton. Tụ điện nối vào nút nên điện áp bước này phụ thuộc điện áp bước trước. Tín hiệu đổi nhanh thì bộ giải tính dày, đổi chậm thì tính thưa hơn. Vì vậy đường cong kết quả có nhiều điểm ở chỗ dốc, ít điểm ở chỗ phẳng.

Hình là đường ra cổng đảo SKY130 (kết quả mô phỏng, ngspice 42, bộ tham số điển hình tt, sẽ nói ở bài về góc quy trình; tải 10 fF; trễ lên cỡ 80 ps đã có); các chấm là thời điểm ngspice thật đã tính (từ tệp kết quả, KHÔNG vẽ đều). Tụ làm dòng phụ thuộc điện áp bước trước: mỗi bước bộ giải thay tụ bằng điện trở nhỏ cộng nguồn dòng ('đồng hành') rồi lặp Newton như c4; điểm đoán đầu thường lấy từ bước trước. ngspice chặn bước ≤ tmax (tham số thứ tư của `.tran`); `inv-tran-diem.cir` đặt tmax lớn để chỗ phẳng thưa thật. Số điểm: [SỐ: lấy từ lần chạy `inv-tran-diem.cir`], không vào lời.

Nâng cao: khi đường lặp nhảy lung tung, bộ giải báo không hội tụ, thường vì nút lơ lửng, hai pin song song hoặc phản hồi mạnh

Ba nguyên nhân thường gặp và cách cứu: sửa mạch hoặc cho điểm đoán ban đầu tốt hơn.

No convergence (không hội tụ) là khi lặp Newton không dừng được. Floating node (nút lơ lửng) là nút không có đường dẫn dòng về đất.

Xem lời đọc

Đôi khi các vòng lặp không gần dần đáp số, mà nhảy qua lại lung tung. Sau quá nhiều vòng mà chưa dừng, bộ giải báo không hội tụ. Nguyên nhân thứ nhất là nút lơ lửng, không có đường dẫn dòng về đất. Điện áp nút đó tùy ý, nên phương trình không có đáp số duy nhất. Nguyên nhân thứ hai là hai pin nối song song, ép một nút về hai điện áp khác nhau. Nguyên nhân thứ ba là phản hồi mạnh, như mạch lát giữ được hai trạng thái. Cách cứu là sửa mạch, hoặc đưa cho bộ giải một điểm đoán ban đầu tốt hơn.

Cảnh bỏ qua được. Thông báo ngspice dạng 'no convergence in DC analysis', 'Too many iterations without convergence'; quá độ: 'Timestep too small'; nhiều khi 'singular matrix' kèm tên nút (chép từ `no-convergence-vi-du.cir`). (1) Nút lơ lửng, ví dụ chỉ nối cổng MOSFET hoặc chỉ qua tụ: không có đường dẫn dòng một chiều nên ma trận suy biến, hiện singular matrix; gmin (điện dẫn nhỏ, mặc định 1e-12 S) chỉ gắn ở một số linh kiện và khi bộ giải tự thử gmin stepping, không bảo đảm cứu. (2) Hai pin song song khác vôn (1,8 V và 1,2 V cùng nút): hai phương trình mâu thuẫn (hai 'nguồn áp độc lập'). (3) Phản hồi mạnh như mạch lát: hai cổng đảo vòng có hai nghiệm ổn định và một không ổn định, lặp trần từ giữa có thể nhảy. Cứu: nối nút về đất qua điện trở lớn; sửa mạch; `.nodeset` gợi ý điểm đoán cho DC; `.ic` đặt điều kiện đầu cho quá độ (tùy uic). Đường lặp ở hình là minh họa bằng script Newton trần, KHÔNG phải ngspice. Nguồn: ngspice manual, Efabless 'Overcoming SPICE convergence issues' (06/11/2026).

Bộ giải chỉ tốt bằng hàm dòng của transistor mà nó được cấp

Mỗi vòng lặp bộ giải hỏi từng transistor "dòng bao nhiêu, đường cong dốc cỡ nào"; câu trả lời phải đến từ một hàm.

Bộ giải có ba việc: viết phương trình nút, lặp tuyến tính hóa tới hội tụ, lặp ở từng bước thời gian. Việc còn lại là nó cần hàm dòng–điện áp của transistor.

Xem lời đọc

Tóm lại, bộ giải viết một phương trình dòng cho mỗi nút. Nó tuyến tính hóa quanh điểm đoán, giải, rồi lặp đến khi hội tụ. Với quá độ, nó làm vậy ở từng bước thời gian. Mỗi vòng lặp, bộ giải hỏi từng transistor một câu. Ở các điện áp hiện tại, dòng bao nhiêu và đường cong dốc cỡ nào. Câu trả lời đến từ một hàm dòng theo điện áp của transistor. Bộ giải chỉ tốt bằng hàm dòng mà nó được cấp. Còn phải tìm hàm dòng vừa nhanh, vừa trơn, vừa đúng.

Bộ giải cần hai thứ ở mỗi transistor: dòng (cho phương trình nút) và độ dốc (cho tiếp tuyến). Hàm phải trơn, tức đường cong không gãy, để tiếp tuyến có nghĩa (liên hệ c4), và đủ nhanh vì được gọi hàng triệu lần. Đó là chuyện bài sau; ở đây chỉ nêu câu hỏi. Không dựa vào cảnh 6.

Số liệu