RENESAS ForgeFPGA سافٽ ويئر سموليشن
اهم معلومات
Simulation مختلف وقتن تي ڊزائين ۾ مختلف انپٽ اسٽمولس کي لاڳو ڪرڻ جي ٽيڪنڪ آهي چيڪ ڪرڻ لاءِ ته ڇا RTL ڪوڊ ارادي طريقي سان عمل ڪري ٿو. اهو ڊزائن جي مضبوطي جي تصديق ڪرڻ لاء استعمال ڪيو ويندو آهي. سموليشن صارف کي اجازت ڏئي ٿي view لاڳاپيل سگنلن جي ٽائمنگ ڊاگرام کي سمجھڻ لاءِ ته ڊزائن ۾ ڊيزائن جي وضاحت ڪيئن آھي file برتاءُ ڪري ٿو.
ٽيسٽ بينچز ڪوڊ جا ٽڪرا آھن جيڪي تخليق لاءِ استعمال ٿين ٿا. هڪ سادي ٽيسٽ بينچ يونٽ انڊر ٽيسٽ (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 Software کوليو ۽ حصو چونڊيو: SLG47910 (Rev BB) فورج ورڪشاپ کولڻ لاءِ (ڏسو شڪل 2).
d. ٽول بار جي چوٽي تي FPGA ايڊيٽر تي ڪلڪ ڪريو يا صارف ونڊو جي وچ ۾ FPGA ڪور ڍانچي تي ڊبل ڪلڪ ڪري سگھي ٿو.
e. هڪ نئين ونڊو کلي ٿي جنهن کي فورج ورڪشاپ سڏيو ويندو آهي. مينيو ٽول بار ۾ مٿي تي، ڪلڪ ڪريو اختيارن → سيٽنگون. سيٽنگون ڊائلاگ باڪس ۾، ٽولز ڏانھن وڃو صارف سيٽنگون ٽيب. Icarus Verilog ۽ GTKWave ٻنهي لاءِ ”سسٽم ماحوليات باڪس“ استعمال ڪريو کي منتخب ڪريو. Iverilog ۽ GTKWave جو رستو شامل ڪريو توھان جي سسٽم ۾ محفوظ ڪيل خلا ۾ (ڏسو شڪل 4).
توھان سڀ ھڪڙي ٽيسٽ بينچ کي ٺاھڻ لاءِ تيار آھيو ۽ مٿين قدمن کي يقيني بڻائي ٿو ته GTKWave خودڪار طريقي سان لانچ ٿئي ٿو جڏھن ھڪڙي ٽيسٽ بينچ کي Go Configure سافٽ ويئر تي ٺاھيو وڃي.
ٽيسٽ بينچ
ڪنهن به نظام کي ڪاميابيءَ سان لاڳو ڪرڻ ۾ سڀ کان اهم قدم ڊزائن ۽ ان جي ڪارڪردگيءَ جي تصديق ڪرڻ آهي. هارڊويئر کي لاڳو ڪرڻ کان پوء هڪ پيچيده سسٽم جي تصديق ڪرڻ هڪ حڪمت وارو انتخاب ناهي. اهو پئسو، وقت ۽ وسيلن جي لحاظ کان غير موثر آهي. انهيء ڪري، FPGA جي صورت ۾، هڪ ٽيسٽ بينچ استعمال ڪيو ويندو آهي ويريلوگ سورس ڪوڊ کي جانچڻ لاءِ.
فرض ڪريو اسان وٽ هڪ ان پٽ آهي جيڪو 11 بِٽس جو آهي، ۽ اسان چاهيون ٿا ته ڊوائيس کي ٽيسٽ ڪرڻ چاهيون ٿا سڀني ممڪن ان پٽ ڪمبنيشن ويلز يعني (211). جيئن ته هي مجموعن جو هڪ تمام وڏو تعداد آهي، ان کي دستي طور تي جانچڻ ناممڪن آهي. اهڙين حالتن ۾، ٽيسٽ بينچ تمام ڪارائتو آهن جيئن توهان سڀني ممڪن قدرن لاءِ پاڻمرادو ڊيزائن کي جانچي سگهو ٿا ۽ ان ڪري، ٽيسٽ ڊيزائن جي اعتبار جي تصديق ڪريو. ويريلوگ ٽيسٽ بينچ استعمال ڪيا ويندا آهن ڊزائن کي تخليق ڪرڻ ۽ تجزيو ڪرڻ لاءِ بغير ڪنهن جسماني هارڊويئر ڊيوائس جي.
ٽيسٽ تحت هڪ ڊزائين، مختصر طور تي DUT، ڪارڪردگي جو هڪ ٺهيل ماڊل آهي جنهن کي اسين جانچڻ چاهيون ٿا. ٻين لفظن ۾، اهو سرڪٽ ڊيزائن آهي جنهن کي اسين جانچڻ چاهيندا آهيون. اسان وضاحت ڪري سگھون ٿا اسان جي DUT کي استعمال ڪندي ٽن ماڊلنگ اسلوب مان ھڪڙو استعمال ڪندي Verilog - Gate-level، Dataflow، or Behavioral.
ٽيسٽ بينچ ٺهڪندڙ نه آهي، تنهنڪري اهو صرف تخليق جي مقصدن لاء استعمال ڪيو ويندو آهي. هي استعمال ڪندڙ کي اجازت ڏئي ٿو ته مڪمل رينج استعمال ڪرڻ جي Verilog تعميرات مثال طور، ڪي لفظ جيئن ته “لاء”، “$display” ۽ “$monitor” وغيره. testbenches لکڻ لاءِ. هڪ سادي ٽيسٽ بينچ يونٽ انڊر ٽيسٽ (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 datatype قيمت رکي ويندي جيستائين ان کي نئين قيمت مقرر نه ڪيو وڃي. هي ڊيٽا ٽائپ صرف هميشه يا شروعاتي بلاڪ ۾ هڪ قدر مقرر ڪري سگهجي ٿو.
تار ڊيٽا ٽائپ هڪ جسماني ڪنيڪشن وانگر آهي. اهو اهو قدر رکندو جيڪو بندرگاهه، تفويض بيان، يا ريگ ذريعي هلائي ٿو. هي ڊيٽا جو قسم شروعاتي يا هميشه بلاڪ ۾ استعمال نٿو ڪري سگهجي. ڪنهن به پيٽرول ۽ انٽيجر جو اعلان پڻ هن حصي ۾ ڪيو ويو آهي.
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 انسٽنٽيشن پڻ ٿي سگھي ٿو ماڊلز لاءِ جتي ٽيسٽ بينچ ماڊل جا مختلف سگنل جا نالا آھن. سگنلن جي صحيح نقشي سازي اھا آھي جيڪا اھم آھي جڏھن تڪڙ ۾.
Exampلي:
ALU d0 (.a(A)، // ALU ۾ سگنل "a" کي ALU_tb ماڊل ۾ "A" سان ڳنڍيو وڃي
.clk(clock)، // ALU ۾ سگنل "clk" کي "ڪلاڪ" ALU_tb ماڊل سان ڳنڍيو وڃي
.out(OUT)); // ALU ۾ سگنل "آئوٽ" کي ALU_tb ماڊل ۾ "OUT" سان ڳنڍيو وڃي
ٽيسٽ بينچ ۾ هميشه ۽ شروعاتي بلاڪ
Verilog ۾ ٻه ترتيب وار بلاڪ آهن، شروعاتي ۽ هميشه. اهو انهن بلاڪن ۾ آهي ته اسان محرک لاڳو ڪندا آهيون.
شروعاتي بلاڪ
شروعاتي بلاڪ جيڪو صرف هڪ ڀيرو جاري ڪيو ويندو آهي ۽ ختم ڪيو ويندو آهي جڏهن بلاڪ جي آخري لائن تي عمل ڪيو ويندو آهي. محرک شروعاتي بلاڪ ۾ لکيل آهي. (ڏسو لائين 54-72 شڪل 5 ۾)
نحو:
..
شروعاتي شروعات
ڊمپfile()؛
$dumpvars();
..(حوصلو داخل ڪريو)
پڄاڻي
شروعاتي بلاڪ سموليشن جي شروعات تي t = 0 تي ان جي عمل کي شروع ڪري ٿو. شروعات ۽ آخر جي وچ ۾ پهرين لڪير سان شروع ڪندي، هر لڪير مٿان کان هيٺ تائين عمل ڪندي جيستائين دير نه ٿئي. جڏهن دير ٿي وئي آهي، هن بلاڪ جي عمل کي انتظار ڪري ٿو جيستائين دير جو وقت (10-ٽائم يونٽ) گذري ويو آهي ۽ پوء ٻيهر عمل درآمد ڪري ٿو.
صارف لوپ استعمال ڪندي محرڪ جي وضاحت ڪري سگھي ٿو (لاء، جڏهن ته، جيڪڏھن-ٻيو) ۽ گڏوگڏ ھن ابتدائي بلاڪ جي اندر دستي طور تي سڀني مجموعن کي داخل ڪرڻ بدران.
Exampلي:
شروعاتي شروعات
A = 0؛ ب = 0؛ // عمل شروع ڪريو
#10a = 0؛ ب = 1؛ // عمل t = 10-يونٽ وقت تي آهي
#10a = 1؛ ب = 0؛ // عمل t = 20-يونٽ وقت تي آهي
پڄاڻي
ڊَپَ Files
ذهن ۾ رکڻ لاء هڪ ٻي شيء $ جو اعلان آهيڊمپfiles ۽ $ڊمپوار شروعاتي بلاڪ جي اندر (ڏسو لڪير 55- 56 شڪل 5 ۾). $ڊمپfile نيٽ ۽ رجسٽر جي قدرن ۾ تبديلين کي ڊمپ ڪرڻ لاءِ استعمال ڪيو ويندو آهي a file جنهن کي ان جي دليل جو نالو ڏنو ويو آهي.
مثال طورampاليزي:
$ڊمپfile("alu_tb.vcd")؛
a ۾ تبديلين کي ڊمپ ڪندو file نالو alu_tb.vcd. تبديليون رڪارڊ ٿيل آهن a file VCD سڏيو وڃي ٿو file جيڪو قدر جي تبديلي جي ڊمپ لاء بيٺل آهي. هڪ VCD (قدر جي تبديلي ڊمپ) قيمت جي تبديلين بابت سڀني معلومات کي ذخيرو ڪري ٿو. اسان وٽ هڪ کان وڌيڪ ڊمپ نه ٿي سگھيfile Verilog simulation ۾ بيان.
$ڊمپوار اهو بيان ڪرڻ لاءِ استعمال ڪيو ويو آهي ته ڪهڙن متغيرن کي ڊمپ ڪيو وڃي (۾ file $dump طرفان ذڪر ڪيو ويو آهيfile). ان کي استعمال ڪرڻ جو آسان طريقو بغير ڪنهن دليل جي آهي. $dumpvars جو عام نحو آهي
$ڊمپوار ( <، >)
اسان بنيادي طور تي وضاحت ڪري سگھون ٿا ته ڪھڙا ماڊل، ۽ ماڊل ۾ ڪھڙا متغير ڊمپ ڪيا ويندا. هن کي استعمال ڪرڻ جو آسان طريقو اهو آهي ته ليول کي 0 ۽ ماڊل جو نالو ٽاپ ماڊل طور مقرر ڪيو وڃي (عام طور تي مٿين ٽيسٽ بينچ ماڊل).
$ڊمپوار(0، alu_tb)؛
جڏهن ليول 0 تي سيٽ ڪيو ويندو آهي، ۽ صرف ماڊل جو نالو بيان ڪيو ويندو آهي، اهو ان ماڊل جي سڀني متغيرن کي ڊمپ ڪري ٿو ۽ سڀني هيٺئين سطح جي ماڊلز ۾ سڀني متغيرن کي هن مٿين ماڊل طرفان فوري طور تي. جيڪڏهن ڪنهن به ماڊل ۾ هن مٿين ماڊل طرفان فوري طور تي نه ڪيو ويو آهي، ته پوء ان جي متغير کي ڍڪ نه ڪيو ويندو. هڪ ٻي شيء، $ جو اعلانڊمپfile $dumpvars يا ڪنهن ٻئي سسٽم جي ڪمن کان اڳ اچڻ گهرجي جيڪو ڊمپ جي وضاحت ڪري ٿو. اهي ڊپ files کي لازمي طور تي اعلان ڪيو وڃي ان کان اڳ stimulus inputs ٻي صورت ۾ ان ڊمپ ۾ ڪابه قيمت محفوظ نه ٿيندي files.
هميشه بلاڪ
ابتدائي بيانن جي برعڪس، هڪ هميشه بلاڪ بار بار عمل ۾ اچي ٿو، جيتوڻيڪ عملدرآمد وقت تي شروع ٿئي ٿو t = 0. مثال لاءample، گھڙيءَ جو سگنل ترتيب وار سرڪٽس جي آپريشن لاءِ ضروري آھي، جھڙوڪ Flip-flops. اهو مسلسل فراهم ڪرڻ جي ضرورت آهي. ان ڪري، اسان ٽيسٽ بينچ ۾ ڪلاڪ جي آپريشن لاءِ ڪوڊ لکي سگھون ٿا جيئن (شڪل 52 ۾ لائين 5 ڏسو):
هميشه
#10 clk = ~ clk؛
endmodule
مٿين بيان تي عمل ڪيو ويندو 10 ns کان پوءِ شروع ٿئي ٿو t = 0 کان. clk جي قيمت پوئين قيمت کان 10 ns کان پوءِ بدلجي ويندي. اهڙيء طرح، 20 ns نبض جي چوٽي جي هڪ ڪلاڪ سگنل پيدا ڪري ٿي. تنهن ڪري، هي بيان فریکوئنسي 50 MHz جو سگنل ٺاهي ٿو. اهو نوٽ ڪرڻ ضروري آهي ته، سگنل جي شروعات هميشه بلاڪ کان اڳ ڪئي ويندي آهي. جيڪڏهن اسان شروعات وارو حصو نه ٿا ڪريون، clk سگنل t - 0 کان x ٿيندو، ۽ 10 ns کان پوء، اهو ٻئي x ڏانهن ڦيرايو ويندو.
خود چڪاس ٽيسٽ بينچ
هڪ خود چڪاس ٽيسٽ بينچ ۾ موجوده حالت کي جانچڻ لاءِ بيان شامل آهي.
- $ڊسپلي سسٽم ٽاسڪ خاص طور تي ڊيبگ پيغامن کي ڊسپلي ڪرڻ لاء استعمال ڪيو ويندو آهي تخليق جي وهڪري کي ٽريڪ ڪرڻ لاء
شروعاتي شروعات
الف = 0؛ ب = 0 ؛ ج = 0؛ #10؛ // ان پٽ لاڳو ڪريو، انتظار ڪريو
جيڪڏھن (y ! == 1) شروع ڪريو
$display ("000 ناڪام")؛ // چيڪ ڪريو
ج = 1؛ #10؛ // ان پٽ لاڳو ڪريو، انتظار ڪريو
پڄاڻي
ٻيو جيڪڏهن ( y ! == 0) شروع ڪريو
$display ("001 ناڪام") // چيڪ ڪريو
ب = 1؛ ج = 0؛ #10؛ پڄاڻي
ٻيو جيڪڏهن (y!==0)
$display ("010 ناڪام")؛ // چيڪ ڪريو
پڄاڻي
endmodule
$ڊسپلي variables، strings، يا expressions جي قدرن کي ڏيکارڻ لاءِ استعمال ڪيو ويندو آھي. مٿين کان اڳample، جڏهن به if-else لوپ مان ڪو به مطمئن هوندو، ته سميوليٽر لاگ ان جي لاڳاپيل $ ڏيکاريندو.ڊسپلي بيان. ڊفالٽ جي آخر ۾ هڪ نئين لائن آهي.
$ڊسپلي ("وقت =٪ t، A = %b، B = %b، C = % b"، $وقتاي، بي، سي)؛
اقتباس ۾ ذڪر ڪيل ڪردارن کي جيئن جو تيئن ڇپبو. خط % سان گڏ اسٽرنگ فارميٽ کي ظاهر ڪري ٿو. اسان استعمال ڪريون ٿا %b بائنري ڊيٽا جي نمائندگي ڪرڻ لاءِ. اسان استعمال ڪري سگھون ٿا %d، %h، %o ترتيب ڏيڻ لاءِ decimal، hexadecimal ۽ octal. %g حقيقي انگن کي ظاهر ڪرڻ لاء استعمال ڪيو ويندو آهي. اهي بيان ڪيل ترتيب ۾ اقتباس کان ٻاهر ويلن سان تبديل ڪيا ويندا. مثال طورample، مٿي ڏنل بيان سموليشن لاگ ۾ ڏيکاريو ويندو جيئن: وقت = 20، A = 0، B = 1، C = 0
ٽيبل 1. Verilog ٽيبل فارميٽ
دليل | وصف |
% ايڇ، % ايڇ | Hexadecimal فارميٽ ۾ ڏيکاريو |
%d، %D | ڊيسيمل فارم ۾ ڏيکاريو |
%b، %B | بائنري فارميٽ ۾ ڏيکاريو |
%m، %M | درجه بندي جو نالو ڏيکاريو |
%s، %S | اسٽرنگ طور ڏيکاريو |
%t، %T | وقت جي شڪل ۾ ڏيکاريو |
%f، %F | ڏيکاريو 'حقيقي' decimal فارميٽ ۾ |
%e، %E | ظاهري شڪل ۾ 'حقيقي' ڏيکاريو |
$ڊسپلي خاص طور تي ڊيٽا يا متغير کي پرنٽ ڪري ٿو جيئن اهو ان وقت جي وقت ۾ آهي جيئن C ۾ printf. اسان کي $ جو ذڪر ڪرڻ گهرجي.ڊسپلي جيڪو به متن اسان وٽ آهي view سموليشن لاگ ۾.
- $وقت
$وقت هڪ سسٽم جو ڪم آهي جيڪو سميوليشن جو موجوده وقت واپس ڪندو.
- $نگراني
$نگراني ڊيٽا يا متغير جي نگراني ڪندو جنهن لاءِ اهو لکيو ويو آهي ۽ جڏهن به متغير تبديل ٿيندو، اهو ڇپائي ڇڏيندو
تبديل ٿيل قدر. اهو حاصل ڪري ٿو $display کي ڪال ڪرڻ جو ساڳيو اثر هر ڀيري ان جي ڪنهن به دلائل حاصل ڪرڻ کان پوءِ
اپڊيٽ ڪيو. $نگراني ھڪڙي ڪم وانگر آھي جيڪو ھلائڻ لاءِ ٺاھيو ويو آھي مکيه سلسلي جي پس منظر ۾ جيڪو مانيٽر ڪري ٿو ۽
ڏيکاري ٿو قدر تبديلين جي ان جي دليل جي متغير. $نگراني ساڳيو نحو آهي $ڊسپلي.
$نگراني("وقت =٪ t، A = %b، B = %b، C = % b"، $وقتاي، بي، سي)؛
شڪل 7 مان توهان مشاهدو ڪري سگهو ٿا ته ڪوڊ جون نيون لائينون شامل ڪيون ويون آهن ٽيسٽ بينچ جي خود جائزو وٺڻ لاءِ. $ جي مقرريڊسپلي ۽ $نگراني ٽيسٽ بينچ جي مختلف حصن ۾ بيان مختلف نتيجا پيدا ڪندا (ڏسو شڪل 8). $وقت انهن بيانن ۾ ذڪر ڪيل وقت کي پرنٽ ڪري ٿو جنهن وقت قيمت ڇاپيو وڃي ٿو. ساڳئي وقت يونٽ چئو 170000، اسان ڏسي سگهون ٿا ته ڪئين فرق آهي A ۽ B جي قيمت ۾ $ جي ڪري.ڊسپلي ۽ $نگراني بيان
GTKWave سافٽ ويئر
GTKWave هڪ مڪمل خصوصيت وارو GTK+ موج آهي viewer يونڪس، Win32، ۽ Mac OSX لاءِ جيڪو پڙهي ٿو LXT، LXT2، VZT، FST، ۽ GHW files سان گڏوگڏ معياري VCD/EVCD files ۽ انهن جي اجازت ڏئي ٿو viewing. ان جي سرڪاري webسائيٽ تي آهي http://gtkwave.sourceforge.net/ . GTKWave سفارش ڪئي وئي آهي viewer پاران Icarus Verilog تخليقي اوزار.
هڪ دفعو صارف ڪاميابيءَ سان هڪ ٽيسٽ بينچ ٺاهي آهي ڊزائين جي ڪارڪردگي کي جانچڻ لاءِ، صارف هاڻي GTKWave سافٽ ويئر استعمال ڪري سگهي ٿو. view waveforms.
GTKWave سافٽ ويئر شروع ڪرڻ لاء view موج جي صورت ۾، صارف کي ٽول بار جي مٿي تي يا مين مينيو ٽولز → Simulation → Simulate Testbench بٽڻ تي ڪلڪ ڪرڻ جي ضرورت آهي. جيڪڏهن نحوي غلطيون نه آهن ته پوءِ ڊزائن جي بنياد تي، GTKWave کي خودڪار طور تي لانچ ڪيو وڃي يا ٽيسٽ بينچ ۾ محرک جا نتيجا ونڊو جي لاگر سيڪشن ۾ ڏيکاريا ويندا.
GTKWave سافٽ ويئر .vcd فارميٽ ڊمپ کي کوليندو آهيfile خودڪار. GTKWave ونڊو موج فارم کي نه ڏيکاريندو آهي جڏهن ان جي کليل هوندي آهي. هي صارف کي هڪ موقعو ڏئي ٿو ته اهو چونڊڻ جو ڪهڙو سگنل چاهي ٿو view ۽ مشاهدو. سگنل چونڊڻ لاء، صارف کي ڊسپلي ڪرڻ جي ضرورت آهي، صارف کي SST ٽيب جي هيٺان ونڊو جي کاٻي پاسي تي انهن جي ماڊل / مثال جي نالي تي ڪلڪ ڪرڻ جي ضرورت آهي. هر مثال جي + تي ڪلڪ ڪندي، توهان هيٺئين حصي ۾ ان مثال سان لاڳاپيل سگنل ڏسي سگهو ٿا. پوءِ توھان گھربل سگنل کي ڇڪيو ۽ ڇڏي ڏيو يا انھن کي ڊبل ڪلڪ ڪري سگنل ونڊو ۾ ڏيکاريو. توھان پڻ چونڊي سگھوٿا سڀ (CTRL + A) ۽ انھن کي سگنل ونڊو ۾ داخل ڪريو (ڏسو شڪل 9).
سگنل هاڻي سگنل ونڊو ۾ شامل ڪيا ويا آهن پر ان کي اڃا تائين نقل ڪيو وڃي. سگنل ونڊو ۾ گهربل سگنل شامل ڪرڻ کان پوء، ڪلڪ ڪريو سگنلن کي ونڊو جي موجوده چوٽيءَ تي فٽ ڪرڻ ۽ پوءِ سگنلن کي ٻيهر لوڊ ڪرڻ کان
ٽول بار تي موجود علامت. توھان ھاڻي ڏسي سگھوٿا سگنلن کي انھن جي لاڳاپيل قدرن سان.
سگنل قدر
ڊفالٽ طور، سگنل جا قدر هيڪساڊيڪل فارميٽ ۾ آهن ۽ سڀئي لهرون سائي رنگ جون آهن (جيڪڏهن صحيح طريقي سان هلن).
استعمال ڪندڙ سگنل تي صحيح ڪلڪ ڪندي ۽ ڊيٽا فارميٽ يا رنگ فارميٽ کي چونڊڻ سان انهن سگنل جي ملڪيت کي تبديل ڪري سگهي ٿو. استعمال ڪندڙ سگنلن جي گروپ جي وچ ۾ سيڪشن ٺاهڻ لاءِ خالي سگنل پڻ داخل ڪري سگھن ٿا. جڏهن توهان وٽ گهربل آپٽيڪل نتيجو آهي، توهان پنهنجي ترتيبن کي محفوظ ڪري سگهو ٿا وڃڻ سان File → لکو محفوظ ڪريو File.
GTKWave ٽول بار
ٽول بار (ڏسو شڪل 10) صارف کي سگنل لاءِ بنيادي ڪم انجام ڏيڻ جي اجازت ڏئي ٿو. اچو ته ٽول بار تي کاٻي کان ساڄي تائين هر آپشن تي بحث ڪريون.
- مينيو جا اختيار: هن اختيار هيٺ اسان ڪري سگهون ٿا view سافٽ ويئر جي سڀني مختلف خاصيتون جيڪي سافٽ ويئر سان گڏ راند ڪرڻ لاء استعمال ڪري سگھجن ٿيون. هن مينيو اختيار هيٺ ڏنل تفصيل هن صارف گائيڊ جي سيڪشن 8 تحت ڍڪيل آهن.
- ڪٽڻ جا نشان: اهو سگنل ونڊو مان چونڊيل سگنل کي ختم ڪرڻ/ڪٽ ڪرڻ لاءِ استعمال ڪيو ويندو آهي
- نقل ڪريو نشان: اهو استعمال ڪيو ويندو آهي سگنل ونڊو مان چونڊيل سگنل کي نقل ڪرڻ لاءِ
- نشان پيسٽ ڪريو: ڪاپي ٿيل/ڪٽ جي نشاني کي سگنل ونڊو ۾ مختلف جڳھ تي پيسٽ ڪري سگھجي ٿو
- زوم فٽ: اهو استعمال ڪيو ويندو آهي سگنلن کي درست ڪرڻ لاءِ استعمال ڪندڙ ونڊو جي سائيز مطابق جيڪو صارف ڊسپلي ڪرڻ لاءِ چونڊيندو آهي
- وڏو ڪريو: اهو سگنل ونڊو کي زوم ڪرڻ لاءِ استعمال ٿيندو آهي
- وڏو ڪريو: اهو سگنل ونڊو کي وڏو ڪرڻ لاء استعمال ڪيو ويندو آهي
- زوم Undo: اهو سگنل ونڊو تي زوم ان/آئوٽ کي واپس ڪرڻ لاءِ استعمال ڪيو ويندو آهي
- شروع ڪرڻ لاءِ وڏو ڪريو: هي سگنل ونڊو کي زوم ڪندو، سگنلن جي شروعاتي وقت کي ڏيکاريندي.
- وڏو ڪري آخر تائين: هي سگنل ونڊو کي زوم ڪندو جيڪو سگنلن جو آخري وقت ڏيکاريندو
- پوئين ڪنڊ ڳوليو: هي مارڪر کي کاٻي پاسي ڏانهن ڦيرائي ٿو جيڪو اڳئين ڪنڊ ڏانهن اشارو ڪري ٿو
- ايندڙ ڪنڊ ڳوليو: هي مارڪر کي ساڄي پاسي ڦيرائي ٿو جيڪو ايندڙ ڪنڊ ڏانهن اشارو ڪري ٿو
- هيٺيون / مٿئين بانڊ کي ڇڪيو: هن کي استعمال ڪندي اسان ٽائم فريم سيٽ ڪري سگهون ٿا جنهن ۾ صارف ڏيکارڻ چاهي ٿو. مثال طورample، اسان ٽائيم فريم کي 0 سيڪنڊ کان 500 ns تائين مقرر ڪري سگھون ٿا، اهو صرف ان عرصي ۾ سگنل ڏيکاريندو.
- ٻيهر لوڊ ڪريو: ٻيهر لوڊ کي دٻايو ويندو آهي جڏهن به ڏيکاريل سگنل ۾ ڪا تبديلي آهي. اهو نئين پيٽرولن جي مطابق سگنل کي ٻيهر لوڊ ۽ ڊسپلي ڪندو. مثال طورampلي، سگنل جي ٽائيم فريم کي تبديل ڪرڻ کان پوء، اسان کي سگنل کي ٻيهر لوڊ ڪرڻ جي ضرورت آهي ته سگنل کي نئين مقرر وقت واري فريم ۾ ڏيکاري.
مينيو جا اختيار
GTKWave سافٽ ويئر جي کاٻي مٿين ڪنڊ کان، صارف ٽن عمودي لائينن تي ڪلڪ ڪري مينيو اختيارن تائين رسائي ڪري سگھي ٿو (ڏسو شڪل 11). صارف ھيٺ ڏنل اختيارن کي ڳولي سگھي ٿو مينيو اختيارن جي تحت:
File
جي File ذيلي مينيو ۾ رسائي سان لاڳاپيل مختلف شيون شامل آهن files، درآمد-برآمد VCD files، ڇپائي، ۽ پڙهڻ/لکڻ files ۽ نڪرڻ.
ترميم ڪريو
ايڊٽ سب مينيو استعمال ڪيو ويندو آهي مختلف يوٽيلٽي ڪمن کي انجام ڏيڻ لاءِ جيئن ته موج سب ونڊو ۾ ڊيٽا جي نمائندگي کي تبديل ڪرڻ. ايڊٽ سب مينيو جي ھيٺان اختيارن کي استعمال ڪندي، صارف سگنلن جي ڊيٽا فارميٽ کي تبديل ڪري سگھي ٿو، انھن کي وري ترتيب ڏئي سگھي ٿو، انھن کي شفٽ ڪري، ان کي ٽرم ڪري، ان کي نمايان ڪري، گروپ سگنلز، سگنلن تي تبصرو، سگنلن جو رنگ تبديل ڪري، وغيره.
ڳولا
ڳولا ذيلي مينيو استعمال ڪيو ويندو آهي ڳولها ڪرڻ لاءِ خالص نالن ۽ قدرن تي. اهو VCD ۾ سگنلن ۽ مثالن جي مختلف درجه بندي جي سطحن تي ڪم ڪرڻ ۾ مدد ڪري ٿو. file.
وقت
وقت جي ذيلي مينيو ۾ نيويگيشنز ۽ اسٽيٽس پينل بٽڻن پاران ڪيل ڪمن جو هڪ سپر سيٽ شامل آهي.
اهو آسان بڻائي ٿو، وقت سان لاڳاپيل، افعال جهڙوڪ زومنگ، هڪ خاص وقت جي نقطي ڏانهن منتقل ڪرڻ، سگنل کي هڪ خاص طرف منتقل ڪرڻ، وغيره.
مارڪر
مارڪر ذيلي مينيو استعمال ڪيو ويندو آهي مارڪر تي مختلف ڦيرڦار کي انجام ڏيڻ لاءِ ۽ انهي سان گڏ آف اسڪرين کي ڪنٽرول ڪرڻ لاءِ.
اهو سگنل ونڊو تي ڪيترن ئي نشانن کي شامل ڪرڻ جي ڪارڪردگي کي قابل بنائي ٿو. وڌ ۾ وڌ 26 نالن جي نشانين جي اجازت آهي ۽ سڀني لاءِ وقت مختلف هجڻ گهرجن.
a. نشانين کي شامل ڪرڻ لاءِ سگنل ونڊو ۾
گهربل نقطي تي کاٻي ڪلڪ ڪريو جتي توهان مارڪر رکڻ چاهيو ٿا ۽ ALT + N کي دٻايو. اهو هڪ نالي وارو مارڪر (A,B,C, etc.) گهربل پوائنٽ تي رکي ٿو. صارف 26 مختلف وقتن جي جڳهن لاءِ ائين ڪرڻ جاري رکي سگھي ٿو.
سڀني هنڌن تي وقت جي قيمت جي ڀيٽ ڪرڻ لاءِ مارڪرز، مينيو → مارڪرز → ڏيکاريو تبديل مارڪر ڊيٽا.
هي هر مارڪر تي وقت جي قيمت سان هڪ ونڊو کوليندو. استعمال ڪندڙ دستي طور تي هر مارڪر تي رکيل وقت جي قيمت کي نوٽ ڪري سگهي ٿو ۽ 2 مارڪرن جي وچ ۾ وقت جي فرق کي ڳڻڻ لاءِ ان کي گھٽائي سگھي ٿو.
b. سگنل ونڊو ۾ مارڪر کي هٽائڻ لاء
استعمال ڪندڙ مينيو ڏانھن وڃي سگھي ٿو → مارڪرز → گڏ ڪريو نامزد مارڪر. هي سگنل ونڊو ۾ رکيل آخري نالي مارڪر کي هٽائي ڇڏيندو. استعمال ڪندڙ مينيو → مارڪرز → سڀ نالن وارا مارڪر گڏ ڪري (Figure 12) ۾ وڃڻ سان سڀ نالي وارا نشان ختم ڪري سگھن ٿا.
شڪل 13 ۾، اسان ڏسي سگهون ٿا ته سگنل جا رنگ ڪيئن تبديل ڪيا ويا آهن. توهان مشاهدو ڪري سگهو ٿا هڪ خالي سگنل سگنل ونڊو ۾ شامل ڪيو ويو ۽ انهي سان گڏ تبصرو - خالي سگنل.
پڻ نوٽ ڪريو 6 نالي واري نشانن جي موجودگي (A - E) ۽ انهن مارڪرز جي وچ ۾ وقت جي قيمت جي مطابقت ps ۾.
View
جي View ذيلي مينيو استعمال ڪيو ويندو آهي مختلف خاصيتن کي ڪنٽرول ڪرڻ لاءِ جيڪي اسٽيٽس آئٽمز جي گرافڪ رينڊرنگ سان گڏوگڏ سگنل ذيلي ونڊو ۾ قدر. هن مينيو مان، توهان سگنل ونڊو کي ڪارو ۽ اڇو يا رنگ ۾ تبديل ڪري سگهو ٿا. جي View ذيلي مينيو توهان کي وقت جي طول و عرض کي سيڪنڊن (سيڪن) کان فيڪو سيڪنڊ (fs) تائين تبديل ڪرڻ جي قابل بڻائي ٿو. استعمال ڪندڙ هي اختيار ڳولي سگهي ٿو View → پيماني تي وقت جي طول و عرض → fs.
مدد
مدد جي ذيلي مينيو ۾ آن لائين مدد کي چالو ڪرڻ ۽ پروگرام جي ورزن جي معلومات کي ڊسپلي ڪرڻ جا اختيار شامل آھن.
نتيجو
ھي دستاويز ٺاھيو ويو آھي صارف جي مدد ڪرڻ لاءِ ڪاميابيءَ سان انھن جي ڊيزائن کي ترتيب ڏيڻ ۽ ڪارڪردگي جي تصديق ڪرڻ لاءِ ضروري ٽيسٽ بينچ کي درست ڪرڻ ۽ Icarus Verilog کي GTKWave سان گڏ استعمال ڪندي waveforms کي ڊسپلي ڪرڻ ۽ نتيجن جو مشاهدو ڪرڻ.
نظرثاني جي تاريخ
نظرثاني | تاريخ | وصف |
1.00 | مئي 20، 2024 | شروعاتي ڇڏڻ. |
R19US0011EU0100 Rev.1.0
مئي 20، 2024
© 2024 Renesas Electronics
دستاويز / وسيلا
![]() |
RENESAS ForgeFPGA سافٽ ويئر سموليشن [pdf] استعمال ڪندڙ ھدايت REN_r19us0011eu0100, ForgeFPGA سافٽ ويئر سموليشن, ForgeFPGA سافٽ ويئر, ForgeFPGA, ForgeFPGA سموليشن, سافٽ ويئر سموليشن, Simulation, سافٽ ويئر |