RENESAS ForgeFPGA سافٹ ویئر سمولیشن
اہم معلومات
تخروپن ڈیزائن میں مختلف ان پٹ محرکات کو مختلف اوقات میں لاگو کرنے کی ایک تکنیک ہے تاکہ یہ چیک کیا جا سکے کہ آیا RTL کوڈ مطلوبہ طریقے سے برتاؤ کرتا ہے۔ اس کا استعمال ڈیزائن کی مضبوطی کی تصدیق کے لئے کیا جاتا ہے۔ نقالی صارف کو اجازت دیتا ہے view ڈیزائن میں ڈیزائن کی تفصیل کو سمجھنے کے لیے متعلقہ سگنلز کا ٹائمنگ ڈایاگرام file برتاؤ کرتا ہے
ٹیسٹ بینچز کوڈ کے ٹکڑے ہیں جو تخروپن کے لیے استعمال ہوتے ہیں۔ ایک سادہ ٹیسٹ بینچ یونٹ انڈر ٹیسٹ (UUT) کو انسٹیٹیوٹ کرے گا اور ان پٹ کو چلاتا ہے۔ گو کنفیگر سافٹ ویئر Icarus Verilog (iVerilog) اور GTKWave کا استعمال کرتا ہے تاکہ ٹیسٹ بینچ میں فراہم کردہ محرک کے ساتھ نقلی لہروں کا مشاہدہ کیا جا سکے۔
یہ دستاویز ان اقدامات کی وضاحت کرتی ہے جو آپ کے سسٹم پر Icarus کو انسٹال کرتے وقت اٹھانے کی ضرورت ہے اور ایک کامیاب سمولیشن کو کیسے چلانا ہے۔
Icarus Verilog انسٹال کرنا
a. سے Icarus Verilog (IVerilog) کا تازہ ترین ورژن انسٹال کریں۔ https://bleyer.org/icarus/
b. PATH میں IVerilog ضرور شامل کریں اور اسے GTKWave انسٹال کرنے دیں (شکل 1 دیکھیں)
c. جی او کنفیگر سافٹ ویئر کھولیں اور حصہ منتخب کریں: فورج ورکشاپ کھولنے کے لئے ایس ایل جی 47910 (ریو بی بی) (شکل 2 دیکھیں)۔
d. اوپر ٹول بار کے وسط میں FPGA ایڈیٹر پر کلک کریں یا صارف ونڈو کے وسط میں FPGA کور ڈھانچے پر ڈبل کلک بھی کر سکتا ہے۔
e. ایک نئی ونڈو کھلتی ہے جسے فورج ورکشاپ کہتے ہیں۔ اوپر والے مینو ٹول بار میں، آپشنز → سیٹنگز پر کلک کریں۔ ترتیبات کے ڈائیلاگ باکس میں، صارف کی ترتیبات کے ٹیب کے تحت ٹولز پر جائیں۔ Icarus Verilog اور GTKWave دونوں کے لیے "سسٹم انوائرمنٹ باکس" استعمال کریں کو غیر منتخب کریں۔ آپ کے سسٹم میں محفوظ کردہ Iverilog اور GTKWave کے راستے کو دی گئی جگہ میں شامل کریں (شکل 4 دیکھیں)۔
آپ ٹیسٹ بینچ کی تقلید کرنے کے لیے تیار ہیں اور مندرجہ بالا اقدامات اس بات کو یقینی بناتے ہیں کہ گو کنفیگر سافٹ ویئر پر ٹیسٹ بینچ کی نقل کرتے وقت GTKWave خود بخود لانچ ہو جائے۔
ٹیسٹ بینچ
کسی بھی نظام کو کامیابی کے ساتھ نافذ کرنے کا سب سے اہم مرحلہ ڈیزائن اور اس کی فعالیت کی تصدیق کرنا ہے۔ ہارڈ ویئر کو لاگو کرنے کے بعد ایک پیچیدہ نظام کی تصدیق کرنا دانشمندانہ انتخاب نہیں ہے۔ پیسے، وقت اور وسائل کے لحاظ سے یہ غیر موثر ہے۔ لہذا، ایف پی جی اے کے معاملے میں، ویریلوگ سورس کوڈ کو جانچنے کے لیے ایک ٹیسٹ بینچ استعمال کیا جاتا ہے۔
فرض کریں کہ ہمارے پاس ایک ان پٹ ہے جو 11 بٹس کا ہے، اور ہم تمام ممکنہ ان پٹ کمبی نیشن ویلیو یعنی (211) کے لیے ڈیوائس کو ٹیسٹ کرنا چاہتے ہیں۔ چونکہ یہ امتزاج کی ایک بہت بڑی تعداد ہے، اس لیے اسے دستی طور پر جانچنا ناممکن ہے۔ ایسی صورتوں میں، ٹیسٹ بینچز بہت کارآمد ہوتے ہیں کیونکہ آپ تمام ممکنہ قدروں کے لیے ڈیزائن کو خود بخود جانچ سکتے ہیں اور اس لیے ٹیسٹ ڈیزائن کے قابل اعتماد ہونے کی تصدیق کرتے ہیں۔ ویریلوگ ٹیسٹ بینچز کا استعمال کسی بھی فزیکل ہارڈویئر ڈیوائس کی ضرورت کے بغیر ڈیزائنوں کی نقالی اور تجزیہ کرنے کے لیے کیا جاتا ہے۔
ٹیسٹ کے تحت ایک ڈیزائن، جسے مختصراً DUT کہا جاتا ہے، اس فعالیت کا ایک قابل ترکیب ماڈیول ہے جسے ہم جانچنا چاہتے ہیں۔ دوسرے الفاظ میں، یہ سرکٹ ڈیزائن ہے جسے ہم جانچنا چاہتے ہیں۔ ہم اپنے DUT کو ویریلوگ میں ماڈلنگ کے تین اندازوں میں سے ایک کا استعمال کرتے ہوئے بیان کر سکتے ہیں - گیٹ لیول، ڈیٹا فلو، یا برتاؤ۔
ٹیسٹ بینچ قابل ترکیب نہیں ہے، اس لیے اسے صرف نقلی مقاصد کے لیے استعمال کیا جاتا ہے۔ یہ صارف کو ٹیسٹ بینچ لکھنے کے لیے Verilog تعمیرات کی مکمل رینج استعمال کرنے کی اجازت دیتا ہے جیسے کہ کلیدی الفاظ جیسے "for"، "$display" اور "$monitor" وغیرہ۔ ایک سادہ ٹیسٹ بینچ یونٹ انڈر ٹیسٹ (UUT) یا ڈیوائس انڈر ٹیسٹ (DUT) اور ڈرائیو ان پٹ کو شروع کرے گا۔
ٹیسٹ بینچ کو سمجھنا
ٹیسٹ بینچ میں ٹائم اسکیل کی تعریف
نقل کرتے وقت، سافٹ ویئر کو یہ جاننے کی ضرورت ہوتی ہے کہ وقت کی وضاحت کیسے کی گئی ہے۔ تاخیر کی اکائی کو `ٹائم اسکیل ڈائریکٹو کا استعمال کرتے ہوئے بیان کیا گیا ہے، جو ٹائم یونٹ اور اس کی پیروی کرنے والے ماڈیولز کی درستگی کا تعین کرتا ہے۔ ٹائم اسکیل اس بات کا تعین کرنے میں مدد کرتا ہے کہ وقت کے لحاظ سے # 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
ماڈیول اعلامیہ
کسی بھی ٹیسٹ بینچ میں ماڈیول اعلامیہ مرکزی وریلوگ کوڈ کے برعکس ہے۔ ایک ٹیسٹ بینچ میں ، ماڈیول کو بغیر کسی ٹرمینل بندرگاہ کے ساتھ اعلان کیا جاتا ہے۔ (شکل 25 میں لائن 5 دیکھیں)
نحو:
ماڈیول ;
ماڈیول ڈیکلریشن کے بعد ان پٹ اور آؤٹ پٹ سگنلز کی وضاحت کی جاتی ہے جو پہلے مین ڈیزائن میں بیان کیے گئے تھے۔ file.
ہم سمولیشن کے دوران سگنلز چلانے اور نگرانی کرنے کے لیے دو قسم کے سگنل استعمال کرتے ہیں۔ reg ڈیٹا ٹائپ اس قدر کو برقرار رکھے گا جب تک کہ اسے ایک نئی قدر تفویض نہیں کی جاتی ہے۔ اس ڈیٹا ٹائپ کو صرف ہمیشہ یا ابتدائی بلاک میں ایک قدر تفویض کی جا سکتی ہے۔
وائر ڈیٹا ٹائپ فزیکل کنکشن کی طرح ہے۔ یہ وہ قدر رکھے گا جو پورٹ، تفویض بیان، یا reg کے ذریعے چلائی جاتی ہے۔ اس ڈیٹا کی قسم کو ابتدائی یا ہمیشہ بلاک میں استعمال نہیں کیا جا سکتا۔ کسی بھی پیرامیٹر اور انٹیجر کا اعلان بھی اس سیکشن میں کیا جاتا ہے۔
Exampلی:
Reg a,b; // ایچ ڈی ایل کوڈ میں ان پٹ کو ٹیسٹ بینچ میں ریگ کے طور پر بیان کیا گیا ہے۔
تار y; // ایچ ڈی ایل میں آؤٹ پٹ سگنل کو ٹیسٹ بینچ میں تار کے طور پر بیان کیا گیا ہے۔
DUT انسٹی ٹیوشن
ٹیسٹ بینچ کا مقصد اس بات کی تصدیق کرنا ہے کہ آیا ہمارا DUT ماڈیول کام کر رہا ہے۔ لہذا، ماڈیول کو جانچنے کے لیے ہمیں اپنے ڈیزائن ماڈیول کو فوری بنانے کی ضرورت ہے۔
نحو:
(. (سگنل 1)، . سگنل1>(سگنل2))؛
Exampلی:
ALU d0 (.a(a)، // ALU میں سگنل "a" کو ALU_tb ماڈیول میں "a" سے منسلک ہونا چاہیے
.b(b)، // ALU میں سگنل "b" ALU_tb ماڈیول میں "b" سے منسلک ہونا چاہیے
.c(c)) ؛// ALU میں سگنل "c" ALU_tb ماڈیول میں "c" سے منسلک ہونا چاہئے
ہم نے DUT ماڈیول ALU کو ٹیسٹ ماڈیول میں انسٹینٹیٹ کیا ہے۔ مثال کا نام (d0) صارف کا انتخاب ہے۔ ایک مدت کے ساتھ سگنلز۔ ان کے سامنے ALU ماڈیول کے اندر سگنلز کے نام ہیں، جب کہ ٹیسٹ بینچ میں جس تار یا ریگ سے وہ جڑتے ہیں وہ قوسین () میں سگنل کے آگے ہے۔ ہر پورٹ کنکشن کو الگ لائن میں کوڈ کرنے کی سفارش کی جاتی ہے تاکہ کوئی بھی کمپلیشن ایرر میسج درست طریقے سے اس لائن نمبر کی طرف اشارہ کرے جہاں غلطی ہوئی ہے۔ چونکہ یہ کنکشن نام سے بنائے گئے ہیں، اس لیے جس ترتیب سے یہ ظاہر ہوتے ہیں وہ غیر متعلق ہے۔
DUT instantiation ان ماڈیولز کے لیے بھی بنایا جا سکتا ہے جہاں testbench ماڈیول کے مختلف سگنل کے نام ہوتے ہیں۔ سگنلز کی درست نقشہ سازی وہی ہے جو فوری کرتے وقت اہم ہے۔
Exampلی:
ALU d0 (.a(A)، // ALU میں سگنل "a" کو ALU_tb ماڈیول میں "A" سے منسلک ہونا چاہیے
.clk(گھڑی)، // ALU میں سگنل "clk" کو "گھڑی" ALU_tb ماڈیول سے منسلک ہونا چاہیے
.out(OUT)) ; // ALU میں سگنل "آؤٹ" کو ALU_tb ماڈیول میں "OUT" سے منسلک ہونا چاہئے
ٹیسٹ بینچ میں ہمیشہ اور ابتدائی بلاک
ویریلوگ میں دو ترتیب وار بلاکس ہیں، ابتدائی اور ہمیشہ۔ ان بلاکس میں ہی ہم محرک کا اطلاق کرتے ہیں۔
ابتدائی بلاک
ابتدائی بلاک جو صرف ایک بار عمل میں لایا جاتا ہے اور بلاک کی آخری لائن کے مکمل ہونے پر ختم ہوجاتا ہے۔ محرک ابتدائی بلاک میں لکھا جاتا ہے۔ (شکل 54 میں سطر 72-5 دیکھیں)
نحو:
..
ابتدائی آغاز
$ڈمپfile();
$dumpvars();
..(محرک داخل کریں)
اختتام
ابتدائی بلاک سمولیشن کے آغاز پر t = 0 پر اپنا عمل شروع کرتا ہے۔ آغاز اور اختتام کے درمیان پہلی لائن سے شروع کرتے ہوئے، ہر لائن اوپر سے نیچے تک اس وقت تک عمل کرتی ہے جب تک کہ تاخیر نہ ہو جائے۔ جب تاخیر ہو جاتی ہے، تو اس بلاک کا عمل اس وقت تک انتظار کرتا ہے جب تک کہ تاخیر کا وقت (10 ٹائم یونٹ) گزر نہ جائے اور پھر دوبارہ عمل درآمد شروع کر دیا جائے۔
صارف تمام مجموعوں کو دستی طور پر داخل کرنے کے بجائے اس ابتدائی بلاک کے اندر لوپس (کے لیے، جبکہ، اگر-اور) کا استعمال کرتے ہوئے محرکات کی وضاحت کر سکتا ہے۔
Exampلی:
ابتدائی شروعات
a = 0 ؛ b = 0 ؛ // عمل درآمد شروع کریں
#10 a = 0 ؛ b = 1 ؛ // عملدرآمد t = 10-یونٹ وقت پر ہے
#10 a = 1 ؛ b = 0 ؛ // عملدرآمد t = 20-یونٹ وقت پر ہے
اختتام
ڈمپ Files
ذہن میں رکھنے کے لئے ایک اور چیز $ کا اعلان ہےڈمپfiles اور $dumpvars ابتدائی بلاک کے اندر (شکل 55 میں لائن 56-5 دیکھیں)۔ $ڈمپfile نیٹ اور رجسٹر کی قدروں میں تبدیلیوں کو a میں پھینکنے کے لیے استعمال کیا جاتا ہے۔ file جسے اس کی دلیل کا نام دیا گیا ہے۔
سابق کے لیےampلی:
$ڈمپfile("alu_tb.vcd")؛
a میں تبدیلیاں پھینک دیں گے۔ file alu_tb.vcd کا نام دیا گیا۔ تبدیلیاں a میں درج ہیں file VCD کہا جاتا ہے۔ file اس کا مطلب ویلیو چینج ڈمپ ہے۔ ایک وی سی ڈی (ویلیو چینج ڈمپ) قدر میں تبدیلیوں کے بارے میں تمام معلومات کو محفوظ کرتا ہے۔ ہمارے پاس ایک سے زیادہ ڈمپ نہیں ہوسکتے ہیںfile ویریلوگ تخروپن میں بیانات۔
$dumpvars یہ بتانے کے لیے استعمال کیا جاتا ہے کہ کون سے متغیر کو ڈمپ کیا جانا ہے (میں file $dump کے ذریعہ ذکر کیا گیا ہے۔file)۔ اسے استعمال کرنے کا آسان طریقہ بغیر کسی دلیل کے ہے۔ $dumpvars کا عمومی نحو ہے۔
$dumpvars ( <، >)
ہم بنیادی طور پر یہ بتا سکتے ہیں کہ کون سے ماڈیولز، اور کون سے ماڈیولز میں متغیرات کو پھینک دیا جائے گا۔ اس کو استعمال کرنے کا آسان ترین طریقہ یہ ہے کہ لیول کو 0 اور ماڈیول کا نام بطور ٹاپ ماڈیول (عام طور پر ٹاپ ٹیسٹ بینچ ماڈیول) پر سیٹ کریں۔
$dumpvars(0، alu_tb)؛
جب لیول کو 0 پر سیٹ کیا جاتا ہے، اور صرف ماڈیول کا نام بیان کیا جاتا ہے، تو یہ اس ماڈیول کے تمام متغیرات اور اس ٹاپ ماڈیول کے ذریعہ بنائے گئے تمام نچلے درجے کے ماڈیولز میں موجود تمام متغیرات کو پھینک دیتا ہے۔ اگر کوئی ماڈیول اس ٹاپ ماڈیول کے ذریعہ انسٹینٹ نہیں ہوتا ہے تو ، اس کے متغیر کا احاطہ نہیں کیا جائے گا۔ ایک اور چیز ، اعلان $ کا اعلانڈمپfile $dumpvars یا سسٹم کے کسی دوسرے کام سے پہلے آنا چاہیے جو ڈمپ کی وضاحت کرتا ہے۔ یہ ڈمپ fileمحرک ان پٹ سے پہلے s کا اعلان کیا جانا چاہیے ورنہ ان ڈمپ میں کوئی قدر محفوظ نہیں ہوگی۔ files.
ہمیشہ بلاک کریں۔
ابتدائی بیانات کے برعکس، ایک ہمیشہ بلاک بار بار عمل میں آتا ہے، حالانکہ عمل درآمد t = 0 پر شروع ہوتا ہے۔ampلی، فلپ فلاپس کی طرح ترتیب وار سرکٹس کے آپریشن کے لیے گھڑی کا سگنل ضروری ہے۔ اسے مسلسل فراہم کرنے کی ضرورت ہے۔ لہذا، ہم ایک ٹیسٹ بینچ میں گھڑی کے آپریشن کے لیے کوڈ لکھ سکتے ہیں جیسا کہ (شکل 52 میں لائن 5 دیکھیں):
ہمیشہ
#10 clk = ~ clk؛
endmodule
اوپر بیان t = 10 سے شروع ہونے والے 0 ns کے بعد عمل میں آتا ہے۔ clk کی قدر پچھلی قدر سے 10 ns کے بعد الٹی ہو جائے گی۔ اس طرح، 20 این ایس پلس چوڑائی کا ایک گھڑی سگنل پیدا کرنا. لہذا، یہ بیان فریکوئنسی 50 میگاہرٹز کا سگنل پیدا کرتا ہے۔ یہ نوٹ کرنا ضروری ہے کہ، سگنل کی ابتدا ہمیشہ بلاک سے پہلے کی جاتی ہے۔ اگر ہم ابتدائی حصے کو نہیں کرتے ہیں تو، clk سگنل t - 0 سے x ہو جائے گا، اور 10 ns کے بعد، یہ دوسرے x میں الٹا جائے گا۔
خود چیکنگ ٹیسٹ بینچ
خود چیکنگ ٹیسٹ بینچ میں موجودہ حالت کو چیک کرنے کے لیے ایک بیان شامل ہے۔
- $ڈسپلے سسٹم ٹاسک بنیادی طور پر تخروپن کے بہاؤ کو ٹریک کرنے کے لیے ڈیبگ پیغامات کو ظاہر کرنے کے لیے استعمال ہوتے ہیں۔
ابتدائی آغاز
A = 0 ; b = 0 ; c = 0; #10؛ // ان پٹ کا اطلاق کریں، انتظار کریں۔
اگر (y ! == 1) شروع کریں۔
$display ("000 ناکام")؛ // چیک کریں۔
c = 1; #10؛ // ان پٹ کا اطلاق کریں، انتظار کریں۔
اختتام
ورنہ اگر ( y ! == 0) شروع کریں۔
$display("001 ناکام") // چیک کریں۔
b = 1; c = 0; #10 ؛ اختتام
ورنہ اگر(y!==0)
$display ("010 ناکام")؛ // چیک کریں۔
اختتام
endmodule
$ڈسپلے متغیرات، تاروں، یا اظہار کی قدروں کو ظاہر کرنے کے لیے استعمال کیا جاتا ہے۔ مذکورہ سابق سےample، جب بھی if-else لوپ میں سے کوئی بھی مطمئن ہو جائے گا، تو سمیلیٹر لاگ اپنے متعلقہ $ کو ظاہر کرے گا۔ڈسپلے بیان ڈور کے آخر میں بطور ڈیفالٹ ایک نئی لائن ہوتی ہے۔
$ڈسپلے ("وقت = %t، A = %b، B = %b، C = % b"، $وقت، اے، بی، سی)؛
قیمتوں میں مذکور کردار جیسے ہی چھاپے جائیں گے۔ ٪ کے ساتھ ساتھ لیٹر اسٹرنگ فارمیٹ کی نشاندہی کرتا ہے۔ ہم بائنری ڈیٹا کی نمائندگی کے لیے %b استعمال کرتے ہیں۔ ہم بالترتیب ڈیسیمل، ہیکسا ڈیسیمل اور آکٹل کی نمائندگی کے لیے %d، %h، %o استعمال کر سکتے ہیں۔ %g حقیقی اعداد کے اظہار کے لیے استعمال ہوتا ہے۔ ان کو ذکر کردہ ترتیب میں اقتباس سے باہر کی اقدار سے بدل دیا جائے گا۔ سابق کے لیےample، مندرجہ بالا بیان نقلی لاگ میں دکھایا جائے گا جیسے: وقت = 20، A = 0، B =1، C = 0
میز 1. ویریلوگ ٹیبل فارمیٹس
دلیل | تفصیل |
%h، %H | ہیکساڈیسیمل فارمیٹ میں ڈسپلے کریں۔ |
%d، %D | ڈیسیمل فارم میں ڈسپلے کریں۔ |
%b، %B | بائنری فارمیٹ میں ڈسپلے کریں۔ |
%m، %M | درجہ بندی کا نام دکھائیں۔ |
%s، %S | تار کے طور پر ڈسپلے کریں |
%t، %T | وقت کی شکل میں ڈسپلے کریں۔ |
%f، %F | اعشاریہ کی شکل میں 'حقیقی' دکھائیں۔ |
٪ e ، ٪ e | ظاہری شکل میں 'حقیقی' دکھائیں۔ |
$ڈسپلے بنیادی طور پر ڈیٹا یا متغیر کو پرنٹ کرتا ہے جیسا کہ اس وقت کے اس وقت ہوتا ہے جیسے C میں printf۔ ہمیں $ کا ذکر کرنا چاہیے۔ڈسپلے ہمیں جو بھی متن کرنا ہے۔ view نقلی لاگ میں.
- $وقت
$وقت ایک سسٹم ٹاسک ہے جو نقلی کا موجودہ وقت واپس کر دے گا۔
- $مانیٹر
$مانیٹر ڈیٹا یا متغیر کی نگرانی کرے گا جس کے لیے یہ لکھا گیا ہے اور جب بھی متغیر تبدیل ہوتا ہے، یہ پرنٹ کرے گا۔
تبدیل شدہ قدر. یہ $display کو کال کرنے کا ایسا ہی اثر حاصل کرتا ہے جب بھی اس کے کوئی بھی دلائل ملتے ہیں۔
تازہ کاری $مانیٹر ایک کام کی طرح ہے جو مرکزی دھاگے کے پس منظر میں چلانے کے لیے تیار کیا جاتا ہے جو مانیٹر کرتا ہے اور
اپنے دلیل متغیرات کی قدر میں تبدیلیاں دکھاتا ہے۔ $مانیٹر $ کے طور پر ایک ہی نحو ہےڈسپلے.
$مانیٹر("وقت = %t، A = %b، B = %b، C = % b"، $وقت، اے، بی، سی)؛
شکل 7 سے آپ دیکھ سکتے ہیں کہ ٹیسٹ بینچ کا خود اندازہ لگانے کے لیے کوڈز کی نئی لائنیں شامل کی گئی ہیں۔ $ کی جگہ کا تعینڈسپلے اور $مانیٹر ٹیسٹ بینچ کے مختلف حصوں میں بیانات مختلف نتائج برآمد کریں گے (شکل 8 دیکھیں)۔ $وقت ان بیانات میں مذکور اس وقت کو پرنٹ کرتا ہے جس کے لیے قیمت پرنٹ کی جا رہی ہے۔ اسی وقت یونٹ کہتے ہیں 170000، ہم دیکھ سکتے ہیں کہ $ کی وجہ سے A اور B کی قدر میں کتنا فرق ہے۔ڈسپلے اور $مانیٹر بیانات
جی ٹی کے ویو سافٹ ویئر
GTKWave ایک مکمل خصوصیات والی GTK+ لہر ہے۔ viewیونکس، ون 32، اور میک OSX کے لیے جو LXT، LXT2، VZT، FST، اور GHW پڑھتا ہے files کے ساتھ ساتھ معیاری VCD/EVCD files اور ان کی اجازت دیتا ہے۔ viewing اس کا سرکاری webسائٹ پر ہے http://gtkwave.sourceforge.net/ . GTKWave تجویز کردہ ہے۔ viewer بذریعہ Icarus Verilog تخروپن ٹول۔
ایک بار جب صارف نے ڈیزائن کی فعالیت کو جانچنے کے لیے ایک ٹیسٹ بینچ کامیابی کے ساتھ بنایا ہے، صارف اب GTKWave سافٹ ویئر استعمال کر سکتا ہے۔ view لہر کی شکلیں
GTKWave سافٹ ویئر شروع کرنے کے لیے view ویوفارمز میں، صارف کو ٹول بار کے اوپری حصے پر یا مین مینو ٹولز → Simulation→ Simulate Testbench سے Simulate Testbench بٹن پر کلک کرنے کی ضرورت ہے۔ اگر کوئی نحوی غلطیاں نہیں ہیں تو ڈیزائن کے لحاظ سے، GTKWave کو خود بخود لانچ کیا جانا چاہیے یا ٹیسٹ بینچ میں محرکات کے نتائج ونڈو کے لاگر سیکشن میں دکھائے جائیں گے۔
GTKWave سافٹ ویئر .vcd فارمیٹ ڈمپ کو کھولتا ہے۔file خود بخود GTKWave ونڈو جب کھلتی ہے تو ویوفارم کو ظاہر نہیں کرتی ہے۔ اس سے صارف کو یہ موقع ملتا ہے کہ وہ کون سے سگنلز کا انتخاب کرنا چاہتا ہے۔ view اور مشاہدہ کریں. سگنل کو منتخب کرنے کے لیے، صارف کو ڈسپلے کرنے کی ضرورت ہے، صارف کو SST ٹیب کے نیچے ونڈو کے بائیں جانب اپنے ماڈیول/مثال کے نام پر کلک کرنے کی ضرورت ہے۔ ہر مثال کے + پر کلک کرنے سے، آپ نیچے والے حصے میں اس مثال کے ساتھ متعلقہ سگنلز دیکھ سکتے ہیں۔ پھر آپ مطلوبہ سگنل کو گھسیٹ کر چھوڑ سکتے ہیں یا سگنل ونڈو میں ظاہر ہونے کے لیے ان پر ڈبل کلک کر سکتے ہیں۔ آپ سبھی (CTRL + A) کو بھی منتخب کر سکتے ہیں اور انہیں سگنل ونڈو میں داخل کر سکتے ہیں (شکل 9 دیکھیں)۔
سگنلز اب سگنل ونڈو میں شامل کر دیے گئے ہیں لیکن اس کی نقل تیار کرنا ابھی باقی ہے۔ سگنل ونڈو میں مطلوبہ سگنلز شامل کرنے کے بعد، پر کلک کریں۔ سگنلز کو ونڈو کی موجودہ چوڑائی پر فٹ کرنے کے لیے اور پھر دوبارہ لوڈ سے سگنلز کو دوبارہ لوڈ کریں۔
علامت ٹول بار پر موجود ہے۔ اب آپ سگنلز کو ان کی متعلقہ اقدار کے ساتھ دیکھ سکتے ہیں۔
سگنل ویلیوز
پہلے سے طے شدہ طور پر، سگنلز کی قدریں ہیکساڈیسیمل فارمیٹ میں ہوتی ہیں اور تمام لہریں سبز رنگ کی ہوتی ہیں (اگر صحیح طریقے سے چل رہی ہوں)۔
صارف سگنل پر دائیں کلک کرکے اور ڈیٹا فارمیٹ یا کلر فارمیٹ کا انتخاب کرکے ان سگنل کی خصوصیات کو تبدیل کرسکتا ہے۔ صارف سگنلز کے گروپ کے درمیان حصے بنانے کے لیے ایک خالی سگنل بھی ڈال سکتا ہے۔ جب آپ کے پاس مطلوبہ نظری نتیجہ ہے، تو آپ جا کر اپنی کنفیگریشن محفوظ کر سکتے ہیں۔ File → محفوظ کریں لکھیں۔ File.
GTKWave ٹول بار
ٹول بار (شکل 10 دیکھیں) صارف کو سگنل کے لیے بنیادی کام انجام دینے کی اجازت دیتی ہے۔ آئیے ٹول بار کے ہر آپشن پر بائیں سے دائیں بحث کریں۔
- مینو کے اختیارات: اس اختیار کے تحت ہم کر سکتے ہیں۔ view سافٹ ویئر کی تمام مختلف خصوصیات جو سافٹ ویئر کے ساتھ کھیلنے کے لیے استعمال کی جا سکتی ہیں۔ اس مینو آپشن کے تحت تفصیلات اس صارف گائیڈ کے سیکشن 8 کے تحت شامل ہیں۔
- نشانات کاٹیں۔: یہ سگنل ونڈو سے منتخب سگنل کو حذف/کاٹنے کے لیے استعمال ہوتا ہے۔
- نشانات کاپی کریں۔: یہ سگنل ونڈو سے منتخب سگنل کو کاپی کرنے کے لیے استعمال ہوتا ہے۔
- نشانات چسپاں کریں۔: کاپی شدہ/کٹ ٹریس کو سگنل ونڈو میں مختلف جگہ پر چسپاں کیا جا سکتا ہے۔
- زوم فٹ: اس کا استعمال ونڈو کے سائز کے مطابق سگنلز کو فٹ کرنے کے لیے کیا جاتا ہے جسے صارف ڈسپلے کرنے کے لیے منتخب کرتا ہے۔
- زوم ان: یہ سگنل ونڈو کو زوم کرنے کے لیے استعمال ہوتا ہے۔
- زوم آؤٹ: یہ سگنل ونڈو کو زوم کرنے کے لئے استعمال ہوتا ہے
- زوم انڈو: یہ سگنل ونڈو پر زوم ان/آؤٹ کو کالعدم کرنے کے لیے استعمال ہوتا ہے۔
- شروع کرنے کے لیے زوم کریں۔: یہ سگنل ونڈو کو زوم کرے گا، سگنل کے آغاز کا وقت دکھائے گا۔
- زوم ختم کرنے کے لئے: یہ سگنل ونڈو کو زوم کرے گا جو سگنلز کے اختتامی وقت کو ظاہر کرے گا۔
- پچھلا کنارہ تلاش کریں۔: یہ مارکر کو بائیں جانب منتقل کرتا ہے جو پچھلے کنارے کی نشاندہی کرتا ہے۔
- اگلا کنارہ تلاش کریں۔: یہ مارکر کو دائیں طرف منتقل کرتا ہے جو اگلے کنارے کی نشاندہی کرتا ہے۔
- نچلے / اوپری بانڈ کو سکرول کریں۔: اس کا استعمال کرتے ہوئے ہم وہ ٹائم فریم سیٹ کر سکتے ہیں جس میں صارف ڈسپلے کرنا چاہتا ہے۔ سابق کے لیےampلی، ہم ٹائم فریم کو 0 سیکنڈ سے 500 این ایس پر سیٹ کر سکتے ہیں، یہ صرف اس دورانیے کے اندر سگنلز دکھائے گا۔
- دوبارہ لوڈ کریں: جب بھی ڈسپلے سگنل میں کوئی تبدیلی آتی ہے تو دوبارہ لوڈ کو دبایا جاتا ہے۔ یہ نئے پیرامیٹرز کے مطابق سگنل کو دوبارہ لوڈ اور ڈسپلے کرے گا۔ سابق کے لیےample، سگنل کے ٹائم فریم کو تبدیل کرنے کے بعد، ہمیں نئے سیٹ ٹائم فریم میں سگنل کو ظاہر کرنے کے لیے سگنل کو دوبارہ لوڈ کرنے کی ضرورت ہے۔
مینو کے اختیارات
جی ٹی کے ویو سافٹ ویئر کے بائیں اوپری کونے سے ، صارف تین عمودی لائنوں پر کلک کرکے مینو کے اختیارات تک رسائی حاصل کرسکتا ہے (شکل 11 دیکھیں)۔ صارف مینو کے اختیارات کے تحت درج ذیل اختیارات تلاش کرسکتا ہے:
File
دی File ذیلی مینیو میں رسائی سے متعلق مختلف اشیاء شامل ہیں files ، درآمد کرنے والی VCD کو درآمد کرنا files، پرنٹنگ، اور پڑھنا/لکھنا files اور باہر نکل رہا ہے۔
ترمیم کریں۔
ترمیم ذیلی مینیو کو مختلف افادیت کے افعال انجام دینے کے لیے استعمال کیا جاتا ہے جیسے لہر سب ونڈو میں اقدار کی ڈیٹا کی نمائندگی کو تبدیل کرنا۔ ایڈیٹ سب مینیو کے تحت آپشنز کا استعمال کرتے ہوئے، صارف سگنلز کے ڈیٹا فارمیٹ کو تبدیل کر سکتا ہے، انہیں دوبارہ ترتیب دے سکتا ہے، انہیں شفٹ کر سکتا ہے، اسے تراش سکتا ہے، اسے نمایاں کر سکتا ہے، سگنلز کو گروپ کر سکتا ہے، سگنلز پر تبصرہ کر سکتا ہے، سگنلز کا رنگ تبدیل کر سکتا ہے۔
تلاش کریں
سرچ ذیلی مینیو خالص ناموں اور اقدار پر تلاشی انجام دینے کے لئے استعمال ہوتا ہے۔ یہ VCD میں سگنل اور مثالوں کے مختلف درجہ بندی کی سطح پر افعال انجام دینے میں مدد کرتا ہے file.
وقت
ٹائم ذیلی مینو میں نیوی گیشنز اور اسٹیٹس پینل کے بٹنوں کے ذریعے کیے گئے فنکشنز کا ایک سپر سیٹ ہوتا ہے۔
یہ آسان، وقت سے متعلق، فنکشنز جیسے زومنگ، کسی خاص ٹائم پوائنٹ پر جانا، سگنل کو ایک خاص سمت میں منتقل کرنے وغیرہ کو قابل بناتا ہے۔
مارکر
مارکر ذیلی مینیو کو مارکر پر مختلف ہیرا پھیری کرنے کے ساتھ ساتھ اسکرولنگ آف اسکرین کو کنٹرول کرنے کے لیے استعمال کیا جاتا ہے۔
یہ سگنل ونڈو پر متعدد مارکر شامل کرنے کی فعالیت کو قابل بناتا ہے۔ زیادہ سے زیادہ 26 نام مارکر کی اجازت ہے اور سب کے اوقات مختلف ہونے چاہئیں۔
a. سگنل ونڈو میں مارکر شامل کرنے کے لیے
مطلوبہ مقام پر بائیں کلک کریں جہاں آپ مارکر رکھنا چاہتے ہیں اور ALT + N دبائیں۔ یہ مطلوبہ مقام پر ایک نامزد مارکر (A, B, C, وغیرہ) رکھے گا۔ صارف 26 مختلف وقت کے مقامات کے لیے یہ کام جاری رکھ سکتا ہے۔
تمام جگہوں کے مارکر پر وقت کی قدر کا موازنہ کرنے کے لیے، مینو → مارکر → تبدیلی مارکر ڈیٹا دکھائیں۔
اس سے ہر مارکر پر وقت کی قیمت کے ساتھ ونڈو کھل جائے گی۔ صارف رکھے ہوئے ہر مارکر پر وقت کی قیمت کو دستی طور پر نوٹ کرسکتا ہے اور 2 مارکر کے مابین وقت کے فرق کا حساب لگانے کے لئے ان کو گھٹا سکتا ہے۔
b. سگنل ونڈو میں مارکر کو ہٹانے کے لیے
صارف مینو → مارکرز → جمع نامی مارکر پر جا سکتا ہے۔ یہ سگنل ونڈو میں رکھے گئے آخری نام والے مارکر کو ہٹا دے گا۔ صارف مینو → مارکرز → تمام نامزد مارکر کو جمع کر کے تمام نامزد مارکروں کو ہٹا سکتا ہے (شکل 12)۔
شکل 13 میں، ہم دیکھ سکتے ہیں کہ سگنل کے رنگ کیسے بدلے گئے ہیں۔ آپ سگنل ونڈو میں شامل کیے گئے ایک خالی سگنل کا مشاہدہ کر سکتے ہیں اور ساتھ ہی ایک تبصرہ - خالی سگنل۔
اس کے علاوہ 6 نامزد مارکروں (A – E) کی موجودگی اور ps میں ان مارکروں کے درمیان وقت کی قدر کی مطابقت کو بھی نوٹ کریں۔
View
دی View ذیلی مینیو کا استعمال اسٹیٹس آئٹمز کے گرافیکل رینڈرنگ کے ساتھ ساتھ سگنل ذیلی ونڈو میں اقدار کو کنٹرول کرنے کے لیے کیا جاتا ہے۔ اس مینو سے، آپ سگنل ونڈو کو بلیک اینڈ وائٹ یا رنگین میں بھی تبدیل کر سکتے ہیں۔ دی View ذیلی مینیو آپ کو وقت کے طول و عرض کو سیکنڈ (سیکنڈ) سے فیکو سیکنڈ (fs) تک تبدیل کرنے کے قابل بناتا ہے۔ صارف یہ آپشن تلاش کر سکتا ہے۔ View → اسکیل ٹو ٹائم ڈائمینشن → fs۔
مدد
مدد کے ذیلی مینو میں آن لائن مدد کو فعال کرنے کے ساتھ ساتھ پروگرام کے ورژن کی معلومات کو ظاہر کرنے کے اختیارات شامل ہیں۔
نتیجہ
یہ دستاویز صارف کو ان کے ڈیزائن کی کامیابی کے ساتھ نقل کرنے اور مطلوبہ ٹیسٹ بینچ کے مسودے کو درست کرکے اور جی ٹی کے ویو کے ساتھ Icarus Verilog کا استعمال کرتے ہوئے ویوفارمز کو ظاہر کرنے اور نتائج کا مشاہدہ کرکے فعالیت کی تصدیق کرنے میں مدد کرنے کے لیے بنائی گئی تھی۔
نظرثانی کی تاریخ
نظر ثانی | تاریخ | تفصیل |
1.00 | 20 مئی 2024 | ابتدائی رہائی۔ |
R19US0011EU0100 Rev.1.0
20 مئی 2024
© 2024 Renesas Electronics
دستاویزات / وسائل
![]() |
RENESAS ForgeFPGA سافٹ ویئر سمولیشن [پی ڈی ایف] یوزر گائیڈ REN_r19us0011eu0100, ForgeFPGA Software Simulation, ForgeFPGA Software, ForgeFPGA, ForgeFPGA سمولیشن, Software Simulation, Simulation, Software |