vvp(1) Version 13.0 (stable) vvp(1)

vvp - موتور زمان اجرای Icarus Verilog vvp

vvp [-inNqsvV] [-Mpath] [-mmodule] [-llogfile] inputfile [extended-args...]

vvp موتور زمان اجرایی است که ساختار کامپایل‌شدهٔ پیش‌فرضی را که توسط Icarus Verilog تولید شده، اجرا می‌کند. خروجی دستور iverilog به خودی خود روی هیچ بستری قابل اجرا نیست؛ در عوض، برنامهٔ vvp برای اجرای فایل خروجی تولیدشده فراخوانی می‌شود.

vvp گزینه‌های زیر را می‌پذیرد:

این پرچم موجب می‌شود تمام خروجی‌ها به <stdout> بدون بافر باشند.
این پرچم یک فایل گزارش (logfile) را مشخص می‌کند که تمام خروجی‌های MCI <stdlog> به آن هدایت می‌شوند. برای ارسال خروجی گزارش به <stderr>، مقدار logfile را برابر '-' قرار دهید. تابع $display و موارد مشابه، خروجی خود را هم به <stdout> و هم به <stdlog> ارسال می‌کنند.
این پرچم دایرکتوری جدیدی را به فهرست مسیرهای مورد استفاده برای یافتن ماژول‌های VPI اضافه می‌کند. مسیر پیش‌فرض تنها شامل دایرکتوری نصب ماژول system.vpi است، اما این پرچم می‌تواند دایرکتوری‌های دیگری را اضافه کند. استفاده از چند مسیر مجاز است و ماژول‌ها به ترتیب جستجو خواهند شد.
به زمان اجرای vvp اعلام می‌کند که ماژول نام‌برده را پیش از اجرای شبیه‌سازی بارگذاری کند. ماژول system.vpi به طور پیش‌فرض بارگذاری می‌شود، اما ماژول‌های اضافی، از جمله ماژول‌هایی که به صورت محلی کامپایل کرده‌اید، می‌توانند با این پرچم مشخص شوند. هر تعداد ماژول را می‌توان بارگذاری کرد، و آن‌ها به ترتیبی که در خط فرمان فهرست شده‌اند پیوند داده خواهند شد.

در حالت عادی، تنها باید نام ماژول را بدون هیچ مسیر دایرکتوری یا پسوند .vpi مشخص کنید و مسیر جستجو برای یافتن ماژول پیمایش می‌شود. با این حال، اگر نام ماژول حداقل شامل یک نویسهٔ دایرکتوری باشد، مسیر جستجو پیمایش نمی‌شود و نام به عنوان نام کامل فایل در نظر گرفته خواهد شد.

این پرچم $stop یا یک <Control-C> را مترادفی برای $finish قرار می‌دهد. می‌توان از آن برای ارائهٔ یک واسط معنادارتر به برنامه هنگام اجرا در محیط‌های غیرتعاملی استفاده کرد.
این پرچم همانند -n عمل می‌کند، اما در صورتی که شبیه‌سازی $stop را فراخوانی کند، به وضعیت خروج 1 منجر می‌شود. می‌توان از آن برای نشان دادن شکست شبیه‌سازی هنگام اجرای یک testbench استفاده کرد.
فعال‌سازی حالت بی‌صدا (quiet mode). این گزینه از ارسال تمام خروجی‌ها به <stdout> از طریق بیت 0 در MCD (مانند تمام خروجی‌های $display و موارد مشابه) جلوگیری می‌کند. این حالت تأثیری بر خروجی فایل گزارش یا خروجی ارسالی به <stdout> از طریق توصیف‌گر فایل STDOUT ندارد.
توقف (Stop). این گزینه باعث می‌شود شبیه‌سازی در همان ابتدا و پیش از زمان‌بندی هر رویدادی متوقف شود. این به کاربر تعاملی اجازه می‌دهد درست پیش از آغاز شبیه‌سازی، کنترل آن را به دست گیرد.
روشن کردن پیام‌های تفصیلی (verbose). این گزینه سبب می‌شود اطلاعات مربوط به پیشرفت زمان اجرا در خروجی استاندارد چاپ شود.
نسخهٔ زمان اجرا را چاپ کرده و خارج می‌شود.

گزینه‌های vvp که در بالا توضیح داده شدند باید پیش از نام فایل طرح بیایند. اما پس از نام فایل طرح، ممکن است هر تعداد آرگومان نامشخص وجود داشته باشد. این آرگومان‌ها توسط vvp تفسیر نمی‌شوند، بلکه به طرح در حال اجرا ارسال شده و از طریق توابع سیستمی $test$plusargs و $value$plusargs در دسترس خواهند بود.

آرگومان‌هایی که با نویسهٔ بعلاوه (+) آغاز نمی‌شوند برای وظایف سیستمی $plusargs در دسترس نیستند، اما همچنان می‌توان از طریق کد PLI با استفاده از تابع vpi_get_vlog_info به آن‌ها دسترسی پیدا کرد. این بدان معناست که ماژول‌های vpi می‌توانند از آرگومان‌هایی که با + شروع نمی‌شوند استفاده کنند و اطمینان داشته باشند که با plus-argهای تعریف‌شده توسط کاربر تداخلی نخواهند داشت.

چندین آرگومان گسترش‌یافته وجود دارند که توسط ماژول استاندارد system.vpi (که وظایف سیستمی استاندارد را پیاده‌سازی می‌کند و همیشه ضمیمه است) تفسیر می‌شوند. این آرگومان‌ها در اینجا توضیح داده شده‌اند.

این آرگومان گسترش‌یافته قالب تخلیهٔ شکل‌موج (wave dump) را روی VCD تنظیم می‌کند. در صورت عدم وجود متغیر محیطی IVERILOG_DUMPER، این مقدار پیش‌فرض است. فایل‌های خروجی VCD بزرگ و سنگین هستند، اما با ابزارهای شخص ثالثی که خروجی شکل‌موج‌ها را می‌خوانند، بیشترین سازگاری را دارند.
این آرگومان‌های گسترش‌یافته قالب تخلیهٔ شکل‌موج را به lxt (احتمالاً همراه با بهینه‌سازی‌های قالب) تنظیم می‌کنند. پرچم -lxt-space قالب خروجی را با فعال بودن فشرده‌سازی کامل روی lxt تنظیم می‌کند. فایل‌های حاصل بسیار کوچک هستند. پرچم -lxt-speed حالت فشرده‌سازی lxt را به گونه‌ای انتخاب می‌کند که به قیمت افزایش نسبی اندازهٔ فایل، به بهترین زمان اجرا و سریع‌ترین زمان خواندن بیانجامد.

قالب LXT2 کندتر از LXT است اما معمولاً فضای کمتری می‌گیرد و خروجی آن به صورت افزایشی نوشته می‌شود. بنابراین، می‌توانید فایل‌های lxt2 را در حالی که شبیه‌سازی هنوز در حال اجراست (یا متوقف شده) مشاهده کنید، یا اگر شبیه‌سازی شما کرش کند یا متوقف شود، همچنان یک خروجی مفید در اختیار خواهید داشت. آرگومان‌های -lxt2-speed یا -lx2-speed مشابه -lxt2 یا -lx2 هستند. آرگومان‌های -lxt2-space یا -lx2-space فشرده‌سازی بهتری را فعال کرده و نوشتن افزایشی را غیرفعال می‌کنند.

