ការក្លែងធ្វើកម្មវិធី 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)

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

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

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

អ្នកត្រូវបានកំណត់ទាំងអស់ដើម្បីក្លែងធ្វើតេស្តសាកល្បង ហើយជំហានខាងលើធានាថា 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
នៅពេលក្លែងធ្វើកម្មវិធីត្រូវដឹងពីរបៀបដែលពេលវេលាត្រូវបានកំណត់។ ឯកតាពន្យាពេលត្រូវបានបញ្ជាក់ដោយប្រើ `ការណែនាំខ្នាតពេលវេលា ដែលបញ្ជាក់ឯកតាពេលវេលា និងភាពជាក់លាក់សម្រាប់ម៉ូឌុលដែលធ្វើតាមវា។ មាត្រដ្ឋានពេលវេលាជួយកំណត់ថាតើលេខ 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)។

ឥឡូវនេះ សញ្ញាត្រូវបានបន្ថែមទៅបង្អួចសញ្ញា ប៉ុន្តែវាមិនទាន់ត្រូវបានក្លែងធ្វើនៅឡើយទេ។ បន្ទាប់ពីបន្ថែមសញ្ញាដែលចង់បានទៅបង្អួចសញ្ញាសូមចុចលើ
ដើម្បីឱ្យសមនឹងសញ្ញាទៅនឹងទទឹងបច្ចុប្បន្ននៃបង្អួច ហើយបន្ទាប់មកផ្ទុកឡើងវិញនូវសញ្ញាពីការផ្ទុកឡើងវិញ
និមិត្តសញ្ញាបង្ហាញនៅលើរបារឧបករណ៍។ ឥឡូវនេះ អ្នកអាចឃើញសញ្ញាជាមួយនឹងតម្លៃរៀងៗខ្លួន។
តម្លៃសញ្ញា
តាមលំនាំដើម តម្លៃនៃសញ្ញាគឺស្ថិតនៅក្នុងទម្រង់គោលដប់ប្រាំមួយ ហើយរលកទាំងអស់មានពណ៌បៃតង (ប្រសិនបើដំណើរការត្រឹមត្រូវ)។
អ្នកប្រើប្រាស់អាចផ្លាស់ប្តូរលក្ខណសម្បត្តិនៃសញ្ញាទាំងនេះដោយចុចកណ្ដុរស្ដាំលើសញ្ញា ហើយជ្រើសរើសទម្រង់ទិន្នន័យ ឬទម្រង់ពណ៌។ អ្នកប្រើក៏អាចបញ្ចូលសញ្ញាទទេដើម្បីបង្កើតផ្នែករវាងក្រុមសញ្ញា។ នៅពេលដែលអ្នកទទួលបានលទ្ធផលអុបទិកដែលអ្នកចង់បាន អ្នកអាចរក្សាទុកការកំណត់របស់អ្នកដោយចូលទៅ File → សរសេររក្សាទុក File.
របារឧបករណ៍ GTKWave
របារឧបករណ៍ (សូមមើលរូបភាពទី 10) អនុញ្ញាតឱ្យអ្នកប្រើអនុវត្តមុខងារមូលដ្ឋានសម្រាប់សញ្ញា។ ចូរយើងពិភាក្សាអំពីជម្រើសនីមួយៗនៅលើរបារឧបករណ៍ពីឆ្វេងទៅស្តាំ។

- ជម្រើសម៉ឺនុយ៖ នៅក្រោមជម្រើសនេះ យើងអាចធ្វើបាន view លក្ខណៈពិសេសផ្សេងៗនៃកម្មវិធីដែលអាចប្រើដើម្បីលេងជាមួយកម្មវិធី។ ព័ត៌មានលម្អិតនៅក្រោមជម្រើសម៉ឺនុយនេះត្រូវបានគ្របដណ្តប់នៅក្រោមផ្នែកទី 8 នៃការណែនាំអ្នកប្រើប្រាស់នេះ។
- កាត់ដាន៖ វាត្រូវបានប្រើដើម្បីលុប/កាត់សញ្ញាជ្រើសរើសពីបង្អួចសញ្ញា
- ចម្លងដាន៖ វាត្រូវបានប្រើដើម្បីចម្លងសញ្ញាដែលបានជ្រើសរើសពីបង្អួចសញ្ញា
- បិទភ្ជាប់ដាន៖ ដានដែលបានចម្លង/កាត់អាចត្រូវបានបិទភ្ជាប់នៅទីតាំងផ្សេងគ្នានៅក្នុងបង្អួចសញ្ញា
- ពង្រីកសម៖ វាត្រូវបានប្រើដើម្បីឱ្យសមនឹងសញ្ញាដោយយោងតាមទំហំនៃបង្អួចដែលអ្នកប្រើជ្រើសរើសដើម្បីបង្ហាញ
- ពង្រីក៖ វាត្រូវបានប្រើដើម្បីពង្រីកក្នុងបង្អួចសញ្ញា
- ពង្រីក៖ វាត្រូវបានប្រើដើម្បីពង្រីកបង្អួចសញ្ញា
- ពង្រីកមិនធ្វើវិញ៖ វាត្រូវបានប្រើដើម្បីមិនធ្វើការពង្រីក/បង្រួមនៅលើបង្អួចសញ្ញា
- ពង្រីកដើម្បីចាប់ផ្តើម៖ វានឹងពង្រីកវិនដូសញ្ញា ដោយបង្ហាញពេលវេលាចាប់ផ្តើមនៃសញ្ញា។
- ពង្រីកដល់ទីបញ្ចប់៖ វានឹងពង្រីកវិនដូសញ្ញាដែលបង្ហាញពេលបញ្ចប់នៃសញ្ញា
- ស្វែងរកគែមមុន។៖ វាប្តូរសញ្ញាសម្គាល់ទៅផ្នែកខាងឆ្វេងដែលបង្ហាញពីគែមមុន។
- ស្វែងរកគែមបន្ទាប់៖ វាប្តូរសញ្ញាសម្គាល់ទៅខាងស្តាំដែលបង្ហាញពីគែមបន្ទាប់
- រំកិលចំណងខាងក្រោម/ខាងលើ៖ ដោយប្រើវា យើងអាចកំណត់ពេលវេលាដែលអ្នកប្រើប្រាស់ចង់បង្ហាញ។ សម្រាប់អតីតample យើងអាចកំណត់ time frame ពី 0 sec ទៅ 500 ns វានឹងបង្ហាញសញ្ញានៅក្រោមរយៈពេលនោះតែប៉ុណ្ណោះ។
- ផ្ទុកឡើងវិញ៖ ការផ្ទុកឡើងវិញត្រូវបានចុចនៅពេលណាដែលមានការផ្លាស់ប្តូរចំពោះសញ្ញាដែលបានបង្ហាញ។ វានឹងផ្ទុកឡើងវិញ និងបង្ហាញសញ្ញាយោងទៅតាមប៉ារ៉ាម៉ែត្រថ្មី។ សម្រាប់អតីត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, ការក្លែងធ្វើកម្មវិធី, ការក្លែងធ្វើ, កម្មវិធី |
