ការក្លែងធ្វើកម្មវិធី RENESAS ForgeFPGA

ការក្លែងធ្វើកម្មវិធី RENESAS ForgeFPGA

ព័ត៌មានសំខាន់

ការក្លែងធ្វើគឺជាបច្ចេកទេសនៃការអនុវត្តការជំរុញការបញ្ចូលផ្សេងៗគ្នាទៅនឹងការរចនានៅពេលវេលាផ្សេងៗគ្នា ដើម្បីពិនិត្យមើលថាតើកូដ RTL មានឥរិយាបថដូចបំណងដែរឬទេ។ វាត្រូវបានប្រើដើម្បីផ្ទៀងផ្ទាត់ភាពរឹងមាំនៃការរចនា។ ការក្លែងធ្វើអនុញ្ញាតឱ្យអ្នកប្រើ view ដ្យាក្រាមពេលវេលានៃសញ្ញាដែលទាក់ទងដើម្បីយល់ពីរបៀបដែលការពិពណ៌នាការរចនានៅក្នុងការរចនា file មានឥរិយាបទ។

Testbenches គឺជាបំណែកនៃកូដដែលត្រូវបានប្រើសម្រាប់ការក្លែងធ្វើ។ Testbench សាមញ្ញនឹងធ្វើឱ្យ Unit Under Test (UUT) ភ្លាមៗ ហើយជំរុញការបញ្ចូល។ កម្មវិធី Go Configure ប្រើប្រាស់ Icarus Verilog (iVerilog) និង GTKWave ដើម្បីសង្កេតមើលទម្រង់រលកនៃការក្លែងធ្វើជាមួយនឹងការជំរុញដែលបានផ្តល់នៅក្នុង testbench ។

ឯកសារនេះពិពណ៌នាអំពីជំហានដែលត្រូវធ្វើនៅពេលដំឡើង Icarus នៅលើប្រព័ន្ធរបស់អ្នក និងរបៀបដំណើរការការក្លែងធ្វើដោយជោគជ័យ។

ការដំឡើង Icarus Verilog

a. ដំឡើងកំណែចុងក្រោយបំផុតរបស់ Icarus Verilog (IVerilog) ពី https://bleyer.org/icarus/
b. ត្រូវប្រាកដថាបន្ថែម IVerilog ទៅ PATH ហើយអនុញ្ញាតឱ្យវាដំឡើង GTKWave (សូមមើលរូបភាពទី 1)
ការដំឡើង Icarus Verilog

c. បើកកម្មវិធី Go Configure ហើយជ្រើសរើសផ្នែក៖ SLG47910(Rev BB) ដើម្បីបើក Forge Workshop (សូមមើលរូបភាពទី 2)។
ការដំឡើង Icarus Verilog

d. ចុចលើ FPGA Editor នៅកណ្តាលរបារឧបករណ៍នៅខាងលើ ឬអ្នកប្រើប្រាស់ក៏អាចចុចពីរដងលើរចនាសម្ព័ន្ធ FPGA Core នៅកណ្តាលបង្អួចផងដែរ។
ការដំឡើង Icarus Verilog

e. បង្អួចថ្មីបើកហៅថា សិក្ខាសាលា Forge ។ នៅក្នុងរបារឧបករណ៍ម៉ឺនុយនៅផ្នែកខាងលើ ចុចលើ ជម្រើស → ការកំណត់។ នៅក្នុងប្រអប់ការកំណត់ សូមចូលទៅកាន់ ឧបករណ៍នៅក្រោមផ្ទាំង ការកំណត់អ្នកប្រើប្រាស់។ ដោះ​ជ្រើស​ប្រើ​ប្រអប់​បរិស្ថាន​ប្រព័ន្ធ​សម្រាប់​ទាំង Icarus Verilog និង GTKWave។ បន្ថែមផ្លូវទៅ Iverilog និង GTKWave ដែលបានរក្សាទុកក្នុងប្រព័ន្ធរបស់អ្នកទៅក្នុងចន្លោះដែលបានផ្តល់ឱ្យ (សូមមើលរូបភាពទី 4) ។
ការដំឡើង Icarus Verilog

អ្នក​ត្រូវ​បាន​កំណត់​ទាំងអស់​ដើម្បី​ក្លែង​ធ្វើ​តេស្ត​សាកល្បង ហើយ​ជំហាន​ខាង​លើ​ធានា​ថា GTKWave បើក​ដំណើរការ​ដោយ​ស្វ័យ​ប្រវត្តិ ពេល​ក្លែង​ធ្វើ​តេស្ត​លើ​កម្មវិធី Go Configure។

កៅអីសាកល្បង

ជំហានដ៏សំខាន់បំផុតក្នុងការអនុវត្តប្រព័ន្ធណាមួយដោយជោគជ័យគឺការផ្ទៀងផ្ទាត់ការរចនា និងមុខងាររបស់វា។ ការផ្ទៀងផ្ទាត់ប្រព័ន្ធស្មុគ្រស្មាញបន្ទាប់ពីអនុវត្តផ្នែករឹងមិនមែនជាជម្រើសដ៏ឆ្លាតវៃនោះទេ។ វា​គ្មាន​ប្រសិទ្ធភាព​ទេ​ចំពោះ​លុយ ពេលវេលា និង​ធនធាន។ ដូច្នេះក្នុងករណី FPGA តេស្តសាកល្បងត្រូវបានប្រើដើម្បីសាកល្បងកូដប្រភព Verilog ។

ឧបមាថាយើងមានធាតុបញ្ចូលដែលមានចំនួន 11 ប៊ីត ហើយយើងចង់សាកល្បងឧបករណ៍សម្រាប់តម្លៃបន្សំបញ្ចូលដែលអាចធ្វើបានទាំងអស់ ពោលគឺ (211) ។ ដោយសារតែនេះគឺជាចំនួនដ៏ច្រើននៃបន្សំ វាមិនអាចទៅរួចទេក្នុងការសាកល្បងវាដោយដៃ។ ក្នុងករណីបែបនេះ testbenches មានប្រយោជន៍ខ្លាំងណាស់ព្រោះអ្នកអាចសាកល្បងការរចនាដោយស្វ័យប្រវត្តិសម្រាប់តម្លៃដែលអាចធ្វើបានទាំងអស់ ហេតុដូច្នេះហើយសូមបញ្ជាក់ពីភាពជឿជាក់នៃការរចនាសាកល្បង។ Verilog Testbenches ត្រូវបានប្រើដើម្បីក្លែងធ្វើ និងវិភាគការរចនាដោយមិនចាំបាច់ប្រើឧបករណ៍ផ្នែករឹងណាមួយឡើយ។

ការរចនានៅក្រោមការសាកល្បង អក្សរកាត់ថា DUT គឺជាម៉ូឌុលដែលអាចសំយោគបាននៃមុខងារដែលយើងចង់សាកល្បង។ ម្យ៉ាង​ទៀត​វា​ជា​ការ​រចនា​សៀគ្វី​ដែល​យើង​ចង់​សាកល្បង។ យើងអាចពិពណ៌នាអំពី DUT របស់យើងដោយប្រើរចនាប័ទ្មគំរូមួយក្នុងចំណោមរចនាប័ទ្មទាំងបីនៅក្នុង Verilog – Gate-level, Dataflow ឬ Behavioral។

Testbench មិនអាចសំយោគបានទេ ដូច្នេះវាត្រូវបានប្រើសម្រាប់គោលបំណងក្លែងធ្វើតែប៉ុណ្ណោះ។ នេះអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់ប្រើប្រាស់នូវ Verilog constructs ពេញលេញ ឧ. ពាក្យគន្លឹះដូចជា "for", "$display" និង "$monitor" ជាដើម។ សម្រាប់ការសរសេរ testbenches ។ ការសាកល្បងដ៏សាមញ្ញមួយនឹងធ្វើឱ្យអង្គភាពស្ថិតនៅក្រោមការសាកល្បង (UUT) ឬឧបករណ៍នៅក្រោមការសាកល្បង (DUT) និងជំរុញការបញ្ចូល។

ការយល់ដឹងអំពី Testbench

ការយល់ដឹងអំពី Testbench

និយមន័យតាមមាត្រដ្ឋាននៅក្នុង Testbench

នៅពេលក្លែងធ្វើកម្មវិធីត្រូវដឹងពីរបៀបដែលពេលវេលាត្រូវបានកំណត់។ ឯកតាពន្យាពេលត្រូវបានបញ្ជាក់ដោយប្រើ `ការណែនាំខ្នាតពេលវេលា ដែលបញ្ជាក់ឯកតាពេលវេលា និងភាពជាក់លាក់សម្រាប់ម៉ូឌុលដែលធ្វើតាមវា។ មាត្រដ្ឋានពេលវេលាជួយកំណត់ថាតើលេខ 1 មានន័យយ៉ាងណាក្នុងលក្ខខណ្ឌនៃពេលវេលា។ # ត្រូវបានប្រើដើម្បីកំណត់ការពន្យាពេលដែលត្រូវណែនាំនៅក្នុងប្រព័ន្ធដោយអនុលោមតាមឯកតាពេលវេលាដែលបានបញ្ជាក់ក្នុងមាត្រដ្ឋានពេលវេលា។ ដូច្នេះ #1 មានន័យថា 1 ns នៃការពន្យារពេល ប្រសិនបើ time_unit ស្ថិតនៅក្នុង ns ។

វាក្យសម្ពន្ធ៖
`ខ្នាតពេលវេលា / /

time_unit គឺជាចំនួនពេលវេលាដែលការពន្យារពេលនៃលេខ 1 តំណាងឱ្យ។ មូលដ្ឋាន time_precision តំណាងឱ្យចំនួនខ្ទង់ទសភាគនៃភាពជាក់លាក់ដែលត្រូវប្រើទាក់ទងទៅនឹងឯកតាពេលវេលា។ (សូមមើលបន្ទាត់ទី 23 ក្នុងរូបភាពទី 5)

យើងអាចប្រើការសាងសង់ខ្នាតពេលវេលា ដើម្បីប្រើឯកតាពេលវេលាផ្សេងៗគ្នាក្នុងការរចនាដូចគ្នា។ អ្នក​ប្រើ​ត្រូវ​ចាំ​ថា​លក្ខណៈ​ពិសេស​ពន្យារ​ពេល​គឺ​មិន​អាច​សំយោគ​បាន​និង​មិន​អាច​ត្រូវ​បាន​បំប្លែង​ទៅ​ជា​តក្ក​ផ្នែក​រឹង​។ មុខងារពន្យារគឺទាំងស្រុងសម្រាប់គោលបំណងក្លែងធ្វើ។ $ពេលវេលា និង $ពេលវេលាពិត មុខងារប្រព័ន្ធត្រឡប់ពេលវេលាបច្ចុប្បន្ន ហើយទម្រង់ការរាយការណ៍លំនាំដើមអាចត្រូវបានផ្លាស់ប្តូរជាមួយនឹងកិច្ចការប្រព័ន្ធផ្សេងទៀត $timeformat ។

Exampលេ៖ 

មាត្រដ្ឋានពេលវេលា 10us/100ns
`ខ្នាតពេលវេលា 1ns/1ps
#10 កំណត់ឡើងវិញ = 1; // ពន្យារពេលសញ្ញាដោយ 10 ns
#0.49 $display(“T = %0t at Time #0.49”, $realtime);

ការពន្យារពេលដែលបានបញ្ជាក់គឺ #0.49 ដែលតិចជាងពាក់កណ្តាលម៉ោងឯកតា។ ទោះជាយ៉ាងណាក៏ដោយ ភាពជាក់លាក់នៃពេលវេលាត្រូវបានបញ្ជាក់ជា 1ps ដូច្នេះហើយម៉ាស៊ីនក្លែងធ្វើមិនអាចតូចជាង 1ns ដែលធ្វើឱ្យវាបង្គត់សេចក្តីថ្លែងការពន្យាពេលដែលបានផ្តល់ឱ្យ និងទិន្នផល 0ns ។ ដូច្នេះ សេចក្តីថ្លែងការណ៍នេះមិនអាចផ្តល់ការពន្យារពេលណាមួយឡើយ។

កំណត់ហេតុក្លែងធ្វើ៖ 

T = 1 នៅម៉ោង #0.49

សេចក្តីប្រកាសអំពីម៉ូឌុល

ការប្រកាសម៉ូឌុលនៅក្នុង testbench ណាមួយមិនដូចលេខកូដ Verilog សំខាន់ទេ។ នៅក្នុង testbench ម៉ូឌុលត្រូវបានប្រកាសដោយគ្មានច្រកស្ថានីយណាមួយជាមួយវា។ (សូមមើលបន្ទាត់ទី 25 ក្នុងរូបភាពទី 5)

វាក្យសម្ពន្ធ៖ 

ម៉ូឌុល ;

ការ​ប្រកាស​ម៉ូឌុល​ត្រូវ​បាន​បន្ត​ដោយ​ការ​កំណត់​សញ្ញា​បញ្ចូល​និង​លទ្ធផល​ដែល​បាន​កំណត់​មុន​ក្នុង​ការ​រចនា​មេ file.
យើងប្រើប្រភេទសញ្ញាពីរសម្រាប់ការបើកបរ និងសញ្ញាត្រួតពិនិត្យអំឡុងពេលពិសោធ។ ប្រភេទទិន្នន័យ reg នឹងរក្សាតម្លៃរហូតដល់តម្លៃថ្មីត្រូវបានកំណត់ទៅវា។ ប្រភេទទិន្នន័យនេះអាចត្រូវបានកំណត់តម្លៃតែនៅក្នុងប្លុកជានិច្ច ឬដំបូងប៉ុណ្ណោះ។
ប្រភេទទិន្នន័យខ្សែគឺដូចជាការតភ្ជាប់រូបវ័ន្ត។ វានឹងរក្សាតម្លៃដែលត្រូវបានជំរុញដោយច្រក ផ្តល់សេចក្តីថ្លែងការណ៍ ឬ reg ។ ប្រភេទទិន្នន័យនេះមិនអាចប្រើជាដំបូង ឬតែងតែទប់ស្កាត់បានទេ។ ការប្រកាសប៉ារ៉ាម៉ែត្រណាមួយ និងចំនួនគត់ក៏ត្រូវបានធ្វើនៅក្នុងផ្នែកនេះផងដែរ។

Exampលេ៖
Reg a,b; // ការបញ្ចូលក្នុងកូដ HDL ត្រូវបានកំណត់ថាជា reg នៅក្នុង testbench
ខ្សែ y; // សញ្ញាទិន្នផលនៅក្នុង HDL ត្រូវបានកំណត់ជាខ្សែនៅក្នុង testbench

DUT Instantation

គោលបំណងនៃ testbench គឺដើម្បីផ្ទៀងផ្ទាត់ថាតើម៉ូឌុល DUT របស់យើងកំពុងដំណើរការដែរឬទេ។ ដូច្នេះហើយ យើងត្រូវធ្វើឱ្យម៉ូឌុលរចនារបស់យើងភ្លាមៗ ដើម្បីសាកល្បងម៉ូឌុល។

វាក្យសម្ពន្ធ៖ 

(. (សញ្ញា ១), ។ សញ្ញា 1> (សញ្ញា 1));

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 ខណៈពេលដែលខ្សែ ឬ reg ដែលពួកគេភ្ជាប់នៅក្នុងកៅអីសាកល្បងគឺនៅជាប់នឹងសញ្ញានៅក្នុងវង់ក្រចក () ។ វាត្រូវបានផ្ដល់អនុសាសន៍ឱ្យសរសេរកូដការតភ្ជាប់ច្រកនីមួយៗនៅក្នុងបន្ទាត់ដាច់ដោយឡែកមួយ ដូច្នេះសារកំហុសក្នុងការចងក្រងណាមួយនឹងចង្អុលទៅលេខបន្ទាត់ត្រឹមត្រូវដែលកំហុសបានកើតឡើង។ ដោយសារតែការតភ្ជាប់ទាំងនេះត្រូវបានធ្វើឡើងតាមឈ្មោះ លំដាប់ដែលពួកវាលេចឡើងគឺមិនពាក់ព័ន្ធទេ។

DUT instantiation ក៏អាចត្រូវបានធ្វើឡើងសម្រាប់ម៉ូឌុលដែលម៉ូឌុល testbench មានឈ្មោះសញ្ញាផ្សេងគ្នា។ ការគូសផែនទីត្រឹមត្រូវនៃសញ្ញា គឺជាអ្វីដែលសំខាន់នៅពេលធ្វើភ្លាមៗ។

Exampលេ៖ 

ALU d0 (.a(A), // សញ្ញា “a” នៅក្នុង ALU គួរតែត្រូវបានភ្ជាប់ទៅ “A” នៅក្នុងម៉ូឌុល ALU_tb
.clk(នាឡិកា), // សញ្ញា “clk” នៅក្នុង ALU គួរតែភ្ជាប់ទៅម៉ូឌុល “clock” ALU_tb
.out (ចេញ)); // សញ្ញា "ចេញ" នៅក្នុង ALU គួរតែត្រូវបានភ្ជាប់ទៅ "OUT" នៅក្នុងម៉ូឌុល ALU_tb

តែងតែ & ប្លុកដំបូងនៅក្នុង Testbench មួយ។

មានប្លុកបន្តបន្ទាប់គ្នាពីរនៅក្នុង Verilog គឺដំបូង និងជានិច្ច។ វាគឺនៅក្នុងប្លុកទាំងនេះដែលយើងអនុវត្តការជំរុញ។

ប្លុកដំបូង

ប្លុកដំបូងដែលត្រូវបានប្រតិបត្តិតែម្តងគត់ ហើយត្រូវបានបញ្ចប់នៅពេលដែលបន្ទាត់ចុងក្រោយនៃប្លុកត្រូវបានប្រតិបត្តិ។ ការជំរុញត្រូវបានសរសេរទៅក្នុងប្លុកដំបូង។ (សូមមើលបន្ទាត់ 54-72 ក្នុងរូបភាពទី 5)

វាក្យសម្ពន្ធ:
..
ចាប់ផ្តើមដំបូង
$ dumpfile();
$dumpvars();
..(បញ្ចូលការជំរុញ)
ចប់

ប្លុកដំបូងចាប់ផ្តើមការប្រតិបត្តិរបស់វានៅពេលចាប់ផ្តើមនៃការក្លែងធ្វើនៅពេល t = 0 ។ ចាប់ផ្តើមជាមួយនឹងបន្ទាត់ទីមួយរវាងការចាប់ផ្តើមនិងចុងបញ្ចប់ បន្ទាត់នីមួយៗប្រតិបត្តិពីកំពូលទៅបាតរហូតដល់ការពន្យាពេលត្រូវបានឈានដល់។ នៅពេលដែលការពន្យារពេលត្រូវបានឈានដល់ ការប្រតិបត្តិនៃប្លុកនេះរង់ចាំរហូតដល់ពេលវេលាពន្យាពេល (10 ដង) បានកន្លងផុតទៅ ហើយបន្ទាប់មកទទួលយកការប្រតិបត្តិម្តងទៀត។
អ្នក​ប្រើ​អាច​កំណត់​ការ​រំញោច​ដោយ​ប្រើ​រង្វិលជុំ (សម្រាប់​ខណៈ​ពេល​ប្រសិន​បើ​ផ្សេង​ទៀត) ផង​ដែរ​នៅ​ក្នុង​ប្លុក​ដំបូង​នេះ​ជំនួស​ឱ្យ​ការ​បញ្ចូល​ការ​រួម​បញ្ចូល​ទាំង​អស់​ដោយ​ដៃ​។
ប្លុកដំបូង

 

Exampលេ៖
ការចាប់ផ្តើមដំបូង
A = 0; b = 0; // ចាប់ផ្តើមដំណើរការ
#10 a = 0; b = 1; // ការប្រតិបត្តិគឺនៅ t = 10-unit time
#10 a = 1; b = 0; // ការប្រតិបត្តិគឺនៅ t = 20-unit time
ចប់

ចាក់សំរាម Files

រឿងមួយទៀតដែលត្រូវចងចាំគឺការប្រកាស $បោះចោលfiles និង $dumpvars នៅខាងក្នុងប្លុកដំបូង (សូមមើលបន្ទាត់ 55- 56 ក្នុងរូបភាពទី 5) ។ $បោះចោលfile ត្រូវបានប្រើដើម្បីបោះចោលការផ្លាស់ប្តូរតម្លៃនៃសំណាញ់ និងការចុះឈ្មោះក្នុង file ដែលត្រូវបានគេហៅថាជាអាគុយម៉ង់របស់វា។

សម្រាប់អតីតampលេ៖

$បោះចោលfile(“alu_tb.vcd”);

នឹងបោះបង់ការផ្លាស់ប្តូរនៅក្នុង a file មានឈ្មោះ alu_tb.vcd ។ ការផ្លាស់ប្តូរត្រូវបានកត់ត្រានៅក្នុង ក file ហៅថា VCD file ដែលតំណាងឱ្យការបោះចោលការផ្លាស់ប្តូរតម្លៃ។ VCD (ការបោះចោលការផ្លាស់ប្តូរតម្លៃ) រក្សាទុកព័ត៌មានទាំងអស់អំពីការផ្លាស់ប្តូរតម្លៃ។ យើងមិនអាចមានលុយច្រើនជាងមួយដុល្លារទេ។file សេចក្តីថ្លែងការណ៍នៅក្នុងការក្លែងធ្វើ Verilog ។

$dumpvars ត្រូវ​បាន​ប្រើ​ដើម្បី​បញ្ជាក់​ថា​អថេរ​មួយ​ណា​ដែល​ត្រូវ​បោះចោល (ក្នុង file បានរៀបរាប់ដោយ $dumpfile) វិធីសាមញ្ញបំផុតក្នុងការប្រើវាគឺដោយគ្មានការប្រកែក។ វាក្យសម្ព័ន្ធទូទៅនៃ $dumpvars គឺ

$dumpvars ( <, >);

ជាមូលដ្ឋានយើងអាចបញ្ជាក់នូវម៉ូឌុលណាមួយ ហើយអថេរណាមួយនៅក្នុងម៉ូឌុលនឹងត្រូវបានបោះចោល។ មធ្យោបាយសាមញ្ញបំផុតក្នុងការប្រើនេះគឺដើម្បីកំណត់កម្រិតទៅ 0 និងឈ្មោះម៉ូឌុលជាម៉ូឌុលកំពូល (ជាធម្មតាម៉ូឌុលតេស្តកំពូល) ។

$dumpvars(0, alu_tb);

នៅពេលដែលកម្រិតត្រូវបានកំណត់ទៅ 0 ហើយមានតែឈ្មោះម៉ូឌុលប៉ុណ្ណោះដែលត្រូវបានបញ្ជាក់ វានឹងបោះចោលអថេរទាំងអស់នៃម៉ូឌុលនោះ និងអថេរទាំងអស់នៅក្នុងម៉ូឌុលកម្រិតទាបទាំងអស់ដែលភ្លាមៗដោយម៉ូឌុលកំពូលនេះ។ ប្រសិនបើម៉ូឌុលណាមួយដែលមិនដំណើរការដោយម៉ូឌុលកំពូលនេះ នោះអថេររបស់វានឹងមិនត្រូវបានគ្របដណ្តប់ទេ។ មួយ​ទៀត​ការ​ប្រកាស​ប្រាក់​ដុល្លារបោះចោលfile ត្រូវតែមកមុន $dumpvars ឬកិច្ចការប្រព័ន្ធផ្សេងទៀតដែលបញ្ជាក់ការបោះចោល។ ការចាក់សំរាមទាំងនេះ files ត្រូវ​តែ​ប្រកាស​មុន​នឹង​ការ​បញ្ចូល​សារធាតុ​ជំរុញ​ផ្សេង​ទៀត គ្មាន​តម្លៃ​នឹង​ត្រូវ​បាន​រក្សា​ទុក​នៅ​ក្នុង​ការ​បោះចោល​ទាំង​នេះ​ទេ files.

រារាំងជានិច្ច

ផ្ទុយទៅនឹងសេចក្តីថ្លែងការណ៍ដំបូង ប្លុកតែងតែប្រតិបត្តិម្តងហើយម្តងទៀត ទោះបីជាការប្រតិបត្តិចាប់ផ្តើមនៅម៉ោង t = 0។ សម្រាប់ឧ។ampដូច្នេះ សញ្ញានាឡិកាគឺចាំបាច់សម្រាប់ប្រតិបត្តិការនៃសៀគ្វីបន្តបន្ទាប់គ្នាដូចជា Flip-flops។ វាត្រូវតែត្រូវបានផ្គត់ផ្គង់ជាបន្តបន្ទាប់។ ដូច្នេះហើយ យើងអាចសរសេរកូដសម្រាប់ប្រតិបត្តិការនាឡិកានៅក្នុង testbench ដូច (សូមមើលបន្ទាត់ 52 ក្នុងរូបភាពទី 5):

ជានិច្ច
#10 clk = ~clk;
ម៉ូឌុលបញ្ចប់

សេចក្តីថ្លែងការណ៍ខាងលើត្រូវបានប្រតិបត្តិបន្ទាប់ពី 10 ns ចាប់ផ្តើមពី t = 0 ។ តម្លៃនៃ clk នឹងត្រូវបានដាក់បញ្ច្រាសបន្ទាប់ពី 10 ns ពីតម្លៃមុន។ ដូច្នេះការបង្កើតសញ្ញានាឡិកានៃទទឹងជីពចរ 20 ns ។ ដូច្នេះសេចក្តីថ្លែងការណ៍នេះបង្កើតសញ្ញានៃប្រេកង់ 50 MHz ។ វាជាការសំខាន់ក្នុងការកត់សម្គាល់ថាការចាប់ផ្តើមនៃសញ្ញាត្រូវបានធ្វើមុនពេលដែលតែងតែរារាំង។ ប្រសិនបើយើងមិនធ្វើផ្នែកចាប់ផ្តើមទេ សញ្ញា clk នឹងមាន x ពី t – 0 ហើយបន្ទាប់ពី 10 ns វានឹងត្រូវបានដាក់បញ្ច្រាសទៅ x ផ្សេងទៀត។

តេស្តសាកល្បងដោយខ្លួនឯង។

Testbench ត្រួតពិនិត្យដោយខ្លួនឯងរួមបញ្ចូលសេចក្តីថ្លែងការណ៍មួយដើម្បីពិនិត្យមើលស្ថានភាពបច្ចុប្បន្ន។

  • $បង្ហាញ ភារកិច្ចប្រព័ន្ធត្រូវបានប្រើជាចម្បងដើម្បីបង្ហាញសារបំបាត់កំហុសដើម្បីតាមដានលំហូរនៃការក្លែងធ្វើ

ចាប់ផ្តើមដំបូង
A = 0 ; b = 0 ; c = 0; #10; // អនុវត្តការបញ្ចូល រង់ចាំ
ប្រសិនបើ (y ! == 1) ចាប់ផ្តើម
$display ("000 បរាជ័យ"); // ពិនិត្យ
c = 1; #១០; // អនុវត្តការបញ្ចូល រង់ចាំ
ចប់
ផ្សេងទៀតប្រសិនបើ ( y ! == 0) ចាប់ផ្តើម
$display("001 បរាជ័យ") // ពិនិត្យ
b = 1; c = 0; #១០; ចប់
ផ្សេងទៀតប្រសិនបើ (y!==0)
$display (“010 បរាជ័យ”); // ពិនិត្យ
ចប់
ម៉ូឌុលបញ្ចប់

$បង្ហាញ ត្រូវបានប្រើសម្រាប់បង្ហាញតម្លៃនៃអថេរ ខ្សែអក្សរ ឬកន្សោម។ ពី example ពេលណាមួយនៃ if-else loop ត្រូវបានពេញចិត្ត នោះកំណត់ហេតុក្លែងធ្វើនឹងបង្ហាញ $ រៀងៗខ្លួនបង្ហាញ សេចក្តីថ្លែងការណ៍។ មានបន្ទាត់ថ្មីតាមលំនាំដើមនៅចុងបញ្ចប់នៃខ្សែអក្សរ។

$បង្ហាញ (“ពេលវេលា = %t , A = %b, B = %b, C = %b”, $ពេលវេលា, A, B, C);

តួអក្សរដែលបានរៀបរាប់នៅក្នុងសម្រង់នឹងត្រូវបានបោះពុម្ពដូចដែលពួកគេមាន។ អក្សររួមជាមួយ % បង្ហាញពីទម្រង់ខ្សែអក្សរ។ យើងប្រើ %b ដើម្បីតំណាងឱ្យទិន្នន័យគោលពីរ។ យើងអាចប្រើ %d, %h, %o សម្រាប់តំណាងឱ្យទសភាគ គោលដប់ប្រាំមួយ និងគោលប្រាំបី រៀងគ្នា។ %g ត្រូវបានប្រើសម្រាប់បង្ហាញចំនួនពិត។ ទាំងនេះនឹងត្រូវបានជំនួសដោយតម្លៃនៅខាងក្រៅសម្រង់ក្នុងលំដាប់ដែលបានរៀបរាប់។ សម្រាប់អតីតample សេចក្តីថ្លែងការណ៍ខាងលើនឹងត្រូវបានបង្ហាញនៅក្នុងកំណត់ហេតុក្លែងធ្វើដូចជា៖ ពេលវេលា = 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 អ្នកអាចសង្កេតឃើញថា បន្ទាត់កូដថ្មីត្រូវបានបន្ថែម ដើម្បីវាយតម្លៃដោយខ្លួនឯងនូវ testbench ។ ការដាក់ប្រាក់ដុល្លារបង្ហាញ និង $ម៉ូនីទ័រ សេចក្តីថ្លែងការណ៍នៅក្នុងផ្នែកផ្សេងគ្នានៃ testbench នឹងផ្តល់លទ្ធផលខុសៗគ្នា (សូមមើលរូបភាពទី 8) ។ $ពេលវេលា ដែលបានរៀបរាប់នៅក្នុងសេចក្តីថ្លែងការណ៍ទាំងនេះបោះពុម្ពពេលវេលាដែលតម្លៃកំពុងត្រូវបានបោះពុម្ពសម្រាប់។ នៅពេលដំណាលគ្នា ឯកតានិយាយថា 170000 យើងអាចដឹងពីរបៀបដែលមានភាពខុសគ្នានៃតម្លៃសម្រាប់ A និង B ដោយសារតម្លៃ $បង្ហាញ និង $ម៉ូនីទ័រ សេចក្តីថ្លែងការណ៍។
តេស្តសាកល្បងដោយខ្លួនឯង។

កម្មវិធី GTKWave

GTKWave គឺជារលក GTK+ ដែលមានលក្ខណៈពិសេសពេញលេញ viewer សម្រាប់ Unix, Win32, និង Mac OSX ដែលអាន LXT, LXT2, VZT, FST, និង GHW files ក៏ដូចជា VCD/EVCD ស្តង់ដារ files និងអនុញ្ញាតឱ្យពួកគេ។ viewing. ផ្លូវការរបស់ខ្លួន។ webគេហទំព័រគឺនៅ http://gtkwave.sourceforge.net/ . GTKWave ត្រូវបានណែនាំ viewer ដោយ Icarus Verilog ឧបករណ៍ក្លែងធ្វើ។

នៅពេលដែលអ្នកប្រើប្រាស់ត្រូវបានបង្កើតដោយជោគជ័យនូវ testbench ដើម្បីសាកល្បងមុខងារនៃការរចនា អ្នកប្រើប្រាស់អាចប្រើប្រាស់កម្មវិធី GTKWave ដើម្បី view ទម្រង់រលក។

ដើម្បីបើកដំណើរការកម្មវិធី GTKWave ទៅ view ទម្រង់រលក អ្នកប្រើប្រាស់ត្រូវចុចលើប៊ូតុង Simulate Testbench នៅផ្នែកខាងលើនៃរបារឧបករណ៍ ឬពីម៉ឺនុយមេ ឧបករណ៍ → ពិសោធ → ក្លែងធ្វើ Testbench ។ ប្រសិនបើមិនមានកំហុសវាក្យសម្ព័ន្ធទេនោះ អាស្រ័យលើការរចនា GTKWave គួរតែត្រូវបានបើកដំណើរការដោយស្វ័យប្រវត្តិ ឬលទ្ធផលនៃ stimuli នៅក្នុង testbench នឹងត្រូវបានបង្ហាញនៅក្នុងផ្នែក Logger នៃបង្អួច។

កម្មវិធី GTKWave បើកការបោះចោលទ្រង់ទ្រាយ .vcdfile ដោយស្វ័យប្រវត្តិ។ បង្អួច GTKWave មិនបង្ហាញទម្រង់រលកនៅពេលដែលវាបើក។ នេះផ្តល់ឱ្យអ្នកប្រើប្រាស់នូវឱកាសដើម្បីជ្រើសរើសសញ្ញាណាមួយដែលខ្លួនចង់ធ្វើ view និងសង្កេត។ ដើម្បីជ្រើសរើសសញ្ញា អ្នកប្រើប្រាស់ត្រូវបង្ហាញ អ្នកប្រើប្រាស់ត្រូវការចុចលើឈ្មោះម៉ូឌុល/ឧទាហរណ៍របស់ពួកគេនៅជ្រុងខាងឆ្វេងនៃបង្អួចក្រោមផ្ទាំង SST ។ ដោយចុច + នៃគ្រប់ instance អ្នកអាចមើលឃើញសញ្ញាដែលទាក់ទងជាមួយ instance នោះនៅក្នុងផ្នែកខាងក្រោម។ បន្ទាប់មកអ្នកអាចអូស និងទម្លាក់សញ្ញាដែលចង់បាន ឬចុចពីរដងដើម្បីបង្ហាញនៅក្នុងបង្អួចសញ្ញា។ អ្នកក៏អាចជ្រើសរើសទាំងអស់ (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 យើងអាចកំណត់ time frame ពី 0 sec ទៅ 500 ns វានឹងបង្ហាញសញ្ញានៅក្រោមរយៈពេលនោះតែប៉ុណ្ណោះ។
  14. ផ្ទុកឡើងវិញ៖ ការផ្ទុកឡើងវិញត្រូវបានចុចនៅពេលណាដែលមានការផ្លាស់ប្តូរចំពោះសញ្ញាដែលបានបង្ហាញ។ វានឹងផ្ទុកឡើងវិញ និងបង្ហាញសញ្ញាយោងទៅតាមប៉ារ៉ាម៉ែត្រថ្មី។ សម្រាប់អតីតample បន្ទាប់​ពី​ផ្លាស់​ប្តូ​រ​ស៊ុម​ពេល​វេលា​នៃ​សញ្ញា​, យើង​ត្រូវ​ការ​ផ្ទុក​សញ្ញា​ឡើង​វិញ​ដើម្បី​បង្ហាញ​សញ្ញា​នៅ​ក្នុង​ស៊ុម​ពេលវេលា​កំណត់​ថ្មី​។

ជម្រើសម៉ឺនុយ

ពីជ្រុងខាងឆ្វេងខាងលើនៃកម្មវិធី GTKWave អ្នកប្រើប្រាស់អាចចូលទៅកាន់ជម្រើសម៉ឺនុយដោយចុចលើបន្ទាត់បញ្ឈរបី (សូមមើលរូបភាពទី 11) ។ អ្នកប្រើប្រាស់អាចស្វែងរកជម្រើសខាងក្រោមនៅក្រោមជម្រើសម៉ឺនុយ៖
ជម្រើសម៉ឺនុយ

File

នេះ។ File ម៉ឺនុយរងមានធាតុផ្សេងៗទាក់ទងនឹងការចូលប្រើ files, នាំចូល-នាំចេញ VCD files ការបោះពុម្ព និងការអាន/សរសេរ files និងចេញ។

កែសម្រួល

ម៉ឺនុយរងកែសម្រួលត្រូវបានប្រើដើម្បីអនុវត្តមុខងារឧបករណ៍ប្រើប្រាស់ផ្សេងៗដូចជាការផ្លាស់ប្តូរតំណាងទិន្នន័យនៃតម្លៃនៅក្នុងបង្អួចរងរលក។ ដោយប្រើជម្រើសនៅក្រោមម៉ឺនុយរង កែសម្រួល អ្នកប្រើប្រាស់អាចផ្លាស់ប្តូរទ្រង់ទ្រាយទិន្នន័យនៃសញ្ញា រៀបចំពួកវាឡើងវិញ ផ្លាស់ប្តូរពួកវា កាត់វា បន្លិចវា សញ្ញាក្រុម មតិយោបល់លើសញ្ញា ផ្លាស់ប្តូរពណ៌នៃសញ្ញា។ល។

ស្វែងរក

ម៉ឺនុយរងស្វែងរកត្រូវបានប្រើដើម្បីធ្វើការស្វែងរកលើឈ្មោះ និងតម្លៃសុទ្ធ។ វាជួយអនុវត្តមុខងារនៅលើកម្រិតឋានានុក្រមផ្សេងៗគ្នានៃសញ្ញា និងឧទាហរណ៍នៅក្នុង VCD file.

ពេលវេលា

ម៉ឺនុយរងពេលវេលាមានសំណុំរងនៃមុខងារដែលអនុវត្តដោយប៊ូតុងរុករក និងបន្ទះស្ថានភាព។
វាបើកដំណើរការសាមញ្ញ ទាក់ទងនឹងពេលវេលា មុខងារដូចជាការពង្រីក ការផ្លាស់ទីទៅចំណុចពេលវេលាជាក់លាក់ ការផ្លាស់ប្តូរសញ្ញាក្នុងទិសដៅជាក់លាក់។ល។

សញ្ញាសម្គាល់

ម៉ឺនុយរងសញ្ញាសម្គាល់ត្រូវបានប្រើដើម្បីអនុវត្តឧបាយកលផ្សេងៗនៅលើសញ្ញាសម្គាល់ ក៏ដូចជាការគ្រប់គ្រងការរមូរក្រៅអេក្រង់។
វាបើកមុខងារនៃការបន្ថែមសញ្ញាសម្គាល់ជាច្រើននៅលើបង្អួចសញ្ញា។ សញ្ញាសម្គាល់ឈ្មោះអតិបរមាចំនួន 26 ត្រូវបានអនុញ្ញាត ហើយពេលវេលាសម្រាប់ទាំងអស់ត្រូវតែខុសគ្នា។

a. ដើម្បីបន្ថែមសញ្ញាសម្គាល់នៅក្នុងបង្អួចសញ្ញា
ចុច​កណ្ដុរ​ខាង​ឆ្វេង​ត្រង់​ចំណុច​ដែល​អ្នក​ចង់​ឱ្យ​ដាក់ Marker រួច​ចុច ALT + N។ វា​នឹង​ដាក់​សញ្ញា​សម្គាល់​ដែល​មាន​ឈ្មោះ (A, B, C, etc.) នៅ​ចំណុច​ដែល​ត្រូវ​ការ។ អ្នក​ប្រើ​អាច​បន្ត​ធ្វើ​វា​សម្រាប់ 26 ទីតាំង​ពេល​វេលា​ផ្សេង​គ្នា។
ដើម្បីប្រៀបធៀបតម្លៃពេលវេលានៅគ្រប់កន្លែងសម្គាល់ ម៉ឺនុយ → សញ្ញាសម្គាល់ → បង្ហាញទិន្នន័យសញ្ញាសម្គាល់ការផ្លាស់ប្តូរ។
វា​នឹង​បើក​វិនដូ​ដែល​មាន​តម្លៃ​ពេលវេលា​នៅ​សញ្ញាសម្គាល់​នីមួយៗ។ អ្នក​ប្រើ​អាច​កត់​សម្គាល់​តម្លៃ​ពេល​វេលា​ដោយ​ដៃ​នៅ​សញ្ញា​សម្គាល់​នីមួយៗ​ដែល​បាន​ដាក់​ហើយ​ដក​វា​ដើម្បី​គណនា​ពេលវេលា​ខុសគ្នា​រវាង​សញ្ញា​សម្គាល់ 2។
b. ដើម្បីលុប Marker នៅក្នុងបង្អួចសញ្ញា

អ្នកប្រើប្រាស់អាចចូលទៅកាន់ Menu → Markers → Collect Named Marker។ វានឹងលុប Marker ឈ្មោះចុងក្រោយដែលដាក់ក្នុងបង្អួចសញ្ញា។ អ្នកប្រើប្រាស់អាចលុបឈ្មោះ Markers ទាំងអស់ចេញដោយចូលទៅកាន់ Menu → Markers → Collect All Named Marker (រូបភាពទី 12)។
ជម្រើសម៉ឺនុយ

នៅក្នុងរូបភាពទី 13 យើងអាចមើលឃើញពីរបៀបដែលពណ៌សញ្ញាត្រូវបានផ្លាស់ប្តូរ។ អ្នកអាចសង្កេតមើល Blank Signal ដែលត្រូវបានបន្ថែមទៅក្នុងផ្ទាំងសញ្ញា ក៏ដូចជាមតិយោបល់ – Blank Signal។
សូមកត់សម្គាល់ផងដែរនូវវត្តមានរបស់ 6 ដែលមានឈ្មោះសម្គាល់ (A – E) និងការបូកសរុបតម្លៃពេលវេលារវាងម៉ាកសម្គាល់ទាំងនេះនៅក្នុង ps ។
ជម្រើសម៉ឺនុយ

View

នេះ។ View ម៉ឺនុយរងត្រូវបានប្រើដើម្បីគ្រប់គ្រងគុណលក្ខណៈផ្សេងៗដែលទាក់ទងនឹងការបង្ហាញក្រាហ្វិកនៃធាតុស្ថានភាព ក៏ដូចជាតម្លៃនៅក្នុងបង្អួចរងសញ្ញា។ ពីម៉ឺនុយនេះ អ្នកអាចបំប្លែងបង្អួចសញ្ញាទៅជាខ្មៅ និងស ឬពណ៌ផងដែរ។ នេះ។ View ម៉ឺនុយរងក៏អនុញ្ញាតឱ្យអ្នកផ្លាស់ប្តូរពេលវេលា Dimension ចាប់ពីវិនាទី (វិនាទី) ទៅ ficoseconds (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, ការក្លែងធ្វើកម្មវិធី, ការក្លែងធ្វើ, កម្មវិធី

ឯកសារយោង

ទុកមតិយោបល់

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ វាលដែលត្រូវការត្រូវបានសម្គាល់ *