آموزش جامع HSpice: از مقدمات تا شبیهسازیهای پیشرفته (بخش ۱)
سلام مجدد به همراهان گرامی آکادمی 100!
در دنیای پرسرعت طراحی الکترونیک، ساخت و تست فیزیکی نمونههای اولیه مدار میتواند بسیار زمانبر و پرهزینه باشد. تصور کنید بخواهید یک پردازنده با میلیونها ترانزیستور را ابتدا بسازید و بعد اشکالاتش را پیدا کنید! اینجاست که اهمیت شبیهسازی مدار (Circuit Simulation) مشخص میشود. با استفاده از نرمافزارهای قدرتمندی مانند HSpice، میتوانیم قبل از ساخت، عملکرد مدار را در شرایط مختلف بررسی کرده، مشکلات را یافته و طراحی خود را بهینهسازی کنیم.
این مجموعه آموزشی 5 قسمتی، شما را با یکی از بهترین ابزارهای شبیهسازی، یعنی HSpice، آشنا میکند. با ما همراه باشید تا یاد بگیریم چگونه از این ابزار قدرتمند استفاده کنیم.
فهرست مطالب این دوره آموزشی:
- قسمت اول: HSpice چیست و چگونه شروع کنیم؟ (همین قسمت) - لینک قسمت اول
- قسمت دوم: توصیف المانهای پایه (مقاومت، خازن، سلف) و انواع منابع - لینک قسمت دوم
- قسمت سوم: تحلیل DC (نقطه کار، جاروب DC) و دستورات وابسته - لینک قسمت سوم
- قسمت چهارم: تحلیل گذرا (Transient) و منابع وابسته به زمان - لینک قسمت چهارم
- قسمت پنجم: تحلیل AC (پاسخ فرکانسی) و معرفی دستورات پیشرفتهتر - لینک قسمت پنجم
قسمت اول: آشنایی با HSpice و ساختار فایل ورودی
HSpice چیست؟ نگاهی عمیقتر
همانطور که اشاره شد، HSpice یک نرمافزار شبیهسازی مدارهای الکترونیکی بسیار دقیق و معتبر است. این برنامه بر پایه برنامه اصلی SPICE (Simulation Program with Integrated Circuit Emphasis) که در دهه 1970 در دانشگاه کالیفرنیا، برکلی توسعه یافت، ساخته شده است. شرکت Synopsys (که اکنون مالک HSpice است) این برنامه را به طور گسترده توسعه داده و قابلیتهای بسیار زیادی مانند الگوریتمهای حل بهتر (برای همگرایی سریعتر و پایدارتر)، مدلهای بسیار پیشرفتهتر برای المانهای نیمههادی (مانند مدلهای سری BSIM برای ترانزیستورهای MOSFET)، و انواع تحلیلهای پیچیدهتر را به آن اضافه کرده است.
اساس کار HSpice بر پایه حل عددی معادلات دیفرانسیل و جبری است که رفتار مدار را توصیف میکنند. این معادلات با استفاده از قوانین پایه الکترونیک مانند قانون جریان کیرشهف (KCL)، قانون ولتاژ کیرشهف (KVL) و معادلات مشخصه ولتاژ-جریان (I-V) برای هر المان در مدار به دست میآیند. HSpice این دستگاه معادلات پیچیده را برای شما حل میکند و نتایج را ارائه میدهد.
چرا HSpice را انتخاب کنیم؟
- دقت بینظیر: HSpice به خاطر استفاده از مدلهای فیزیکی بسیار دقیق و پیچیده برای المانها، به خصوص ترانزیستورها در تکنولوژیهای ساخت نوین (deep sub-micron)، شهرت دارد. این مدلها (مانند BSIM4, BSIM-CMG و ...) اثرات مرتبه دوم و سوم فیزیکی را در نظر میگیرند که منجر به نتایج شبیهسازی بسیار نزدیک به اندازهگیریهای واقعی میشود.
- قدرت تحلیل جامع: این نرمافزار طیف وسیعی از تحلیلها را پشتیبانی میکند:
- تحلیل نقطه کار DC (Operating Point)
- تحلیل جاروب DC (DC Sweep) برای یافتن مشخصههای انتقالی
- تحلیل گذرا (Transient Analysis) برای بررسی رفتار مدار در حوزه زمان
- تحلیل AC (AC Analysis) برای یافتن پاسخ فرکانسی و پهنای باند
- تحلیل نویز (Noise Analysis)
- تحلیل فوریه (Fourier Analysis)
- و تحلیلهای پیشرفتهتر مانند اعوجاج (Distortion)، حساسیت (Sensitivity)، مونت کارلو (Monte Carlo) و ...
- استاندارد طلایی صنعت آی سی: HSpice به طور گستردهای در صنعت طراحی مدارهای مجتمع (IC) به عنوان ابزار مرجع (Golden Simulator) برای تایید نهایی (Sign-off) طراحیها استفاده میشود. اگر قصد کار در زمینه طراحی آنالوگ یا دیجیتال IC را دارید، تسلط بر HSpice یک مزیت بزرگ محسوب میشود.
- انعطافپذیری بالا: قابلیت تعریف پارامترها، استفاده از عبارات ریاضی، تعریف زیرمدارها (Subcircuits) و استفاده از کتابخانههای مدل، انعطافپذیری زیادی برای شبیهسازی مدارهای پیچیده و انجام تحلیلهای پارامتریک فراهم میکند.
شروع کار: کالبدشکافی فایل ورودی (Netlist)
همانطور که گفتیم، زبان مشترک ما با HSpice، فایل متنی نتلیست است. این فایل، نقشه و مشخصات مدار به همراه دستورات لازم برای شبیهسازی را در خود دارد و معمولاً با پسوند .sp
ذخیره میشود. فایلی با این فرمت قابلیت باز کردن با نرم افزارهای ویرایش متن نظیر notepad یا notepad++ را دارد. ما در این دوره آموزشی از notepad++ استفاده کرده ایم. بیایید نگاهی دقیقتر به اجزای آن بیندازیم. سپس یک کد hspice را با هم بررسی کنیم.
- خط عنوان (Title Line): همیشه خط اول! HSpice این خط را میخواند و در فایل خروجی چاپ میکند، اما در محاسبات تاثیری ندارد. سعی کنید عنوانی توصیفی برای مدارتان انتخاب کنید.
- دستورات تحلیل و تنظیمات (Analysis Commands & Options): این دستورات که معمولاً با نقطه (
.
) شروع میشوند (مثل.TRAN
,.AC
,.OPTION
,.PRINT
)، به HSpice میگویند که چه نوع شبیهسازی انجام دهد، پارامترهای شبیهسازی (مثل بازه زمانی یا فرکانسی) چیست، چه خروجیهایی را ذخیره یا چاپ کند و تنظیمات کلی شبیهسازی چگونه باشد. - توصیف المانها و منابع (Element & Source Descriptions): این بخش بدنه اصلی نتلیست است. در اینجا شما تمام قطعات مدار (مقاومت، خازن، سلف، دیود، ترانزیستور و ...) و منابع تغذیه (منابع ولتاژ یا جریان DC یا AC یا متغیر با زمان) را تعریف میکنید. فرمت کلی تعریف یک المان معمولاً به صورت:
<ElementName> <Node1> <Node2> [<Node3> ...] <Value/ModelName> [Parameters...]
است. - تعریف مدلها و زیرمدارها (Models & Subcircuits): برای المانهای پیچیدهتر مانند دیودها و ترانزیستورها، رفتار آنها با پارامترهای زیادی توصیف میشود. این پارامترها در قالب یک مدل با دستور
.MODEL
تعریف میشوند. همچنین، اگر بخشی از مدار شما تکراری است، میتوانید آن را به صورت یک زیرمدار (Subcircuit) با دستور.SUBCKT
تعریف کرده و چندین بار در مدار اصلی از آن استفاده کنید (در قسمتهای بعدی بیشتر توضیح میدهیم). - دستور پایان (End Statement): آخرین خط نتلیست *حتماً* باید دستور
.END
باشد. این دستور به HSpice اعلام میکند که تعریف مدار به پایان رسیده است.
اهمیت کامنتگذاری
هنگام نوشتن نتلیست، به خصوص برای مدارهای بزرگ، حتماً از کامنت (توضیحات) استفاده کنید. کامنتها با علامت ستاره (*
) یا دلار ($
) در ابتدای خط مشخص میشوند و توسط HSpice نادیده گرفته میشوند. نوشتن توضیحات خوانایی کد شما را به شدت بالا میبرد، به دیگران (و حتی خودتان در آینده!) کمک میکند تا مدار را سریعتر درک کنند و اشکالزدایی را آسانتر میکند.
* Title: Simple Resistor Circuit Example for Academy 100
* --- Circuit Description ---
* This netlist describes a simple circuit with one resistor and one DC voltage source.
* Element: Resistor R1 connecting node 'N_IN' to ground (node '0') with 1k Ohm resistance.
R1 N_IN 0 1k
* Source: DC Voltage Source V1 connected between node 'N_IN' and ground ('0'). Value is 5 Volts.
V1 N_IN 0 DC 5V
* --- Analysis Commands ---
* Requesting Operating Point analysis to find DC voltages and currents.
.OP
* Requesting options: Post-processing data for waveform viewers.
.OPTION POST $ Enable data saving for viewing waveforms
* --- End of Netlist ---
* This command signals the end of the circuit definition.
.END
توضیح خط به خط کد مثال:
بیایید نگاهی دقیقتر به هر خط از کد مثال بالا بیندازیم (خطوطی که با *
یا $
شروع میشوند کامنت هستند و توسط HSpice اجرا نمیشوند):
خط 1: * Title: Simple Resistor Circuit Example for Academy 100
این خط عنوان نتلیست است. همانطور که گفتیم، اولین خط همیشه به عنوان عنوان در نظر گرفته میشود و صرفاً جنبه توضیحی دارد.
خط 7: R1 N_IN 0 1k
این خط یک مقاومت را تعریف میکند:
R1
: نام مقاومت است. طبق قرارداد، نام مقاومتها با حرف R شروع میشود.N_IN
: نام گرهای است که یک سر مقاومت به آن وصل است (گره مثبت).0
: شماره گرهای است که سر دیگر مقاومت به آن وصل است (گره منفی یا زمین).1k
: مقدار مقاومت است.k
پیشوند کیلو (1000) است، پس مقدار مقاومت 1000 اهم میباشد. (پیشوندهای دیگر مثلm
برای میلی،u
برای میکرو،n
برای نانو،p
برای پیکو،MEG
برای مگا و ... نیز وجود دارند که در قسمت بعد بیشتر بررسی میکنیم).
خط 10: V1 N_IN 0 DC 5V
این خط یک منبع ولتاژ DC را تعریف میکند:
V1
: نام منبع ولتاژ است. نام منابع ولتاژ مستقل با حرف V شروع میشود.N_IN
: گرهای که پایانه مثبت منبع به آن وصل است.0
: گرهای که پایانه منفی منبع به آن وصل است (زمین). قرارداد این است که جریان از پایانه مثبت به منفی در *داخل* منبع جاری میشود.DC
: این کلمه کلیدی مشخص میکند که مقدار بعدی مربوط به تحلیل DC یا مقدار ثابت منبع است.5V
: مقدار ولتاژ DC برابر 5 ولت است. میتوان فقط5
نوشت و HSpice واحد ولت را پیشفرض در نظر میگیرد.
خط 14: .OP
این یک دستور تحلیل است که با نقطه شروع میشود. دستور .OP
(مخفف Operating Point) به HSpice میگوید که تحلیل نقطه کار DC مدار را انجام دهد. در این تحلیل، HSpice ولتاژ DC در تمام گرهها و جریان DC عبوری از منابع ولتاژ را محاسبه میکند (با فرض اینکه خازنها مدار باز و سلفها اتصال کوتاه هستند).
خط 17: .OPTION POST
این هم یک دستور کنترلی است. دستور .OPTION
برای تنظیم گزینههای مختلف شبیهسازی به کار میرود. گزینه POST
به HSpice میگوید که نتایج شبیهسازی را در فرمتی ذخیره کند که توسط برنامههای نمایش شکل موج (Post-processor یا Waveform Viewer) مانند AvanWaves قابل استفاده باشد. این کار برای دیدن نمودارهای ولتاژ و جریان در تحلیلهای گذرا یا AC ضروری است. کامنت بعد از دستور با $
شروع شده است.
خط 21: .END
این دستور، پایان نتلیست را مشخص میکند. HSpice هیچ خطی بعد از .END
را پردازش نمیکند. وجود این دستور در انتهای هر فایل نتلیست الزامی است.
گرهها (Nodes): نقاط اتصال مدار
هر نقطه در مدار شما که حداقل دو پایه از المانها به آن متصل میشوند، یک گره (Node) است. HSpice برای درک اتصالات مدار از گرهها استفاده میکند. شما میتوانید گرهها را با استفاده از اعداد صحیح غیرمنفی (0, 1, 2, ...) یا با استفاده از نامهای معنیدار (مانند `Vin`, `Vout`, `Clk`, `N1`) نامگذاری کنید. استفاده از نامهای توصیفی خوانایی نتلیست را بسیار بهبود میبخشد.
مهمترین گره، گره زمین (Ground) است که همیشه با شماره 0 (صفر) یا نامهای رزرو شده GND
یا GROUND
شناخته میشود. این گره نقطه مرجع ولتاژ در مدار است و تمام ولتاژهای تکگرهای (مانند V(Vin)) نسبت به آن سنجیده میشوند. اطمینان حاصل کنید که تمام بخشهای مدار شما مسیری (حتی با مقاومت بالا) به گره زمین داشته باشند تا از خطاهای مربوط به گرههای شناور (Floating Nodes) جلوگیری شود.
اجرای شبیهسازی و دریافت نتایج (در محیط نرمافزار)
پس از اینکه نتلیست خود را (مثلاً با نام `my_circuit.sp`) نوشتید، باید آن را به HSpice بدهید تا شبیهسازی را انجام دهد. اگر از محیطهای گرافیکی (GUI) که معمولاً به همراه HSpice نصب میشوند یا ابزارهای طراحی مدار مانند Cadence Virtuoso یا Synopsys Custom Compiler استفاده میکنید، معمولاً دکمهای برای "Run" یا "Simulate" وجود دارد. در شکل زیر که مربوط به hspice 2010 می باشد، با زدن دکمه simulate شبیه سازی انجام می شود. با کلیک روی آن:


- نرمافزار HSpice را در پسزمینه فراخوانی کرده و فایل نتلیست شما را به عنوان ورودی به آن میدهد.
- HSpice نتلیست را میخواند، ساختار مدار را تحلیل میکند و بر اساس دستورات تحلیلی که شما مشخص کردهاید (مثل
.OP
,.DC
,.TRAN
,.AC
) محاسبات لازم را انجام میدهد. - نتایج شبیهسازی در قالب فایلهای مختلفی ذخیره میشوند. مهمترین فایل خروجی متنی، فایل
.lis
(مخفف Listing) است که شامل خلاصه نتایج تحلیلها (مانند مقادیر DC نقطه کار)، لیست المانها، پارامترهای مدل استفاده شده، و هرگونه پیام خطا یا هشدار است. بررسی دقیق فایل `.lis` پس از هر شبیهسازی بسیار مهم است. اگر عبارت job concluded دیده شد، متوجه میشویم شبیه سازی به درستی انجام شده است. - بسته به دستور
.OPTION POST
و دستورات تحلیل، فایلهای داده دیگری با پسوندهایی مانند.tr0
(برای تحلیل گذرا)،.ac0
(برای تحلیل AC)،.sw0
(برای جاروب DC) و ... نیز تولید میشوند. این فایلها حاوی دادههای عددی برای رسم نمودارها و شکلموجها در ابزارهای نمایش گرافیکی مانند AvanWaves (که معمولاً همراه HSpice است) یا cscope یا سایر نرمافزارها هستند. چون در این کد فقط دستور .op وجود دارد، تنها فایل .lis ایجاد می شود.

جمعبندی و گام بعدی
در این قسمت اول، با مفاهیم بنیادی HSpice، اهمیت آن در دنیای طراحی الکترونیک، ساختار کلی یک نتلیست و نحوه کارکرد پایهای آن آشنا شدیم. دیدیم که چگونه مدار را با استفاده از المانها و گرهها توصیف کنیم و شبیهسازی چگونه انجام میشود.
در قسمت بعدی، به طور مشخص یاد خواهیم گرفت که چگونه المانهای پایه مانند مقاومت، خازن و سلف را در نتلیست تعریف کنیم و همچنین با انواع منابع ولتاژ و جریان مستقل (DC، AC، پالسی و ...) و نحوه تعریف آنها آشنا خواهیم شد.
همراه آکادمی 100 بمانید!
درس بعدی: قسمت دوم: توصیف المانهای پایه و منابع مستقل
آیا برای شبیهسازی مدار خود با HSpice نیاز به کمک دارید؟
تیم آکادمی 100 آماده انجام پروژههای شبیهسازی شما با نرمافزار HSpice در سطوح مختلف میباشد. برای مشاوره و ثبت سفارش، از طریق لینک زیر با ما در تماس باشید: