RENESAS ForgeFPGA මෘදුකාංග අනුකරණය
වැදගත් තොරතුරු
සමාකරණය යනු RTL කේතය අපේක්ෂිත ආකාරයට හැසිරෙන්නේ දැයි පරීක්ෂා කිරීම සඳහා විවිධ කාලවලදී නිර්මාණයට විවිධ ආදාන උත්තේජක යෙදීමේ තාක්ෂණයකි. එය නිර්මාණයේ ශක්තිමත් බව තහවුරු කිරීමට භාවිතා කරයි. අනුකරණය පරිශීලකයාට ඉඩ දෙයි view නිර්මාණයේ සැලසුම් විස්තරය තේරුම් ගැනීමට අදාළ සංඥා වල කාල සටහන file හැසිරෙනවා.
ටෙස්ට් බංකු යනු සමාකරණය සඳහා භාවිතා කරන කේත කොටස් වේ. සරල පරීක්ෂණ බංකුවක් පරීක්ෂණය යටතේ ඒකකය (UUT) ක්ෂණිකව ලබා දෙන අතර ආදානය ධාවනය කරයි. Go Configure මෘදුකාංගය Icarus Verilog (iVerilog) සහ GTKWave භාවිතා කරමින් පරීක්ෂණ බංකුවෙහි සපයා ඇති උත්තේජක සමඟ සමාකරණ තරංග ආකාරය නිරීක්ෂණය කරයි.
මෙම ලේඛනය ඔබේ පද්ධතියේ Icarus ස්ථාපනය කිරීමේදී ගත යුතු පියවර සහ සාර්ථක අනුකරණයක් ක්රියාත්මක කරන්නේ කෙසේද යන්න විස්තර කරයි.
Icarus Verilog ස්ථාපනය කිරීම
a. Icarus Verilog (IVerilog) හි නවතම අනුවාදය ස්ථාපනය කරන්න https://bleyer.org/icarus/
b. PATH වෙත IVerilog එක් කිරීමට වග බලා ගන්න සහ GTKWave ස්ථාපනය කිරීමට ඉඩ දෙන්න (රූපය 1 බලන්න)
c. Forge වැඩමුළුව විවෘත කිරීමට Go Configure Software එක විවෘත කර කොටස තෝරන්න: SLG47910(Rev BB) (රූපය 2 බලන්න).
d. ඉහළින් ඇති මෙවලම් තීරුවේ මැද ඇති FPGA සංස්කාරකය මත ක්ලික් කරන්න, නැතහොත් පරිශීලකයාට කවුළුව මැද ඇති FPGA මූලික ව්යුහය මත දෙවරක් ක්ලික් කළ හැකිය.
e. Forge Workshop නමින් නව කවුළුවක් විවෘත වේ. ඉහළින් ඇති මෙනු මෙවලම් තීරුවේ, විකල්ප → සැකසුම් මත ක්ලික් කරන්න. සැකසීම් සංවාද කොටුව තුළ, පරිශීලක සැකසුම් ටැබය යටතේ මෙවලම් වෙත යන්න. Icarus Verilog සහ GTKWave යන දෙකම සඳහා භාවිත "පද්ධති පරිසර පෙට්ටිය" තෝරා නොගන්න. ලබා දී ඇති අවකාශයට Iverilog සහ GTKWave වෙත මාර්ගය එක් කරන්න (රූපය 4 බලන්න).
ඔබ පරීක්ෂණ බංකුවක් අනුකරණය කිරීමට සූදානම්ව සිටින අතර ඉහත පියවර මඟින් Go Configure මෘදුකාංගයේ testbench එකක් අනුකරණය කිරීමේදී GTKWave ස්වයංක්රීයව දියත් වන බව සහතික කරයි.
ටෙස්ට් බංකුව
ඕනෑම පද්ධතියක් සාර්ථකව ක්රියාත්මක කිරීමේ වැදගත්ම පියවර වන්නේ සැලසුම සහ එහි ක්රියාකාරීත්වය තහවුරු කිරීමයි. දෘඩාංග ක්රියාත්මක කිරීමෙන් පසු සංකීර්ණ පද්ධතියක් සත්යාපනය කිරීම ඥානවන්ත තේරීමක් නොවේ. එය මුදල්, කාලය සහ සම්පත් අතින් අකාර්යක්ෂමයි. එබැවින්, FPGA සම්බන්ධයෙන්, Verilog මූලාශ්ර කේතය පරීක්ෂා කිරීමට testbench භාවිතා කරයි.
අපට බිටු 11ක ආදානයක් ඇතැයි සිතමු, අපට හැකි සියලුම ආදාන සංයෝජන අගයන් එනම් (211) සඳහා උපාංගය පරීක්ෂා කිරීමට අවශ්ය වේ. මෙය ඉතා විශාල සංයෝජන සංඛ්යාවක් බැවින් එය අතින් පරීක්ෂා කළ නොහැක. එවැනි අවස්ථාවන්හිදී, ඔබට හැකි සියලු අගයන් සඳහා නිර්මාණය ස්වයංක්රීයව පරීක්ෂා කළ හැකි බැවින් පරීක්ෂණ බංකු ඉතා ප්රයෝජනවත් වන අතර එබැවින් පරීක්ෂණ සැලසුමේ විශ්වසනීයත්වය තහවුරු කරන්න. Verilog Testbenches කිසිදු භෞතික දෘඪාංග උපාංගයක අවශ්යතාවයකින් තොරව මෝස්තර අනුකරණය කිරීමට සහ විශ්ලේෂණය කිරීමට භාවිතා කරයි.
පරීක්ෂණය යටතේ නිර්මාණයක්, DUT ලෙස කෙටියෙන්, අපට පරීක්ෂා කිරීමට අවශ්ය ක්රියාකාරීත්වයේ සංස්ලේෂණය කළ හැකි මොඩියුලයකි. වෙනත් වචන වලින් කිවහොත්, එය අප පරීක්ෂා කිරීමට කැමති පරිපථ නිර්මාණයයි. Verilog - Gate-level, Dataflow, හෝ Behavioral හි ආකෘති නිර්මාණ ශෛලීන් තුනෙන් එකක් භාවිතයෙන් අපට අපගේ DUT විස්තර කළ හැක.
පරීක්ෂණ බංකුවක් සංස්ලේෂණය කළ නොහැක, එබැවින් එය සමාකරණ අරමුණු සඳහා පමණක් භාවිතා වේ. පරීක්ෂණ බංකු ලිවීම සඳහා පරිශීලකයාට සම්පූර්ණ පරාසයක Verilog නිර්මිතයන් භාවිතා කිරීමට මෙය ඉඩ දෙයි. සරල පරීක්ෂණ බංකුවක් පරීක්ෂණ යටතේ ඒකකය (UUT) හෝ පරීක්ෂණය යටතේ උපාංගය (DUT) සහ ධාවක යෙදවුම් ක්ෂණිකව ලබා දෙයි.
ටෙස්ට් බංකුවක් තේරුම් ගැනීම
Testbench හි කාල පරිමාණ අර්ථ දැක්වීම
සිමියුලේට් කිරීමේදී, මෘදුකාංගය කාලය නිර්වචනය කර ඇති ආකාරය දැනගත යුතුය. ප්රමාද ඒකකය නියම කරනු ලබන්නේ කාල පරිමාණ විධානය භාවිතයෙන් වන අතර, එය අනුගමනය කරන මොඩියුල සඳහා කාල ඒකකය සහ නිරවද්යතාවය සඳහන් කරයි. කාලය අනුව #1 යන්නෙන් අදහස් කරන්නේ කුමක්ද යන්න තීරණය කිරීමට කාල පරිමාණය උපකාරී වේ. # කාල පරිමාණයෙන් නිශ්චිතව දක්වා ඇති කාල ඒකකයට අනුකූලව පද්ධතිය තුළ හඳුන්වා දිය යුතු ප්රමාදය නිර්වචනය කිරීමට භාවිතා කරයි. එබැවින්, #1 යන්නෙන් අදහස් වන්නේ කාල_ඒකකය ns හි නම් ප්රමාද 1 ns වේ.
වාක්ය ඛණ්ඩ:
කාල පරිමාණය / /
time_unit යනු #1 හි ප්රමාදයක් නියෝජනය කරන කාලයයි. කාල_නිරවද්යතා පදනම කාල ඒකකවලට සාපේක්ෂව භාවිතා කළ යුතු නිරවද්යතාවයේ දශම ලක්ෂ්ය ගණන නියෝජනය කරයි. (රූපය 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
මොඩියුල ප්රකාශනය
ඕනෑම ටෙස්ට් බංකුවක මොඩියුල ප්රකාශනය ප්රධාන Verilog කේතය මෙන් නොව. පරීක්ෂණ බංකුවක, මොඩියුලය කිසිදු පර්යන්ත වරායක් නොමැතිව ප්රකාශ කරනු ලැබේ. (රූපය 25 හි 5 පේළිය බලන්න)
වාක්ය ඛණ්ඩ:
මොඩියුලය ;
ප්රධාන සැලසුමේ කලින් නිර්වචනය කරන ලද ආදාන සහ ප්රතිදාන සංඥා නිර්වචනය කිරීමෙන් මොඩියුල ප්රකාශනය අනුගමනය කරයි. file.
අපි සමාකරණයේදී රිය පැදවීම සහ සංඥා නිරීක්ෂණය කිරීම සඳහා සංඥා වර්ග දෙකක් භාවිතා කරමු. reg දත්ත වර්ගය එයට නව අගයක් පවරන තෙක් අගය රඳවා තබා ගනී. මෙම දත්ත වර්ගයට අගයක් පැවරිය හැක්කේ සෑම විටම හෝ මුලික කොටසෙහි පමණි.
වයර් දත්ත වර්ගය භෞතික සම්බන්ධතාවයකට සමානයි. එය තොටක් මඟින් ධාවනය වන අගය රඳවා තබා ගනී, ප්රකාශය පැවරීම, හෝ reg. මෙම දත්ත වර්ගය ආරම්භක හෝ සෑම විටම අවහිර කිරීමේදී භාවිතා කළ නොහැක. ඕනෑම පරාමිතියක් සහ පූර්ණ සංඛ්යා ප්රකාශයක් මෙම කොටසෙහි සිදු කෙරේ.
Exampලෙ:
Reg a,b; // HDL කේතයේ ආදානය testbench හි reg ලෙස අර්ථ දක්වා ඇත
වයර් y; // HDL හි ප්රතිදාන සංඥාව ටෙස්ට් බංකුවේ වයර් ලෙස අර්ථ දැක්වේ
DUT Instantiation
පරීක්ෂණ බංකුවක අරමුණ වන්නේ අපගේ DUT මොඩියුලය ක්රියාත්මක වේද යන්න තහවුරු කිරීමයි. එබැවින්, අපි මොඩියුලය පරීක්ෂා කිරීම සඳහා අපගේ සැලසුම් මොඩියුලය ක්ෂණිකව සකස් කළ යුතුය.
වාක්ය ඛණ්ඩ:
(. (සංඥා1), . signal1>(signal2));
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 මොඩියුලය තුළ ඇති සංඥා සඳහා නම් ඇති අතර, පරීක්ෂණ බංකුව තුළ ඒවා සම්බන්ධ කරන වයරය හෝ reg වරහන් () හි ඇති සංඥාව අසල ඇත. ඕනෑම සම්පාදන දෝෂ පණිවිඩයක් දෝෂය සිදු වූ රේඛා අංකයට නිවැරදිව යොමු වන පරිදි එක් එක් වරාය සම්බන්ධතාව වෙනම පේළියක කේතනය කිරීම නිර්දේශ කෙරේ. මෙම සම්බන්ධතා නමින් ඇති බැවින්, ඒවා දිස්වන අනුපිළිවෙල අදාළ නොවේ.
පරීක්ෂණ බංකු මොඩියුලයේ විවිධ සංඥා නාම ඇති මොඩියුල සඳහාද DUT ක්ෂණිකව සිදු කළ හැක. සංඥා නිවැරදිව සිතියම්ගත කිරීම ක්ෂණිකව සිදු කිරීමේදී වැදගත් වේ.
Example:
ALU d0 (.a(A), // ALU හි "a" සංඥාව ALU_tb මොඩියුලයේ "A" වෙත සම්බන්ධ කළ යුතුය
.clk(clock), // ALU හි "clk" සංඥාව "ඔරලෝසුව" ALU_tb මොඩියුලයට සම්බන්ධ කළ යුතුය
.out(OUT)) ; // ALU හි "out" සංඥාව ALU_tb මොඩියුලයේ "OUT" වෙත සම්බන්ධ කළ යුතුය
ටෙස්ට් බංකුවක සෑම විටම සහ මුලික අවහිර කරන්න
Verilog හි අනුක්රමික කොටස් දෙකක් ඇත, ආරම්භක සහ සෑම විටම. අපි උත්තේජනය යොදන්නේ මෙම බ්ලොක් වල ය.
ආරම්භක අවහිරය
ආරම්භක වාරණ එක් වරක් පමණක් ක්රියාත්මක වන අතර බ්ලොක් එකේ අවසාන පේළිය ක්රියාත්මක වූ විට අවසන් වේ. උත්තේජකය ආරම්භක බ්ලොක් එකට ලියා ඇත. (රූපය 54 හි 72-5 පේළිය බලන්න)
වාක්ය ඛණ්ඩය:
..
ආරම්භක ආරම්භය
$ඩම්ප්file();
$dumpvars();
..(උත්තේජනය ඇතුලත් කරන්න)
අවසානය
ආරම්භක වාරණ සමාකරණයේ ආරම්භයේදී t = 0 වේලාවේදී ක්රියාත්මක කිරීම ආරම්භ කරයි. ආරම්භය සහ අවසානය අතර පළමු පේළියෙන් ආරම්භ වන අතර, ප්රමාදයක් ළඟා වන තෙක් සෑම පේළියක්ම ඉහළ සිට පහළට ක්රියාත්මක වේ. ප්රමාදය ළඟා වූ විට, මෙම වාරණ ක්රියාත්මක කිරීම ප්රමාද කාලය (කාල ඒකක 10) පසු වන තෙක් රැඳී සිට නැවත ක්රියාත්මක කිරීම ආරම්භ කරයි.
සියලුම සංයෝජන හස්තීයව ඇතුළු කිරීම වෙනුවට මෙම ආරම්භක කොටස ඇතුළත ලූප (සඳහා, අතරතුර, if-else) භාවිතයෙන් පරිශීලකයාට උත්තේජක අර්ථ දැක්විය හැක.
Example:
ආරම්භක ආරම්භය
A = 0; b = 0; // ක්රියාත්මක කිරීම ආරම්භ කරන්න
#10 a = 0; b = 1; // ක්රියාත්මක කිරීම t = 10-ඒකක වේලාවට වේ
#10 a = 1; b = 0; // ක්රියාත්මක කිරීම t = 20-ඒකක වේලාවට වේ
අවසානය
ඩම්ප් Files
මතක තබා ගත යුතු තවත් දෙයක් නම් $ ප්රකාශනයයිඩම්ප්files සහ $dumpvars ආරම්භක කොටස ඇතුළත (රූපය 55 හි 56- 5 පේළිය බලන්න). ඩොලර්ඩම්ප්file a හි දැල් සහ රෙජිස්ටර් වල අගයන්හි වෙනස්කම් බැහැර කිරීමට භාවිතා කරයි file එහි තර්කය ලෙස නම් කර ඇත.
උදාහරණයක් ලෙසampලෙ:
$ඩම්ප්file("alu_tb.vcd");
a හි වෙනස්කම් ඉවත් කරනු ඇත file alu_tb.vcd ලෙස නම් කර ඇත. වෙනස්කම් සටහන් කර ඇත a file VCD කියලා file එනම් අගය වෙනස් කිරීමේ ඩම්ප් යන්නයි. VCD (අගය වෙනස් කිරීමේ ඩම්ප්) අගය වෙනස්වීම් පිළිබඳ සියලු තොරතුරු ගබඩා කරයි. අපට $dump එකකට වඩා තිබිය නොහැකfile Verilog සමාකරණයේ ප්රකාශ.
ඩොලර්dumpvars බැහැර කළ යුතු විචල්යයන් සඳහන් කිරීමට භාවිතා කරයි (හි file $dump විසින් සඳහන් කර ඇතfile) එය භාවිතා කිරීමට ඇති සරලම ක්රමය කිසිදු තර්කයකින් තොරව ය. $dumpvars හි සාමාන්ය වාක්ය ඛණ්ඩය වේ
$dumpvars ( <, >);
අපට මූලික වශයෙන් සඳහන් කළ හැක්කේ කුමන මොඩියුලද, සහ මොඩියුලවල ඇති විචල්යයන් ඩම්ප් කරන්නේද යන්නයි. මෙය භාවිතා කිරීමට ඇති සරලම ක්රමය නම් මට්ටම 0 සහ මොඩියුලයේ නම ඉහළ මොඩියුලය ලෙස සැකසීමයි (සාමාන්යයෙන් ඉහළ ටෙස්ට් බංකු මොඩියුලය).
$dumpvars(0, alu_tb);
මට්ටම 0 ලෙස සකසා, මොඩියුලයේ නම පමණක් සඳහන් කළ විට, එය එම මොඩියුලයේ සියලුම විචල්යයන් සහ මෙම ඉහළ මොඩියුලය මඟින් ක්රියාත්මක කරන ලද සියලුම පහළ මට්ටමේ මොඩියුලවල ඇති සියලුම විචල්යයන් ඉවත් කරයි. මෙම ඉහළ මොඩියුලය මඟින් කිසියම් මොඩියුලයක් ක්ෂණිකව ලබා නොදේ නම්, එහි විචල්යය ආවරණය නොකෙරේ. තවත් දෙයක්, $ ප්රකාශයඩම්ප්file $dumpvars හෝ ඩම්ප් සඳහන් කරන වෙනත් පද්ධති කාර්යයන්ට පෙර පැමිණිය යුතුය. මේවා ඩම්ප් fileඋත්තේජක යෙදවුම් වලට පෙර s ප්රකාශ කළ යුතුය, මෙම ඩම්ප් වල කිසිදු අගයක් ඉතිරි නොවේ files.
සෑම විටම අවහිර කරන්න
ආරම්භක ප්රකාශයන්ට පටහැනිව, සෑම විටම බ්ලොක් එකක් නැවත නැවතත් ක්රියාත්මක වේ, නමුත් ක්රියාත්මක කිරීම t = 0 වේලාවෙන් ආරම්භ වේ. උදාample, Flip-flops වැනි අනුක්රමික පරිපථවල ක්රියාකාරිත්වය සඳහා ඔරලෝසු සංඥාව අත්යවශ්ය වේ. එය අඛණ්ඩව සැපයීම අවශ්ය වේ. එබැවින්, අපට ඔරලෝසුව ක්රියාත්මක කිරීම සඳහා වන කේතය පරීක්ෂණ බංකුවක ලිවිය හැකිය (රූපය 52 හි 5 පේළිය බලන්න):
සෑම විටම
#10 clk = ~clk;
endmodule
ඉහත ප්රකාශය ක්රියාත්මක වන්නේ t = 10 න් ආරම්භ වන ns 0 න් පසුවය. clk හි අගය පෙර අගයෙන් ns 10 න් පසු ප්රතිලෝම වේ. මේ අනුව, 20 ns ස්පන්දන පළල ඔරලෝසු සංඥාවක් ජනනය කිරීම. එබැවින්, මෙම ප්රකාශය 50 MHz සංඛ්යාතයේ සංඥාවක් ජනනය කරයි. සංඥාව ආරම්භ කිරීම සැමවිටම අවහිර කිරීමට පෙර සිදු කරන බව සැලකිල්ලට ගැනීම වැදගත්ය. අපි ආරම්භ කිරීමේ කොටස නොකළහොත්, clk සංඥාව t – 0 සිට x වන අතර, 10 ns න් පසුව එය වෙනත් x එකකට පෙරළේ.
ස්වයං-පරීක්ෂණ ටෙස්ට් බංකුව
ස්වයං-පරීක්ෂාකාරී පරීක්ෂණ බංකුවක වත්මන් තත්ත්වය පරීක්ෂා කිරීම සඳහා ප්රකාශයක් ඇතුළත් වේ.
- $ප්රදර්ශනය පද්ධති කාර්යය ප්රධාන වශයෙන් භාවිතා කරනුයේ සමාකරණ ප්රවාහය නිරීක්ෂණය කිරීම සඳහා නිදොස් කිරීමේ පණිවිඩ ප්රදර්ශනය කිරීමට ය
ආරම්භක ආරම්භය
A = 0; b = 0; c = 0; #10; // ආදානය යොදන්න, ඉන්න
නම් (y! == 1) ආරම්භ කරන්න
$display( "000 අසාර්ථකයි") ; //පරීක්ෂා කරන්න
c = 1; #10 ; //ආදානය යොදන්න, ඉන්න
අවසානය
වෙනත් නම් (y! == 0) ආරම්භ වේ
$display ("001 අසාර්ථකයි") // පරීක්ෂා කරන්න
b = 1; c = 0; #10 ; අවසානය
වෙනත් නම් (y!==0)
$display (" 010 අසාර්ථකයි"); //පරීක්ෂා කරන්න
අවසානය
endmodule
$ප්රදර්ශනය විචල්ය, තන්තු හෝ ප්රකාශනවල අගයන් පෙන්වීම සඳහා භාවිතා වේ. ඉහත හිටපු අයගෙන්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+ තරංගයකි viewLXT, LXT32, VZT, FST, සහ GHW කියවන Unix, Win2, සහ Mac OSX සඳහා er files මෙන්ම සම්මත VCD/EVCD files සහ ඔවුන්ගේ ඉඩ ලබා දේ viewing. එහි නිල webඅඩවියේ ඇත http://gtkwave.sourceforge.net/ . GTKWave නිර්දේශිතයි viewer Icarus Verilog සමාකරණ මෙවලම මගින්.
සැලසුමේ ක්රියාකාරීත්වය පරීක්ෂා කිරීම සඳහා පරිශීලකයා සාර්ථකව පරීක්ෂණ බංකුවක් නිර්මාණය කළ පසු, පරිශීලකයාට දැන් GTKWave මෘදුකාංගය භාවිතා කළ හැක. view තරංග ආකෘති.
GTKWave මෘදුකාංගය දියත් කිරීමට view තරංග ආකෘති, භාවිතා කරන්නාට මෙවලම් තීරුවේ මුදුනේ හෝ ප්රධාන මෙනුවෙන් Tools→ Simulation→ Simulate Testbench බොත්තම මත ක්ලික් කිරීම අවශ්ය වේ. සින්ටැක්ස් දෝෂ නොමැති නම්, සැලසුම මත පදනම්ව, GTKWave ස්වයංක්රීයව දියත් කළ යුතුය, නැතහොත් පරීක්ෂණ බංකුවේ ඇති උත්තේජකවල ප්රති results ල කවුළුවේ ලොගර් කොටසේ පෙන්වනු ඇත.
GTKWave මෘදුකාංගය .vcd ආකෘති ඩම්ප් විවෘත කරයිfile ස්වයංක්රීයව. GTKWave කවුළුව විවෘත වන විට තරංග ආකෘතිය නොපෙන්වයි. මෙමගින් පරිශීලකයාට අවශ්ය සංඥා තෝරා ගැනීමට අවස්ථාවක් ලබා දේ view සහ නිරීක්ෂණය කරන්න. සංඥාව තෝරා ගැනීමට, පරිශීලකයාට සංදර්ශන කිරීමට අවශ්ය වේ, පරිශීලකයාට SST ටැබය යටතේ කවුළුවේ වම් පැත්තේ ඔවුන්ගේ මොඩියුලයේ/උදාහරණයේ නම මත ක්ලික් කිරීම අවශ්ය වේ. සෑම අවස්ථාවකම + ක්ලික් කිරීමෙන්, ඔබට පහළ කොටසේ එම අවස්ථාවට සම්බන්ධ සංඥා දැකිය හැකිය. එවිට ඔබට අවශ්ය සංඥාව ඇදගෙන යාමට හෝ සිග්නල්ස් කවුළුවේ පෙන්වීමට ඒවා දෙවරක් ක්ලික් කිරීමට හැකිය. ඔබට සියල්ල (CTRL + A) තෝරාගෙන ඒවා සංඥා කවුළුවට ඇතුළු කළ හැකිය (රූපය 9 බලන්න).
සංඥා දැන් සංඥා කවුළුව වෙත එක් කර ඇති නමුත් එය තවමත් අනුකරණය කර නොමැත. සංඥා කවුළුව වෙත අවශ්ය සංඥා එකතු කිරීමෙන් පසුව, මත ක්ලික් කරන්න කවුළුවේ වත්මන් පළලට සංඥා සවි කිරීමට සහ පසුව රීලෝඩ් වෙතින් සංඥා නැවත පූරණය කිරීමට
මෙවලම් තීරුවේ ඇති සංකේතය. ඔබට දැන් ඒවායේ අදාළ අගයන් සහිත සංඥා දැකිය හැක.
සංඥා අගයන්
පෙරනිමියෙන්, සංඥා වල අගයන් ෂඩාස්රාකාර ආකෘතියේ ඇති අතර සියලුම තරංග හරිත වර්ණයෙන් යුක්ත වේ (නිවැරදිව ක්රියාත්මක වන්නේ නම්).
පරිශීලකයාට සංඥාව මත දකුණු-ක්ලික් කිරීමෙන් සහ දත්ත ආකෘතිය හෝ වර්ණ ආකෘතිය තේරීමෙන් මෙම සංඥා වල ගුණාංග වෙනස් කළ හැක. සංඥා සමූහය අතර කොටස් සෑදීමට පරිශීලකයාට හිස් සංඥාවක් ද ඇතුළත් කළ හැක. ඔබට අපේක්ෂිත දෘශ්ය ප්රතිඵලය ඇති විට, යාමෙන් ඔබට ඔබගේ වින්යාසයන් සුරැකිය හැක File → ලියන්න සුරකින්න File.
GTKWave මෙවලම් තීරුව
මෙවලම් තීරුව (රූපය 10 බලන්න) සංඥාව සඳහා මූලික කාර්යයන් ඉටු කිරීමට පරිශීලකයාට ඉඩ සලසයි. මෙවලම් තීරුවේ වමේ සිට දකුණට එක් එක් විකල්පය අපි සාකච්ඡා කරමු.
- මෙනු විකල්ප: මෙම විකල්පය යටතේ අපට හැක view මෘදුකාංගය සමඟ සෙල්ලම් කිරීමට භාවිතා කළ හැකි මෘදුකාංගයේ විවිධ විශේෂාංග. මෙම මෙනු විකල්පය යටතේ ඇති විස්තර මෙම පරිශීලක මාර්ගෝපදේශයේ 8 වැනි වගන්තිය යටතේ ආවරණය කෙරේ.
- ට්රේස් කපන්න: එය සංඥා කවුළුවෙන් තෝරාගත් සංඥා මකා දැමීමට/කැපීම සඳහා භාවිතා කරයි
- ට්රේස් පිටපත් කරන්න: එය සංඥා කවුළුවෙන් තෝරාගත් සංඥා පිටපත් කිරීමට භාවිතා කරයි
- ට්රේස් අලවන්න: පිටපත් කරන ලද/කපන ලද හෝඩුවාවක් සංඥා කවුළුවේ වෙනත් ස්ථානයක ඇලවිය හැක
- Zoom Fit: එය භාවිතා කරන්නා ප්රදර්ශනය කිරීමට තෝරා ගන්නා කවුළුවේ ප්රමාණය අනුව සංඥා සවි කිරීමට භාවිතා කරයි
- විශාලනය කරන්න: එය සංඥා කවුළුව තුළ විශාලනය කිරීමට භාවිතා කරයි
- විශාලනය කරන්න: එය සංඥා කවුළුව විශාලනය කිරීමට භාවිතා කරයි
- විශාලනය අහෝසි කරන්න: එය සංඥා කවුළුවේ විශාලනය / අවුට් කිරීම අවලංගු කිරීමට භාවිතා කරයි
- ආරම්භ කිරීමට විශාලනය කරන්න: මෙය සංඥා කවුළුව විශාලනය කරයි, සංඥා වල ආරම්භක වේලාව පෙන්වයි.
- අවසානය දක්වා විශාලනය කරන්න: මෙමගින් සංඥා වල අවසාන කාලය පෙන්වන සංඥා කවුළුව විශාලනය කරයි
- පෙර දාරය සොයා ගන්න: මෙය පෙර දාරය පෙන්නුම් කරමින් මාර්කර් වම් පැත්තට මාරු කරයි
- ඊළඟ කෙළවර සොයන්න: මෙය ඊළඟ දාරය පෙන්නුම් කරමින් මාර්කර් එක දකුණට මාරු කරයි
- පහළ/ඉහළ බන්ධනය අනුචලනය කරන්න: මෙය භාවිතයෙන් අපට පරිශීලකයාට පෙන්වීමට අවශ්ය කාල රාමුව සැකසිය හැක. උදාහරණයක් ලෙසample, අපට කාල රාමුව තත්පර 0 සිට 500 ns දක්වා සැකසිය හැක, එය එම කාලසීමාව යටතේ පමණක් සංඥා පෙන්වයි.
- නැවත පූරණය: දර්ශණය වන සංඥාවෙහි වෙනසක් සිදු වූ විට නැවත පූරණය ඔබා ඇත. එය නව පරාමිති අනුව සංඥාව නැවත පූරණය කර පෙන්වනු ඇත. උදාහරණයක් ලෙසample, සංඥාවේ කාල රාමුව වෙනස් කිරීමෙන් පසුව, නව සකසන ලද කාල රාමුව තුළ සංඥාව පෙන්වීමට අපි සංඥාව නැවත පූරණය කළ යුතුය.
මෙනු විකල්ප
GTKWave මෘදුකාංගයේ වම් ඉහළ කෙළවරේ සිට, පරිශීලකයාට සිරස් රේඛා තුන ක්ලික් කිරීමෙන් මෙනු විකල්ප වෙත ප්රවේශ විය හැක (රූපය 11 බලන්න). මෙනු විකල්ප යටතේ පරිශීලකයාට පහත විකල්ප සොයා ගත හැක:
File
ද File උප මෙනුවේ ප්රවේශයට සම්බන්ධ විවිධ අයිතම අඩංගු වේ files, ආනයන-අපනයන VCD files, මුද්රණය, සහ කියවීම / ලිවීම files සහ පිටවීම.
සංස්කරණය කරන්න
සංස්කරණය උප මෙනුව තරංග උප කවුළුවෙහි අගයන්හි දත්ත නිරූපණය වෙනස් කිරීම වැනි විවිධ උපයෝගිතා කාර්යයන් සිදු කිරීමට භාවිතා කරයි. සංස්කරණ උප මෙනුව යටතේ ඇති විකල්ප භාවිතා කරමින්, පරිශීලකයාට සංඥා වල දත්ත ආකෘතිය වෙනස් කිරීමට, ඒවා නැවත සකස් කිරීමට, ඒවා මාරු කිරීමට, එය කපා හැරීම, එය උද්දීපනය කිරීම, කණ්ඩායම් සංඥා, සංඥා පිළිබඳ අදහස් දැක්වීම, සංඥා වල වර්ණය වෙනස් කිරීම යනාදිය හැක.
සෙවීම
සෙවුම් උප මෙනුව ශුද්ධ නම් සහ අගයන් මත සෙවීම් සිදු කිරීමට භාවිතා කරයි. එය VCD හි සංඥා සහ අවස්ථා වල විවිධ ධුරාවලියේ කාර්යයන් ඉටු කිරීමට උපකාරී වේ. file.
කාලය
කාල උප මෙනුවෙහි සංචාලන සහ තත්ව පැනල් බොත්තම් මඟින් සිදු කරන ලද කාර්යයන්වල සුපිරි කට්ටලයක් අඩංගු වේ.
එය සරල, කාලය සම්බන්ධ, විශාලනය, නිශ්චිත කාල ලක්ෂ්යයකට ගමන් කිරීම, සංඥාව නිශ්චිත දිශාවකට මාරු කිරීම වැනි කාර්යයන් සක්රීය කරයි.
මාර්කර්
මාර්කර් උපමෙනුව මාර්කර් මත විවිධ උපාමාරු සිදු කිරීමට මෙන්ම තිරයෙන් පිටත අනුචලනය පාලනය කිරීමට භාවිතා කරයි.
එය සංඥා කවුළුව මත බොහෝ සලකුණු එකතු කිරීමේ ක්රියාකාරීත්වය සක්රීය කරයි. උපරිම නම් සලකුණු 26කට ඉඩ දී ඇති අතර සියල්ල සඳහා වේලාවන් වෙනස් විය යුතුය.
a. සංඥා කවුළුව තුළ සලකුණු එකතු කිරීමට
ඔබට සලකුණු කාරකය තැබීමට අවශ්ය ස්ථානයේ වම් ක්ලික් කර ALT + N ඔබන්න. මෙමගින් අවශ්ය ස්ථානයේ නම් කරන ලද සලකුණක් (A,B,C, etc.) තබනු ඇත. පරිශීලකයාට විවිධ කාල ස්ථාන 26ක් සඳහා මෙය දිගටම කරගෙන යා හැක.
සියලුම ස්ථාන සලකුණු වල කාල අගය සංසන්දනය කිරීමට, මෙනුව → සලකුණු → වෙනස් සලකුණු දත්ත පෙන්වන්න.
මෙය එක් එක් මාර්කර්හි කාල අගය සහිත කවුළුවක් විවෘත කරනු ඇත. පරිශීලකයාට ස්ථානගත කරන ලද එක් එක් ලකුණුකරයේ කාල අගය අතින් සටහන් කර ලකුණු 2 අතර කාල වෙනස ගණනය කිරීමට ඒවා අඩු කළ හැක.
b. සංඥා කවුළුවේ සලකුණු ඉවත් කිරීමට
පරිශීලකයාට Menu → Markers → Collect Named Marker වෙත යා හැක. මෙමගින් සංඥා කවුළුවේ තබා ඇති අවසන් නම්කර ඇති සලකුණු ඉවත් කරනු ඇත. Menu → Markers → Collect All Named Marker (Figure 12) වෙත යාමෙන් පරිශීලකයාට නම් කර ඇති සියලුම සලකුණු ඉවත් කළ හැක.
රූප සටහන 13 හි, සංඥා වර්ණ වෙනස් කර ඇති ආකාරය අපට දැක ගත හැකිය. ඔබට සංඥා කවුළුවට එකතු කරන ලද හිස් සංඥාවක් සහ අදහස් දැක්වීමක් සමඟ නිරීක්ෂණය කළ හැකිය - හිස් සංඥා.
නාමික සලකුණු 6ක් (A – E) තිබීම සහ මෙම සලකුණු අතර කාල අගය ps හි compurgation කිරීමද සටහන් කරන්න.
View
ද View සංඥා උප කවුළුවේ තත්ව අයිතමවල චිත්රක විදැහුම්කරණය මෙන්ම අගයන් සමඟ කටයුතු කරන විවිධ ගුණාංග පාලනය කිරීමට උප මෙනුව භාවිතා කරයි. මෙම මෙනුවෙන්, ඔබට සංඥා කවුළුව කළු සහ සුදු හෝ වර්ණ ලෙස පරිවර්තනය කළ හැකිය. ද View උප මෙනුව තත්පර (තත්පර) සිට ෆිකෝ තත්පර (fs) දක්වා කාල මානය වෙනස් කිරීමට ද ඔබට හැකියාව ලබා දෙයි. පරිශීලකයාට මෙම විකල්පය සොයාගත හැකිය View → කාල මානයට පරිමාණය → fs.
උදව්
උපකාරක උපමෙනුවෙහි මාර්ගගත උදවු සබල කිරීම මෙන්ම වැඩසටහන් අනුවාද තොරතුරු ප්රදර්ශනය කිරීම සඳහා විකල්ප අඩංගු වේ.
නිගමනය
අවශ්ය පරීක්ෂණ බංකුව කෙටුම්පත් කිරීම නිවැරදි කිරීමෙන් සහ තරංග ආකෘති ප්රදර්ශනය කිරීමට සහ ප්රතිඵල නිරීක්ෂණය කිරීමට GTKWave සමඟ Icarus Verilog භාවිතා කිරීමෙන් ඔවුන්ගේ සැලසුම සාර්ථකව අනුකරණය කිරීමට සහ ක්රියාකාරීත්වය සත්යාපනය කිරීමට පරිශීලකයාට සහාය වීම සඳහා මෙම ලේඛනය නිර්මාණය කරන ලදී.
සංශෝධන ඉතිහාසය
සංශෝධනය | දිනය | විස්තරය |
1.00 | 20 මැයි 2024 | මුල් නිකුතුව. |
R19US0011EU0100 Rev.1.0
20 මැයි 2024
© 2024 Renesas Electronics
ලේඛන / සම්පත්
![]() |
RENESAS ForgeFPGA මෘදුකාංග අනුකරණය [pdf] පරිශීලක මාර්ගෝපදේශය REN_r19us0011eu0100, ForgeFPGA මෘදුකාංග අනුකරණය, ForgeFPGA මෘදුකාංග, ForgeFPGA, ForgeFPGA සමාකරණය, මෘදුකාංග අනුකරණය, අනුකරණය, මෘදුකාංග |