SPICE là gì: máy tính thay tay
Tính tay chỉ làm được vài cổng và phải xấp xỉ, còn một khối mạch của chip đã có rất nhiều transistor
Cách tính tay cho một con số xấp xỉ cho vài cổng; khối mạch thật quá lớn để tính tay, cần máy làm thay.
Công thức tay trễ ≈ R·C cho một con số xấp xỉ của một cổng. Một khối mạch của chip đã có rất nhiều transistor nên cần máy tính thay.
Xem lời đọc
Ta đã tính trễ của cổng đảo bằng tay, lấy điện trở nhân điện dung. Cách đó cho một con số xấp xỉ, và chỉ làm nổi vài cổng. Mỗi transistor lại có đường cong dòng điện riêng, không phải công tắc lý tưởng. Một khối mạch trong chip đã có rất nhiều transistor nối với nhau. Tính tay cả khối ấy là việc ngoài sức người. Vậy cần một cách để máy tính làm thay phần tính này.
Cả chip có hàng tỷ transistor (cỡ chung, định tính). Thực tế SPICE làm ở mức khối hoặc mạch con; cả chip dùng công cụ nhanh hơn (FastSPICE, mô phỏng logic). Trễ ≈ R·C là xấp xỉ bậc nhất, chỉ đủ ước lượng nhanh.
SPICE nhận bản vẽ mạch dạng chữ gọi là netlist rồi trả về đường cong điện áp và dòng điện
Mạch viết thành chữ (netlist) đi vào SPICE, đường cong đi ra; đổi một giá trị rồi chạy lại là có đường mới.
SPICE (Simulation Program with Integrated Circuit Emphasis) là chương trình mô phỏng mạch điện. Netlist là bản vẽ mạch viết bằng chữ.
Xem lời đọc
Muốn máy tính mạch, ta phải viết mạch ra bằng chữ. Bản vẽ dạng chữ này gọi là netlist. Chương trình SPICE nhận netlist và giải mạch thay ta. Nó tính điện áp và dòng điện trong mạch, tùy câu hỏi ta đặt. Rồi nó trả về các đường cong, như điện áp ra theo thời gian. Đổi một giá trị trong netlist rồi chạy lại, ta có đường cong mới.
SPICE = Simulation Program with Integrated Circuit Emphasis. "Netlist" cũng gọi "bản mô tả mạch". Tùy câu hỏi, SPICE tính theo thời gian hoặc không (bài sau).
Trong netlist của cổng đảo, mỗi dòng là một linh kiện kèm các nút mà nó nối vào
Đọc netlist cổng đảo: năm dòng, năm linh kiện (pin cấp, pin vào, pMOS, nMOS, tụ); hai linh kiện dùng chung một nút thì nối với nhau.
Node (nút) là điểm trong mạch mà nhiều linh kiện cùng nối vào, mỗi nút có một tên. Nút đất luôn có tên 0.
Xem lời đọc
Netlist của cổng đảo có năm dòng. Mỗi dòng viết đúng một linh kiện. Dòng thứ nhất là pin cấp, nối giữa nút điện áp cấp và nút đất. Dòng thứ hai là pin vào, đặt điện áp cho nút vào. Dòng pMOS và dòng nMOS đều nối vào nút vào và nút ra. Nút ra nối pMOS, nMOS và tụ tải, nên ba linh kiện chạm nhau ở đó. Hai linh kiện dùng chung một nút nghĩa là chúng nối với nhau. Chỉ cần đọc từng dòng, ta dựng lại được cả sơ đồ.
Nút 0 luôn là đất. Một dòng linh kiện thường gồm tên, các nút, rồi giá trị hoặc tên mô hình. Dòng MOSFET có bốn nút (thêm thân: nMOS vào đất, pMOS vào điện áp cấp) và dòng nối `+`; bài chỉ chỉ ra ba nút chính. Pin cấp 1,8 V, tụ 10 fF, nMOS W 0,65 µm, pMOS W 1,0 µm lấy từ sợi chỉ khóa.
Chạy netlist cổng đảo cho đường cong điện áp ra theo thời gian, từ đó đo được trễ
Một lần chạy cho cả đường cong thật; trên đó đọc được trễ (định tính; số đo để bài sau).
Kết quả là đồ thị điện áp theo thời gian, gọi là sóng. Trễ đọc từ lúc vào qua nửa điện áp cấp đến lúc ra qua nửa điện áp cấp.
Xem lời đọc
Ta gõ một lệnh để SPICE chạy netlist của cổng đảo. Xung vào đi từ mức thấp lên mức cao rồi đi xuống. Điện áp ra là một đường cong trơn, không phải hai mức cứng. Ta đo trễ giữa hai điểm nửa điện áp cấp, một trên đường vào, một trên đường ra. Trễ khi ra đi xuống ngắn hơn trễ khi ra đi lên. Kết quả mô phỏng này dùng dữ liệu transistor mở của một xưởng chế tạo. Một lần chạy cho ta cả đường cong, không chỉ một con số.
ps = pi cô giây = một phần nghìn tỉ giây. Trễ chuẩn đo từ 50 % sườn vào đến 50 % sườn ra. SKY130 = bộ dữ liệu công nghệ 130 nm mở (SkyWater, Google), có mô hình transistor dùng được trong ngspice (kiểm nguồn khi dựng). "Xưởng" = nơi chế tạo chip (foundry). Số trễ cụ thể để bài 2.
SPICE ra đời tại Đại học California, Berkeley, những năm đầu thập niên bảy mươi và là tổ tiên của nhiều công cụ ngày nay
Một nhóm ở Berkeley viết SPICE từ chương trình cũ của trường, công khai mã, và phiên bản thứ hai làm nó phổ biến.
SPICE ra đời ở Berkeley từ chương trình CANCER (Computer Analysis of Nonlinear Circuits, Excluding Radiation). Mã nguồn được công khai nên lan khắp nơi.
Xem lời đọc
Đầu những năm bảy mươi, nhóm ở Đại học California, Berkeley, viết SPICE. Họ phát triển nó từ một chương trình cũ của chính trường. Mã nguồn được công khai cho mọi người dùng. Phiên bản thứ hai, khoảng giữa những năm bảy mươi, làm SPICE phổ biến. Từ đó nhiều nhà thiết kế mạch trên thế giới dùng nó. Nhiều công cụ mô phỏng mạch ngày nay là hậu duệ của nó.
CANCER do nhóm Ronald Rohrer ở Berkeley làm; Laurence Nagel viết SPICE1 dựa nhiều vào CANCER, giáo sư Donald Pederson ủng hộ công khai mã. Nguồn lệch năm: SPICE1 "1972 hoặc 1973", SPICE2 "1975", SPICE3 "1985 hoặc 1989"; IEEE Milestone ghi "1969–1970". Bài chỉ nói "đầu / khoảng giữa những năm bảy mươi".
Công cụ mở như ngspice và Xyce, công cụ thương mại như HSPICE và Spectre cùng nhận netlist và trả đường cong
Bốn công cụ cùng ý tưởng netlist vào, đường cong ra; khóa này dùng ngspice vì miễn phí.
ngspice và Xyce là công cụ mã nguồn mở; HSPICE và Spectre là công cụ thương mại. Nguyên tắc chung: netlist vào, đường cong ra.
Xem lời đọc
Ngày nay có nhiều công cụ cùng ý tưởng SPICE. ngspice và Xyce là công cụ mã nguồn mở, ai cũng tải về được. HSPICE và Spectre là công cụ thương mại, các hãng phần mềm bán giấy phép. Cú pháp có chỗ khác nhau, nhưng nguyên tắc giống nhau. Đều là netlist vào, đường cong ra. Khóa này dùng ngspice vì nó miễn phí và chạy được trên máy của ta.
Xyce do Sandia (Mỹ) làm, giấy phép GPL, chạy song song (MPI), có công cụ XDM đổi netlist HSPICE/Spectre sang Xyce. HSPICE của Synopsys, Spectre của Cadence.
Muốn dùng SPICE ta phải tự viết netlist đầy đủ và chọn loại phân tích cho câu hỏi của mình
Netlist mới có phần linh kiện; còn phải nạp dữ liệu transistor và nói mình hỏi gì (loại phân tích). Đó là việc kế tiếp.
Loại phân tích là câu hỏi ta đặt cho mạch. Cùng một netlist, câu hỏi khác nhau cần cách tính khác nhau.
Xem lời đọc
Quay lại netlist của cổng đảo, ta mới đọc phần linh kiện. Muốn chạy, ta còn phải nạp dữ liệu transistor của xưởng chế tạo. Ta cũng phải nói cho SPICE biết ta muốn hỏi gì. Hỏi mạch đứng yên ở đâu thì khác hỏi điện áp ra đổi thế nào theo thời gian. Mỗi câu hỏi như vậy gọi là một loại phân tích. Việc còn lại là viết netlist đầy đủ và chọn đúng loại phân tích.
Bài sau dạy viết netlist và bốn loại phân tích.
Số liệu
- Mạch ví dụ: cổng đảo CMOS dùng dữ liệu transistor mở SKY130 (SkyWater, 130 nm), nMOS L = 0,15 µm, W = 0,65 µm; pMOS L = 0,15 µm, W = 1,0 µm; tải 10 fF; điện áp cấp 1,8 V. Các đường điện áp ở cảnh 2 và cảnh 4 là kết quả mô phỏng ngspice 42 chạy thật trên netlist này.
- Đường cong thứ hai ở cảnh 2 là cùng mạch với tải 30 fF (chạy thật, để minh họa đổi một giá trị thì đường cong đổi).
- Đường dòng–điện áp của một transistor ở cảnh 1 và các hình lịch sử ở cảnh 5 là minh họa định tính, không có số.
- Lịch sử SPICE: các nguồn lệch nhau vài năm về SPICE1 và SPICE2 nên bài chỉ nói "đầu" và "khoảng giữa" những năm bảy mươi.