برنامج محاكاة رينيساس ForgeFPGA
معلومات هامة
المحاكاة هي تقنية لتطبيق محفزات إدخال مختلفة على التصميم في أوقات مختلفة للتحقق مما إذا كان كود RTL يتصرف بالطريقة المقصودة. يتم استخدامه للتحقق من متانة التصميم. محاكاة تسمح للمستخدم view مخطط توقيت الإشارات ذات الصلة لفهم كيفية وصف التصميم في التصميم file يتصرف.
Testbench عبارة عن أجزاء من التعليمات البرمجية التي يتم استخدامها للمحاكاة. سيقوم اختبار بسيط بإنشاء مثيل للوحدة قيد الاختبار (UUT) ويحرك الإدخال. يستخدم برنامج Go Configure Icarus Verilog (iVerilog) وGTKWave لمراقبة أشكال موجية المحاكاة مع التحفيز المقدم في منصة الاختبار.
يصف هذا المستند الخطوات التي يجب اتخاذها أثناء تثبيت Icarus على نظامك وكيفية تشغيل محاكاة ناجحة.
تثبيت إيكاروس فيريلوج
a. قم بتثبيت أحدث إصدار من Icarus Verilog (IVerilog) من https://bleyer.org/icarus/
b. تأكد من إضافة IVerilog إلى PATH والسماح له بتثبيت GTKWave (انظر الشكل 1)
c. افتح برنامج Go Configure وحدد الجزء: SLG47910(Rev BB) لفتح ورشة Forge (انظر الشكل 2).
d. انقر فوق محرر FPGA في منتصف شريط الأدوات في الأعلى أو يمكن للمستخدم أيضًا النقر نقرًا مزدوجًا فوق بنية FPGA Core في منتصف النافذة.
e. يتم فتح نافذة جديدة تسمى ورشة Forge. في شريط أدوات القائمة بالأعلى، انقر فوق خيارات → إعدادات. في مربع حوار الإعدادات، انتقل إلى الأدوات ضمن علامة التبويب إعدادات المستخدم. قم بإلغاء تحديد مربع استخدام "بيئة النظام" لكل من Icarus Verilog وGTKWave. أضف المسار إلى Iverilog وGTKWave المحفوظ في نظامك إلى المساحة المحددة (انظر الشكل 4).
أنت جاهز تمامًا لمحاكاة منصة الاختبار وتضمن الخطوات المذكورة أعلاه تشغيل GTKWave تلقائيًا عند محاكاة منصة الاختبار على برنامج Go Configure.
اختبار مقاعد البدلاء
الخطوة الأكثر أهمية في تنفيذ أي نظام بنجاح هي التحقق من التصميم ووظائفه. إن التحقق من نظام معقد بعد تنفيذ الأجهزة ليس خيارًا حكيمًا. إنها غير فعالة من حيث المال والوقت والموارد. وبالتالي، في حالة FPGA، يتم استخدام منصة اختبار لاختبار كود مصدر Verilog.
لنفترض أن لدينا مدخلاً مكونًا من 11 بت، ونريد اختبار الجهاز لجميع قيم مجموعة الإدخال الممكنة، أي (211). ونظرًا لأن هذا عدد كبير جدًا من المجموعات، فمن المستحيل اختباره يدويًا. في مثل هذه الحالات، تكون مقاعد الاختبار مفيدة جدًا حيث يمكنك اختبار التصميم تلقائيًا لجميع القيم الممكنة، وبالتالي تأكيد موثوقية تصميم الاختبار. تُستخدم Verilog Testbenches لمحاكاة التصاميم وتحليلها دون الحاجة إلى أي جهاز فعلي.
التصميم قيد الاختبار، والمختصر بـ DUT، عبارة عن وحدة نمطية قابلة للتجميع للوظيفة التي نريد اختبارها. وبعبارة أخرى، فإن تصميم الدائرة هو ما نود اختباره. يمكننا وصف DUT الخاص بنا باستخدام أحد أنماط النمذجة الثلاثة في Verilog - مستوى البوابة، أو تدفق البيانات، أو السلوكية.
منصة الاختبار غير قابلة للتوليف، وبالتالي يتم استخدامها لأغراض المحاكاة فقط. يتيح ذلك للمستخدم استخدام نطاق كامل من بنيات Verilog، على سبيل المثال، الكلمات الرئيسية مثل "for" و"$display" و"$monitor" وما إلى ذلك لكتابة مقاعد الاختبار. سيقوم اختبار بسيط بإنشاء مثيل للوحدة قيد الاختبار (UUT) أو الجهاز قيد الاختبار (DUT) ومدخلات محرك الأقراص.
فهم منضدة الاختبار
تعريف الجدول الزمني في Testbench
عند المحاكاة، يحتاج البرنامج إلى معرفة كيفية تحديد الوقت. يتم تحديد وحدة التأخير باستخدام توجيه مقياس الوقت، الذي يحدد وحدة الوقت ودقة الوحدات التي تتبعها. يساعد المقياس الزمني في تحديد ما يعنيه رقم 1 من حيث الوقت. # يستخدم لتحديد التأخير المطلوب إدخاله في النظام وفقًا لوحدة زمنية محددة في مقياس الوقت. لذا، الرقم 1 يعني 1 ns من التأخير إذا كانت الوحدة الزمنية بوحدة ns.
بناء الجملة:
`الجدول الزمني / /
time_unit هو مقدار الوقت الذي يمثله التأخير رقم 1. تمثل قاعدة time_precision عدد النقاط العشرية للدقة التي سيتم استخدامها بالنسبة لوحدات الوقت. (انظر السطر 23 في الشكل 5)
يمكننا استخدام بنيات المقياس الزمني لاستخدام وحدات زمنية مختلفة في نفس التصميم. يحتاج المستخدم إلى أن يتذكر أن مواصفات التأخير غير قابلة للتوليف ولا يمكن تحويلها إلى منطق الأجهزة. وظائف التأخير مخصصة بالكامل لأغراض المحاكاة. $وقت و$في الوقت الحالى تقوم وظائف النظام بإرجاع الوقت الحالي ويمكن تغيير تنسيق التقارير الافتراضي باستخدام مهمة نظام أخرى $timeformat.
Exampعلى:
`الجدول الزمني 10us/100ns
`الجدول الزمني 1ns/1ps
#10 إعادة تعيين = 1؛ // يؤخر الإشارة بمقدار 10 نانو ثانية
#0.49 $display( "T = %0t في الوقت #0.49"، $realtime) ؛
التأخير المحدد هو #0.49 وهو أقل من نصف وحدة زمنية. ومع ذلك، تم تحديد دقة الوقت لتكون 1ps، وبالتالي لا يمكن لجهاز المحاكاة أن يقل عن 1ns مما يجعله يقوم بتقريب بيان التأخير المحدد وينتج 0ns. لذلك، فشل هذا البيان في تقديم أي تأخير.
سجل المحاكاة:
T = 1 في الوقت رقم 0.49
إعلان الوحدة
يختلف إعلان الوحدة النمطية في أي منصة اختبار عن كود Verilog الرئيسي. في منصة الاختبار، يتم الإعلان عن الوحدة بدون أي منافذ طرفية معها. (انظر السطر 25 في الشكل 5)
بناء الجملة:
وحدة ;
يتبع إعلان الوحدة تعريف إشارات الإدخال والإخراج المحددة مسبقًا في التصميم الرئيسي file.
نحن نستخدم نوعين من الإشارات لإشارات القيادة والمراقبة أثناء المحاكاة. سيحتفظ نوع البيانات reg بالقيمة حتى يتم تعيين قيمة جديدة لها. يمكن تعيين قيمة لنوع البيانات هذا فقط في الكتلة الدائمة أو الأولية.
يشبه نوع البيانات السلكية نوع الاتصال المادي. سيحتفظ بالقيمة التي يحركها منفذ أو عبارة تعيين أو ريج. لا يمكن استخدام نوع البيانات هذا في الحظر الأولي أو دائمًا. يتم أيضًا تنفيذ أي معلمة وإعلان عدد صحيح في هذا القسم.
Exampعلى:
ريج أ، ب؛ // يتم تعريف الإدخال في كود HDL على أنه reg في testbench
سلك ذ؛ // يتم تعريف إشارة الخرج في HDL على أنها سلك في منصة الاختبار
إنشاء مثيل DUT
الغرض من منصة الاختبار هو التحقق مما إذا كانت وحدة DUT الخاصة بنا تعمل أم لا. وبالتالي، نحن بحاجة إلى إنشاء مثيل لوحدة التصميم الخاصة بنا لاختبار الوحدة.
بناء الجملة:
(. (إشارة 1)، . إشارة1>(إشارة2));
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 للوحدات النمطية حيث تحتوي وحدة testbench على أسماء إشارات مختلفة. إن التعيين الصحيح للإشارات هو المهم عند إنشاء مثيل لها.
Example:
ALU d0 (.a(A)، // يجب أن تكون الإشارة "a" في ALU متصلة بـ "A" في وحدة ALU_tb
.clk(clock), // يجب أن تكون الإشارة "clk" في ALU متصلة بوحدة ALU_tb "الساعة"
.خارج(خارج)); // يجب أن تكون الإشارة "خارج" في ALU متصلة بـ "OUT" في وحدة ALU_tb
دائمًا والكتلة الأولية في منصة الاختبار
هناك كتلتان متسلسلتان في Verilog، أولية ودائمة. في هذه الكتل نطبق التحفيز.
الكتلة الأولية
الكتلة الأولية التي يتم تنفيذها مرة واحدة فقط وتنتهي عند تنفيذ السطر الأخير من الكتلة. يتم كتابة التحفيز في الكتلة الأولية. (انظر السطر 54-72 في الشكل 5)
بناء الجملة:
..
البداية الأولية
$تفريغfile();
$dumpvars();
..(أدخل التحفيز)
نهاية
تبدأ الكتلة الأولية تنفيذها في بداية المحاكاة في الوقت t = 0. بدءًا من السطر الأول بين البداية والنهاية، يتم تنفيذ كل سطر من الأعلى إلى الأسفل حتى يتم الوصول إلى التأخير. عند الوصول إلى فترة التأخير، ينتظر تنفيذ هذه الكتلة حتى انقضاء وقت التأخير (10 وحدات زمنية) ثم يستأنف التنفيذ مرة أخرى.
يمكن للمستخدم تحديد المحفزات باستخدام الحلقات (لأثناء، إذا، وإلا) أيضًا داخل هذه الكتلة الأولية بدلاً من إدخال جميع المجموعات يدويًا.
Example:
البداية الأولية
أ = 0؛ ب = 0؛ // بدء التنفيذ
#10 أ = 0؛ ب = 1؛ // يتم التنفيذ عند t = 10 وحدات زمنية
#10 أ = 1؛ ب = 0؛ // يتم التنفيذ عند t = 20 وحدات زمنية
نهاية
أحمق Files
شيء آخر يجب أخذه في الاعتبار هو الإعلان عن $أحمقfiles و$dumpvars داخل الكتلة الأولية (انظر السطر 55-56 في الشكل 5). $أحمقfile يتم استخدامه لتفريغ التغييرات في قيم الشبكات والسجلات في ملف file وهذا ما يسمى حجة لها.
على سبيل المثالampعلى:
$أحمقfile("alu_tb.vcd")؛
سيتم تفريغ التغييرات في a file اسمه alu_tb.vcd. يتم تسجيل التغييرات في file يسمى VCD file الذي يرمز إلى تفريغ تغيير القيمة. يقوم VCD (تفريغ تغيير القيمة) بتخزين كافة المعلومات حول تغييرات القيمة. لا يمكن أن يكون لدينا أكثر من $dump واحدfile البيانات في محاكاة فيريلوج.
الدولارdumpvars يتم استخدامه لتحديد المتغيرات التي سيتم تفريغها (في ملف file المذكورة بواسطة $dumpfile). إن أبسط طريقة لاستخدامها هي دون أي حجة. بناء الجملة العام لـ $dumpvars هو
$dumpvars ( <، >);
يمكننا بشكل أساسي تحديد الوحدات والمتغيرات الموجودة في الوحدات التي سيتم تفريغها. إن أبسط طريقة لاستخدام ذلك هي تعيين المستوى على 0 واسم الوحدة النمطية باعتبارها الوحدة العليا (عادةً وحدة الاختبار العلوي).
$dumpvars(0، alu_tb)؛
عندما يتم تعيين المستوى على 0، ويتم تحديد اسم الوحدة فقط، فإنه يتخلص من جميع متغيرات تلك الوحدة وجميع المتغيرات الموجودة في جميع الوحدات ذات المستوى الأدنى التي تم إنشاء مثيل لها بواسطة هذه الوحدة العليا. إذا لم يتم إنشاء مثيل لأي وحدة بواسطة هذه الوحدة العليا، فلن يتم تغطية متغيرها. شيء آخر، إعلان $أحمقfile يجب أن يأتي قبل $dumpvars أو أي مهام نظام أخرى تحدد dump. هذه تفريغ fileيجب الإعلان عن s قبل مدخلات التحفيز، وإلا فلن يتم حفظ أي قيمة في هذا التفريغ files.
دائما بلوك
على عكس العبارات الأولية، يتم تنفيذ الكتلة دائمًا بشكل متكرر، على الرغم من أن التنفيذ يبدأ عند الوقت t = 0. على سبيل المثالampفإن إشارة الساعة ضرورية لتشغيل الدوائر المتتابعة مثل الفليب فلوب. يجب أن يتم توفيرها بشكل مستمر. ومن ثم، يمكننا كتابة رمز تشغيل الساعة في منصة الاختبار على النحو التالي (انظر السطر 52 في الشكل 5):
دائماً
#10 clk = ~clk;
الوحدة النهائية
يتم تنفيذ العبارة أعلاه بعد 10 ns بدءًا من t = 0. سيتم عكس قيمة clk بعد 10 ns من القيمة السابقة. وبالتالي، يتم توليد إشارة على مدار الساعة بعرض نبضة يبلغ 20 نانوثانية. ولذلك، فإن هذا البيان يولد إشارة بتردد 50 ميغاهيرتز. من المهم ملاحظة أن تهيئة الإشارة تتم قبل الحظر الدائم. إذا لم نقم بجزء التهيئة، ستكون إشارة clk x من t – 0، وبعد 10 ns، سيتم قلبها إلى x أخرى.
منضدة الاختبار ذاتية الفحص
يتضمن اختبار الفحص الذاتي بيانًا للتحقق من الحالة الحالية.
- $عرض تُستخدم مهمة النظام بشكل أساسي لعرض رسائل تصحيح الأخطاء لتتبع تدفق المحاكاة
البداية الأولية
أ = 0 ; ب = 0 ; ج = 0؛ #10؛ // تطبيق المدخلات، انتظر
إذا (ص ! == 1) ابدأ
$display("فشل 000") ؛ //يفحص
ج = 1؛ #10؛ // تطبيق الإدخال، انتظر
نهاية
وإلا إذا (y ! == 0) تبدأ
$display("فشل 001") // تحقق
ب = 1؛ ج = 0; #10؛ نهاية
وإلا إذا (ص!==0)
عرض $ ("فشل 010")؛ //يفحص
نهاية
الوحدة النهائية
$عرض يستخدم لعرض قيم المتغيرات أو السلاسل أو التعبيرات. من السابقين أعلاهample، عندما يتم استيفاء أي من حلقات if-else، فسيعرض سجل المحاكاة $عرض إفادة. يوجد سطر جديد بشكل افتراضي في نهاية السلاسل.
$عرض ("الوقت = %t، A = %b، B = %b، C = % b"، $وقت، أ، ب، ج)؛
سيتم طباعة الأحرف المذكورة في علامات الاقتباس كما هي. يشير الحرف مع % إلى تنسيق السلسلة. نحن نستخدم %b لتمثيل البيانات الثنائية. يمكننا استخدام %d و%h و%o لتمثيل الأرقام العشرية والست عشرية والثمانية على التوالي. يتم استخدام %g للتعبير عن الأعداد الحقيقية. سيتم استبدالها بالقيم خارج عرض الأسعار بالترتيب المذكور. على سبيل المثالample، سيتم عرض البيان أعلاه في سجل المحاكاة على النحو التالي: الوقت = 20، A = 0، B = 1، C = 0
طاولة 1. تنسيقات جدول فيريلوج
دعوى | وصف |
%ح، %ح | العرض بالتنسيق الست عشري |
%د، %د | عرض في شكل عشري |
%ب، %ب | عرض في شكل ثنائي |
٪مم | عرض الاسم الهرمي |
%s، %S | عرض كسلسلة |
%t، %T | عرض في تنسيق الوقت |
%ف، %F | عرض "حقيقي" بالتنسيق العشري |
%ه، %E | عرض "حقيقي" بتنسيق أسي |
$عرض يطبع بشكل أساسي البيانات أو المتغير كما هو في تلك اللحظة من ذلك الوقت مثل printf في لغة C. ويجب أن نذكر $عرض لأي نص يتعين علينا القيام به view في سجل المحاكاة.
- $وقت
$وقت هي مهمة نظام ستعيد الوقت الحالي للمحاكاة.
- $شاشة
$شاشة سوف يقوم بمراقبة البيانات أو المتغير الذي كتب من أجله وكلما تغير المتغير، سيتم طباعته
القيمة المتغيرة. إنه يحقق تأثيرًا مشابهًا باستدعاء $display بعد كل مرة يتم فيها الحصول على أي من الوسائط الخاصة به
تم تحديثه. $شاشة تشبه المهمة التي تم إنشاؤها للتشغيل في خلفية الموضوع الرئيسي الذي يراقب و
يعرض تغييرات القيمة لمتغيرات الوسيطة الخاصة به. $شاشة لديه نفس بناء الجملة مثل $عرض.
$شاشة("الوقت = %t، A = %b، B = %b، C = % b"، $وقت، أ، ب، ج)؛
من الشكل 7، يمكنك ملاحظة أنه تمت إضافة أسطر جديدة من الرموز للتقييم الذاتي لمنصة الاختبار. موضع $عرض و$شاشة البيانات في أقسام مختلفة من طاولة الاختبار سوف تسفر عن نتائج مختلفة (انظر الشكل 8). $وقت المذكورة في هذه البيانات تطبع الوقت الذي تتم فيه طباعة القيمة. في نفس الوقت، لنفترض أن الوحدة 170000، يمكننا أن نرى كيف يوجد فرق في قيمة A وB بسبب $عرض و$شاشة تصريحات.
برنامج جتك ويف
GTKWave هي موجة GTK+ مميزة بالكامل viewمتوافق مع Unix وWin32 وMac OSX الذي يقرأ LXT وLXT2 وVZT وFST وGHW fileبالإضافة إلى VCD/EVCD القياسي fileق ويسمح لهم viewعمل. الرسمية لها webالموقع في http://gtkwave.sourceforge.net/ . GTKWave هو الموصى به viewإيه بواسطة أداة محاكاة Icarus Verilog.
بمجرد نجاح المستخدم في إنشاء منصة اختبار لاختبار وظائف التصميم، يمكن للمستخدم الآن استخدام برنامج GTKWave لإجراء اختبار view الأشكال الموجية.
لتشغيل برنامج GTKWave view الأشكال الموجية، يحتاج المستخدم إلى النقر على زر Simulate Testbench الموجود أعلى شريط الأدوات أو من القائمة الرئيسية Tools → Simulation → Simulate Testbench. إذا لم تكن هناك أخطاء في بناء الجملة، فاعتمادًا على التصميم، يجب إطلاق GTKWave تلقائيًا أو سيتم عرض نتائج المحفزات الموجودة في منصة الاختبار في قسم المسجل بالنافذة.
يقوم برنامج GTKWave بفتح ملف تفريغ تنسيق vcdfile تلقائيا. لا تعرض نافذة GTKWave الشكل الموجي عند فتحها. وهذا يعطي المستخدم فرصة لتحديد الإشارات التي يريدها view ومراقبة. لاختيار الإشارة، يحتاج المستخدم إلى العرض، ويحتاج المستخدم إلى النقر فوق اسم الوحدة/المثيل الخاص به على الجانب الأيسر من النافذة ضمن علامة التبويب SST. من خلال النقر على + لكل مثيل، يمكنك رؤية الإشارات المرتبطة بهذا المثيل في القسم السفلي. بعد ذلك يمكنك سحب الإشارة المطلوبة وإسقاطها أو النقر عليها نقرًا مزدوجًا ليتم عرضها في نافذة الإشارات. يمكنك أيضًا تحديد الكل (CTRL + A) وإدراجها في نافذة الإشارات (انظر الشكل 9).
تتم الآن إضافة الإشارات إلى نافذة الإشارة ولكن لم تتم محاكاتها بعد. بعد إضافة الإشارات المطلوبة إلى نافذة الإشارة، اضغط على لملاءمة الإشارات مع العرض الحالي للنافذة ثم إعادة تحميل الإشارات من إعادة التحميل
الرمز موجود على شريط الأدوات يمكنك الآن رؤية الإشارات بقيمها الخاصة.
قيم الإشارة
بشكل افتراضي، تكون قيم الإشارات بتنسيق سداسي عشري وتكون جميع الموجات ملونة باللون الأخضر (إذا تم تشغيلها بشكل صحيح).
يمكن للمستخدم تغيير خصائص هذه الإشارات عن طريق النقر بزر الماوس الأيمن على الإشارة واختيار تنسيق البيانات أو تنسيق الألوان. يمكن للمستخدم أيضًا إدراج إشارة فارغة لإنشاء أقسام بين مجموعة الإشارات. عندما تحصل على النتيجة البصرية المطلوبة، يمكنك حفظ التكوينات الخاصة بك عن طريق الذهاب File → اكتب حفظ File.
شريط أدوات GTKWave
يسمح شريط الأدوات (انظر الشكل 10) للمستخدم بأداء الوظائف الأساسية للإشارة. دعونا نناقش كل خيار على شريط الأدوات من اليسار إلى اليمين.
- خيارات القائمة: تحت هذا الخيار نستطيع view جميع الميزات المتنوعة للبرنامج التي يمكن استخدامها للتلاعب بالبرنامج. تتم تغطية التفاصيل الموجودة ضمن خيار القائمة هذا ضمن القسم 8 من دليل المستخدم هذا.
- قطع الآثار: يتم استخدامه لحذف/قطع إشارة التحديد من نافذة الإشارة
- نسخ الآثار: يتم استخدامه لنسخ الإشارة المحددة من نافذة الإشارة
- لصق الآثار: يمكن لصق الأثر المنسوخ/المقطع في مكان مختلف في نافذة الإشارة
- زووم فيت: يتم استخدامه لملاءمة الإشارات حسب حجم النافذة التي يختار المستخدم عرضها
- تكبير الصورة: يتم استخدامه لتكبير نافذة الإشارة
- تصغير الصورة: يتم استخدامه لتصغير نافذة الإشارة
- تكبير التراجع: يتم استخدامه للتراجع عن التكبير/التصغير في نافذة الإشارة
- تكبير للبدء: سيؤدي هذا إلى تكبير نافذة الإشارة، وعرض وقت بدء الإشارات.
- التكبير إلى النهاية: سيؤدي هذا إلى تكبير نافذة الإشارة التي تعرض وقت انتهاء الإشارات
- البحث عن الحافة السابقة: يؤدي هذا إلى نقل العلامة إلى الجانب الأيسر للإشارة إلى الحافة السابقة
- ابحث عن الحافة التالية: يؤدي هذا إلى إزاحة العلامة إلى اليمين للإشارة إلى الحافة التالية
- قم بالتمرير إلى الرابط السفلي/العلوي: باستخدام هذا يمكننا تحديد الإطار الزمني الذي يريد المستخدم العرض فيه. على سبيل المثالampلو، يمكننا ضبط الإطار الزمني على 0 ثانية إلى 500 نانو ثانية، وسوف يعرض الإشارات تحت تلك المدة فقط.
- إعادة تحميل: يتم الضغط على زر إعادة التحميل كلما حدث تغيير في الإشارة المعروضة. سيتم إعادة تحميل الإشارة وعرضها وفقًا للمعايير الجديدة. على سبيل المثالampلو، بعد تغيير الإطار الزمني للإشارة، نحتاج إلى إعادة تحميل الإشارة لعرض الإشارة في الإطار الزمني الجديد المحدد.
خيارات القائمة
من الزاوية العلوية اليسرى لبرنامج GTKWave، يمكن للمستخدم الوصول إلى خيارات القائمة عن طريق النقر على الخطوط الرأسية الثلاثة (انظر الشكل 11). يمكن للمستخدم العثور على الخيارات التالية ضمن خيارات القائمة:
File
ال File تحتوي القائمة الفرعية على عناصر مختلفة تتعلق بالوصول fileق، استيراد وتصدير VCD fileوالطباعة والقراءة والكتابة fileق والخروج.
يحرر
يتم استخدام القائمة الفرعية "تحرير" لتنفيذ وظائف مساعدة متنوعة مثل تغيير تمثيل البيانات للقيم في النافذة الفرعية الموجية. باستخدام الخيارات الموجودة ضمن القائمة الفرعية "تحرير"، يمكن للمستخدم تغيير تنسيق بيانات الإشارات، وإعادة ترتيبها، وتبديلها، وتقليمها، وتمييزها، وتجميع الإشارات، والتعليق على الإشارات، وتغيير لون الإشارات، وما إلى ذلك.
بحث
يتم استخدام القائمة الفرعية "بحث" لإجراء عمليات بحث على أسماء وقيم الشبكة. فهو يساعد على أداء الوظائف على مستويات هرمية مختلفة للإشارات والمثيلات الموجودة في VCD file.
وقت
تحتوي القائمة الفرعية للوقت على مجموعة شاملة من الوظائف التي تؤديها أزرار التنقل ولوحة الحالة.
فهو يتيح وظائف بسيطة مرتبطة بالوقت، مثل التكبير/التصغير، والانتقال إلى نقطة زمنية معينة، وتحويل الإشارة في اتجاه معين، وما إلى ذلك.
علامة
يتم استخدام القائمة الفرعية للعلامة لإجراء عمليات معالجة مختلفة على العلامة بالإضافة إلى التحكم في التمرير خارج الشاشة.
إنه يتيح وظيفة إضافة العديد من العلامات على نافذة الإشارة. يُسمح بحد أقصى 26 علامة للأسماء ويجب أن تكون الأوقات مختلفة للجميع.
a. لإضافة علامات في نافذة الإشارة
انقر بزر الماوس الأيسر على النقطة المطلوبة حيث تريد وضع العلامة ثم اضغط على ALT + N. سيؤدي هذا إلى وضع علامة مسماة (A، B، C، وما إلى ذلك) عند النقطة المطلوبة. يمكن للمستخدم الاستمرار في القيام بذلك لمدة 26 موقعًا زمنيًا مختلفًا.
لمقارنة القيمة الزمنية في جميع علامات الأماكن، القائمة ← العلامات ← إظهار بيانات علامة التغيير.
سيؤدي هذا إلى فتح نافذة تحتوي على القيمة الزمنية لكل علامة. يمكن للمستخدم ملاحظة قيمة الوقت يدويًا عند كل علامة موضوعة وطرحها لحساب فارق التوقيت بين علامتين.
b. لإزالة العلامة في نافذة الإشارة
يمكن للمستخدم الذهاب إلى القائمة ← العلامات ← جمع العلامة المسماة. سيؤدي هذا إلى إزالة العلامة الأخيرة الموجودة في نافذة الإشارة. يمكن للمستخدم إزالة جميع العلامات المسماة بالانتقال إلى القائمة → العلامات → جمع كل العلامات المسماة (الشكل 12).
في الشكل 13، يمكننا أن نرى كيف تم تغيير ألوان الإشارة. يمكنك ملاحظة الإشارة الفارغة المضافة إلى نافذة الإشارة أيضًا من خلال التعليق - الإشارة الفارغة.
لاحظ أيضًا وجود 6 علامات مسماة (A - E) ودمج القيمة الزمنية بين هذه العلامات في ملاحظة.
View
ال View يتم استخدام القائمة الفرعية للتحكم في السمات المختلفة التي تتعامل مع العرض الرسومي لعناصر الحالة بالإضافة إلى القيم الموجودة في نافذة الإشارة الفرعية. من هذه القائمة، يمكنك تحويل نافذة الإشارة إلى أبيض وأسود أو ملونة أيضًا. ال View تمكنك القائمة الفرعية أيضًا من تغيير بُعد الوقت الذي يتراوح من ثوانٍ (ثواني) إلى فيكو ثانية (fs). يمكن للمستخدم العثور على هذا الخيار View → مقياس إلى البعد الزمني → خ.
يساعد
تحتوي قائمة المساعدة الفرعية على خيارات لتمكين المساعدة عبر الإنترنت بالإضافة إلى عرض معلومات إصدار البرنامج.
خاتمة
تم إنشاء هذا المستند لمساعدة المستخدم في محاكاة تصميمه بنجاح والتحقق من الوظيفة عن طريق تصحيح صياغة منصة الاختبار المطلوبة واستخدام Icarus Verilog مع GTKWave لعرض أشكال الموجات ومراقبة النتائج.
سجل المراجعة
المراجعة | تاريخ | وصف |
1.00 | 20 مايو 2024 | الإصدار الأولي. |
R19US0011EU0100 Rev.1.0
20 مايو 2024
© 2024 رينيساس للإلكترونيات
المستندات / الموارد
![]() |
برنامج محاكاة رينيساس ForgeFPGA [بي دي اف] دليل المستخدم REN_r19us0011eu0100، محاكاة برامج ForgeFPGA، برامج ForgeFPGA، ForgeFPGA، محاكاة ForgeFPGA، محاكاة البرمجيات، المحاكاة، البرمجيات |