.TH iverilog 1 "Jan 13th, 2026" "" "Version 13.0 (stable)" .SH "نام (NAME)" iverilog \- کامپایلر و مترجم شبیه‌ساز زبان سخت‌افزاری Icarus Verilog .SH "خلاصه دستور (SYNOPSIS)" .B iverilog [\-EiRSuVv] [\-Bpath] [\-ccmdfile|\-fcmdfile] [\-Dmacro[=defn]] [\-Pparameter=value] [\-pflag=value] [\-dname] [\-g1995\:|\-g2001\:|\-g2005\:|\-g2005-sv\:|\-g2009\:|\-g2012\:|\-g] [\-Iincludedir] [\-Lmoduledir] [\-mmodule] [\-M[mode=]file] [\-Nfile] [\-ooutputfilename] [\-stopmodule] [\-ttype] [\-Tmin/typ/max] [\-Wclass] [\-ypath] [\-lfile] sourcefile .SH "توضیحات (DESCRIPTION)" .PP برنامه \fIiverilog\fP یک کامپایلر است که کدهای منبع Verilog را به برنامه‌های اجرایی برای شبیه‌سازی یا سایر قالب‌های نت‌لیست (netlist) برای پردازش‌های بعدی ترجمه می‌کند. هدف اصلی آن، تولید خروجی برای موتور شبیه‌ساز \fIvvp\fP است. .SH "گزینه‌ها (OPTIONS)" برنامه \fIiverilog\fP گزینه‌های زیر را می‌پذیرد: .TP 8 .B -B\fIbase\fP برنامه \fIiverilog\fP برای پیش‌پردازش و کامپایل کد منبع Verilog از برنامه‌های خارجی و فایل‌های پیکربندی استفاده می‌کند. معمولاً مسیر مورد استفاده برای یافتن این ابزارها درون خود برنامه \fIiverilog\fP تعبیه شده است. با این حال، سوییچ \fB\-B\fP به کاربر اجازه می‌دهد تا مجموعه‌ای متفاوت از برنامه‌ها را انتخاب کند. مسیر ارائه‌شده برای یافتن \fIivlpp\fP، \fIivl\fP، تولیدکننده‌های کد و ماژول‌های VPI استفاده می‌شود. .TP 8 .B -c\fIfile\fP -f\fIfile\fP این فلگ‌ها یک فایل ورودی حاوی فهرستی از فایل‌های منبع Verilog را مشخص می‌کنند. این قابلیت مشابه \fIcommand file\fP در سایر شبیه‌سازهای Verilog است؛ به این صورت که به‌جای دریافت نام فایل‌ها در خط فرمان، آن‌ها را از درون یک فایل می‌خواند. بخش \fBفایل‌های دستور (COMMAND FILES)\fP را در ادامه ببینید. .TP 8 .B -D\fImacro\fP ماکروی \fImacro\fP را با مقدار رشته‌ای «1» به عنوان تعریف آن ایجاد می‌کند. این حالت معمولاً فقط برای فعال‌سازی شرط‌های ifdef در کد منبع Verilog استفاده می‌شود. .TP 8 .B -D\fImacro=defn\fP ماکروی \fImacro\fP را با مقدار \fIdefn\fP تعریف می‌کند. .TP 8 .B -P\fIparameter=value\fP یک پارامتر را در ماژول ریشه بازنویسی (defparam) می‌کند. این گزینه به کاربر اجازه می‌دهد تا در زمان کامپایل، مقدار یک پارامتر را در یک نمونه ماژول ریشه بازنویسی کند. برای مثال، \fB\-Pmain.foo=2\fP مقدار پارامتر foo را در نمونه ریشه main به ۲ تغییر می‌دهد و \fB\-Pmain.foos='"New string value"'\fP مقدار پارامتر foos را در نمونه ریشه main با مقدار "New string value" بازنویسی خواهد کرد. .TP 8 .B -d\fIname\fP یک رده از پیام‌های اشکال‌زدایی کامپایلر را فعال می‌کند. سوییچ \fB\-d\fP می‌تواند به تعداد دفعات لازم برای فعال‌سازی تمام پیام‌های مورد نظر تکرار شود. نام‌های پشتیبانی‌شده عبارتند از scopes، eval_tree، elaborate و synth2؛ سایر نام‌ها نادیده گرفته می‌شوند. .TP 8 .B -E کد منبع Verilog را پیش‌پردازش می‌کند، اما آن را کامپایل نمی‌کند. فایل خروجی همان ورودی Verilog است که شمول فایل‌ها (inclusions) و ارجاعات ماکرو در آن بسط یافته و حذف شده‌اند. این گزینه برای مثال جهت پیش‌پردازش کد منبع Verilog برای استفاده در سایر کامپایلرها مفید است. .TP 8 .B -g1995\fI|\fP-g2001\fI|\fP-g2001-noconfig\fI|\fP-g2005\fI|\fP-g2005-sv\fI|\fP-g2009\fI|\fP-g2012 نسل یا نگارش استاندارد زبان Verilog (\fIgeneration\fP) را جهت پشتیبانی در کامپایلر انتخاب می‌کند. این گزینه بین \fIIEEE1364\-1995\fP، \fIIEEE1364\-2001\fP، \fIIEEE1364\-2005\fP، \fIIEEE1800\-2005\fP، \fIIEEE1800\-2009\fP یا \fIIEEE1800\-2012\fP یکی را انتخاب می‌کند. کامپایلر Icarus Verilog در حال حاضر به صورت پیش‌فرض از نسل \fIIEEE1364\-2005\fP این زبان استفاده می‌کند. این فلگ برای محدود کردن زبان به مجموعه‌ای از کلمات کلیدی و قابلیت‌های خاص به کار می‌رود؛ این کار امکان شبیه‌سازی کدهای قدیمی‌تر Verilog را که ممکن است از کلمات کلیدی جدیدتر استفاده کرده باشند فراهم کرده و سازگاری با سایر ابزارها را حفظ می‌کند. بخش زیادی از عملکردهای نسل‌های \fIIEEE1800\fP در حال حاضر پشتیبانی نمی‌شود. نسل‌های \fIIEEE1800\fP تمام کلمات کلیدی را تجزیه می‌کنند، بنابراین می‌توان از آن‌ها برای اطمینان از اینکه کد Verilog سازگار با \fIIEEE1364\fP از هیچ‌یک از کلمات کلیدی جدید \fIIEEE1800\fP استفاده نکرده است، بهره برد. .TP 8 .B -gverilog-ams\fI|\fP-gno-verilog-ams پشتیبانی از Verilog\-AMS را فعال یا غیرفعال (پیش‌فرض) می‌کند. در حال حاضر عملکردهای بسیار محدودی از Verilog\-AMS پشتیبانی می‌شود. .TP 8 .B -gassertions\fI|\fP-gsupported-assertions\fI|\fP-gno-assertions دستورات احراز صحت (assertions) در SystemVerilog را فعال (پیش‌فرض) یا غیرفعال می‌کند. در صورت فعال بودن، گزاره‌های assertion بسط داده می‌شوند. در صورت غیرفعال بودن، این گزاره‌ها تجزیه ولی نادیده گرفته می‌شوند. گزینه \fB\-gsupported-assertions\fP فقط دستورات احرازی را فعال می‌کند که در حال حاضر توسط کامپایلر پشتیبانی می‌شوند. .TP 8 .B -gspecify\fI|\fP-gno-specify پشتیبانی از بلوک specify را فعال یا غیرفعال (پیش‌فرض) می‌کند. در صورت فعال بودن، کدهای بلوک specify بسط داده می‌شوند. در صورت غیرفعال بودن، بلوک‌های specify تجزیه ولی نادیده گرفته می‌شوند. بلوک‌های specify معمولاً برای شبیه‌سازی RTL مورد نیاز نیستند و در واقع می‌توانند کارایی شبیه‌سازی را کاهش دهند. با این حال، غیرفعال کردن بلوک‌های specify دقت شبیه‌سازی‌های مبتنی بر زمان‌بندی کامل (full-timing) را کاهش می‌دهد. .TP 8 .B -ginterconnect\fI|\fP-gno-interconnect پشتیبانی از اتصال داخلی SDF را فعال یا غیرفعال (پیش‌فرض) می‌کند. در صورت فعال بودن، بافرهای ورودی و خروجی به ماژول‌ها اضافه می‌شوند تا VVP بتواند تاخیرهای اتصالات داخلی را اعمال کند. این گزینه معمولاً برای شبیه‌سازی RTL مورد نیاز نیست و در عمل می‌تواند کارایی شبیه‌سازی را کاهش دهد. با این حال، غیرفعال کردن تاخیرهای اتصالات داخلی دقت شبیه‌سازی‌های زمان‌بندی کامل را کم می‌کند. .TP 8 .B -gstd-include\fI|\fP-gno-std-include جستجو در دایرکتوری include استاندارد نصب‌شده را پس از بررسی سایر دایرکتوری‌های include صریح، فعال (پیش‌فرض) یا غیرفعال می‌کند. این دایرکتوری include استاندارد مکانی مناسب برای قرار دادن فایل‌های هدر استانداردی است که یک برنامه Verilog ممکن است ضمیمه کند. .TP 8 .B -grelative-include\fI|\fP-gno-relative-include افزودن دایرکتوری فایل محلی به ابتدای مسیر جستجوی فایل‌های include را فعال یا غیرفعال (پیش‌فرض) می‌کند. این ویژگی امکان ضمیمه کردن فایل‌ها را به صورت نسبی نسبت به فایل جاری فراهم می‌سازد، به جای حالت معمول‌تر که فایل‌ها فقط در دایرکتوری کاری یا در مسیر جستجوی مشخص‌شده یافت می‌شوند. .TP 8 .B -gxtypes\fI|\fP-gno-xtypes پشتیبانی از انواع داده توسعه‌یافته (extended types) را فعال (پیش‌فرض) یا غیرفعال می‌کند. فعال‌سازی انواع توسعه‌یافته امکان استفاده از انواع داده جدیدی را فراهم می‌سازد که توسط Icarus Verilog به عنوان افزونه‌های فراتر از Verilog پایه پشتیبانی می‌شوند. در صورت کامپایل کدهایی که با کلمات کلیدی جدید پیاده‌سازی این سیستم انواع تداخل دارند، ممکن است غیرفعال کردن این گزینه لازم باشد. .TP 8 .B -gio-range-error\fI|\fP-gno-io-range-error استانداردها ایجاب می‌کنند که یک پورت برداری (vectored port) دارای دامنه‌های منطبق هم برای تعریف پورت و هم برای تعریف net/register مربوطه باشد. در گذشته مرسوم بود که دامنه فقط در تعریف net/register مشخص شود و برخی ابزارها هنوز این کار را مجاز می‌دانند. به صورت پیش‌فرض، هرگونه عدم تطابق به عنوان یک خطا گزارش می‌شود. استفاده از \fB\-gno\-io\-range\-error\fP در صورت وجود net/register برداری و تعریف پورت اسکالر، به جای خطای مهلک، یک هشدار صادر می‌کند. این هشدار در دسته‌بندی \fBanachronisms\fP (موارد منسوخ) قرار دارد. .TP 8 .B -gstrict-ca-eval\fI|\fP-gno-strict-ca-eval استاندارد ایجاب می‌کند که اگر هر ورودی یک عبارت انتساب پیوسته (continuous assignment) تغییر کند، کل عبارت دوباره ارزیابی شود. به طور پیش‌فرض، بخش‌هایی از عبارت که به مقادیر ورودی تغییریافته وابسته نیستند، دوباره ارزیابی نمی‌شوند. اگر عبارتی حاوی فراخوانی تابعی باشد که صرفاً به مقادیر ورودی‌اش وابسته نیست یا دارای اثرات جانبی (side effects) است، رفتار حاصل با الزامات استاندارد متفاوت خواهد بود. استفاده از \fB\-gstrict\-ca\-eval\fP رفتار منطبق بر استاندارد را تحمیل می‌کند (با مقداری افت کارایی). .TP 8 .B -gstrict-expr-width\fI|\fP-gno-strict-expr-width انطباق دقیق با قوانین استاندارد برای تعیین طول بیتی عبارات را فعال یا غیرفعال (پیش‌فرض) می‌کند. در صورت غیرفعال بودن، سمت راست انتساب یک پارامتر به صورت یک عبارت بدون اتلاف (lossless) ارزیابی می‌شود، همان‌طور که هر عبارت حاوی عدد ثابت بدون اندازه ارزیابی می‌گردد و اعداد ثابت بدون اندازه به عرض عدد صحیح کوتاه (truncate) نمی‌شوند. .TP 8 .B -gshared-loop-index\fI|\fP-gno-shared-loop-index مستثنی کردن متغیرهای کنترلی حلقه for از فهرست‌های رویداد ضمنی (implicit event_expression) را فعال (پیش‌فرض) یا غیرفعال می‌کند. در صورت فعال بودن، اگر یک متغیر کنترلی حلقه for (شاخص حلقه) فقط در داخل عبارت for استفاده شود، کامپایلر آن را در فهرست رویدادهای ضمنی محاسبه‌شده برای آن عبارت یا عبارات دربرگیرنده قرار نمی‌دهد. این قابلیت اجازه می‌دهد تا از یک متغیر کنترلی یکسان در چندین پردازش استفاده شود، بدون اینکه خطر افتادن در حلقه بی‌نهایت ناشی از فعال شدن متقابل پردازش‌ها وجود داشته باشد. برای انطباق دقیق با استانداردها، این رفتار باید غیرفعال شود. .TP 8 .B -gicarus-misc\fI|\fP-gno-icarus-misc پشتیبانی از افزونه‌های متفرقه Icarus Verilog را فعال (پیش‌فرض) یا غیرفعال می‌کند. این مورد شامل عملگرهای بیتی دودویی NAND و NOR و امکان اعمال عملگر باقیمانده حسابی (modulus) بر عملوندهای اعداد حقیقی (real) است. .TP 8 .B -I\fIincludedir\fP دایرکتوری \fIincludedir\fP را به فهرست دایرکتوری‌های مورد جستجو برای فایل‌های ضمیمه‌شده Verilog اضافه می‌کند. سوییچ \fB\-I\fP می‌تواند چندین بار برای تعیین چندین دایرکتوری جستجو استفاده شود؛ دایرکتوری‌ها به همان ترتیبی که در خط فرمان ظاهر می‌شوند مورد جستجو قرار می‌گیرند. .TP 8 .B -i نادیده گرفتن ماژول‌های ناموجود. در حالت عادی، اگر در نمونه‌سازی یک ماژول به ماژولی تعریف‌نشده ارجاع داده شود، خطا رخ می‌دهد. این گزینه باعث می‌شود کامپایلر از روی آن نمونه‌سازی عبور کند. همچنین در صورتی که هیچ ماژول سطح بالایی (top level) وجود نداشته باشد، مانع از بازگرداندن خطا توسط کامپایلر می‌شود. این گزینه اجازه می‌دهد تا از کامپایلر برای بررسی خطاهای طرح‌های ناقص استفاده شود. .TP 8 .B -L\fIpath\fP این فلگ دایرکتوری مشخص‌شده را به فهرست مسیرهای مورد استفاده برای یافتن ماژول‌های VPI اضافه می‌کند. مسیر پیش‌فرض تنها شامل دایرکتوری نصب ماژول system.vpi است، اما این فلگ می‌تواند مسیرهای دیگری را اضافه کند. تعیین چندین مسیر مجاز است و مسیرها به ترتیب جستجو خواهند شد. .TP 8 .B -l\fIfile\fP فایل مشخص‌شده را به فهرست فایل‌های منبع جهت کامپایل اضافه می‌کند، اما آن را به عنوان یک فایل کتابخانه علامت‌گذاری می‌نماید. تمام ماژول‌های موجود در آن فایل به عنوان ماژول‌های کتابخانه در نظر گرفته می‌شوند و تنها در صورتی بسط داده می‌شوند که توسط سایر ماژول‌های طرح نمونه‌سازی شده باشند. .TP 8 .B -M\fIpath\fP این گزینه معادل \fB\-Mall=path\fP است و برای سازگاری با نسخه‌های پیشین حفظ شده است. .TP 8 .B -M\fImode=path\fP فهرستی از فایل‌هایی را که در کامپایل طرح مشارکت دارند، در فایل مشخص‌شده توسط path می‌نویسد. اگر \fBmode\fP برابر با \fBall\fP یا \fBprefix\fP باشد، این فهرست شامل فایل‌های ضمیمه‌شده با دستورات include و فایل‌هایی که به صورت خودکار توسط پشتیبانی کتابخانه بارگذاری می‌شوند و همچنین فایل‌های صریحاً مشخص‌شده توسط کاربر خواهد بود. اگر \fBmode\fP برابر با \fBinclude\fP باشد، تنها فایل‌هایی که با دستورات include ضمیمه شده‌اند فهرست می‌شوند. اگر \fBmode\fP برابر با \fBmodule\fP باشد، تنها فایل‌های مشخص‌شده توسط کاربر یا فایل‌هایی که خودکار توسط کتابخانه بارگذاری شده‌اند فهرست می‌گردند. خروجی شامل یک نام فایل در هر خط بدون فاصله‌های خالی ابتدایی یا انتهایی است. اگر \fBmode\fP برابر با \fBprefix\fP باشد، فایل‌های ضمیمه‌شده توسط include با پیشوند "I " و سایر فایل‌ها با پیشوند "M " مشخص می‌شوند. .TP 8 .B -m\fImodule\fP این ماژول را به فهرست ماژول‌های VPI برای بارگذاری در شبیه‌سازی اضافه می‌کند. می‌توان چندین ماژول را مشخص کرد که همگی به ترتیب مشخص‌شده بارگذاری می‌شوند. ماژول سیستمی ضمنی است و همیشه در انتهای کار بارگذاری می‌شود. .PP اگر نام مشخص‌شده حداقل شامل یک نویسه دایرکتوری باشد، فرض می‌شود که پیشوند مسیر ماژول را دارد، در غیر این صورت ماژول در مسیرهای مشخص‌شده توسط گزینه‌های قبلی \fB-L\fP و در صورت عدم یافتن، در دایرکتوری پایه \fIiverilog\fP جستجو می‌شود. .TP 8 .B -N\fIpath\fP این گزینه برای اشکال‌زدایی خود کامپایلر استفاده می‌شود. شکل نهایی نت‌لیست طرح را در فایل مشخص‌شده ذخیره (dump) می‌کند. در غیر این صورت تأثیری بر عملکرد کامپایلر ندارد. این عملیات پس از بسط و بهینه‌سازی طرح انجام می‌شود. .TP 8 .B -o \fIfilename\fP خروجی را در فایل \fIfilename\fP قرار می‌دهد. اگر نام فایل خروجی مشخص نشود، \fIiverilog\fP از نام پیش‌فرض \fBa.out\fP استفاده می‌کند. .TP 8 .B -p\fIflag=value\fP مقداری را به یک فلگ مختص مقصد (target) اختصاص می‌دهد. سوییچ \fB\-p\fP می‌تواند به تعداد دفعات لازم برای تعیین همه فلگ‌های مورد نظر به کار رود. فلگ‌های مورد استفاده به مقصد انتخابی بستگی دارند و در مستندات مختص مقصد شرح داده شده‌اند. فلگ‌های استفاده‌نشده نادیده گرفته می‌شوند. .TP 8 .B -S سنتز (Synthesize). در حالت عادی، اگر مقصد بتواند توصیف‌های رفتاری (behavioral) را بپذیرد، کامپایلر پردازش‌ها را در قالب رفتاری باقی می‌گذارد. سوییچ \fB\-S\fP باعث می‌شود کامپایلر سنتز را انجام دهد حتی اگر برای مقصد انتخابی ضروری نباشد. اگر نوع مقصد یک قالب نت‌لیست باشد، سوییچ \fB\-S\fP غیرضروری است و تأثیری ندارد. .TP 8 .B -s \fItopmodule\fP ماژول سطح بالا (top level) را برای بسط دادن مشخص می‌کند. Icarus Verilog به طور پیش‌فرض ماژول‌هایی را که در هیچ ماژول دیگری نمونه‌سازی نشده‌اند انتخاب می‌کند، اما گاهی این کار کافی نیست یا ماژول‌های زیادی را نمونه‌سازی می‌کند. اگر کاربر یک یا چند ماژول ریشه را با فلگ‌های \fB\-s\fP مشخص کند، آن ماژول‌ها به عنوان ماژول‌های ریشه استفاده خواهند شد. .TP 8 .B -T\fImin|typ|max\fP از این سوییچ برای انتخاب زمان‌های min (حداقل)، typ (معمول) یا max (حداکثر) از عبارات min:typ:max استفاده کنید. در حالت عادی، کامپایلر مقدار typ را از این عبارات به کار می‌برد (و برای ده مورد اولی که پیدا کند هشدار چاپ می‌کند) اما این سوییچ صریحاً به کامپایلر می‌گوید که از کدام مقدار استفاده کند. این کار هشدار مربوط به انتخاب خودکار کامپایلر را خنثی می‌کند. .TP 8 .B -t\fItarget\fP از این سوییچ برای تعیین قالب خروجی مقصد استفاده کنید. بخش \fBمقاصد (TARGETS)\fP در ادامه را برای مشاهده فهرستی از قالب‌های معتبر خروجی ببینید. .TP 8 .B -u هر فایل منبع را به عنوان یک واحد کامپایل مجزا (همان‌طور که در SystemVerilog تعریف شده) در نظر می‌گیرد. در صورت کامپایل برای نسل \fIIEEE1364\fP، این گزینه صرفاً تمام دستورات کامپایلر (از جمله تعاریف ماکروها) را پیش از پردازش هر فایل جدید بازنشانی می‌کند. .TP 8 .B -v پیام‌های با جزئیات بیشتر (verbose) را فعال می‌کند. این گزینه خطوط دستوری را که برای انجام کامپایل واقعی اجرا می‌شوند، به همراه اطلاعات نسخه بخش‌های مختلف و نسخه کلی محصول چاپ می‌کند. ملاحظه خواهید کرد که خطوط فرمان شامل ارجاع به یک فایل موقت کلیدی هستند که اطلاعات را به هسته کامپایلر منتقل می‌کند. برای جلوگیری از حذف این فایل در پایان فرایند، نام فایلی دلخواه را در متغیر محیطی \fBIVERILOG_ICONFIG\fP تنظیم کنید. .PP اگر مقصد انتخابی \fIvvp\fP باشد، سوییچ \fB\-v\fP به خط shebang در فایل خروجی کامپایلر اضافه می‌شود، بنابراین اجرای مستقیم فایل خروجی کامپایلر، پیام‌های باجزئیات را در \fIvvp\fP فعال می‌کند. با استفاده از دستور \fIvvp\fP برای اجرای غیرمستقیم فایل خروجی کامپایلر می‌توان از این جزئیات اضافی اجتناب کرد. .TP 8 .B -V نسخه کامپایلر را چاپ کرده و خارج می‌شود. .TP 8 .B -R مسیرهای زمان اجرای کامپایلر را چاپ کرده و خارج می‌شود. .TP 8 .B -W\fIclass\fP رده‌های مختلف هشدارها را فعال می‌کند. بخش \fBانواع هشدارها (WARNING TYPES)\fP در ادامه را برای شرح گروه‌های مختلف هشدار ببینید. در صورت استفاده از چندین سوییچ \fB\-W\fP، مجموعه هشدارها اجتماع تمام رده‌های درخواستی خواهد بود. .TP 8 .B -y\fIlibdir\fP این دایرکتوری را به مسیر جستجوی ماژول‌های کتابخانه اضافه می‌کند. هنگامی که کامپایلر به یک ماژول تعریف‌نشده برخورد می‌کند، در این دایرکتوری‌ها به دنبال فایل‌هایی با نام مناسب می‌گردد. .TP 8 .B -Y\fIsuffix\fP پسوند مشخص‌شده را به فهرست پسوندهای پذیرفته‌شده نام فایل هنگام جستجوی سلول‌ها در کتابخانه اضافه می‌کند. این فهرست به طور پیش‌فرض فقط شامل \fI.v\fP است. .SH "کتابخانه‌های ماژول (MODULE LIBRARIES)" کامپایلر Icarus Verilog از کتابخانه‌های ماژول به صورت دایرکتوری‌های حاوی فایل‌های منبع Verilog پشتیبانی می‌کند. در طول فرایند بسط (elaboration)، کامپایلر متوجه نمونه‌سازی انواع ماژول‌های تعریف‌نشده می‌شود. اگر کاربر دایرکتوری‌های جستجوی کتابخانه را مشخص کرده باشد، کامپایلر آن دایرکتوری را برای فایل‌هایی با نام نوع ماژول مفقود جستجو می‌کند. در صورت یافتن چنین فایلی، آن را به عنوان یک فایل منبع Verilog بارگذاری کرده و سپس مجدداً برای بسط ماژول تلاش می‌کند. .PP فایل‌های ماژول کتابخانه ترجیحاً باید تنها حاوی یک ماژول باشند، اگرچه این یک الزام قطعی نیست. ماژول‌های کتابخانه می‌توانند به سایر ماژول‌های موجود در کتابخانه یا طرح اصلی ارجاع دهند. .SH "مقاصد (TARGETS)" کامپایلر Icarus Verilog از مقاصد متنوعی برای اهداف مختلف پشتیبانی می‌کند و سوییچ \fB\-t\fP برای انتخاب مقصد مورد نظر به کار می‌رود. دو مقصدی که به طور کامل پشتیبانی می‌شوند عبارتند از: .TP 8 .B null مقصد null هیچ کدی تولید نمی‌کند. این مقصد برای بررسی نحوی (syntax) کد منبع Verilog کاربرد دارد. .TP 8 .B vvp این گزینه پیش‌فرض است. مقصد vvp کدهایی را برای زمان اجرای vvp تولید می‌کند. خروجی یک برنامه کامل است که طرح را شبیه‌سازی می‌کند اما باید توسط دستور \fBvvp\fP اجرا شود. گزینه \-pfileline=1 می‌تواند برای افزودن کدهای دستوری (opcodes) اشکال‌زدایی گزاره‌های رویه‌ای به کدهای تولیدشده استفاده شود. این کدهای دستوری همچنین برای تولید اطلاعات فایل و شماره خط جهت پیام‌های هشدار و خطای رویه‌ای به کار می‌روند. برای فعال‌سازی ردگیری دستورات اشکال‌زدایی، از دستور trace (به صورت trace on) در اعلان تعاملی vvp استفاده کنید. .PP برای مشاهده سایر مقاصد موجود، ببینید: .BR "" .SH "انواع هشدارها (WARNING TYPES)" این‌ها انواع هشدارهایی هستند که می‌توانند توسط سوییچ \fB\-W\fP انتخاب شوند. همه انواع هشدارها (به جز \fBall\fP) می‌توانند با پیشوند \fBno\-\fP نیز همراه شوند تا آن هشدار خاص غیرفعال گردد. این قابلیت بیشتر پس از آرگومان \fB\-Wall\fP برای غیرفعال کردن برخی هشدارهای مجزا کاربرد دارد. .TP 8 .B all دسته‌های هشدارهای anachronisms، implicit، macro-replacement، portbind، select\-range، timescale و sensitivity\-entire\-array را فعال می‌کند. .TP 8 .B anachronisms هشدارهای مربوط به استفاده از ویژگی‌هایی را که در نسل انتخابی زبان Verilog منسوخ یا حذف شده‌اند فعال می‌کند. .TP 8 .B implicit هشدارهای مربوط به ایجاد تعاریف ضمنی را فعال می‌کند. به عنوان مثال، اگر یک سیم اسکالر (scalar wire) X در کد منبع Verilog استفاده شود اما تعریف نشده باشد، در اولین استفاده از آن یک هشدار چاپ خواهد شد. .TP 8 .B macro-redefinition\fI | \fPmacro-replacement هشدارهای پیش‌پردازنده را در هنگام تعریف مجدد یک ماکرو فعال می‌کند. حالت اول هر زمان که ماکرویی بازتعریف شود هشدار چاپ می‌کند. حالت دوم تنها در صورتی هشدار می‌دهد که متن ماکرو تغییر کند. برای خاموش کردن تمام هشدارهای این نوع از \fBno-macro-redefinition\fP استفاده کنید. .TP 8 .B portbind هشدارهای مربوط به پورت‌های نمونه‌سازی ماژول را که متصل نشده‌اند اما احتمالاً باید متصل باشند، فعال می‌کند. برای مثال، پورت‌های ورودی معلق (dangling) یک هشدار ایجاد می‌کنند. .TP 8 .B select-range هشدارهای مربوط به انتخاب‌های خارج از محدوده ثابت (constant out of bound selects) را فعال می‌کند. این شامل انتخاب‌های جزئی یا کاملاً خارج از محدوده و همچنین انتخابی است که شامل مقدار 'bx یا 'bz در شاخص باشد. .TP 8 .B timescale هشدارهای مربوط به استفاده ناهماهنگ از دستور timescale را فعال می‌کند. این گزینه مواردی را که برخی ماژول‌ها فاقد timescale هستند یا ماژول‌هایی که timescale را از فایلی دیگر به ارث می‌برند، شناسایی می‌کند. هر دو حالت احتمالاً به معنای ناهماهنگ بودن مقیاس‌های زمانی است و زمان‌بندی شبیه‌سازی می‌تواند گیج‌کننده و وابسته به ترتیب کامپایل شود. .TP 8 .B infloop هشدارهای مربوط به گزاره‌های \fRalways\fP را که ممکن است در زمان اجرا حلقه‌های بی‌نهایت داشته باشند (مسیرهایی بدون تأخیر یا با تأخیر صفر دارند) فعال می‌کند. این رده از هشدارها در \fB\-Wall\fP گنجانده نشده است و بنابراین نسخه \fBno\-\fP ندارد. هرگاه کامپایلر بتواند به طور قطعی تشخیص دهد که یک حلقه بی‌نهایت وجود خواهد داشت (همه مسیرها فاقد تأخیر یا با تأخیر صفر باشند)، همواره یک پیام خطای مهلک چاپ خواهد شد. .PP هنگامی که مشکوک هستید یک عبارت always باعث ایجاد حلقه بی‌نهایت در زمان اجرا می‌شود، از این فلگ برای یافتن عبارات always که منطق آن‌ها نیاز به بازبینی دارد استفاده کنید. انتظار می‌رود بسیاری از این هشدارها مثبت کاذب باشند، زیرا کد مقدار همه متغیرها و سیگنال‌ها را نامعین فرض می‌کند. .TP 8 .B sensitivity-entire-vector هشدارهایی را برای مواردی فعال می‌کند که انتخاب بخشی از بردار در عبارت "always @*" باعث افزوده شدن کل بردار به فهرست حساسیت ضمنی می‌شود. اگرچه این رفتار توسط استاندارد IEEE تعیین شده است، اما ممکن است مورد انتظار نباشد و در صورت بزرگ بودن بردار بر کارایی اثر بگذارد. .TP 8 .B sensitivity-entire-array هشدارهایی را برای مواردی فعال می‌کند که انتخاب عنصری از آرایه در عبارت "always @*" باعث افزوده شدن کل آرایه به فهرست حساسیت ضمنی می‌شود. اگرچه این رفتار توسط استاندارد IEEE تعیین شده است، اما ممکن است مورد انتظار نباشد و در صورت بزرگ بودن آرایه بر کارایی اثر بگذارد. .SH "ماژول‌های VPI (VPI MODULES)" اگر نام فایل منبع دارای پسوند \fB.vpi\fP یا \fB.vpl\fP باشد، به عنوان یک ماژول VPI در نظر گرفته می‌شود. ماژول‌های VPI ارائه‌شده توسط کاربر پویش می‌شوند تا انواع بازگشتی هر یک از توابع سیستمی که ارائه می‌دهند تعیین شود. این کار ضروری است زیرا کامپایلر برای بسط عبارات حاوی این توابع سیستمی به این اطلاعات نیاز دارد. مسیر یا نام ماژول به مقصد ارسال می‌شود تا ماژول VPI به طور خودکار در ابتدای شبیه‌سازی بارگذاری شود. .PP ماژول‌های VPI همچنین می‌توانند با استفاده از گزینه‌های \fB-L\fP و \fB-m\fP ارائه شوند. .SH "فایل‌های جدول توابع سیستم [منسوخ‌شده] (SYSTEM FUNCTION TABLE FILES)" اگر نام فایل منبع دارای پسوند \fB.sft\fP باشد، به عنوان یک فایل جدول توابع سیستمی در نظر گرفته می‌شود. فایل جدول توابع سیستم روش قدیمی برای توصیف انواع بازگشتی توابع سیستم به کامپایلر بود. به کاربران توصیه می‌شود به روش جدید یعنی ارائه مستقیم ماژول VPI روی آورند. .PP قالب این جدول به صورت ASCII و یک تابع در هر خط است. خطوط خالی نادیده گرفته می‌شوند و خطوطی که با نویسه '\fI#\fP' شروع می‌شوند، خطوط توضیحات هستند. هر خط غیرتوضیحی با نام تابع و سپس نوع vpi (مانند vpiSysFuncReal) شروع می‌شود. انواع زیر پشتیبانی می‌شوند: .TP 8 .B vpiSysFuncReal تابع یک مقدار حقیقی یا زمان واقعی (real/realtime) برمی‌گرداند. .TP 8 .B vpiSysFuncInt تابع یک عدد صحیح برمی‌گرداند. .TP 8 .B vpiSysFuncSized تابع یک بردار با عرض مشخص‌شده برمی‌گرداند که بر اساس فلگ، دارای علامت (signed) یا بدون علامت (unsigned) است. .TP 8 .B vpiSysFuncString تابع یک رشته برمی‌گرداند. این یک افزونه مختص Icarus است که در استاندارد VPI موجود نیست. .SH "فایل‌های دستور (COMMAND FILES)" فایل دستور به کاربر اجازه می‌دهد تا نام فایل‌های منبع و برخی سوییچ‌های خط فرمان را به جای یک خط فرمان طولانی در یک فایل متنی قرار دهد. فایل‌های دستور می‌توانند شامل توضیحات به سبک C یا ++C و همچنین توضیحات # (در صورتی که # در ابتدای خط باشد) باشند. .TP 8 .I "file name" یک نام فایل یا مسیر فایل ساده به عنوان نام یک فایل منبع Verilog در نظر گرفته می‌شود. مسیر با اولین نویسه غیرفاصله شروع می‌شود. متغیرها در نام فایل‌ها جایگزین می‌شوند. .TP 8 .B -c\ \fIcmdfile\fP -f\ \fIcmdfile\fP عبارت \fB\-c\fP یا \fB\-f\fP پیشوند یک فایل دستور است، دقیقاً مانند نحوه عملکرد آن در خط فرمان. نام cmdfile می‌تواند در همان خط یا در خط غیرتوضیحی بعدی باشد. .TP 8 .B -l\ \fIfile\fP -v\ \fIfile\fP عبارت \fB\-l\fP پیشوند یک فایل کتابخانه در فایل دستور است، دقیقاً مانند نحوه عملکرد آن در خط فرمان. پارامتر فلگ \fB\-l\fP می‌تواند در همان خط یا در خط غیرتوضیحی بعدی باشد. گزینه \fB\-v\fP نام مستعاری برای \fB\-l\fP است که برای سازگاری با سایر شبیه‌سازها ارائه شده است. .PP متغیرها در \fIfile\fP جایگزین می‌شوند. .TP 8 .B -y\ \fIlibdir\fP عبارت \fB\-y\fP پیشوند یک دایرکتوری کتابخانه در فایل دستور است، دقیقاً مانند نحوه عملکرد آن در خط فرمان. پارامتر فلگ \fB\-y\fP می‌تواند در همان خط یا در خط غیرتوضیحی بعدی باشد. .PP متغیرها در \fIlibdir\fP جایگزین می‌شوند. .TP 8 .B +incdir+\fIincludedir\fP عبارت \fB+incdir+\fP در فایل‌های دستور، دایرکتوری‌هایی را برای جستجوی فایل‌های include مشخص می‌کند؛ بسیار شبیه به نحوه عملکرد فلگ‌های \fB\-I\fP در خط فرمان. تفاوت در این است که چندین دایرکتوری \fI+includedir\fP پارامترهای معتبری برای یک عبارت \fB+incdir+\fP واحد هستند، اگرچه می‌توانید چندین خط \fB+incdir+\fP نیز داشته باشید. .PP متغیرها در \fIincludedir\fP جایگزین می‌شوند. .TP 8 .B +libext+\fIext\fP عبارت \fB+libext\fP در فایل‌های دستور، پسوندهای فایل را برای بررسی هنگام جستجوی فایل کتابخانه فهرست می‌کند. این گزینه در ترکیب با فلگ‌های \fB\-y\fP برای فهرست کردن پسوندهایی که باید در هر دایرکتوری قبل از رفتن به دایرکتوری کتابخانه بعدی بررسی شوند، مفید است. .TP 8 .B +libdir+\fIdir\fP این روش دیگری برای تعیین دایرکتوری‌های کتابخانه است. فلگ \-y را ببینید. .TP 8 .B +libdir-nocase+\fIdir\fP این مورد شبیه به دستور \fB+libdir\fP است، با این تفاوت که نام فایل‌های داخل دایرکتوری‌های اعلام‌شده در اینجا به بزرگی و کوچکی حروف حساس نیستند. نام ماژول مفقود در جستجو نیازی به تطابق با بزرگی و کوچکی حروف نام فایل ندارد، مادامی که حروف صحیح باشند. به عنوان مثال، "foo" با "Foo.v" مطابقت دارد اما با "bar.v" مطابقت ندارد. .TP 8 .B +define+\fINAME\fP=\fIvalue\fP عبارت \fB+define+\fP مشابه گزینه \fB\-D\fP در خط فرمان است. بخش مقدار (value) در این عبارت اختیاری است. .TP 8 .B +parameter+\fINAME\fP=\fIvalue\fP عبارت \fB+parameter+\fP مشابه گزینه \fB\-P\fP در خط فرمان است. .TP 8 .B +timescale+\fIvalue\fP عبارت \fB+timescale+\fP برای تنظیم مقیاس زمانی (timescale) پیش‌فرض برای شبیه‌سازی استفاده می‌شود. این شامل واحدهای زمانی و دقت قبل از هرگونه دستور timescale` یا پس از دستور resetall` است. مقدار پیش‌فرض 1s/1s است. .TP 8 .B +toupper-filename این عبارت باعث می‌شود نام فایل‌های پس از آن در فایل دستور به حروف بزرگ تبدیل شوند. این گزینه برای شرایطی که یک دایرکتوری از یک سیستم DOS عبور کرده و در طول فرایند نام فایل‌ها تغییر یافته است، کمک می‌کند. .TP 8 .B +tolower-filename این گزینه مشابه ترفند \fB+toupper\-filename\fP است که در بالا توضیح داده شد. .TP 8 .B +integer-width+\fIvalue\fP این گزینه به برنامه‌نویس اجازه می‌دهد تا عرض متغیرهای integer را در کد منبع Verilog انتخاب کند. مقدار پیش‌فرض ۳۲ است و مقدار می‌تواند هر عدد صحیح دلخواهی باشد. .TP 8 .B +width-cap+\fIvalue\fP این گزینه به برنامه‌نویس اجازه می‌دهد تا سقف عرض (width cap) را برای عبارات بدون اندازه (unsized) تعیین کند. اگر عرض محاسبه‌شده برای یک عبارت بدون اندازه از این مقدار فراتر رود، کامپایلر یک هشدار صادر کرده و عرض عبارت را به این مقدار محدود می‌کند. .SH "متغیرها در فایل‌های دستور (VARIABLES IN COMMAND FILES)" در موارد خاص، iverilog از متغیرها در فایل‌های دستور پشتیبانی می‌کند. این متغیرها رشته‌هایی به فرم "$(\fIvarname\fP)" یا "${\fIvarname\fP}" هستند که در آن‌ها \fIvarname\fP نام متغیر محیطی برای خواندن است. کل رشته با محتویات آن متغیر جایگزین می‌شود. متغیرها فقط در زمینه‌هایی که صریحاً از آن‌ها پشتیبانی می‌کنند (از جمله رشته‌های فایل و دایرکتوری) جایگزین می‌شوند. .PP مقادیر متغیرها از متغیرهای محیطی سیستم‌عامل تأمین می‌شوند و نه از تعاریف پیش‌پردازنده در جاهای دیگر فایل یا خط فرمان. .SH "ماکروهای از پیش تعریف‌شده (PREDEFINED MACROS)" ماکروهای زیر توسط کامپایلر از پیش تعریف شده‌اند: .TP 8 .B __ICARUS__ = 1 هنگام کامپایل با Icarus Verilog همیشه تعریف شده است. .TP 8 .B __ICARUS_SYNTH__ = 1 هنگامی که سنتز فعال باشد تعریف می‌شود. .TP 8 .B __VAMS_ENABLE__ = 1 هنگامی که Verilog\-AMS فعال باشد تعریف می‌شود. .SH "محیط (ENVIRONMENT)" .PP برنامه \fIiverilog\fP همچنین متغیرهای محیطی خاصی را برای کنترل رفتار خود می‌پذیرد. این متغیرها می‌توانند برای اعمال تغییرات نیمه‌دائمی استفاده شوند. .TP 8 .B IVERILOG_ICONFIG=\fIfile-name\fP نام مورد استفاده برای فایل موقتی را که پارامترها را به هسته اصلی کامپایلر منتقل می‌کند تنظیم می‌نماید و مانع از حذف آن فایل پس از خروج کامپایلر می‌شود. .TP 8 .B IVERILOG_VPI_MODULE_PATH=\fI/some/path:/some/other/path\fP بخش‌های اضافی را به مسیر جستجوی ماژول VPI اضافه می‌کند. مسیرهای مشخص‌شده به این شیوه پس از مسیرهای مشخص‌شده با \fB-L\fP اما قبل از مسیر جستجوی پیش‌فرض جستجو می‌شوند. چندین مسیر می‌توانند با دونقطه (در ویندوز با نقطه‌ویرگول) از هم جدا شوند. .SH "مثال‌ها (EXAMPLES)" این مثال‌ها فرض می‌کنند که شما یک فایل منبع Verilog به نام hello.v در دایرکتوری جاری دارید. .PP برای کامپایل hello.v به یک فایل اجرایی به نام a.out: .PP .nf iverilog hello.v .fi .PP برای کامپایل hello.v به یک فایل اجرایی به نام hello: .PP .nf iverilog \-o hello hello.v .fi .PP برای کامپایل و اجرای صریح با استفاده از زمان اجرای vvp: .PP .nf iverilog \-ohello.vvp \-tvvp hello.v .fi .SH "نویسنده (AUTHOR)" .nf Steve Williams (steve@icarus.com) .fi .SH "همچنین ببینید (SEE ALSO)" .BR vvp (1) .PP نکات مربوط به استفاده، اشکال‌زدایی و توسعه کامپایلر را می‌توانید در نشانی زیر بیابید: .BR "" .SH "حق نشر (COPYRIGHT)" .nf Copyright \(co 2002\-2026 Stephen Williams .fi .PP این سند می‌تواند بر اساس شرایط مجوز عمومی همگانی گنو (GNU GPL) نسخه ۲٫۰ آزادانه بازتوزیع شود.