Logo
KangTLee's blog

Simulation setup สำหรับวงจร Opamp

Kang T Lee
อัพเดทล่าสุดวันที่ 22 ตุลาคม 2567
Simulation setup สำหรับวงจร Opamp

บทความนี้จะสอนวิธี simulate วงจรออปแอมป์ (Opamp) บน Cadence Virtuoso เพื่อทดสอบประสิทธิภาพของวงจร Opamp ที่เราออกแบบ โดย Parameters ที่เราสนใจจะมาจาก Design Specification ดังนี้

Opamp Design specification

DC Loop gain

UGBW

Phase margin

Gain margin

Settling time

Startup time

Current consumption

Offset voltage

Noise

จาก Design Specification ทั้งหมดของออปแอมป์ เราจะได้ตารางดังรูปข้างล่าง

ตาราง Design specification ของวงจรออปแอมป์

Opamp Simulation Setup

Stability Analysis: Loop gain, UGBW, Phase margin, Gain margin

เราเริ่มจากการ simulate Stability Analysis ด้วยการต่อวงจรดังรูป โดยเราจะใช้ vdc source ต่อระหว่าง feedback path ของวงจรออปแอมป์โดยให้ขั้วบวกอยู่ตำแหน่งอินพุทของและขั้วลบอยู่ตำแหน่งเอาท์พุทของออปแอมป์ การต่อวงจรและ simulate ด้วย Stability Analysis จะมีข้อดีกว่าการ simulate แบบ AC Analysis เพราะเราสามารถ simulate วงจรด้วยการต่อวงจรแบบป้อนกลับเพื่อเอาท์พุทของวงจรได้รับผลกระทบการ input parasic capacitance ด้วย

วงจรออปแอมป์ที่ใช้สำหรับ Stability Analysis

เราจะตั้งค่า Stability Analysis ใน ADE ดังรูป โดยเราต้องเลือก Probe Instance ที่เป็น Voltage Source ที่ต่อใน Feedback path

การตั้งค่า Stability Analysis ใน ADE เพื่อทดสอบ Frequency Response ของวงจรออปแอมป์

หลังจากที่การรัน Simulation เสร็จสิ้น เราสามารถตรวจสอบผลลัพธ์ของ Stability Analysis ได้จาก ADE > Results > Direct Plot > Main Form เราจะสามารถพล็อตกราฟ Frequency Response เพื่อให้ Open Loop Gain, Unity Gain Bandwidth, Phase Margin และ Gain Margin ได้ดังรูป

พล็อตกราฟ Frequency Response จากการ Simulate Stability Analysis ของวงจรออปแอมป์

กรณีที่เราต้องการ Run Stability Analysis ขณะที่วงจรกำลังทำงาน เช่น ในวงจร Switch-capacitor ที่ไม่สามารถรันจาก DC Operating Point นั้น เราสามารถ Run PSS (Periodic Steady-State Analysis) และ PAC เพื่อให้ได้ Frequency Response แต่วิธีดังกล่าวจะใช้เวลานานเนื่องจาก Spectre ต้องคำนวณหา Steady state condition ของวงจร

วิธีที่เร็วกว่านี้ คือการทดสอบด้วยการทำ Transient Simulation ควบคู่กับ Stability Analysis โดยตัว Spectre จะทำการดึง DC Operating Point จาก Transient Simulation ณ เวลาที่เรากำหนด โดยเราจะ Setup วงจรดังตัวอย่างตามรูปข้างล่าง

ต่อวงจรออปแอมป์เพื่อทดสอบ Transient Analysis ควบคู่กับ Stability Analysis

จากรูป เราจะต่อวงจรแบบป้อนกลับ และป้อนแรงดันเพื่อให้ Vout มีค่าสามระดับ นั่นคือ Vout = Vcm, Vout = Vmin และ Vout = Vmax เพื่อจะหา Loop Gain ที่ Voltage ระดับต่าง ๆ โดยเราจะได้แรงดันเอาท์พุทดังรูปข้างล่าง

Waveform ของแรงดันเอาท์พุทของวงจรขยายโดยใช้ออปแอมป์

