RENESAS ForgeFPGA პროგრამული სიმულაცია
მნიშვნელოვანი ინფორმაცია
სიმულაცია არის დიზაინის სხვადასხვა შეყვანის სტიმულის გამოყენების ტექნიკა სხვადასხვა დროს, რათა შეამოწმოს, იქცევა თუ არა 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) Forge Workshop-ის გასახსნელად (იხ. სურათი 2).
d. დააწკაპუნეთ FPGA რედაქტორზე ინსტრუმენტთა პანელის ზედა ნაწილში, ან მომხმარებელს შეუძლია ასევე ორჯერ დააწკაპუნოს FPGA Core სტრუქტურაზე ფანჯრის შუაში.
e. იხსნება ახალი ფანჯარა სახელწოდებით Forge Workshop. მენიუს ხელსაწყოთა ზოლში, რომელიც მდებარეობს ზედა, დააწკაპუნეთ ოფციები → პარამეტრები. პარამეტრების დიალოგურ ფანჯარაში გადადით ინსტრუმენტებზე მომხმარებლის პარამეტრების ჩანართში. გააუქმეთ „სისტემის გარემოს ყუთის“ არჩევა Icarus Verilog-ისთვის და GTKWave-ისთვის. დაამატეთ თქვენს სისტემაში შენახული Iverilog-ისა და GTKWave-ის გზა მითითებულ სივრცეში (იხ. სურათი 4).
თქვენ ყველა მზად ხართ ტესტის მაგიდის სიმულაციაზე და ზემოაღნიშნული ნაბიჯები უზრუნველყოფენ, რომ GTKWave ავტომატურად ამოქმედდება Go Configure პროგრამული უზრუნველყოფის ტესტების სიმულაციისას.
ტესტის სკამი
ნებისმიერი სისტემის წარმატებით დანერგვის ყველაზე გადამწყვეტი ნაბიჯი არის დიზაინისა და მისი ფუნქციონირების შემოწმება. რთული სისტემის შემოწმება ტექნიკის დანერგვის შემდეგ არ არის გონივრული არჩევანი. ის არაეფექტურია ფულის, დროისა და რესურსების თვალსაზრისით. აქედან გამომდინარე, FPGA-ს შემთხვევაში, testbench გამოიყენება Verilog წყაროს კოდის შესამოწმებლად.
დავუშვათ, რომ გვაქვს 11 ბიტიანი შეყვანა და გვინდა შევამოწმოთ მოწყობილობა ყველა შესაძლო შეყვანის კომბინაციის მნიშვნელობებზე, ანუ (211). ვინაიდან ეს არის კომბინაციების ძალიან დიდი რაოდენობა, შეუძლებელია მისი ხელით შემოწმება. ასეთ შემთხვევებში, ტესტის სკამი ძალიან სასარგებლოა, რადგან თქვენ შეგიძლიათ ავტომატურად შეამოწმოთ დიზაინი ყველა შესაძლო მნიშვნელობისთვის და, შესაბამისად, დაადასტუროთ ტესტის დიზაინის სანდოობა. Verilog Testbenches გამოიყენება დიზაინის სიმულაციისა და ანალიზისთვის რაიმე ფიზიკური აპარატურის მოწყობილობის საჭიროების გარეშე.
ტესტირებადი დიზაინი, შემოკლებით DUT, არის ფუნქციონირების სინთეზირებადი მოდული, რომლის ტესტირებაც გვინდა. სხვა სიტყვებით რომ ვთქვათ, ეს არის მიკროსქემის დიზაინი, რომლის შემოწმებაც გვინდა. ჩვენ შეგვიძლია აღვწეროთ ჩვენი DUT სამი მოდელის სტილის გამოყენებით Verilog-ში - Gate-level, Dataflow ან Behavioral.
ტესტის მაგიდა არ არის სინთეზირებადი, ამიტომ იგი გამოიყენება მხოლოდ სიმულაციური მიზნებისთვის. ეს საშუალებას აძლევს მომხმარებელს გამოიყენოს Verilog-ის კონსტრუქციების სრული სპექტრი, მაგ., საკვანძო სიტყვები, როგორიცაა „for“, „$display“ და „$monitor“ და ა.შ. ტესტის სკამების დასაწერად. მარტივი სატესტო მაგიდა ასახავს ერთეულს ტესტის ქვეშ (UUT) ან მოწყობილობის ტესტის ქვეშ (DUT) და დისკზე შეყვანებს.
სატესტო ადგილის გაგება
Timescale განმარტება Testbench-ში
სიმულაციისას პროგრამულმა უნდა იცოდეს როგორ განისაზღვრა დრო. დაყოვნების ერთეული მითითებულია `timescale დირექტივის გამოყენებით, რომელიც განსაზღვრავს დროის ერთეულს და სიზუსტეს მოდულებისთვის, რომლებიც მას მიჰყვება. `დროის მასშტაბი გვეხმარება იმის დადგენაში, თუ რას ნიშნავს #1 დროის თვალსაზრისით. # გამოიყენება სისტემაში შესატანი შეფერხების დასადგენად დროის ერთეულის მიხედვით, რომელიც მითითებულია დროის მასშტაბში. ასე რომ, #1 ნიშნავს 1 ns დაგვიანებას, თუ დროის_ერთეული არის ns.
სინტაქსი:
`ვადიანი / /
დროის_ერთეული არის დროის რაოდენობა, რომელიც წარმოადგენს #1-ის დაყოვნებას. დროის_სიზუსტის ბაზა წარმოადგენს სიზუსტის რამდენი ათობითი წერტილის გამოყენებას დროის ერთეულებთან შედარებით. (იხილეთ ხაზი 23 სურათზე 5)
ჩვენ შეგვიძლია გამოვიყენოთ დროის მასშტაბის კონსტრუქციები იმავე დიზაინში დროის სხვადასხვა ერთეულების გამოსაყენებლად. მომხმარებელმა უნდა ახსოვდეს, რომ დაყოვნების სპეციფიკაციები არ არის სინთეზირებადი და არ შეიძლება გარდაიქმნას აპარატურულ ლოგიკაში. დაყოვნების ფუნქციები მთლიანად სიმულაციური მიზნებისთვისაა. $დრო და $რეალურ დროში სისტემის ფუნქციები აბრუნებს მიმდინარე დროს და ნაგულისხმევი მოხსენების ფორმატი შეიძლება შეიცვალოს სხვა სისტემური დავალების $timeformat-ით.
Exampლე:
`დროის მასშტაბი 10 აშშ/100 წმ
`დროის მასშტაბი 1წ/1წმ
#10 გადატვირთვა = 1; // აყოვნებს სიგნალს 10 ნმ
#0.49 $ჩვენება ("T = %0t დროს #0.49", $რეალურ დროში) ;
მითითებული დაყოვნება არის #0.49, რაც ნაკლებია დროის ნახევარზე. თუმცა, დროის სიზუსტე მითითებულია 1 ps-ზე და, შესაბამისად, სიმულატორი არ შეიძლება იყოს 1ns-ზე ნაკლები, რაც აიძულებს მას დამრგვალოს მოცემული დაყოვნების განცხადება და გამოიღოს 0ns. ასე რომ, ეს განცხადება არ იძლევა რაიმე შეფერხებას.
სიმულაციის ჟურნალი:
T = 1 დროს #0.49
მოდულის დეკლარაცია
მოდულის დეკლარაცია ნებისმიერ საცდელ მაგიდაზე განსხვავდება Verilog-ის ძირითადი კოდისგან. ტესტის მაგიდაზე მოდული გამოცხადებულია ტერმინალის პორტების გარეშე. (იხილეთ სტრიქონი 25 სურათზე 5)
სინტაქსი:
მოდული ;
მოდულის დეკლარაციას მოჰყვება მთავარ დიზაინში ადრე განსაზღვრული შემავალი და გამომავალი სიგნალების განსაზღვრა file.
ჩვენ ვიყენებთ ორი ტიპის სიგნალს მართვისთვის და სიმულაციის დროს სიგნალების მონიტორინგისთვის. reg მონაცემთა ტიპი შეინარჩუნებს მნიშვნელობას მანამ, სანამ მას ახალი მნიშვნელობა არ მიენიჭება. ამ მონაცემთა ტიპს შეიძლება მიენიჭოს მნიშვნელობა მხოლოდ ყოველთვის ან საწყის ბლოკში.
მავთულის მონაცემთა ტიპი ჰგავს ფიზიკურ კავშირს. ის ინახავს მნიშვნელობას, რომელიც ამოძრავებს პორტს, მინიჭების განცხადებას ან reg. ამ ტიპის მონაცემების გამოყენება შეუძლებელია საწყის ან ყოველთვის ბლოკში. ნებისმიერი პარამეტრი და მთელი რიცხვის დეკლარაცია ასევე კეთდება ამ განყოფილებაში.
Exampლე:
რეგ 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)
სინტაქსი:
..
საწყისი დასაწყისი
$ ნაგავსაყრელიfile();
$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“);
ჩააგდებს ცვლილებებს ა file სახელად alu_tb.vcd. ცვლილებები აღირიცხება ა file სახელწოდებით VCD file ეს ნიშნავს ღირებულების ცვლილების ნაგავსაყრელს. VCD (value change dump) ინახავს ყველა ინფორმაციას ღირებულების ცვლილებების შესახებ. ჩვენ არ შეგვიძლია გვქონდეს ერთზე მეტი $dumpfile განცხადებები Verilog სიმულაციაში.
$დუმპვარები გამოიყენება იმის დასაზუსტებლად, თუ რომელი ცვლადები უნდა იყოს გადაყრილი (ში file ნახსენები $dump-ის მიერfile). მისი გამოყენების უმარტივესი გზაა ყოველგვარი არგუმენტის გარეშე. $dumpvars-ის ზოგადი სინტაქსი არის
$დუმპვარები ( <, >);
ჩვენ ძირითადად შეგვიძლია განვსაზღვროთ რომელი მოდულები და რომელი ცვლადები მოდულებში იქნება გადაყრილი. ამის გამოყენების უმარტივესი გზა არის დონის 0-ზე დაყენება და მოდულის სახელი, როგორც ზედა მოდული (როგორც წესი, ზედა ტესტის მოდული).
$დუმპვარები(0, alu_tb);
როდესაც დონე დაყენებულია 0-ზე, და მითითებულია მხოლოდ მოდულის სახელი, ის ათავსებს ამ მოდულის ყველა ცვლადს და ყველა ცვლადს ქვედა დონის ყველა მოდულში, რომელიც დაყენებულია ამ ზედა მოდულის მიერ. თუ რომელიმე მოდული არ არის ინსტალირებული ამ ზედა მოდულით, მაშინ მისი ცვლადი არ იქნება დაფარული. კიდევ ერთი, დოლარის დეკლარაციანაგავსაყრელიfile უნდა დადგეს $dumpvars-მდე ან სხვა სისტემის ამოცანებზე, რომლებიც განსაზღვრავს dump-ს. ეს ნაგავსაყრელი files უნდა იყოს დეკლარირებული სტიმულის სხვა შეყვანამდე, ამ ნაგავსაყრელში მნიშვნელობა არ შეინახება files.
ყოველთვის დაბლოკვა
საწყისი განცხადებებისგან განსხვავებით, ყოველთვის ბლოკი განმეორებით სრულდება, თუმცა შესრულება იწყება t=0 დროს. მაგ.ampმაგალითად, საათის სიგნალი აუცილებელია ისეთი თანმიმდევრული სქემების მუშაობისთვის, როგორიცაა Flip-flops. მას მუდმივად სჭირდება მიწოდება. მაშასადამე, ჩვენ შეგვიძლია დავწეროთ საათის მუშაობის კოდი ტესტის მაგიდაზე, როგორც (იხ. სტრიქონი 52 სურათზე 5):
ყოველთვის
#10 clk = ~clk;
ენდომოდული
ზემოაღნიშნული განცხადება შესრულდება 10 ns-ის შემდეგ, t = 0-დან დაწყებული. clk-ის მნიშვნელობა შებრუნებული იქნება წინა მნიშვნელობიდან 10 ns-ის შემდეგ. ამრიგად, 20 ns პულსის სიგანის საათის სიგნალის გენერირება. ამიტომ, ეს განცხადება წარმოქმნის სიგნალს 50 MHz სიხშირით. მნიშვნელოვანია აღინიშნოს, რომ სიგნალის ინიციალიზაცია ხდება ყოველთვის ბლოკირებამდე. თუ ჩვენ არ გავაკეთებთ ინიციალიზაციის ნაწილს, clk სიგნალი იქნება x t – 0-დან, ხოლო 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; დასასრული
სხვა თუ (y!==0)
$display („010 ვერ“); //შემოწმება
დასასრული
ენდომოდული
$ჩვენება გამოიყენება ცვლადების, სტრიქონების ან გამონათქვამების მნიშვნელობების საჩვენებლად. ზემოაღნიშნულიდან ყოფილიampროდესაც რომელიმე if-else ციკლი დაკმაყოფილებულია, სიმულატორის ჟურნალი აჩვენებს მის შესაბამის $-ს.ჩვენება განცხადება. ნაგულისხმევად არის ახალი ხაზი სტრიქონების ბოლოს.
$ჩვენება („დრო = %t, A = %b, B = %b, C = % b“, $დრო, A,B,C);
ციტატებში აღნიშნული სიმბოლოები დაიბეჭდება ისე, როგორც არის. ასო %-თან ერთად აღნიშნავს სტრიქონის ფორმატს. ჩვენ ვიყენებთ %b-ს ორობითი მონაცემების წარმოსაჩენად. ჩვენ შეგვიძლია გამოვიყენოთ %d, %h, %o შესაბამისად ათწილადის, თექვსმეტობითი და რვატულის წარმოსაჩენად. %g გამოიყენება რეალური რიცხვების გამოსახატავად. ისინი შეიცვლება ციტატის გარეთ არსებული მნიშვნელობებით აღნიშნული თანმიმდევრობით. მაგampზემოაღნიშნული განცხადება ნაჩვენები იქნება სიმულაციის ჟურნალში, როგორც: დრო = 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ს და საშუალებას აძლევს მათ viewინგ. მისი ოფიციალური 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).
სიგნალები ახლა ემატება სიგნალის ფანჯარას, მაგრამ მისი სიმულაცია ჯერ არ არის. სიგნალის ფანჯარაში სასურველი სიგნალების დამატების შემდეგ დააწკაპუნეთ სიგნალების მორგება ფანჯრის მიმდინარე სიგანეზე და შემდეგ გადატვირთეთ სიგნალები გადატვირთვიდან
ინსტრუმენტთა პანელზე არსებული სიმბოლო. ახლა თქვენ შეგიძლიათ ნახოთ სიგნალები მათი შესაბამისი მნიშვნელობებით.
სიგნალის მნიშვნელობები
ნაგულისხმევად, სიგნალების მნიშვნელობები არის თექვსმეტობით ფორმატში და ყველა ტალღა შეღებილია მწვანე (თუ სწორად მუშაობს).
მომხმარებელს შეუძლია შეცვალოს ამ სიგნალის თვისებები სიგნალზე მარჯვენა ღილაკით დაჭერით და მონაცემთა ფორმატის ან ფერის ფორმატის არჩევით. მომხმარებელს ასევე შეუძლია ცარიელი სიგნალის ჩასმა სიგნალების ჯგუფს შორის სექციების გასაკეთებლად. როდესაც თქვენ გაქვთ სასურველი ოპტიკური შედეგი, შეგიძლიათ შეინახოთ თქვენი კონფიგურაციები File → ჩაწერეთ შენახვა File.
GTKWave Toolbar
ხელსაწყოების პანელი (იხ. სურათი 10) საშუალებას აძლევს მომხმარებელს შეასრულოს სიგნალის ძირითადი ფუნქციები. მოდით განვიხილოთ თითოეული ვარიანტი ხელსაწყოთა ზოლზე მარცხნიდან მარჯვნივ.
- მენიუს ოფციები: ამ ვარიანტის მიხედვით შეგვიძლია view პროგრამული უზრუნველყოფის ყველა სხვადასხვა მახასიათებელი, რომელიც შეიძლება გამოყენებულ იქნას პროგრამული უზრუნველყოფის სათამაშოდ. ამ მენიუს პარამეტრის დეტალები მოცემულია ამ მომხმარებლის სახელმძღვანელოს მე-8 განყოფილებაში.
- ამოჭრა კვალი: გამოიყენება სიგნალის ფანჯრიდან შერჩეული სიგნალის წასაშლელად/გასაჭრელად
- დააკოპირეთ კვალი: გამოიყენება არჩეული სიგნალის სიგნალის ფანჯრიდან კოპირებისთვის
- ჩასვით კვალი: კოპირებული/მოჭრილი კვალი შეიძლება ჩაიწეროს სხვა ადგილას სიგნალის ფანჯარაში
- Zoom Fit: გამოიყენება სიგნალების დასაყენებლად იმ ფანჯრის ზომის მიხედვით, რომელსაც მომხმარებელი ირჩევს ჩვენებისთვის
- მასშტაბირება: გამოიყენება სიგნალის ფანჯარაში გასადიდებლად
- მასშტაბირება: გამოიყენება სიგნალის ფანჯრის გასადიდებლად
- მასშტაბის გაუქმება: გამოიყენება სიგნალის ფანჯარაში მასშტაბირების/შემცირების გასაუქმებლად
- მასშტაბირება დასაწყებად: ეს გაადიდებს სიგნალის ფანჯარას, აჩვენებს სიგნალების დაწყების დროს.
- მასშტაბირება ბოლომდე: ეს გაადიდებს სიგნალის ფანჯარას, რომელიც აჩვენებს სიგნალების დასრულების დროს
- იპოვნეთ წინა ზღვარი: ეს მარკერს გადააქვს მარცხენა მხარეს, რაც მიუთითებს წინა კიდეზე
- იპოვნეთ შემდეგი ზღვარი: ეს ცვლის მარკერს მარჯვნივ, რაც მიუთითებს შემდეგ კიდეზე
- გადაახვიეთ ქვედა/ზედა ბმა: ამის გამოყენებით ჩვენ შეგვიძლია დავაყენოთ დროის ჩარჩო, რომელშიც მომხმარებელს სურს აჩვენოს. მაგampჩვენ შეგვიძლია დავაყენოთ დროის ჩარჩო 0 წმ-დან 500 წმ-მდე, ის აჩვენებს სიგნალებს მხოლოდ ამ ხანგრძლივობით.
- გადატვირთვა: გადატვირთვა დაჭერილია, როდესაც ხდება გამოჩენილი სიგნალის ცვლილება. ის გადაიტვირთება და აჩვენებს სიგნალს ახალი პარამეტრების მიხედვით. მაგampასევე, სიგნალის დროის ჩარჩოს შეცვლის შემდეგ, ჩვენ უნდა გადავტვირთოთ სიგნალი, რომ სიგნალი გამოვაჩინოთ ახალ დაყენებულ დროში.
მენიუს ოფციები
GTKWave პროგრამული უზრუნველყოფის მარცხენა ზედა კუთხიდან მომხმარებელს შეუძლია მენიუს პარამეტრების წვდომა სამი ვერტიკალური ხაზის დაწკაპუნებით (იხ. სურათი 11). მომხმარებელს შეუძლია მოძებნოს შემდეგი პარამეტრები მენიუს პარამეტრების ქვეშ:
File
The File ქვემენიუ შეიცავს წვდომასთან დაკავშირებულ სხვადასხვა ელემენტებს files, VCD-ის იმპორტი-ექსპორტი files, ბეჭდვა და კითხვა/წერა files და გასვლა.
რედაქტირება
რედაქტირების ქვემენიუ გამოიყენება სხვადასხვა სასარგებლო ფუნქციების შესასრულებლად, როგორიცაა ტალღის ქვეფანჯარაში მნიშვნელობების მონაცემთა წარმოდგენის შეცვლა. რედაქტირების ქვემენიუში არსებული ოფციების გამოყენებით, მომხმარებელს შეუძლია შეცვალოს სიგნალების მონაცემთა ფორმატი, გადააწყოს ისინი, გადაიტანოს, შეასწოროს, მონიშნოს, დააჯგუფოს სიგნალები, კომენტარი გააკეთოს სიგნალებზე, შეცვალოს სიგნალების ფერი და ა.შ.
ძებნა
Search ქვემენიუ გამოიყენება ქსელის სახელებსა და მნიშვნელობებზე ძიების შესასრულებლად. ის ეხმარება ფუნქციების შესრულებას სიგნალებისა და ინსტანციების სხვადასხვა იერარქიულ დონეზე VCD-ში file.
დრო
დროის ქვემენიუ შეიცავს ნავიგაციისა და სტატუსის პანელის ღილაკებით შესრულებული ფუნქციების სუპერკომპლექტს.
ის იძლევა მარტივ, დროთან დაკავშირებულ ფუნქციებს, როგორიცაა მასშტაბირება, კონკრეტულ დროზე გადასვლა, სიგნალის გარკვეული მიმართულებით გადატანა და ა.შ.
მარკერი
მარკერის ქვემენიუ გამოიყენება მარკერზე სხვადასხვა მანიპულაციების შესასრულებლად, ასევე ეკრანზე გადახვევის გასაკონტროლებლად.
ის იძლევა სიგნალის ფანჯარაში მრავალი მარკერის დამატების ფუნქციონალურობას. ნებადართულია მაქსიმუმ 26 სახელის მარკერი და დრო ყველასთვის განსხვავებული უნდა იყოს.
a. სიგნალის ფანჯარაში მარკერების დასამატებლად
მარცხნივ დააწკაპუნეთ საჭირო წერტილზე, სადაც გსურთ მარკერი განთავსდეს და დააჭირეთ ALT + N. ეს მოათავსებს დასახელებულ მარკერს (A,B,C და ა.შ.) საჭირო წერტილში. მომხმარებელს შეუძლია გააგრძელოს ამის გაკეთება 26 დროის სხვადასხვა ადგილას.
დროის მნიშვნელობის შესადარებლად ყველა ადგილის მარკერზე, მენიუ → მარკერები → მარკერის მონაცემების ჩვენება.
ეს გახსნის ფანჯარას დროის მნიშვნელობით თითოეულ მარკერზე. მომხმარებელს შეუძლია ხელით შენიშნოს დროის მნიშვნელობა თითოეულ მოთავსებულ მარკერზე და გამოაკლოს ისინი 2 მარკერს შორის დროის სხვაობის გამოსათვლელად.
b. მარკერის ამოსაღებად სიგნალის ფანჯარაში
მომხმარებელს შეუძლია გადავიდეს მენიუში → მარკერები → დასახელებული მარკერის შეგროვება. ეს წაშლის სიგნალის ფანჯარაში მოთავსებულ გვარიან მარკერს. მომხმარებელს შეუძლია წაშალოს ყველა დასახელებული მარკერი მენიუში → მარკერები → შეაგროვეთ ყველა დასახელებული მარკერი (სურათი 12).
სურათზე 13, ჩვენ ვხედავთ, თუ როგორ შეიცვალა სიგნალის ფერები. თქვენ შეგიძლიათ დააკვირდეთ სიგნალის ფანჯარაში დამატებულ ცარიელ სიგნალს, ასევე კომენტარით - ცარიელი სიგნალი.
ასევე გაითვალისწინეთ 6 დასახელებული მარკერის არსებობა (A – E) და ამ მარკერებს შორის დროის მნიშვნელობის გამოთვლა ps-ში.
View
The View ქვემენიუ გამოიყენება სხვადასხვა ატრიბუტების გასაკონტროლებლად, რომლებიც ეხება სტატუსის ელემენტების გრაფიკულ გადმოცემას, ასევე სიგნალის ქვე-ფანჯრის მნიშვნელობებს. ამ მენიუდან შეგიძლიათ გადაიყვანოთ სიგნალის ფანჯარა შავ-თეთრად ან ფერად. The View ქვემენიუ ასევე საშუალებას გაძლევთ შეცვალოთ დროის განზომილება წამებიდან (წმ) ფიკოწამებამდე (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 სიმულაცია, პროგრამული სიმულაცია, სიმულაცია, პროგრამული უზრუნველყოფა |