شبیه سازی نرم افزار RENESAS ForgeFPGA
اطلاعات مهم
شبیه سازی تکنیکی است برای اعمال محرک های ورودی مختلف به طرح در زمان های مختلف برای بررسی اینکه آیا کد RTL به روش مورد نظر رفتار می کند یا خیر. برای تأیید استحکام طراحی استفاده می شود. شبیه سازی به کاربر اجازه می دهد view نمودار زمان سیگنال های مرتبط برای درک چگونگی توصیف طراحی در طراحی file رفتار می کند.
Testbenches قطعات کدی هستند که برای شبیه سازی استفاده می شوند. یک تست ساده واحد تحت آزمایش (UUT) را نمونهسازی میکند و ورودی را هدایت میکند. نرم افزار Go Configure از Icarus Verilog (iVerilog) و GTKWave برای مشاهده شکل موج های شبیه سازی با محرک ارائه شده در تست میز استفاده می کند.
این سند مراحلی را که باید هنگام نصب Icarus بر روی سیستم خود انجام دهید و نحوه اجرای یک شبیه سازی موفق را شرح می دهد.
نصب Icarus Verilog
a. آخرین نسخه Icarus Verilog (IVerilog) را از اینجا نصب کنید https://bleyer.org/icarus/
b. حتما IVerilog را به PATH اضافه کنید و اجازه دهید GTKWave را نصب کند (شکل 1 را ببینید)
c. نرم افزار Go Configure را باز کنید و قسمت SLG47910 (Rev BB) را برای باز کردن Forge Workshop انتخاب کنید (شکل 2 را ببینید).
d. روی ویرایشگر FPGA در وسط نوار ابزار در بالا کلیک کنید یا کاربر همچنین می تواند بر روی ساختار FPGA Core در وسط پنجره دوبار کلیک کند.
e. پنجره جدیدی به نام Forge Workshop باز می شود. در نوار ابزار منو در بالا، روی گزینه ها → تنظیمات کلیک کنید. در کادر محاورهای تنظیمات، به ابزارها در تب تنظیمات کاربر بروید. استفاده از "جعبه محیط سیستم" را برای Icarus Verilog و GTKWave بردارید. مسیر Iverilog و GTKWave ذخیره شده در سیستم خود را به فضای داده شده اضافه کنید (شکل 4 را ببینید).
همه شما آماده شبیه سازی یک testbench هستید و مراحل بالا تضمین می کند که GTKWave هنگام شبیه سازی یک testbench در نرم افزار Go Configure به طور خودکار راه اندازی می شود.
نیمکت آزمون
حیاتی ترین مرحله در اجرای موفقیت آمیز هر سیستمی، تأیید طراحی و عملکرد آن است. تایید یک سیستم پیچیده پس از پیاده سازی سخت افزار انتخاب عاقلانه ای نیست. از نظر پول، زمان و منابع بی اثر است. از این رو، در مورد FPGA، یک testbench برای آزمایش کد منبع Verilog استفاده می شود.
فرض کنید یک ورودی 11 بیتی داریم و میخواهیم دستگاه را برای تمام مقادیر ترکیب ورودی احتمالی (211) آزمایش کنیم. از آنجایی که این تعداد ترکیبات بسیار زیاد است، آزمایش دستی آن غیرممکن است. در چنین مواردی، میزهای آزمایش بسیار مفید هستند زیرا می توانید طرح را به طور خودکار برای تمام مقادیر ممکن آزمایش کنید و از این رو، قابلیت اطمینان طرح آزمایش را تأیید کنید. Verilog Testbenches برای شبیه سازی و تحلیل طرح ها بدون نیاز به هیچ دستگاه سخت افزاری فیزیکی استفاده می شود.
یک طرح تحت آزمایش که به اختصار DUT نامیده می شود، یک ماژول قابل ترکیب از عملکردی است که می خواهیم آزمایش کنیم. به عبارت دیگر، این طراحی مدار است که می خواهیم آن را آزمایش کنیم. میتوانیم DUT خود را با استفاده از یکی از سه سبک مدلسازی در Verilog - Gate-level، Dataflow یا Behavioral توصیف کنیم.
یک تست قابل سنتز نیست، از این رو فقط برای اهداف شبیه سازی استفاده می شود. این به کاربر اجازه میدهد تا از طیف کاملی از ساختارهای Verilog استفاده کند، بهعنوان مثال، کلمات کلیدی مانند "for"، "$display" و "$monitor" و غیره برای نوشتن میزهای تست. یک تست ساده، واحد در حال آزمایش (UUT) یا دستگاه در حال آزمایش (DUT) و ورودیهای درایو را نمونهسازی میکند.
درک تست بنچ
تعریف مقیاس زمانی در Testbench
هنگام شبیه سازی، نرم افزار باید بداند زمان چگونه تعریف شده است. واحد تأخیر با استفاده از دستورالعمل «timescale» مشخص میشود، که واحد زمان و دقت ماژولهایی را که از آن پیروی میکنند، مشخص میکند. «مقیاس زمانی به تعیین معنای #1 از نظر زمان کمک می کند. # برای تعریف تاخیر در سیستم مطابق با واحد زمانی مشخص شده در مقیاس زمانی استفاده می شود. بنابراین، اگر واحد زمان بر حسب ns باشد، #1 به معنای 1 ns تاخیر است.
نحو:
`مقیاس زمانی / /
زمان_واحد مقدار زمانی است که یک تاخیر #1 نشان می دهد. پایه time_precision نشاندهنده تعداد اعشار دقت است که باید نسبت به واحدهای زمانی استفاده کرد. (خط 23 را در شکل 5 ببینید)
ما می توانیم از ساختارهای مقیاس زمانی برای استفاده از واحدهای زمانی مختلف در یک طرح استفاده کنیم. کاربر باید به خاطر داشته باشد که مشخصات تاخیر قابل ترکیب نیستند و نمی توان آنها را به منطق سخت افزار تبدیل کرد. توابع تاخیر کاملاً برای اهداف شبیه سازی هستند. $زمان و دلاربیدرنگ توابع سیستم زمان جاری را برمیگردانند و قالب گزارش پیشفرض را میتوان با یک وظیفه سیستمی دیگر $timeformat تغییر داد.
Exampدر:
«مقیاس زمانی 10 us/100s
«مقیاس زمانی 1 ثانیه/1 ثانیه
تنظیم مجدد شماره 10 = 1; // سیگنال را 10 ns به تاخیر می اندازد
#0.49 $display( "T = %0t در زمان #0.49"، $زمان واقعی) ;
تاخیر مشخص شده #0.49 است که کمتر از نیم واحد زمان است. با این حال، دقت زمانی 1 ثانیه تعیین شده است و از این رو شبیهساز نمیتواند کمتر از 1 ثانیه باشد که باعث میشود دستور تاخیر داده شده را گرد کند و 0 ثانیه تولید کند. بنابراین، این بیانیه هیچ تاخیری را ارائه نمی دهد.
گزارش شبیه سازی:
T = 1 در زمان #0.49
اعلامیه ماژول
اعلان ماژول در هر آزمونی بر خلاف کد اصلی Verilog است. در یک تست، ماژول بدون هیچ پورت ترمینال همراه با آن اعلام می شود. (به خط 25 در شکل 5 مراجعه کنید)
نحو:
ماژول ;
اعلان ماژول با تعریف سیگنال های ورودی و خروجی که قبلاً در طراحی اصلی تعریف شده بود دنبال می شود file.
ما از دو نوع سیگنال برای رانندگی و نظارت بر سیگنال ها در طول شبیه سازی استفاده می کنیم. نوع داده reg مقدار را تا زمانی که مقدار جدیدی به آن اختصاص داده شود حفظ می کند. این نوع داده را می توان فقط در بلوک همیشه یا اولیه یک مقدار اختصاص داد.
نوع داده سیم مانند اتصال فیزیکی است. مقداری را که توسط یک پورت، دستور assign یا reg هدایت می شود، نگه می دارد. این نوع داده را نمی توان در بلوک اولیه یا همیشه استفاده کرد. هر گونه پارامتر و اعلام عدد صحیح نیز در این قسمت انجام می شود.
Exampدر:
Reg a,b; // ورودی در کد HDL به عنوان reg در testbench تعریف شده است
سیم y; // سیگنال خروجی در HDL به عنوان سیم در تست بنچ تعریف می شود
DUT Instantiation
هدف از تست میز بررسی این است که آیا ماژول DUT ما کار می کند یا خیر. از این رو، ما باید ماژول طراحی خود را به ماژول آزمایشی نمونه سازی کنیم.
نحو:
(. (سیگنال 1)، . signal1>(signal2));
Exampدر:
ALU d0 (.a(a)، // سیگنال "a" در ALU باید به "a" در ماژول ALU_tb متصل شود
.b(b)، // سیگنال "b" در ALU باید به "b" در ماژول ALU_tb متصل شود.
.c(c)) ;// سیگنال "c" در ALU باید به "c" در ماژول ALU_tb متصل شود
ما ماژول DUT ALU را در ماژول تست نمونه سازی کرده ایم. نام نمونه (d0) انتخاب کاربر است. سیگنال های دارای نقطه "." در جلوی آنها نام سیگنال های داخل ماژول ALU قرار دارد، در حالی که سیم یا رگی که در میز تست به آن متصل می شوند در کنار سیگنال داخل پرانتز () قرار دارد. توصیه می شود هر اتصال پورت را در یک خط جداگانه کدگذاری کنید تا هر پیام خطای کامپایل به درستی به شماره خطی که در آن خطا رخ داده است اشاره کند. از آنجا که این اتصالات با نام ایجاد می شوند، ترتیب ظاهر شدن آنها بی ربط است.
نمونهسازی DUT همچنین میتواند برای ماژولهایی که ماژول تست بنچ دارای نامهای سیگنال متفاوتی است ساخته شود. نگاشت صحیح سیگنال ها چیزی است که هنگام نمونه سازی مهم است.
Example:
ALU d0 (.a(A)، // سیگنال "a" در ALU باید به "A" در ماژول ALU_tb متصل شود
.clk(clock)، // سیگنال "clk" در ALU باید به ماژول "clock" ALU_tb متصل شود
.out(OUT)) ; // سیگنال "out" در ALU باید به "OUT" در ماژول ALU_tb متصل شود
همیشه و بلوک اولیه در یک تست
دو بلوک متوالی در Verilog وجود دارد، اولیه و همیشه. در این بلوک ها است که ما محرک را اعمال می کنیم.
بلوک اولیه
بلوک اولیه که فقط یک بار اجرا می شود و با اجرای آخرین خط بلوک خاتمه می یابد. محرک در بلوک اولیه نوشته می شود. (به خط 54-72 در شکل 5 مراجعه کنید)
نحو:
..
شروع اولیه
$ dumpfile()؛
$dumpvars();
..(ورود محرک)
پایان
بلوک اولیه اجرای خود را در شروع شبیه سازی در زمان t = 0 آغاز می کند. با شروع از اولین خط بین شروع و پایان، هر خط از بالا به پایین اجرا می شود تا زمانی که به تاخیر برسد. با رسیدن به تاخیر، اجرای این بلوک صبر می کند تا زمان تاخیر (10 واحد زمانی) بگذرد و سپس اجرا را دوباره شروع می کند.
کاربر می تواند محرک ها را با استفاده از حلقه ها (for, while, if-else) و همچنین در داخل این بلوک اولیه به جای وارد کردن تمام ترکیب ها به صورت دستی تعریف کند.
Example:
شروع اولیه
A = 0; b = 0; // شروع به اجرا
# 10 a = 0; b = 1; // اجرا در زمان t = 10 واحد است
# 10 a = 1; b = 0; // اجرا در زمان t = 20 واحد است
پایان
تخلیه Files
نکته دیگری که باید در نظر داشت، اعلام دلار استتخلیهfiles و دلاردامپوارها داخل بلوک اولیه (به خط 55-56 در شکل 5 مراجعه کنید). دلارتخلیهfile برای تخلیه تغییرات در مقادیر شبکه ها و ثبات ها در a استفاده می شود file که به عنوان استدلال آن نام برده می شود.
برای مثالampدر:
$تخلیهfile("alu_tb.vcd")؛
تغییرات را در a حذف خواهد کرد file با نام alu_tb.vcd. تغییرات در یک ثبت می شود file VCD نامیده می شود file که مخفف عبارت Value change dump است. یک VCD (value change dump) تمام اطلاعات مربوط به تغییرات ارزش را ذخیره می کند. ما نمی توانیم بیش از یک $ dump داشته باشیمfile عبارات در شبیه سازی Verilog
دلاردامپوارها برای تعیین اینکه کدام متغیرها باید ریخته شوند (در file توسط $dump ذکر شده استfile). ساده ترین راه برای استفاده از آن بدون هیچ استدلالی است. نحو کلی $dumpvars است
$دامپوارها ( <، >)؛
ما اساساً می توانیم مشخص کنیم که کدام ماژول ها و کدام متغیرها در ماژول ها تخلیه شوند. ساده ترین راه برای استفاده از این، تنظیم سطح روی 0 و نام ماژول به عنوان ماژول بالا (معمولاً ماژول تست بالا) است.
$دامپوارها(0, alu_tb);
هنگامی که سطح روی 0 تنظیم می شود و فقط نام ماژول مشخص می شود، همه متغیرهای آن ماژول و همه متغیرهای موجود در همه ماژول های سطح پایین تر که توسط این ماژول بالا نمونه سازی شده اند را حذف می کند. اگر هر ماژولی توسط این ماژول بالا نمونه سازی نشده باشد، متغیر آن پوشش داده نخواهد شد. یک چیز دیگر، اعلام دلارتخلیهfile باید قبل از $dumpvars یا هر کار دیگر سیستمی باشد که dump را مشخص می کند. این زباله ها files باید قبل از ورودی های محرک دیگر اعلام شود، هیچ مقداری در این dump ذخیره نخواهد شد files.
همیشه مسدود شود
برخلاف عبارات اولیه، یک بلوک همیشه به طور مکرر اجرا می شود، اگرچه اجرا در زمان t = 0 شروع می شود.ampبنابراین، سیگنال ساعت برای عملکرد مدارهای متوالی مانند فلیپ فلاپ ضروری است. نیاز به تامین مداوم دارد. از این رو، میتوانیم کد عملکرد ساعت را در یک تست بنویسیم (به خط 52 در شکل 5 مراجعه کنید):
همیشه
#10 clk = ~clk;
ماژول پایانی
دستور بالا بعد از 10 ns با شروع از t = 0 اجرا می شود. مقدار clk بعد از 10 ns از مقدار قبلی معکوس می شود. بنابراین، یک سیگنال ساعت با عرض پالس 20 ns تولید می شود. بنابراین، این عبارت سیگنالی با فرکانس 50 مگاهرتز تولید می کند. توجه به این نکته ضروری است که مقداردهی اولیه سیگنال قبل از بلاک همیشه انجام می شود. اگر قسمت مقداردهی اولیه را انجام ندهیم، سیگنال clk از t – 0 x می شود و بعد از 10 ns به x دیگر معکوس می شود.
میز تست خود چک
یک تست خود بررسی شامل بیانیه ای برای بررسی وضعیت فعلی است.
- $نمایش داده شود وظیفه سیستم عمدتا برای نمایش پیام های اشکال زدایی برای ردیابی جریان شبیه سازی استفاده می شود
شروع اولیه
A = 0 ; b = 0 ; c = 0; شماره 10; // اعمال ورودی، صبر کنید
if(y ! == 1) شروع شود
$display( "000 ناموفق") ; //بررسی کنید
c = 1; شماره 10؛ //اعمال ورودی، صبر کنید
پایان
در غیر این صورت اگر ( y ! == 0) شروع شود
$display ("001 ناموفق") // بررسی کنید
b = 1; c = 0; شماره 10؛ پایان
دیگری if(y!==0)
$display (" 010 شکست خورد"); //بررسی کنید
پایان
ماژول پایانی
$نمایش داده شود برای نمایش مقادیر متغیرها، رشته ها یا عبارات استفاده می شود. از مثال فوقample، هر زمان که هر یک از حلقه if-else برآورده شد، گزارش شبیه ساز $ مربوطه خود را نشان می دهد.نمایش داده شود بیانیه یک خط جدید به طور پیش فرض در انتهای رشته ها وجود دارد.
$نمایش داده شود («زمان = %t، A = %b، B = %b، C = % b»، $زمان, A,B,C)؛
کاراکترهای ذکر شده در نقل قول همانطور که هستند چاپ می شوند. حرف همراه با % فرمت رشته را نشان می دهد. ما از %b برای نمایش داده های باینری استفاده می کنیم. میتوانیم به ترتیب از %d، %h، %o برای نمایش اعشاری، هگزادسیمال و اکتال استفاده کنیم. %g برای بیان اعداد واقعی استفاده می شود. اینها با مقادیر خارج از مظنه به ترتیب ذکر شده جایگزین می شوند. برای مثالample، عبارت فوق در گزارش شبیه سازی به صورت زیر نمایش داده می شود: زمان = 20، A = 0، B = 1، C = 0
جدول 1. فرمت های جدول Verilog
استدلال | توضیحات |
%h، %H | نمایش در فرمت هگزادسیمال |
%d، %D | نمایش به صورت اعشاری |
%b، %B | نمایش در فرمت باینری |
%m، %M | نمایش نام سلسله مراتبی |
%s، %S | نمایش به صورت رشته |
%t، %T | نمایش در قالب زمان |
%f، %F | نمایش "واقعی" در قالب اعشاری |
%e، %E | نمایش "واقعی" در قالب نمایی |
$نمایش داده شود عمدتاً داده یا متغیر را همانطور که در آن لحظه از آن زمان هست چاپ می کند مانند printf در C. باید به $ اشاره کنیم.نمایش داده شود برای هر متنی که باید view در گزارش شبیه سازی
- $زمان
$زمان یک وظیفه سیستمی است که زمان جاری شبیه سازی را برمی گرداند.
- $نظارت کنید
$نظارت کنید داده یا متغیری را که برای آن نوشته شده است نظارت می کند و هر زمان که متغیر تغییر کند، چاپ می شود
مقدار تغییر یافته پس از هر بار دریافت هر یک از آرگومان هایش، به اثری مشابه فراخوانی $display دست می یابد
به روز شد. $نظارت کنید مانند وظیفه ای است که برای اجرا در پس زمینه رشته اصلی که نظارت می کند و
تغییرات مقدار متغیرهای آرگومان خود را نمایش می دهد. $نظارت کنید دستوری مشابه $ داردنمایش داده شود.
$نظارت کنید(" زمان = %t، A = %b، B = %b، C = % b، $زمان, A,B,C)؛
از شکل 7 می توانید مشاهده کنید که خطوط جدیدی از کدها برای ارزیابی خود تست میز اضافه شده است. قرار دادن دلارنمایش داده شود و دلارنظارت کنید عبارات در بخش های مختلف میز تست نتایج متفاوتی را به همراه خواهند داشت (شکل 8 را ببینید). $زمان ذکر شده در این بیانیه ها، زمانی را که مقدار برای آن چاپ می شود چاپ می کند. در همان زمان واحد بگوییم 170000، می توانیم ببینیم که چگونه تفاوتی در مقدار A و B به دلیل دلار وجود دارد.نمایش داده شود و دلارنظارت کنید بیانیه ها
نرم افزار GTKWave
GTKWave یک موج GTK+ کاملاً برجسته است viewer برای Unix، Win32 و Mac OSX که LXT، LXT2، VZT، FST و GHW را می خواند files و همچنین استاندارد VCD/EVCD fileاس و به آنها اجازه می دهد viewing. رسمی آن است webسایت در است http://gtkwave.sourceforge.net/ . GTKWave توصیه می شود viewer توسط ابزار شبیه سازی Icarus Verilog.
هنگامی که کاربر با موفقیت یک تست برای آزمایش عملکرد طراحی ایجاد کرد، اکنون کاربر می تواند از نرم افزار GTKWave برای view شکل موج ها
برای راه اندازی نرم افزار GTKWave به view در شکل موج، کاربر باید روی دکمه Simulate Testbench در بالای نوار ابزار یا از منوی اصلی Tools→ Simulation→ Simulate Testbench کلیک کند. اگر هیچ خطای نحوی وجود نداشته باشد، بسته به طراحی، GTKWave باید به طور خودکار راه اندازی شود یا نتایج محرک ها در تست بنچ در بخش Logger پنجره نمایش داده می شود.
نرم افزار GTKWave قالب .vcd را باز می کندfile به صورت خودکار پنجره GTKWave وقتی باز می شود شکل موج را نمایش نمی دهد. این به کاربر این فرصت را می دهد تا سیگنال هایی را که می خواهد انتخاب کند view و مشاهده کنید. برای انتخاب سیگنال، کاربر باید نمایش دهد، کاربر باید روی نام ماژول/نمونه خود در سمت چپ پنجره زیر زبانه SST کلیک کند. با کلیک بر روی + هر نمونه، می توانید سیگنال های مرتبط با آن نمونه را در قسمت پایین مشاهده کنید. سپس می توانید سیگنال مورد نظر را بکشید و رها کنید یا روی آنها دوبار کلیک کنید تا در پنجره سیگنال ها نمایش داده شود. شما همچنین می توانید همه (CTRL + A) را انتخاب کنید و آنها را در پنجره سیگنال ها قرار دهید (شکل 9 را ببینید).
سیگنال ها اکنون به پنجره سیگنال اضافه شده اند اما هنوز شبیه سازی نشده است. پس از افزودن سیگنال های مورد نظر به پنجره سیگنال، بر روی آن کلیک کنید تا سیگنال ها را به عرض فعلی پنجره برسانید و سپس سیگنال ها را از بارگذاری مجدد بارگذاری کنید
نماد موجود در نوار ابزار اکنون می توانید سیگنال ها را با مقادیر مربوطه خود مشاهده کنید.
مقادیر سیگنال
بهطور پیشفرض، مقادیر سیگنالها در قالب هگزادسیمال هستند و همه امواج سبز رنگ میشوند (اگر به درستی اجرا شوند).
کاربر می تواند با کلیک راست روی سیگنال و انتخاب Data Format یا Color Format ویژگی های این سیگنال ها را تغییر دهد. کاربر همچنین می تواند یک سیگنال خالی برای ایجاد بخش هایی بین گروهی از سیگنال ها وارد کند. هنگامی که به نتیجه نوری مورد نظر رسیدید، می توانید تنظیمات خود را با رفتن ذخیره کنید File → ذخیره را بنویسید File.
نوار ابزار GTKWave
نوار ابزار (نگاه کنید به شکل 10) به کاربر اجازه می دهد تا عملکردهای اساسی سیگنال را انجام دهد. اجازه دهید در مورد هر گزینه در نوار ابزار از چپ به راست بحث کنیم.
- گزینه های منو: تحت این گزینه می توانیم view تمام ویژگی های مختلف نرم افزار که می توان از آنها برای بازی با نرم افزار استفاده کرد. جزئیات زیر این گزینه منو در بخش 8 این راهنمای کاربر پوشش داده شده است.
- برش آثار: برای حذف/برش سیگنال انتخاب از پنجره سیگنال استفاده می شود
- ردیابی را کپی کنید: برای کپی کردن سیگنال انتخاب شده از پنجره سیگنال استفاده می شود
- چسباندن آثار: ردیابی کپی/برش شده را می توان در مکان دیگری در پنجره سیگنال جایگذاری کرد
- Zoom Fit: برای جا دادن سیگنال ها با توجه به اندازه پنجره ای که کاربر برای نمایش انتخاب می کند استفاده می شود
- بزرگنمایی: برای بزرگنمایی در پنجره سیگنال استفاده می شود
- بزرگنمایی: برای بزرگنمایی پنجره سیگنال استفاده می شود
- زوم واگرد: برای خنثی کردن بزرگنمایی/کوچک کردن پنجره سیگنال استفاده می شود
- برای شروع بزرگنمایی کنید: این پنجره سیگنال را بزرگنمایی می کند و زمان شروع سیگنال ها را نمایش می دهد.
- بزرگنمایی تا پایان: این پنجره سیگنال را بزرگنمایی می کند که زمان پایان سیگنال ها را نشان می دهد
- لبه قبلی را پیدا کنید: این نشانگر را به سمت چپ منتقل می کند که لبه قبلی را نشان می دهد
- لبه بعدی را پیدا کنید: این نشانگر را به سمت راست تغییر می دهد که نشانگر لبه بعدی است
- پیوند پایین/بالا را اسکرول کنید: با استفاده از این می توانیم بازه زمانی را که کاربر می خواهد نمایش دهد تعیین کنیم. برای مثالampمیتوانیم بازه زمانی را بین 0 ثانیه تا 500 ns تنظیم کنیم، سیگنالها را فقط در این مدت نمایش میدهد.
- بارگذاری مجدد: هرگاه تغییری در سیگنال نمایش داده شده ایجاد شود، بارگذاری مجدد فشار داده می شود. این سیگنال را با توجه به پارامترهای جدید بارگیری و نمایش می دهد. برای مثالample، پس از تغییر تایم فریم سیگنال، باید سیگنال را دوباره بارگذاری کنیم تا سیگنال در بازه زمانی تنظیم شده جدید نمایش داده شود.
گزینه های منو
از گوشه سمت چپ بالای نرم افزار GTKWave، کاربر می تواند با کلیک بر روی سه خط عمودی به گزینه های منو دسترسی پیدا کند (شکل 11 را ببینید). کاربر می تواند گزینه های زیر را در زیر گزینه های منو پیدا کند:
File
را File زیر منو شامل آیتم های مختلف مربوط به دسترسی است files، واردات و صادرات VCD files، چاپ، و خواندن/نوشتن files و خروج.
ویرایش کنید
از منوی فرعی Edit برای انجام عملکردهای کاربردی مختلف مانند تغییر نمایش داده مقادیر در پنجره فرعی موج استفاده می شود. با استفاده از گزینههای زیر منوی ویرایش، کاربر میتواند فرمت داده سیگنالها را تغییر دهد، آنها را مرتب کند، آنها را تغییر دهد، آنها را برش دهد، برجستهسازی کند، سیگنالها را گروهبندی کند، روی سیگنالها اظهار نظر کند، رنگ سیگنالها را تغییر دهد و غیره.
جستجو
زیر منوی جستجو برای انجام جستجو در نام ها و مقادیر شبکه استفاده می شود. به انجام عملکردها در سطوح مختلف سلسله مراتبی سیگنال ها و نمونه های موجود در VCD کمک می کند file.
زمان
زیر منوی زمان شامل مجموعه ای از عملکردهای انجام شده توسط دکمه های ناوبری و پانل وضعیت است.
عملکردهای ساده و مرتبط با زمان مانند زوم کردن، حرکت به یک نقطه زمانی خاص، تغییر سیگنال در جهت خاصی و غیره را فعال می کند.
نشانگر
از منوی فرعی نشانگر برای انجام دستکاری های مختلف روی نشانگر و همچنین کنترل اسکرول خارج از صفحه استفاده می شود.
این قابلیت افزودن نشانگرهای متعدد بر روی پنجره سیگنال را فعال می کند. حداکثر 26 نشانگر نام مجاز است و زمان برای همه باید متفاوت باشد.
a. برای افزودن نشانگرها در پنجره سیگنال
روی نقطه مورد نیاز که میخواهید نشانگر در آن قرار گیرد کلیک چپ کرده و ALT + N را فشار دهید. با این کار یک نشانگر با نام (A، B، C، و غیره) در نقطه مورد نظر قرار میگیرد. کاربر می تواند این کار را برای 26 مکان زمانی مختلف ادامه دهد.
برای مقایسه مقدار زمان در همه نشانگرهای مکان، منو ← نشانگرها ← نمایش تغییر داده نشانگر.
با این کار پنجره ای با مقدار زمان در هر نشانگر باز می شود. کاربر می تواند به صورت دستی مقدار زمان را در هر نشانگر قرار داده شده یادداشت کرده و آنها را کم کند تا اختلاف زمانی بین 2 نشانگر را محاسبه کند.
b. برای حذف نشانگر در پنجره سیگنال
کاربر می تواند به منو → نشانگرها → جمع آوری نشانگر نامگذاری شده مراجعه کند. با این کار، نشانگر با نام آخر قرار داده شده در پنجره سیگنال حذف می شود. کاربر می تواند با رفتن به منو → نشانگرها → جمع آوری همه نشانگرهای نامگذاری شده را حذف کند (شکل 12).
در شکل 13، نحوه تغییر رنگ سیگنال را مشاهده می کنیم. شما می توانید یک سیگنال خالی که به پنجره سیگنال اضافه شده است را با یک نظر مشاهده کنید - سیگنال خالی.
همچنین به وجود 6 نشانگر نامگذاری شده (A - E) و محاسبه مقدار زمان بین این نشانگرها در ps توجه کنید.
View
را View از منوی فرعی برای کنترل ویژگی های مختلف مربوط به ارائه گرافیکی موارد وضعیت و همچنین مقادیر در پنجره فرعی سیگنال استفاده می شود. از این منو می توانید پنجره سیگنال را به سیاه و سفید یا رنگی نیز تبدیل کنید. این View منوی فرعی همچنین شما را قادر میسازد تا زمان Dimension را از ثانیه (ثانیه) به فیکوثانیه (fs) تغییر دهید. کاربر می تواند این گزینه را پیدا کند View → مقیاس به بعد زمان → fs.
کمک کنید
زیر منوی راهنما دارای گزینه هایی برای فعال کردن کمک آنلاین و همچنین نمایش اطلاعات نسخه برنامه است.
نتیجه گیری
این سند برای کمک به کاربر در شبیهسازی موفقیتآمیز طراحی و تأیید عملکرد با اصلاح پیشنویس تست مورد نیاز و استفاده از Icarus Verilog همراه با GTKWave برای نمایش شکلهای موج و مشاهده نتایج ایجاد شده است.
تاریخچه تجدید نظر
تجدید نظر | تاریخ | توضیحات |
1.00 | 20 مه 2024 | انتشار اولیه |
R19US0011EU0100 Rev.1.0
20 مه 2024
© 2024 Renesas Electronics
اسناد / منابع
![]() |
شبیه سازی نرم افزار RENESAS ForgeFPGA [pdfراهنمای کاربر REN_r19us0011eu0100، شبیه سازی نرم افزار ForgeFPGA، نرم افزار ForgeFPGA، ForgeFPGA، شبیه سازی ForgeFPGA، شبیه سازی نرم افزار، شبیه سازی، نرم افزار |