โดยเราจะตั้งค่า Transient Analysis ดังรูปข้างล่าง โดยจะเห็นว่าเราจะ Run Stability Analysis ที่เวลา t=9.9us, 19.9us และ 29.9us เนื่องจากเป็นเวลาที่ Vout อยู่ที่ 0.9V, 0.2V และ 1.6V

การตั้งค่า Transient Analysis เพื่อทดสอบ Stability Analysis

เมื่อเราตรวจสอบผลลัพธ์ เราจะได้ Frequency Response ตามเวลาที่ได้ที่การ Run Stability Analysis ดังรูป

ผลลัพธ์จากการทดสอบ Transient Simulation ควบคู่กับ Stability Analysis เพื่อพล็อตกราฟ Frequency Response ของวงจรออปแอมป์

Transient Simulation: Settling time, Startup time, Slew rate

เราสามารถทดสอบวงจรเพื่อหาค่า Settling time, Startup time และ Slew rate ของวงจรออปแอมป์ได้โดยการทดสอบ Transient Simulation โดยในตัวอย่าง เราจะป้อนแรงดันโดย vpwl ดังรูปข้างล่าง ที่อินพุท (V2) และ Supply (V1)

ตั้งค่าแรงดัน vpwl สำหรับอินพุทของวงจรออปแอมป์เพื่อทดสอบ Transient simulationตั้งค่าแรงดัน vpwl สำหรับ Supply ของวงจรออปแอมป์เพื่อทดสอบ Transient simulation

จากนั้น ที่ ADE Output > Setup เราจะทำการบันทึก Slew Rate Rise และ Fall ด้วยสมการเช่น

slew_rise = slewRate(clip(VT(”/vout”) 1.8e-05 2.2e-05) 0.2 nil 1.6 nil 20 80 nil “time”)

slew_fall = -slewRate(clip(VT(”/vout”) 28u 32u) 1.6 nil 200m nil 20 80 nil “time”)

ในตัวอย่างสมการ Slew Rate เราจะพล็อต Vout ในช่วงเวลาสองช่วง ระหว่าง 18us ถึง 22us และระหว่าง 28us ถึง 32us เนื่องจากเป็นเวลาที่แรงดันมีการเปลี่ยนแปลงจาก Low to High จาก 0.2V to 1.6V และ High to Low จาก 1.6V to 0.2V โดยเราจะวัดค่า Slew rate ในช่วง 20-80%

และตัวแปร Settling time จากตัวอย่างสมการ

settling_time = settlingTime(clip(VT(”/vout”) 9u 19.9u value(VT(”/vout”) 9u) nil 200m nil 0.1 nil “time”)-10u

(สังเกตว่าเราใส่ -10us เนื่องจากแรงดันเอาท์พุทเกิดการเปลี่ยนแปลงที่เวลาประมาณ 10us)

ในตัวอย่างสมการ เราเลือก 0.1% ของ 200mV เป็น error ที่เรายอมรับ

และสมการสำหรับ startup time เราจะบันทึกด้วยสมการ

startup_time = settlingTime(clip(VT(”/vout”) 0 9u 0 nil 0.9 nil 1 nil “time”)

โดยในตัวอย่าง เราจะบันทึกเวลาที่แรงดัน Settle ที่ 0.9V โดยมี Error อยู่ที่ 1%

DC Simulation: Offset voltage, Current consumption

เราสามารถบันทึกค่า Offset Voltage และ Current consumption ได้จาก DC simulation หรือจาก Transient Simulation ก็ได้

และสำหรับ Offset Voltage เราต้องการหาค่า standard deviation ของแรงดัน โดยจะมีสองวิธีที่เราสามารถทดสอบได้ คือ 1) DC Device Matching Analysis ซึ่งจะมีความเร็วในการทดสอบ แต่อาจไม่แม่นยำเท่า และ 2) Monte Carlo Simulation ซึ่งจะมีความแม่นยำกว่า แต่จะใช้เวลานานกว่าในการทดสอบวงจร โดยเราสามารถตั้งค่าเพื่อทดสอบ Monte Carlo Simulation บน ADE XL ได้ดังรูป

การตั้งค่า Monte Carlo เพื่อทดสอบ Offset Voltage ของวงจรออปแอมป์

เราจะได้ผลลัพธ์ของ Offset Voltage ที่มี sigma = 34.02uV ดังรูป (โดยทั่วไปเราอาจจะบันทึก Offset ที่ +/-3*sigma หรือ 6*sigma ขึ้นกับความต้องการของ Application)

ผลลัพธ์การทดสอบ Monte Carlo Simulate วงจรออปแอมป์ เพื่อหา Offset Voltage

Noise

เราสามารถทดสอบเพื่อหา Input Noise ของวงจรออปแอมป์ได้สองวิธี คือ 1) AC Noise Analysis ซึ่งจะมีความรวดเร็วในการทดสอบ แต่ไม่สามารถทดสอบกับวงจรประเภท Switching Circuit ได้ และ 2) Transient Noise Analysis โดยในตัวอย่างนี้เราจะทดสอบด้วยการ Run AC Noise Analysis ด้วยการตั้งค่าใน ADE ดังรูป

ตั้งค่า Noise Analysis เพื่อทดสอบหา Input Noise ของวงจรออปแอมป์

จากนั้นเราจะแสดงผลลัพธ์ของการทดสอบจาก ADE > Results > Direct Plot > Squared Output Noise เราจะได้กราฟแสดง Output Noise หน่วย V^2/Hz โดยเราจะใช้ Calculator ทำการ Integrate ในช่วงความถี่ที่สนใจ เช่นระหว่าง 1mHz และ 10GHz และทำการ square root เพื่อให้ได้ Output Noise ที่ต้องการ

Output noise = sqrt( integ ( VN2(…) ) )

นอกจากนี้ เรายังสามารถแสดงค่า Noise contribution จาก Device ต่างๆที่ใช้ในวงจรได้ ด้วยการเลือก ADE > Results > Print > Noise Summary โดยเราจะเลือกค่าดังรูปข้างล่าง

Print Noise Summary เพื่อแสดง Noise contribution จาก Device แต่ละตัวในวงจร

เราจะได้ผลลัพธ์ดังรูปข้างล่าง จากตัวอย่าง เราจะเห็นว่า Noise ประมาณ 30% มาจากทรานซิสเตอร์ M4 ในวงจร Transistor ดังนั้นหากเราต้องการปรับปรุงวงจรเพื่อลด Noise เราสามารถเปลี่ยนแปลงค่าตัวแปรของ Transistor ที่ส่งผลต่อ Noise มากที่สุดได้

ผลลัพธ์ Noise contribution ของ Device แต่ละตัวในวงจรออปแอมป์

Corner simulation

หลังจากที่เรา Setup การ Simulate วงจรเพื่อให้ได้ Design Specification ที่เราสนใจ เราจะทำการทดสอบ Corner Simulation เพื่อให้ได้ Best and Worst case ของ Design Specification เช่นค่า Minimal, Typical and Maximum UGBW โดยเราจะต้องปรับค่า Temperature (เช่นระหว่าง -40 - 125 องศา), ค่าแรงดัน Supply (เช่น +/- 10% ของ VDD) ค่ากระแสไบอัส (เช่น +/- 10% ของ I Reference), ค่า Process ของ NMOS, PMOS, Resistor, Capacitor และ BJT (ถ้ามี) เช่นตัวอย่าง Corner Setup ใน ADE XL ดังรูป

ตัวอย่างการ Setup Corner Simulation เพื่อทดสอบวงจรออปแอมป์

เราจะได้ตัวอย่างผลลัพธ์ดังรูป

ผลการทดสอบ Stability Analysis พร้อมกับ Corner Simulation เพื่อหาค่า Min และ Max ของวงจรออปแอมป์

สรุป

ในบทความนี้เราได้แสดงวิธีการ Setup วงจรออปแอมป์เพื่อทำการทดสอบแบบ Simulation เพื่อให้ได้ค่า Design Specifications ของวงจรที่เราออกแบบ

Kang T Lee

Kang T Lee

ผม Kang T Lee ผมเขียนบทความเกี่ยวกับ Web development, IC Design, Business and Entrepreneur และเนื้อหาที่น่าสนใจจากหนังสือที่ผมอ่าน

บทความที่เกี่ยวข้อง