RENESAS ForgeFPGA सॉफ्टवेअर सिम्युलेशन

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 पहा)
Icarus Verilog स्थापित करत आहे

c. गो कॉन्फिगर सॉफ्टवेअर उघडा आणि फोर्ज वर्कशॉप उघडण्यासाठी SLG47910(Rev BB) हा भाग निवडा (आकृती 2 पहा).
Icarus Verilog स्थापित करत आहे

d. शीर्षस्थानी टूलबारच्या मध्यभागी असलेल्या FPGA संपादकावर क्लिक करा किंवा वापरकर्ता विंडोच्या मध्यभागी असलेल्या FPGA कोर स्ट्रक्चरवर डबल-क्लिक देखील करू शकतो.
Icarus Verilog स्थापित करत आहे

e. फोर्ज वर्कशॉप नावाची एक नवीन विंडो उघडेल. वरच्या मेनू टूलबारमध्ये, पर्याय → सेटिंग्ज वर क्लिक करा. सेटिंग्ज डायलॉग बॉक्समध्ये, वापरकर्ता सेटिंग्ज टॅब अंतर्गत टूल्सवर जा. Icarus Verilog आणि GTKWave दोन्हीसाठी वापरा “सिस्टम वातावरण बॉक्स” ची निवड रद्द करा. तुमच्या सिस्टममध्ये सेव्ह केलेल्या Iverilog आणि GTKWave चा मार्ग दिलेल्या जागेत जोडा (आकृती 4 पहा).
Icarus Verilog स्थापित करत आहे

तुम्ही टेस्टबेंचचे नक्कल करण्यासाठी तयार आहात आणि वरील पायऱ्या गो कॉन्फिगर सॉफ्टवेअरवर टेस्टबेंचचे नक्कल करताना GTKWave आपोआप लॉन्च होईल याची खात्री करा.

टेस्टबेंच

कोणतीही प्रणाली यशस्वीरित्या अंमलात आणण्यासाठी सर्वात महत्वाची पायरी म्हणजे डिझाइन आणि त्याची कार्यक्षमता सत्यापित करणे. हार्डवेअर कार्यान्वित केल्यानंतर जटिल प्रणालीची पडताळणी करणे ही एक शहाणपणाची निवड नाही. पैसा, वेळ आणि संसाधनांच्या बाबतीत ते कुचकामी आहे. म्हणून, FPGA च्या बाबतीत, Verilog सोर्स कोडची चाचणी घेण्यासाठी टेस्टबेंचचा वापर केला जातो.

समजा आमच्याकडे 11 बिटचे इनपुट आहे आणि आम्हाला सर्व संभाव्य इनपुट कॉम्बिनेशन व्हॅल्यूजसाठी (211) डिव्हाइसची चाचणी करायची आहे. हे संयोजनांची खूप मोठी संख्या असल्याने, त्याची व्यक्तिचलितपणे चाचणी करणे अशक्य आहे. अशा परिस्थितीत, टेस्टबेंच खूप उपयुक्त आहेत कारण तुम्ही सर्व संभाव्य मूल्यांसाठी डिझाइनची आपोआप चाचणी करू शकता आणि म्हणूनच, चाचणी डिझाइनच्या विश्वासार्हतेची पुष्टी करा. व्हेरिलॉग टेस्टबेंचचा वापर कोणत्याही भौतिक हार्डवेअर उपकरणाची आवश्यकता न करता डिझाइन्सचे अनुकरण आणि विश्लेषण करण्यासाठी केला जातो.

चाचणी अंतर्गत डिझाइन, DUT म्हणून संक्षिप्त, आम्ही चाचणी करू इच्छित कार्यक्षमतेचे एक संश्लेषित मॉड्यूल आहे. दुसऱ्या शब्दांत, हे सर्किट डिझाइन आहे ज्याची आम्ही चाचणी करू इच्छितो. व्हेरिलॉगमधील तीन मॉडेलिंग शैलींपैकी एक वापरून आम्ही आमच्या DUT चे वर्णन करू शकतो - गेट-लेव्हल, डेटाफ्लो किंवा वर्तणूक.

टेस्टबेंच संश्लेषित करता येत नाही, म्हणून ते फक्त सिम्युलेशनच्या उद्देशाने वापरले जाते. हे वापरकर्त्याला टेस्टबेंच लिहिण्यासाठी व्हेरिलॉग रचनांची संपूर्ण श्रेणी वापरण्याची परवानगी देते उदा. “for”, “$display” आणि “$monitor” इत्यादी कीवर्ड. एक साधा टेस्टबेंच युनिट अंडर टेस्ट (UUT) किंवा डिव्हाइस अंडर टेस्ट (DUT) आणि ड्राइव्ह इनपुट इन्स्टंट करेल.

टेस्टबेंच समजून घेणे

टेस्टबेंच समजून घेणे

Testbench मध्ये टाइमस्केल व्याख्या

अनुकरण करताना, सॉफ्टवेअरला वेळ कशी परिभाषित केली गेली आहे हे माहित असणे आवश्यक आहे. विलंब युनिट `टाइमस्केल निर्देश' वापरून निर्दिष्ट केले आहे, जे वेळ एकक आणि त्याचे अनुसरण करणाऱ्या मॉड्यूल्ससाठी अचूकता निर्दिष्ट करते. `टाइमस्केल वेळेच्या दृष्टीने # 1 चा अर्थ काय आहे हे ठरविण्यात मदत करते. # चा वापर टाइमस्केलमध्ये निर्दिष्ट केलेल्या वेळेच्या युनिटनुसार सिस्टममध्ये सादर करण्यात येणारा विलंब परिभाषित करण्यासाठी केला जातो. तर, वेळ_युनिट ns मध्ये असल्यास #1 म्हणजे 1 ns विलंब.

वाक्यरचना:
`टाइमस्केल / /

time_unit म्हणजे # 1 चा विलंब दर्शविणारा वेळ. टाइम_प्रिसिजन बेस टाइम युनिट्सच्या सापेक्ष किती दशांश बिंदू अचूक वापरायचा हे दर्शवतो. (चित्र 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 डेटाटाइपला नवीन मूल्य नियुक्त करेपर्यंत मूल्य धारण केले जाईल. हा डेटाटाइप केवळ नेहमी किंवा प्रारंभिक ब्लॉकमध्ये मूल्य नियुक्त केला जाऊ शकतो.
वायर डेटाटाइप भौतिक कनेक्शन सारखा आहे. हे पोर्ट, असाइन स्टेटमेंट किंवा रेगद्वारे चालवलेले मूल्य धारण करेल. हा डेटा प्रकार प्रारंभिक किंवा नेहमी ब्लॉकमध्ये वापरला जाऊ शकत नाही. या विभागात कोणतेही पॅरामीटर आणि पूर्णांक घोषणा देखील केल्या जातात.

Exampले:
रेग a,b; // HDL कोडमधील इनपुट टेस्टबेंचमध्ये reg म्हणून परिभाषित केले आहे
वायर y; // HDL मधील आउटपुट सिग्नल टेस्टबेंचमधील वायर म्हणून परिभाषित केले आहे

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 इन्स्टंटेशन मॉड्युलसाठी देखील केले जाऊ शकते जेथे टेस्टबेंच मॉड्यूलला भिन्न सिग्नल नावे आहेत. सिग्नल्सचे अचूक मॅपिंग हे तात्काळ करताना महत्त्वाचे असते.

Example: 

ALU d0 (.a(A), // ALU मधील सिग्नल "a" ALU_tb मॉड्यूलमधील "A" शी कनेक्ट केलेले असावे
.clk(घड्याळ), // ALU मधील सिग्नल "clk" "clock" ALU_tb मॉड्यूलशी जोडलेले असावे
.आउट(आउट)); // ALU मधील सिग्नल "आउट" ALU_tb मॉड्यूलमधील "OUT" शी कनेक्ट केलेले असावे

टेस्टबेंचमध्ये नेहमी आणि प्रारंभिक ब्लॉक

व्हेरिलॉगमध्ये दोन अनुक्रमिक ब्लॉक्स आहेत, प्रारंभिक आणि नेहमी. या ब्लॉक्समध्येच आपण प्रेरणा लागू करतो.

प्रारंभिक ब्लॉक

प्रारंभिक ब्लॉक जो फक्त एकदाच कार्यान्वित केला जातो आणि ब्लॉकची शेवटची ओळ कार्यान्वित झाल्यावर समाप्त केला जातो. प्रेरणा प्रारंभिक ब्लॉकमध्ये लिहिली जाते. (चित्र 54 मधील ओळ 72-5 पहा)

वाक्यरचना:
..
प्रारंभिक सुरुवात
$डंपfile();
$dumpvars();
..(उत्तेजक प्रविष्ट करा)
शेवट

प्रारंभिक ब्लॉक सिम्युलेशनच्या सुरूवातीस t = 0 वाजता त्याची अंमलबजावणी सुरू करतो. सुरुवात आणि शेवटच्या दरम्यानच्या पहिल्या ओळीपासून सुरुवात करून, विलंब होईपर्यंत प्रत्येक ओळ वरपासून खालपर्यंत कार्यान्वित होते. जेव्हा विलंब होतो तेव्हा, या ब्लॉकची अंमलबजावणी विलंब वेळ (10-वेळ युनिट्स) निघून जाईपर्यंत प्रतीक्षा करते आणि नंतर पुन्हा अंमलबजावणी सुरू करते.
वापरकर्ता लूप वापरून उत्तेजनाची व्याख्या करू शकतो (साठी, तर, जर-अन्यतर) तसेच या प्रारंभिक ब्लॉकमध्ये सर्व संयोजने व्यक्तिचलितपणे प्रविष्ट करण्याऐवजी.
प्रारंभिक ब्लॉक

 

Example:
प्रारंभिक सुरुवात
अ = 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 म्हणजे व्हॅल्यू चेंज डंप. व्हीसीडी (व्हॅल्यू चेंज डंप) मूल्य बदलांबद्दल सर्व माहिती संग्रहित करते. आमच्याकडे एकापेक्षा जास्त $डंप असू शकत नाहीतfile वेरिलॉग सिम्युलेशनमधील विधाने.

द $डंपवर कोणते व्हेरिएबल्स टाकायचे हे निर्दिष्ट करण्यासाठी वापरले जाते (मध्ये file $dump द्वारे नमूद केले आहेfile). कोणत्याही वादविना वापरण्याचा सोपा मार्ग आहे. $dumpvars चे सामान्य वाक्यरचना आहे

$डंपवर ( <, >);

आम्ही मुळात कोणते मॉड्यूल निर्दिष्ट करू शकतो आणि मॉड्यूलमधील कोणते व्हेरिएबल्स टाकले जातील. हे वापरण्याचा सर्वात सोपा मार्ग म्हणजे स्तर 0 वर सेट करणे आणि मॉड्यूलचे नाव शीर्ष मॉड्यूल (सामान्यत: शीर्ष टेस्टबेंच मॉड्यूल) म्हणून सेट करणे.

$डंपवर(0, alu_tb);

जेव्हा स्तर 0 वर सेट केला जातो आणि केवळ मॉड्यूलचे नाव निर्दिष्ट केले जाते, तेव्हा ते त्या मॉड्यूलचे सर्व व्हेरिएबल्स आणि या शीर्ष मॉड्यूलद्वारे इन्स्टंट केलेल्या सर्व खालच्या-स्तरीय मॉड्यूल्समधील सर्व व्हेरिएबल्स डंप करते. या शीर्ष मॉड्यूलद्वारे कोणतेही मॉड्यूल इन्स्टंट केले नसल्यास, त्याचे व्हेरिएबल कव्हर केले जाणार नाही. आणखी एक गोष्ट, $ ची घोषणाडंपfile $dumpvars किंवा डंप निर्दिष्ट करणाऱ्या इतर कोणत्याही सिस्टीम कार्यांपूर्वी येणे आवश्यक आहे. हे डंप files प्रेरणा इनपुट करण्यापूर्वी घोषित करणे आवश्यक आहे, अन्यथा या डंपमध्ये कोणतेही मूल्य जतन केले जाणार नाही files.

नेहमी ब्लॉक करा

प्रारंभिक विधानांच्या विरूद्ध, नेहमी ब्लॉक वारंवार कार्यान्वित होतो, जरी अंमलबजावणी t = 0 वाजता सुरू होते. उदाहरणार्थample, घड्याळ सिग्नल फ्लिप-फ्लॉप सारख्या अनुक्रमिक सर्किट्सच्या ऑपरेशनसाठी आवश्यक आहे. ते सतत पुरवठा करणे आवश्यक आहे. म्हणून, आपण घड्याळाच्या ऑपरेशनचा कोड टेस्टबेंचमध्ये लिहू शकतो (चित्र 52 मधील ओळ 5 पहा):

नेहमी
#10 clk = ~clk;
एंडमॉड्यूल

वरील विधान t = 10 पासून सुरू होणाऱ्या 0 ns नंतर कार्यान्वित होईल. clk चे मूल्य मागील मूल्यापासून 10 ns नंतर उलटे होईल. अशा प्रकारे, 20 एनएस पल्स रुंदीचे घड्याळ सिग्नल तयार करणे. म्हणून, हे विधान 50 मेगाहर्ट्झ वारंवारतेचे सिग्नल व्युत्पन्न करते. हे लक्षात घेणे महत्त्वाचे आहे की, सिग्नलचे आरंभीकरण नेहमी ब्लॉक करण्यापूर्वी केले जाते. जर आपण सुरुवातीचा भाग केला नाही, तर clk सिग्नल t – 0 वरून x असेल आणि 10 ns नंतर, तो दुसऱ्या x वर उलटला जाईल.

स्व-तपासणी टेस्टबेंच

सेल्फ-चेकिंग टेस्टबेंचमध्ये सध्याची स्थिती तपासण्यासाठी विधान समाविष्ट आहे.

  • $प्रदर्शन सिम्युलेशनच्या प्रवाहाचा मागोवा घेण्यासाठी सिस्टम टास्क मुख्यतः डीबग संदेश प्रदर्शित करण्यासाठी वापरले जातात

प्रारंभिक सुरुवात
A = 0; b = 0 ; c = 0; #१०; // इनपुट लागू करा, प्रतीक्षा करा
जर(y ! == 1) सुरू करा
$display("000 अयशस्वी"); // तपासा
c = 1; #१० ; //इनपुट लागू करा, प्रतीक्षा करा
शेवट
अन्यथा ( y ! == 0) सुरू झाल्यास
$display("001 अयशस्वी") // चेक
b = 1; c = 0; #१० ; शेवट
अन्यथा जर(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. वेरिलॉग टेबल फॉरमॅट्स

युक्तिवाद वर्णन
%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", $वेळ, A, B, C);
स्व-तपासणी टेस्टबेंच

आकृती 7 वरून तुम्ही पाहू शकता की टेस्टबेंचचे स्व-मूल्यांकन करण्यासाठी कोडच्या नवीन ओळी जोडल्या गेल्या आहेत. $ ची नियुक्तीप्रदर्शन आणि $मॉनिटर टेस्टबेंचच्या वेगवेगळ्या विभागांमधील विधाने वेगवेगळे परिणाम देतील (आकृती 8 पहा). $वेळ या विधानांमध्ये नमूद केलेले मूल्य ज्या वेळेसाठी मुद्रित केले जात आहे ते मुद्रित करते. त्याच वेळी एकक 170000 म्हणा, आपण पाहू शकतो की A आणि B च्या मूल्यामध्ये $ मुळे किती फरक आहे.प्रदर्शन आणि $मॉनिटर विधाने
स्व-तपासणी टेस्टबेंच

GTKWave सॉफ्टवेअर

GTKWave एक पूर्ण वैशिष्ट्यीकृत GTK+ लहर आहे viewयुनिक्स, विन32, आणि मॅक OSX साठी er जे LXT, LXT2, VZT, FST, आणि GHW वाचते files तसेच मानक VCD/EVCD files आणि परवानगी देते त्यांच्या viewing त्याचे अधिकृत webसाइट येथे आहे http://gtkwave.sourceforge.net/ . GTKWave ची शिफारस केली जाते viewer द्वारे Icarus Verilog सिम्युलेशन टूल.

डिझाइनच्या कार्यक्षमतेची चाचणी घेण्यासाठी वापरकर्त्याने यशस्वीरित्या टेस्टबेंच तयार केल्यावर, वापरकर्ता आता GTKWave सॉफ्टवेअर वापरू शकतो. view तरंग रूपे.

वर GTKWave सॉफ्टवेअर लाँच करण्यासाठी view वेव्हफॉर्मसाठी, वापरकर्त्याला टूलबारच्या वरच्या बाजूला असलेल्या सिम्युलेट टेस्टबेंच बटणावर किंवा टूल्स→ सिम्युलेशन→ सिम्युलेट टेस्टबेंच या मुख्य मेनूमधून क्लिक करणे आवश्यक आहे. सिंटॅक्स त्रुटी नसल्यास, डिझाइनवर अवलंबून, GTKWave स्वयंचलितपणे लॉन्च केले जावे किंवा टेस्टबेंचमधील उत्तेजनाचे परिणाम विंडोच्या लॉगर विभागात प्रदर्शित केले जातील.

GTKWave सॉफ्टवेअर .vcd फॉरमॅट डंप उघडतेfile आपोआप GTKWave विंडो उघडल्यावर वेव्हफॉर्म दाखवत नाही. हे वापरकर्त्याला कोणते सिग्नल हवे आहेत ते निवडण्याची संधी देते view आणि निरीक्षण करा. सिग्नल निवडण्यासाठी, वापरकर्त्याला प्रदर्शित करणे आवश्यक आहे, वापरकर्त्याने एसएसटी टॅब अंतर्गत विंडोच्या डाव्या बाजूला त्यांच्या मॉड्यूल / उदाहरणाच्या नावावर क्लिक करणे आवश्यक आहे. प्रत्येक प्रसंगाच्या + वर क्लिक करून, तुम्ही त्या उदाहरणाशी संबंधित असलेले सिग्नल खालच्या विभागात पाहू शकता. त्यानंतर तुम्ही इच्छित सिग्नल ड्रॅग आणि ड्रॉप करू शकता किंवा सिग्नल विंडोमध्ये प्रदर्शित करण्यासाठी त्यावर डबल-क्लिक करू शकता. तुम्ही सर्व (CTRL + A) देखील निवडू शकता आणि त्यांना सिग्नल विंडोमध्ये घालू शकता (आकृती 9 पहा).
GTKWave सॉफ्टवेअर

सिग्नल आता सिग्नल विंडोमध्ये जोडले गेले आहेत परंतु त्याचे नक्कल करणे बाकी आहे. सिग्नल विंडोमध्ये इच्छित सिग्नल जोडल्यानंतर, वर क्लिक कराप्रतीक विंडोच्या वर्तमान रुंदीमध्ये सिग्नल बसवण्यासाठी आणि नंतर रीलोडमधून सिग्नल पुन्हा लोड कराप्रतीक टूलबारवर चिन्ह उपस्थित आहे. तुम्ही आता त्यांच्या संबंधित मूल्यांसह सिग्नल पाहू शकता.

सिग्नल मूल्ये

डीफॉल्टनुसार, सिग्नलची व्हॅल्यू हेक्साडेसिमल फॉरमॅटमध्ये असतात आणि सर्व लाटा हिरव्या रंगाच्या असतात (योग्यरित्या चालू असल्यास).

वापरकर्ता सिग्नलवर उजवे-क्लिक करून आणि डेटा फॉरमॅट किंवा कलर फॉरमॅट निवडून या सिग्नलचे गुणधर्म बदलू शकतो. वापरकर्ता सिग्नलच्या गटामध्ये विभाग करण्यासाठी रिक्त सिग्नल देखील घालू शकतो. जेव्हा तुमच्याकडे इच्छित ऑप्टिकल परिणाम असेल, तेव्हा तुम्ही जाऊन तुमची कॉन्फिगरेशन जतन करू शकता File → जतन करा लिहा File.

GTKWave टूलबार

टूलबार (आकृती 10 पहा) वापरकर्त्यास सिग्नलसाठी मूलभूत कार्ये करण्यास अनुमती देते. टूलबारवरील प्रत्येक पर्यायावर डावीकडून उजवीकडे चर्चा करू.
GTKWave टूलबार

  1. मेनू पर्याय: या पर्यायाखाली आपण करू शकतो view सॉफ्टवेअरची सर्व विविध वैशिष्ट्ये जी सॉफ्टवेअरसह खेळण्यासाठी वापरली जाऊ शकतात. या मेनू पर्यायातील तपशील या वापरकर्ता मार्गदर्शकाच्या कलम 8 अंतर्गत समाविष्ट आहेत.
  2. ट्रेस कट करा: याचा उपयोग सिग्नल विंडोमधून निवडक सिग्नल हटवण्यासाठी/कट करण्यासाठी केला जातो
  3. ट्रेसेस कॉपी करा: हे सिग्नल विंडोमधून निवडलेले सिग्नल कॉपी करण्यासाठी वापरले जाते
  4. ट्रेसेस पेस्ट करा: कॉपी केलेले/कट ट्रेस सिग्नल विंडोमध्ये वेगळ्या ठिकाणी पेस्ट केले जाऊ शकतात
  5. झूम फिट: वापरकर्त्याने प्रदर्शित करण्यासाठी निवडलेल्या विंडोच्या आकारानुसार सिग्नल बसविण्यासाठी याचा वापर केला जातो
  6. झूम वाढवा: याचा उपयोग सिग्नल विंडोमध्ये झूम करण्यासाठी केला जातो
  7. झूम आउट करा: याचा उपयोग सिग्नल विंडो झूम आउट करण्यासाठी केला जातो
  8. झूम पूर्ववत करा: याचा उपयोग सिग्नल विंडोवर झूम इन/आउट पूर्ववत करण्यासाठी केला जातो
  9. सुरू करण्यासाठी झूम करा: हे सिग्नल विंडो झूम करेल, सिग्नल सुरू होण्याची वेळ प्रदर्शित करेल.
  10. शेवटपर्यंत झूम करा: हे सिग्नल विंडोला झूम करेल जे सिग्नलची समाप्ती वेळ दर्शवेल
  11. मागील धार शोधा: हे मागील किनार दर्शविणारा मार्कर डाव्या बाजूला हलवते
  12. पुढील किनार शोधा: हे पुढील धार दर्शविणारा मार्कर उजवीकडे हलवतो
  13. लोअर/अपर बाँड स्क्रोल करा: याचा वापर करून आपण वापरकर्त्याला कोणत्या वेळेची फ्रेम प्रदर्शित करायची आहे ते सेट करू शकतो. उदाample, आम्ही 0 sec ते 500 ns अशी वेळ फ्रेम सेट करू शकतो, ते फक्त त्या कालावधीत सिग्नल प्रदर्शित करेल.
  14. रीलोड करा: जेव्हा प्रदर्शित सिग्नलमध्ये बदल होतो तेव्हा रीलोड दाबले जाते. ते नवीन पॅरामीटर्सनुसार रीलोड आणि सिग्नल प्रदर्शित करेल. उदाample, सिग्नलची टाइम फ्रेम बदलल्यानंतर, आम्हाला नवीन सेट टाइम फ्रेममध्ये सिग्नल प्रदर्शित करण्यासाठी सिग्नल रीलोड करणे आवश्यक आहे.

मेनू पर्याय

GTKWave सॉफ्टवेअरच्या डाव्या वरच्या कोपऱ्यातून, वापरकर्ता तीन उभ्या ओळींवर क्लिक करून मेनू पर्यायांमध्ये प्रवेश करू शकतो (आकृती 11 पहा). वापरकर्ता मेनू पर्यायांखाली खालील पर्याय शोधू शकतो:
मेनू पर्याय

File

द File सबमेनूमध्ये प्रवेशाशी संबंधित विविध आयटम आहेत files, VCD आयात-निर्यात files, छपाई आणि वाचन/लेखन files आणि बाहेर पडत आहे.

संपादित करा

एडिट सबमेनू विविध उपयुक्तता कार्ये करण्यासाठी वापरले जाते जसे की वेव्ह सबविंडोमधील मूल्यांचे डेटा प्रतिनिधित्व बदलणे. एडिट सबमेनू अंतर्गत पर्यायांचा वापर करून, वापरकर्ता सिग्नलचे डेटा फॉरमॅट बदलू शकतो, त्यांची पुनर्रचना करू शकतो, ते बदलू शकतो, ट्रिम करू शकतो, हायलाइट करू शकतो, सिग्नल ग्रुप करू शकतो, सिग्नलवर टिप्पणी करू शकतो, सिग्नलचा रंग बदलू शकतो.

शोध

शोध उपमेनूचा वापर निव्वळ नावे आणि मूल्यांवर शोध करण्यासाठी केला जातो. हे व्हीसीडीमधील सिग्नल आणि उदाहरणांच्या विविध पदानुक्रम स्तरांवर कार्ये करण्यास मदत करते. file.

वेळ

टाइम सबमेनूमध्ये नेव्हिगेशन्स आणि स्टेटस पॅनेल बटणांद्वारे केलेल्या फंक्शन्सचा सुपरसेट असतो.
हे साधे, वेळेशी संबंधित, झूम करणे, विशिष्ट टाइम पॉइंटवर जाणे, सिग्नलला विशिष्ट दिशेने हलवणे इत्यादी कार्ये सक्षम करते.

मार्कर

मार्कर सबमेनूचा वापर मार्करवर विविध फेरफार करण्यासाठी तसेच स्क्रोलिंग ऑफस्क्रीन नियंत्रित करण्यासाठी केला जातो.
हे सिग्नल विंडोवर असंख्य मार्कर जोडण्याची कार्यक्षमता सक्षम करते. जास्तीत जास्त 26 नाव मार्करना अनुमती आहे आणि सर्वांसाठी वेळ भिन्न असणे आवश्यक आहे.

a. सिग्नल विंडोमध्ये मार्कर जोडण्यासाठी
आवश्यक बिंदूवर लेफ्ट क्लिक करा जिथे तुम्हाला मार्कर ठेवायचा आहे आणि ALT + N दाबा. हे आवश्यक बिंदूवर एक नामांकित मार्कर (A, B, C, इ.) ठेवेल. वापरकर्ता 26 वेगवेगळ्या वेळेसाठी हे करणे सुरू ठेवू शकतो.
सर्व ठिकाणच्या मार्करवरील वेळेची तुलना करण्यासाठी, मेनू → मार्कर → मार्कर डेटा बदला दर्शवा.
हे प्रत्येक मार्करवर वेळ मूल्य असलेली विंडो उघडेल. वापरकर्ता प्रत्येक मार्करवर ठेवलेल्या वेळेचे मूल्य व्यक्तिचलितपणे लक्षात घेऊ शकतो आणि 2 मार्करमधील वेळेतील फरकाची गणना करण्यासाठी ते वजा करू शकतो.
b. सिग्नल विंडोमधील मार्कर काढण्यासाठी

वापरकर्ता मेनू → मार्कर → कलेक्ट नेम्ड मार्कर वर जाऊ शकतो. हे सिग्नल विंडोमध्ये ठेवलेले आडनावाचे मार्कर काढून टाकेल. वापरकर्ता मेनू → मार्कर → कलेक्ट ऑल नेम्ड मार्कर (आकृती 12) वर जाऊन सर्व नामांकित मार्कर काढू शकतो.
मेनू पर्याय

आकृती 13 मध्ये, सिग्नलचे रंग कसे बदलले आहेत ते आपण पाहू शकतो. तुम्ही सिग्नल विंडोमध्ये जोडलेले रिकामे सिग्नल तसेच टिप्पणीसह पाहू शकता - रिक्त सिग्नल.
तसेच 6 नामांकित मार्कर (A – E) ची उपस्थिती आणि ps मध्ये या मार्करमधील वेळ मूल्याचे एकत्रीकरण लक्षात घ्या.
मेनू पर्याय

View

द View सबमेनूचा उपयोग स्टेटस आयटम्सच्या ग्राफिकल रेंडरिंग तसेच सिग्नल सब विंडोमधील मूल्यांशी संबंधित विविध विशेषता नियंत्रित करण्यासाठी केला जातो. या मेनूमधून, तुम्ही सिग्नल विंडो ब्लॅक अँड व्हाईट किंवा रंगीत देखील बदलू शकता. द View सबमेनू तुम्हाला सेकंद (सेकंद) ते फिकोसेकंद (fs) पर्यंतचा वेळ परिमाण बदलण्यास सक्षम करतो. वापरकर्ता हा पर्याय शोधू शकतो View → स्केल टू टाइम डायमेंशन → fs.

मदत करा

हेल्प सबमेनूमध्ये ऑन-लाइन मदत सक्षम करण्यासाठी तसेच प्रोग्राम आवृत्ती माहिती प्रदर्शित करण्यासाठी पर्याय आहेत.

निष्कर्ष

हा दस्तऐवज वापरकर्त्याला त्यांच्या डिझाइनचे यशस्वीरित्या अनुकरण करण्यात आणि आवश्यक टेस्टबेंचचा मसुदा दुरुस्त करून आणि वेव्हफॉर्म्स प्रदर्शित करण्यासाठी आणि परिणामांचे निरीक्षण करण्यासाठी GTKWave सोबत Icarus Verilog वापरून कार्यक्षमता सत्यापित करण्यात मदत करण्यासाठी तयार करण्यात आला आहे.

पुनरावृत्ती इतिहास

उजळणी तारीख वर्णन
1.00 १३ मे २०२३ प्रारंभिक प्रकाशन.

R19US0011EU0100 Rev.1.0
१३ मे २०२३
© 2024 रेनेसास इलेक्ट्रॉनिक्स
लोगो

कागदपत्रे / संसाधने

RENESAS ForgeFPGA सॉफ्टवेअर सिम्युलेशन [pdf] वापरकर्ता मार्गदर्शक
REN_r19us0011eu0100, ForgeFPGA Software Simulation, ForgeFPGA Software, ForgeFPGA, ForgeFPGA सिम्युलेशन, Software Simulation, Simulation, Software

संदर्भ

एक टिप्पणी द्या

तुमचा ईमेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित आहेत *