این یک قالب ذخیره‌سازی مدرن است که هم سریع‌تر و هم فشرده‌تر از سایر قالب‌های تخلیه است. این قالب همانند -lxt2 از ذخیره‌سازی افزایشی پشتیبانی می‌کند. آرگومان -fst-speed از روش فشرده‌سازی سریع‌تری استفاده می‌کند که فایلی خروجی با حجم به طور محسوسی بزرگ‌تر تولید می‌کند. آرگومان -fst-space هنگام بستن، فایل را بازبسته‌بندی (repack) می‌کند تا کوچک‌ترین فایل خروجی ممکن تولید شود. آرگومان‌های -fst-space-speed یا -fst-speed-space از روش فشرده‌سازی سریع‌تر استفاده کرده و فایل را در هنگام بستن مجدداً بسته‌بندی می‌کنند.
این پرچم می‌تواند به تنهایی به کار رود یا به انتهای تخلیه‌کننده‌های بالا (vcd/lxt/lxt2/lx2/fst) ضمیمه شود تا از هرگونه خروجی شکل‌موج جلوگیری کند. این کار می‌تواند سرعت اجرای شبیه‌سازی‌های طولانی را افزایش دهد.
هنگام بارگذاری یک فایل حاشیه‌نویسی SDF، این گزینه باعث می‌شود مفسر حاشیه‌نویسی هشدارهایی را برای موارد مشکوک اما غیرکشنده چاپ کند.
هنگام بارگذاری یک فایل حاشیه‌نویسی SDF، این گزینه مفسر حاشیه‌نویسی را وادار می‌کند اطلاعاتی دربارهٔ فرآیند حاشیه‌نویسی چاپ کند.
این یک کوتاه‌نوشت برای -sdf-info -sdf-warn است.
این آرگومان گسترش‌یافته سازگاری بهتر با سایر شبیه‌سازها را فعال می‌کند. در حال حاضر، این گزینه فقط بر قالب نمایش اعداد حقیقی در حالتی که هیچ رشتهٔ قالبی مشخص نشده باشد تأثیر می‌گذارد.

دستور vvp همچنین چندین متغیر محیطی را که رفتار آن را کنترل می‌کنند، می‌پذیرد. از این متغیرها می‌توان برای اعمال تغییرات نیمه‌دائمی استفاده کرد.

قالب خروجی را برای تخلیهٔ شکل‌موج انتخاب می‌کند. به طور معمول، شکل‌موج‌ها در قالب vcd تخلیه می‌شوند، اما این متغیر می‌تواند برای انتخاب قالب lxt به کار رود که بسیار فشرده‌تر است، گرچه محدود به GTKWave یا نمایشگرهای سازگار با آن است. همچنین می‌توان از آن برای جلوگیری از خروجی VCD استفاده کرد که موجب صرفه‌جویی زمانی قابل توجهی برای آزمون‌های رگرسیون می‌شود.
مسیرهای بیشتری را به مسیر جستجوی ماژول VPI اضافه می‌کند. مسیرهایی که از این طریق مشخص می‌شوند، پس از مسیرهای مشخص‌شده با -M، اما پیش از مسیر جستجوی پیش‌فرض، جستجو می‌شوند. چندین مسیر را می‌توان با دونقطه (در صورت استفاده از ویندوز با نقطه ویرگول) از یکدیگر جدا کرد.

موتور شبیه‌سازی از یک حالت تعاملی پشتیبانی می‌کند. کاربر می‌تواند شبیه‌سازی را (معمولاً با فشردن <Control-C>) قطع کند تا به اعلان تعاملی دسترسی یابد. از درون آن اعلان، دستور help خلاصه‌ای کوتاه از دستورهای در دسترس را چاپ می‌کند.

همچنین می‌توان با فراخوانی وظیفهٔ سیستمی $stop از درون شبیه‌سازی، یا با فراخوانی تابع VPI به نام vpi_control به همراه آرگومان کنترلی vpiStop وارد حالت تعاملی شد. این روش‌های ورود به حالت تعاملی معادل یکدیگر هستند.

Steve Williams (steve@icarus.com)

iverilog(1), iverilog-vpi(1), https://steveicarus.github.io/iverilog

Copyright ©  2001-2026 Stephen Williams
این سند می‌تواند آزادانه بر اساس شرایط مجوز عمومی همگانی گنو نسخهٔ 2.0
بازتوزیع شود.
Jan 13th, 2026