RENESAS ForgeFPGA സോഫ്റ്റ്‌വെയർ സിമുലേഷൻ

RENESAS ForgeFPGA സോഫ്റ്റ്‌വെയർ സിമുലേഷൻ

പ്രധാനപ്പെട്ട വിവരങ്ങൾ

RTL കോഡ് ഉദ്ദേശിച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കാൻ വ്യത്യസ്ത സമയങ്ങളിൽ ഡിസൈനിലേക്ക് വ്യത്യസ്ത ഇൻപുട്ട് ഉത്തേജനം പ്രയോഗിക്കുന്നതിനുള്ള ഒരു സാങ്കേതികതയാണ് സിമുലേഷൻ. ഡിസൈനിൻ്റെ ദൃഢത പരിശോധിക്കാൻ ഇത് ഉപയോഗിക്കുന്നു. സിമുലേഷൻ ഉപയോക്താവിനെ അനുവദിക്കുന്നു view ഡിസൈനിലെ ഡിസൈൻ വിവരണം എങ്ങനെയെന്ന് മനസിലാക്കാൻ ബന്ധപ്പെട്ട സിഗ്നലുകളുടെ സമയ ഡയഗ്രം file പെരുമാറുന്നു.

ടെസ്റ്റ് ബെഞ്ചുകൾ സിമുലേഷനായി ഉപയോഗിക്കുന്ന കോഡിൻ്റെ കഷണങ്ങളാണ്. ഒരു ലളിതമായ ടെസ്റ്റ് ബെഞ്ച് യൂണിറ്റ് അണ്ടർ ടെസ്റ്റ് (UUT) ഇൻസ്റ്റൻഷ്യേറ്റ് ചെയ്യുകയും ഇൻപുട്ട് ഡ്രൈവ് ചെയ്യുകയും ചെയ്യും. ടെസ്റ്റ്ബെഞ്ചിൽ നൽകിയിരിക്കുന്ന ഉത്തേജനം ഉപയോഗിച്ച് സിമുലേഷൻ തരംഗരൂപങ്ങൾ നിരീക്ഷിക്കാൻ Go Configure സോഫ്റ്റ്‌വെയർ Icarus Verilog (iVerilog), GTKWave എന്നിവ ഉപയോഗിക്കുന്നു.

നിങ്ങളുടെ സിസ്റ്റത്തിൽ Icarus ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ സ്വീകരിക്കേണ്ട നടപടികളും വിജയകരമായ ഒരു സിമുലേഷൻ എങ്ങനെ പ്രവർത്തിപ്പിക്കാമെന്നും ഈ പ്രമാണം വിവരിക്കുന്നു.

Icarus Verilog ഇൻസ്റ്റാൾ ചെയ്യുന്നു

a. ഇകാരസ് വെരിലോഗിൻ്റെ (IVerilog) ഏറ്റവും പുതിയ പതിപ്പ് ഇൻസ്റ്റാൾ ചെയ്യുക https://bleyer.org/icarus/
b. PATH-ലേക്ക് IVerilog ചേർത്ത് GTKWave ഇൻസ്റ്റാൾ ചെയ്യാൻ അനുവദിക്കുന്നത് ഉറപ്പാക്കുക (ചിത്രം 1 കാണുക)
Icarus Verilog ഇൻസ്റ്റാൾ ചെയ്യുന്നു

c. ഫോർജ് വർക്ക്ഷോപ്പ് തുറക്കാൻ Go കോൺഫിഗർ സോഫ്‌റ്റ്‌വെയർ തുറന്ന് ഭാഗം തിരഞ്ഞെടുക്കുക: SLG47910(Rev BB) (ചിത്രം 2 കാണുക).
Icarus Verilog ഇൻസ്റ്റാൾ ചെയ്യുന്നു

d. മുകളിലുള്ള ടൂൾബാറിൻ്റെ മധ്യത്തിലുള്ള FPGA എഡിറ്ററിൽ ക്ലിക്ക് ചെയ്യുക അല്ലെങ്കിൽ ഉപയോക്താവിന് വിൻഡോയുടെ മധ്യത്തിലുള്ള FPGA കോർ ഘടനയിൽ ഡബിൾ ക്ലിക്ക് ചെയ്യാം.
Icarus Verilog ഇൻസ്റ്റാൾ ചെയ്യുന്നു

e. ഫോർജ് വർക്ക്ഷോപ്പ് എന്ന പേരിൽ ഒരു പുതിയ വിൻഡോ തുറക്കുന്നു. മുകളിലുള്ള മെനു ടൂൾബാറിൽ, ഓപ്ഷനുകൾ → ക്രമീകരണങ്ങളിൽ ക്ലിക്കുചെയ്യുക. ക്രമീകരണ ഡയലോഗ് ബോക്സിൽ, ഉപയോക്തൃ ക്രമീകരണ ടാബിന് കീഴിലുള്ള ടൂളുകളിലേക്ക് പോകുക. Icarus Verilog, GTKWave എന്നിവയ്‌ക്കായി “സിസ്റ്റം എൻവയോൺമെൻ്റ് ബോക്സ്” ഉപയോഗിക്കുക എന്നത് തിരഞ്ഞെടുത്തത് മാറ്റുക. നിങ്ങളുടെ സിസ്റ്റത്തിൽ സംരക്ഷിച്ചിരിക്കുന്ന Iverilog, GTKWave എന്നിവയിലേക്കുള്ള പാത്ത് നൽകിയിരിക്കുന്ന സ്ഥലത്ത് ചേർക്കുക (ചിത്രം 4 കാണുക).
Icarus Verilog ഇൻസ്റ്റാൾ ചെയ്യുന്നു

നിങ്ങൾ എല്ലാവരും ഒരു ടെസ്റ്റ് ബെഞ്ച് അനുകരിക്കാൻ തയ്യാറായിക്കഴിഞ്ഞു, Go കോൺഫിഗർ സോഫ്‌റ്റ്‌വെയറിൽ ഒരു ടെസ്റ്റ് ബെഞ്ച് അനുകരിക്കുമ്പോൾ GTKWave സ്വയമേവ ലോഞ്ച് ചെയ്യുന്നുവെന്ന് മുകളിലുള്ള ഘട്ടങ്ങൾ ഉറപ്പാക്കുന്നു.

ടെസ്റ്റ് ബെഞ്ച്

ഏതൊരു സിസ്റ്റവും വിജയകരമായി നടപ്പിലാക്കുന്നതിനുള്ള ഏറ്റവും നിർണായകമായ ഘട്ടം ഡിസൈനും അതിൻ്റെ പ്രവർത്തനവും പരിശോധിക്കുക എന്നതാണ്. ഹാർഡ്‌വെയർ നടപ്പിലാക്കിയ ശേഷം സങ്കീർണ്ണമായ ഒരു സിസ്റ്റം പരിശോധിക്കുന്നത് ബുദ്ധിപരമായ തിരഞ്ഞെടുപ്പല്ല. പണം, സമയം, വിഭവങ്ങൾ എന്നിവയുടെ കാര്യത്തിൽ ഇത് ഫലപ്രദമല്ല. അതിനാൽ, FPGA-യുടെ കാര്യത്തിൽ, വെരിലോഗ് സോഴ്സ് കോഡ് പരിശോധിക്കാൻ ഒരു ടെസ്റ്റ്ബെഞ്ച് ഉപയോഗിക്കുന്നു.

നമുക്ക് 11 ബിറ്റുകളുള്ള ഒരു ഇൻപുട്ട് ഉണ്ടെന്ന് കരുതുക, സാധ്യമായ എല്ലാ ഇൻപുട്ട് കോമ്പിനേഷൻ മൂല്യങ്ങൾക്കുമായി ഉപകരണം പരിശോധിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു, അതായത് (211). ഇത് വളരെ വലിയ കോമ്പിനേഷനുകൾ ആയതിനാൽ, ഇത് സ്വമേധയാ പരീക്ഷിക്കുന്നത് അസാധ്യമാണ്. അത്തരം സന്ദർഭങ്ങളിൽ, സാധ്യമായ എല്ലാ മൂല്യങ്ങൾക്കുമായി നിങ്ങൾക്ക് ഡിസൈൻ സ്വയമേവ പരിശോധിക്കാൻ കഴിയുന്നതിനാൽ ടെസ്റ്റ് ബെഞ്ചുകൾ വളരെ ഉപയോഗപ്രദമാണ്, അതിനാൽ, ടെസ്റ്റ് ഡിസൈനിൻ്റെ വിശ്വാസ്യത സ്ഥിരീകരിക്കുക. ഫിസിക്കൽ ഹാർഡ്‌വെയർ ഉപകരണത്തിൻ്റെ ആവശ്യമില്ലാതെ ഡിസൈനുകൾ അനുകരിക്കാനും വിശകലനം ചെയ്യാനും വെരിലോഗ് ടെസ്റ്റ് ബെഞ്ചുകൾ ഉപയോഗിക്കുന്നു.

പരീക്ഷണത്തിന് കീഴിലുള്ള ഒരു ഡിസൈൻ, DUT എന്ന് ചുരുക്കി വിളിക്കപ്പെടുന്നു, ഇത് ഞങ്ങൾ പരീക്ഷിക്കാൻ ആഗ്രഹിക്കുന്ന പ്രവർത്തനത്തിൻ്റെ സമന്വയിപ്പിക്കാവുന്ന മൊഡ്യൂളാണ്. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ഞങ്ങൾ പരീക്ഷിക്കാൻ ആഗ്രഹിക്കുന്ന സർക്യൂട്ട് ഡിസൈൻ ആണ്. ഗേറ്റ്-ലെവൽ, ഡാറ്റാഫ്ലോ അല്ലെങ്കിൽ ബിഹേവിയറൽ - വെരിലോഗിലെ മൂന്ന് മോഡലിംഗ് ശൈലികളിൽ ഒന്ന് ഉപയോഗിച്ച് നമുക്ക് ഞങ്ങളുടെ DUT വിവരിക്കാം.

ഒരു ടെസ്റ്റ്ബെഞ്ച് സമന്വയിപ്പിക്കാൻ കഴിയില്ല, അതിനാൽ ഇത് സിമുലേഷൻ ആവശ്യങ്ങൾക്ക് മാത്രം ഉപയോഗിക്കുന്നു. ടെസ്റ്റ് ബെഞ്ചുകൾ എഴുതുന്നതിനായി "ഫോർ", "$ ഡിസ്പ്ലേ", "$ മോണിറ്റർ" തുടങ്ങിയ കീവേഡുകൾ ഉദാ: വെരിലോഗ് കൺസ്ട്രക്‌റ്റുകളുടെ പൂർണ്ണ ശ്രേണി ഉപയോഗിക്കാൻ ഇത് ഉപയോക്താവിനെ അനുവദിക്കുന്നു. ഒരു ലളിതമായ ടെസ്റ്റ്ബെഞ്ച് യൂണിറ്റ് അണ്ടർ ടെസ്റ്റ് (UUT) അല്ലെങ്കിൽ ഉപകരണം അണ്ടർ ടെസ്റ്റ് (DUT) എന്നിവയും ഡ്രൈവ് ഇൻപുട്ടുകളും തൽക്ഷണം ചെയ്യും.

ഒരു ടെസ്റ്റ് ബെഞ്ച് മനസ്സിലാക്കുന്നു

ഒരു ടെസ്റ്റ് ബെഞ്ച് മനസ്സിലാക്കുന്നു

ടെസ്റ്റ്ബെഞ്ചിലെ ടൈംസ്കെയിൽ നിർവ്വചനം

സിമുലേറ്റ് ചെയ്യുമ്പോൾ, സമയം എങ്ങനെ നിർവചിക്കപ്പെട്ടുവെന്ന് സോഫ്‌റ്റ്‌വെയർ അറിയേണ്ടതുണ്ട്. ടൈംസ്‌കെയിൽ നിർദ്ദേശം ഉപയോഗിച്ചാണ് കാലതാമസം യൂണിറ്റ് വ്യക്തമാക്കുന്നത്, അത് ടൈം യൂണിറ്റും അതിനെ പിന്തുടരുന്ന മൊഡ്യൂളുകളുടെ കൃത്യതയും വ്യക്തമാക്കുന്നു. സമയത്തിൻ്റെ അടിസ്ഥാനത്തിൽ #1 എന്താണ് അർത്ഥമാക്കുന്നത് എന്ന് നിർണ്ണയിക്കാൻ `ടൈംസ്കെയിൽ സഹായിക്കുന്നു. സമയ സ്കെയിലിൽ വ്യക്തമാക്കിയ സമയ യൂണിറ്റിന് അനുസൃതമായി സിസ്റ്റത്തിൽ അവതരിപ്പിക്കേണ്ട കാലതാമസം നിർവചിക്കാൻ # ഉപയോഗിക്കുന്നു. അതിനാൽ, #1 എന്നാൽ സമയ_യൂണിറ്റ് ns-ൽ ആണെങ്കിൽ കാലതാമസത്തിൻ്റെ 1 ns എന്നാണ് അർത്ഥമാക്കുന്നത്.

വാക്യഘടന:
`ടൈംസ്കെയിൽ / /

#1 ൻ്റെ കാലതാമസം പ്രതിനിധീകരിക്കുന്ന സമയത്തിൻ്റെ അളവാണ് time_unit. ടൈം_പ്രിസിഷൻ ബേസ് എന്നത് സമയ യൂണിറ്റുകളുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ എത്ര ദശാംശ പോയിൻ്റുകൾ ഉപയോഗിക്കണമെന്ന് പ്രതിനിധീകരിക്കുന്നു. (ചിത്രം 23 ലെ വരി 5 കാണുക)

ഒരേ ഡിസൈനിൽ വ്യത്യസ്‌ത സമയ യൂണിറ്റുകൾ ഉപയോഗിക്കാൻ നമുക്ക് ടൈംസ്‌കെയിൽ നിർമ്മിതികൾ ഉപയോഗിക്കാം. കാലതാമസം സ്പെസിഫിക്കേഷനുകൾ സമന്വയിപ്പിക്കാനാകില്ലെന്നും ഹാർഡ്‌വെയർ ലോജിക്കിലേക്ക് പരിവർത്തനം ചെയ്യാൻ കഴിയില്ലെന്നും ഉപയോക്താവ് ഓർമ്മിക്കേണ്ടതുണ്ട്. കാലതാമസം ഫംഗ്‌ഷനുകൾ പൂർണ്ണമായും സിമുലേഷൻ ആവശ്യങ്ങൾക്ക് വേണ്ടിയുള്ളതാണ്. $സമയം കൂടാതെ $തൽസമയം സിസ്റ്റം ഫംഗ്‌ഷനുകൾ നിലവിലെ സമയം നൽകുന്നു, മറ്റൊരു സിസ്റ്റം ടാസ്‌ക് $timeformat ഉപയോഗിച്ച് സ്ഥിരസ്ഥിതി റിപ്പോർട്ടിംഗ് ഫോർമാറ്റ് മാറ്റാനാകും.

ExampLe: 

`ടൈംസ്കെയിൽ 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

മൊഡ്യൂൾ പ്രഖ്യാപനം

ഏതെങ്കിലും ടെസ്റ്റ് ബെഞ്ചിലെ മൊഡ്യൂൾ ഡിക്ലറേഷൻ പ്രധാന വെരിലോഗ് കോഡിന് വിപരീതമാണ്. ഒരു ടെസ്റ്റ് ബെഞ്ചിൽ, ടെർമിനൽ പോർട്ടുകളൊന്നും കൂടാതെ മൊഡ്യൂൾ പ്രഖ്യാപിക്കുന്നു. (ചിത്രം 25 ലെ വരി 5 കാണുക)

വാക്യഘടന: 

മൊഡ്യൂൾ ;

പ്രധാന രൂപകൽപ്പനയിൽ നേരത്തെ നിർവചിച്ചിട്ടുള്ള ഇൻപുട്ട്, ഔട്ട്പുട്ട് സിഗ്നലുകൾ നിർവചിച്ചുകൊണ്ട് മൊഡ്യൂൾ ഡിക്ലറേഷൻ പിന്തുടരുന്നു. file.
സിമുലേഷൻ സമയത്ത് ഡ്രൈവ് ചെയ്യുന്നതിനും സിഗ്നലുകൾ നിരീക്ഷിക്കുന്നതിനും ഞങ്ങൾ രണ്ട് സിഗ്നൽ തരങ്ങൾ ഉപയോഗിക്കുന്നു. ഒരു പുതിയ മൂല്യം നൽകുന്നതുവരെ reg ഡാറ്റാടൈപ്പ് മൂല്യം നിലനിർത്തും. ഈ ഡാറ്റാടൈപ്പിന് എല്ലായ്പ്പോഴും അല്ലെങ്കിൽ പ്രാരംഭ ബ്ലോക്കിൽ മാത്രമേ ഒരു മൂല്യം നൽകാനാകൂ.
വയർ ഡാറ്റടൈപ്പ് ഒരു ഫിസിക്കൽ കണക്ഷൻ പോലെയാണ്. ഒരു പോർട്ട്, അസൈൻ സ്റ്റേറ്റ്‌മെൻ്റ് അല്ലെങ്കിൽ റെജി എന്നിവയാൽ നയിക്കപ്പെടുന്ന മൂല്യം ഇത് കൈവശം വയ്ക്കും. ഈ ഡാറ്റ തരം പ്രാരംഭത്തിലോ എല്ലായ്‌പ്പോഴും ബ്ലോക്കിലോ ഉപയോഗിക്കാൻ കഴിയില്ല. ഏതെങ്കിലും പരാമീറ്ററും പൂർണ്ണസംഖ്യ പ്രഖ്യാപനവും ഈ വിഭാഗത്തിൽ ചെയ്യപ്പെടുന്നു.

ExampLe:
Reg a,b; // HDL കോഡിലെ ഇൻപുട്ട് ടെസ്റ്റ് ബെഞ്ചിലെ reg ആയി നിർവചിച്ചിരിക്കുന്നു
വയർ വൈ; // HDL-ലെ ഔട്ട്പുട്ട് സിഗ്നൽ ടെസ്റ്റ്ബെഞ്ചിലെ വയർ ആയി നിർവചിച്ചിരിക്കുന്നു

DUT തൽക്ഷണം

ഒരു ടെസ്റ്റ് ബെഞ്ചിൻ്റെ ഉദ്ദേശ്യം ഞങ്ങളുടെ DUT മൊഡ്യൂൾ പ്രവർത്തിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കലാണ്. അതിനാൽ, മൊഡ്യൂൾ പരീക്ഷിക്കുന്നതിന് ഞങ്ങളുടെ ഡിസൈൻ മൊഡ്യൂൾ തൽക്ഷണം ചെയ്യേണ്ടതുണ്ട്.

വാക്യഘടന: 

(. (സിഗ്നൽ1), . സിഗ്നൽ1>(സിഗ്നൽ2));

ExampLe:

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(ക്ലോക്ക്), // ALU ലെ "clk" സിഗ്നൽ "ക്ലോക്ക്" ALU_tb മൊഡ്യൂളുമായി ബന്ധിപ്പിച്ചിരിക്കണം
.ഔട്ട്(OUT)) ; // ALU-ലെ "ഔട്ട്" എന്ന സിഗ്നൽ ALU_tb മൊഡ്യൂളിലെ "OUT" എന്നതിലേക്ക് കണക്റ്റ് ചെയ്തിരിക്കണം

ഒരു ടെസ്റ്റ്ബെഞ്ചിൽ എപ്പോഴും & പ്രാരംഭ ബ്ലോക്ക്

വെരിലോഗിൽ രണ്ട് തുടർച്ചയായ ബ്ലോക്കുകളുണ്ട്, പ്രാരംഭവും എല്ലായ്പ്പോഴും. ഈ ബ്ലോക്കുകളിലാണ് നമ്മൾ ഉത്തേജനം പ്രയോഗിക്കുന്നത്.

പ്രാരംഭ ബ്ലോക്ക്

പ്രാരംഭ ബ്ലോക്ക് ഒരു തവണ മാത്രം നടപ്പിലാക്കുകയും ബ്ലോക്കിൻ്റെ അവസാന വരി എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ അവസാനിപ്പിക്കുകയും ചെയ്യുന്നു. പ്രാരംഭ ബ്ലോക്കിലേക്ക് ഉത്തേജനം എഴുതിയിരിക്കുന്നു. (ചിത്രം 54 ലെ വരി 72-5 കാണുക)

വാക്യഘടന:
..
പ്രാരംഭ തുടക്കം
$ഡമ്പ്file();
$dumpvars();
..(ഉത്തേജനം നൽകുക)
അവസാനിക്കുന്നു

പ്രാരംഭ ബ്ലോക്ക് t = 0 എന്ന സമയത്ത് സിമുലേഷൻ്റെ തുടക്കത്തിൽ അതിൻ്റെ നിർവ്വഹണം ആരംഭിക്കുന്നു. തുടക്കത്തിനും അവസാനത്തിനും ഇടയിലുള്ള ആദ്യ വരിയിൽ തുടങ്ങി, കാലതാമസം എത്തുന്നതുവരെ ഓരോ വരിയും മുകളിൽ നിന്ന് താഴേക്ക് പ്രവർത്തിക്കുന്നു. കാലതാമസം എത്തുമ്പോൾ, ഈ ബ്ലോക്കിൻ്റെ നിർവ്വഹണം കാലതാമസം സമയം (10-ടൈം യൂണിറ്റുകൾ) കടന്നുപോകുന്നതുവരെ കാത്തിരിക്കുകയും തുടർന്ന് എക്സിക്യൂഷൻ വീണ്ടും എടുക്കുകയും ചെയ്യുന്നു.
എല്ലാ കോമ്പിനേഷനുകളും സ്വമേധയാ നൽകുന്നതിനുപകരം ഈ പ്രാരംഭ ബ്ലോക്കിനുള്ളിൽ ലൂപ്പുകൾ ഉപയോഗിച്ച് ഉപയോക്താവിന് ഉത്തേജനങ്ങൾ നിർവചിക്കാനാകും.
പ്രാരംഭ ബ്ലോക്ക്

 

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 അതിൻ്റെ വാദമായി പേരിട്ടു.

ഉദാampLe:

$തള്ളുകfile(“alu_tb.vcd”);

a ലെ മാറ്റങ്ങൾ ഉപേക്ഷിക്കും file alu_tb.vcd എന്ന് പേരിട്ടു. മാറ്റങ്ങൾ രേഖപ്പെടുത്തുന്നത് എ file വിസിഡി എന്ന് വിളിക്കുന്നു file അത് മൂല്യം മാറ്റാനുള്ള ഡമ്പിനെ സൂചിപ്പിക്കുന്നു. മൂല്യ മാറ്റങ്ങളെക്കുറിച്ചുള്ള എല്ലാ വിവരങ്ങളും ഒരു VCD (മൂല്യം മാറ്റ ഡമ്പ്) സംഭരിക്കുന്നു. ഞങ്ങൾക്ക് ഒന്നിൽ കൂടുതൽ $dump പാടില്ലfile വെരിലോഗ് സിമുലേഷനിലെ പ്രസ്താവനകൾ.

$dumpvars ഏതൊക്കെ വേരിയബിളുകളാണ് ഡംപ് ചെയ്യേണ്ടതെന്ന് വ്യക്തമാക്കാൻ ഉപയോഗിക്കുന്നു (ഇൽ file $dump സൂചിപ്പിച്ചത്file). ഇത് ഉപയോഗിക്കാനുള്ള ഏറ്റവും ലളിതമായ മാർഗം ഒരു തർക്കവുമില്ലാതെയാണ്. $dumpvars-ൻ്റെ പൊതുവായ വാക്യഘടനയാണ്

$dumpvars ( <, >);

ഏത് മൊഡ്യൂളുകളാണെന്നും മൊഡ്യൂളുകളിലെ വേരിയബിളുകൾ ഡംപ് ചെയ്യുമെന്നും അടിസ്ഥാനപരമായി നമുക്ക് വ്യക്തമാക്കാൻ കഴിയും. ഇത് ഉപയോഗിക്കുന്നതിനുള്ള ഏറ്റവും ലളിതമായ മാർഗ്ഗം, ലെവൽ 0 ആക്കി മൊഡ്യൂളിൻ്റെ പേര് ടോപ്പ് മൊഡ്യൂളായി സജ്ജീകരിക്കുക എന്നതാണ് (സാധാരണയായി ടോപ്പ് ടെസ്റ്റ്ബെഞ്ച് മൊഡ്യൂൾ).

$dumpvars(0, alu_tb);

ലെവൽ 0 ആയി സജ്ജീകരിക്കുകയും മൊഡ്യൂളിൻ്റെ പേര് മാത്രം വ്യക്തമാക്കുകയും ചെയ്യുമ്പോൾ, അത് ആ മൊഡ്യൂളിൻ്റെ എല്ലാ വേരിയബിളുകളും ഈ ടോപ്പ് മൊഡ്യൂൾ ഇൻസ്റ്റൻ്റ് ചെയ്ത എല്ലാ ലോവർ ലെവൽ മൊഡ്യൂളുകളിലെ എല്ലാ വേരിയബിളുകളും ഡംപ് ചെയ്യുന്നു. ഈ ടോപ്പ് മൊഡ്യൂളിൽ ഏതെങ്കിലും മൊഡ്യൂൾ തൽക്ഷണം ചെയ്തിട്ടില്ലെങ്കിൽ, അതിൻ്റെ വേരിയബിൾ പരിരക്ഷിക്കപ്പെടില്ല. ഒരു കാര്യം കൂടി, $ പ്രഖ്യാപനംതള്ളുകfile $dumpvars അല്ലെങ്കിൽ ഡംപ് വ്യക്തമാക്കുന്ന മറ്റേതെങ്കിലും സിസ്റ്റം ടാസ്‌ക്കുകൾക്ക് മുമ്പായി വരണം. ഇവ തള്ളുന്നു fileഉത്തേജക ഇൻപുട്ടുകൾക്ക് മുമ്പ് s പ്രഖ്യാപിക്കണം, ഈ ഡമ്പിൽ ഒരു മൂല്യവും സംരക്ഷിക്കില്ല files.

എപ്പോഴും തടയുക

പ്രാരംഭ പ്രസ്താവനകൾക്ക് വിരുദ്ധമായി, എല്ലായ്‌പ്പോഴും ബ്ലോക്ക് ആവർത്തിച്ച് എക്‌സിക്യൂട്ട് ചെയ്യുന്നു, എന്നിരുന്നാലും എക്‌സിക്യൂഷൻ ആരംഭിക്കുന്നത് t = 0 എന്ന സമയത്താണ്. ഉദാഹരണത്തിന്ample, ഫ്ലിപ്പ്-ഫ്ലോപ്പുകൾ പോലെയുള്ള സീക്വൻഷ്യൽ സർക്യൂട്ടുകളുടെ പ്രവർത്തനത്തിന് ക്ലോക്ക് സിഗ്നൽ അത്യാവശ്യമാണ്. ഇത് തുടർച്ചയായി നൽകേണ്ടതുണ്ട്. അതിനാൽ, ഒരു ടെസ്റ്റ് ബെഞ്ചിൽ ക്ലോക്കിൻ്റെ പ്രവർത്തനത്തിനുള്ള കോഡ് നമുക്ക് ഇങ്ങനെ എഴുതാം (ചിത്രം 52 ലെ ലൈൻ 5 കാണുക):

എപ്പോഴും
#10 clk = ~clk;
എൻഡ്‌മൊഡ്യൂൾ

t = 10 മുതൽ ആരംഭിക്കുന്ന 0 ns ന് ശേഷം മുകളിലെ പ്രസ്താവന നടപ്പിലാക്കുന്നു. ക്ലിക്കിൻ്റെ മൂല്യം മുമ്പത്തെ മൂല്യത്തിൽ നിന്ന് 10 ns ന് ശേഷം വിപരീതമാകും. അങ്ങനെ, 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)
$ ഡിസ്പ്ലേ (" 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 ഹെക്സാഡെസിമൽ ഫോർമാറ്റിൽ പ്രദർശിപ്പിക്കുക
%തീയതി ദശാംശ രൂപത്തിൽ പ്രദർശിപ്പിക്കുക
%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 എന്ന് പറയുമ്പോൾ, $ കാരണം എ, ബി എന്നിവയുടെ മൂല്യത്തിൽ എങ്ങനെ വ്യത്യാസമുണ്ടെന്ന് നമുക്ക് കാണാൻ കഴിയും.ഡിസ്പ്ലേ കൂടാതെ $മോണിറ്റർ പ്രസ്താവനകൾ.
സ്വയം പരിശോധിക്കുന്ന ടെസ്റ്റ് ബെഞ്ച്

GTKWave സോഫ്റ്റ്‌വെയർ

GTKWave പൂർണ്ണമായും ഫീച്ചർ ചെയ്ത GTK+ തരംഗമാണ് viewLXT, LXT32, VZT, FST, GHW എന്നിവ വായിക്കുന്ന Unix, Win2, Mac OSX എന്നിവയ്‌ക്കായി er fileകൾ അതുപോലെ സാധാരണ VCD/EVCD fileകളും അവരുടെ അനുവദിക്കുന്നു viewing. അതിൻ്റെ ഔദ്യോഗിക webസൈറ്റ് ആണ് http://gtkwave.sourceforge.net/ . GTKWave ആണ് ശുപാർശ ചെയ്യുന്നത് viewIcarus Verilog സിമുലേഷൻ ടൂൾ മുഖേന er.

ഡിസൈനിൻ്റെ പ്രവർത്തനക്ഷമത പരിശോധിക്കുന്നതിനായി ഉപയോക്താവ് ഒരു ടെസ്റ്റ്ബെഞ്ച് വിജയകരമായി സൃഷ്ടിച്ചുകഴിഞ്ഞാൽ, ഉപയോക്താവിന് ഇപ്പോൾ GTKWave സോഫ്‌റ്റ്‌വെയർ ഉപയോഗിക്കാം view തരംഗരൂപങ്ങൾ.

GTKWave സോഫ്‌റ്റ്‌വെയർ സമാരംഭിക്കുന്നതിന് view തരംഗരൂപങ്ങൾ, ടൂൾബാറിൻ്റെ മുകളിലുള്ള സിമുലേറ്റ് ടെസ്റ്റ്ബെഞ്ച് ബട്ടണിൽ അല്ലെങ്കിൽ പ്രധാന മെനുവിൽ നിന്ന് ടൂൾസ്→ സിമുലേഷൻ→ ടെസ്റ്റ്ബെഞ്ച് അനുകരിക്കുക. വാക്യഘടന പിശകുകൾ ഇല്ലെങ്കിൽ, ഡിസൈനിനെ ആശ്രയിച്ച്, GTKWave യാന്ത്രികമായി സമാരംഭിക്കേണ്ടതാണ് അല്ലെങ്കിൽ ടെസ്റ്റ്ബെഞ്ചിലെ ഉദ്ദീപനങ്ങളുടെ ഫലങ്ങൾ വിൻഡോയുടെ ലോഗർ വിഭാഗത്തിൽ പ്രദർശിപ്പിക്കും.

GTKWave സോഫ്‌റ്റ്‌വെയർ .vcd ഫോർമാറ്റ് ഡംപ് തുറക്കുന്നുfile ഓട്ടോമാറ്റിയ്ക്കായി. GTKWave വിൻഡോ തുറക്കുമ്പോൾ തരംഗരൂപം പ്രദർശിപ്പിക്കില്ല. ഉപയോക്താവിന് ഏത് സിഗ്നലുകൾ വേണമെന്ന് തിരഞ്ഞെടുക്കാനുള്ള അവസരം ഇത് നൽകുന്നു view നിരീക്ഷിക്കുകയും ചെയ്യുക. സിഗ്നൽ തിരഞ്ഞെടുക്കുന്നതിന്, ഉപയോക്താവ് പ്രദർശിപ്പിക്കേണ്ടതുണ്ട്, ഉപയോക്താവിന് SST ടാബിന് കീഴിലുള്ള വിൻഡോയുടെ ഇടതുവശത്തുള്ള മൊഡ്യൂളിൻ്റെ/ഉദാഹരണത്തിൻ്റെ പേരിൽ ക്ലിക്ക് ചെയ്യണം. ഓരോ സംഭവത്തിൻ്റെയും + ക്ലിക്ക് ചെയ്യുന്നതിലൂടെ, ചുവടെയുള്ള വിഭാഗത്തിൽ ആ സന്ദർഭവുമായി ബന്ധപ്പെട്ട സിഗ്നലുകൾ നിങ്ങൾക്ക് കാണാൻ കഴിയും. തുടർന്ന് നിങ്ങൾക്ക് ആവശ്യമുള്ള സിഗ്നൽ വലിച്ചിടുകയോ അല്ലെങ്കിൽ സിഗ്നലുകൾ വിൻഡോയിൽ പ്രദർശിപ്പിക്കുന്നതിന് ഇരട്ട-ക്ലിക്കുചെയ്യുകയോ ചെയ്യാം. നിങ്ങൾക്ക് എല്ലാം (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 സെക്കൻ്റ് മുതൽ 500 ns വരെ സജ്ജീകരിക്കാം, അത് ആ കാലയളവിനു കീഴിൽ മാത്രം സിഗ്നലുകൾ പ്രദർശിപ്പിക്കും.
  14. വീണ്ടും ലോഡുചെയ്യുക: പ്രദർശിപ്പിച്ച സിഗ്നലിൽ മാറ്റം വരുമ്പോഴെല്ലാം റീലോഡ് അമർത്തുന്നു. ഇത് പുതിയ പാരാമീറ്ററുകൾ അനുസരിച്ച് സിഗ്നൽ റീലോഡ് ചെയ്യുകയും പ്രദർശിപ്പിക്കുകയും ചെയ്യും. ഉദാample, സിഗ്നലിൻ്റെ സമയ ഫ്രെയിം മാറ്റിയ ശേഷം, പുതിയ സെറ്റ് സമയ ഫ്രെയിമിൽ സിഗ്നൽ പ്രദർശിപ്പിക്കുന്നതിന് ഞങ്ങൾ സിഗ്നൽ വീണ്ടും ലോഡുചെയ്യേണ്ടതുണ്ട്.

മെനു ഓപ്ഷനുകൾ

GTKWave സോഫ്‌റ്റ്‌വെയറിൻ്റെ ഇടത് മുകളിലെ മൂലയിൽ നിന്ന്, മൂന്ന് ലംബ വരകളിൽ ക്ലിക്കുചെയ്‌ത് ഉപയോക്താവിന് മെനു ഓപ്ഷനുകൾ ആക്‌സസ് ചെയ്യാൻ കഴിയും (ചിത്രം 11 കാണുക). മെനു ഓപ്ഷനുകൾക്ക് കീഴിൽ ഉപയോക്താവിന് ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ കണ്ടെത്താനാകും:
മെനു ഓപ്ഷനുകൾ

File

ദി File ഉപമെനുവിൽ ആക്സസ് ചെയ്യുന്നതുമായി ബന്ധപ്പെട്ട വിവിധ ഇനങ്ങൾ അടങ്ങിയിരിക്കുന്നു files, ഇറക്കുമതി-കയറ്റുമതി വിസിഡി fileകൾ, അച്ചടി, വായന/എഴുത്ത് fileകളും പുറത്തുകടക്കലും.

എഡിറ്റ് ചെയ്യുക

വേവ് സബ്‌വിൻഡോയിലെ മൂല്യങ്ങളുടെ ഡാറ്റ പ്രാതിനിധ്യം മാറ്റുന്നത് പോലെയുള്ള വിവിധ യൂട്ടിലിറ്റി ഫംഗ്‌ഷനുകൾ നിർവഹിക്കുന്നതിന് എഡിറ്റ് ഉപമെനു ഉപയോഗിക്കുന്നു. എഡിറ്റ് ഉപമെനുവിന് കീഴിലുള്ള ഓപ്‌ഷനുകൾ ഉപയോഗിച്ച്, ഉപയോക്താവിന് സിഗ്നലുകളുടെ ഡാറ്റ ഫോർമാറ്റ് മാറ്റാനും അവയെ പുനഃക്രമീകരിക്കാനും ഷിഫ്റ്റ് ചെയ്യാനും ട്രിം ചെയ്യാനും ഹൈലൈറ്റ് ചെയ്യാനും ഗ്രൂപ്പ് സിഗ്നലുകളിൽ അഭിപ്രായമിടാനും സിഗ്നലുകളുടെ നിറം മാറ്റാനും കഴിയും.

തിരയൽ

നെറ്റ് പേരുകളിലും മൂല്യങ്ങളിലും തിരയലുകൾ നടത്താൻ തിരയൽ ഉപമെനു ഉപയോഗിക്കുന്നു. വിസിഡിയിലെ സിഗ്നലുകളുടെയും സംഭവങ്ങളുടെയും വ്യത്യസ്ത ശ്രേണി തലങ്ങളിൽ പ്രവർത്തനങ്ങൾ നടത്താൻ ഇത് സഹായിക്കുന്നു. file.

സമയം

നാവിഗേഷനുകളും സ്റ്റാറ്റസ് പാനൽ ബട്ടണുകളും നിർവ്വഹിക്കുന്ന പ്രവർത്തനങ്ങളുടെ ഒരു സൂപ്പർസെറ്റ് സമയ ഉപമെനുവിൽ അടങ്ങിയിരിക്കുന്നു.
ഇത് ലളിതവും സമയവുമായി ബന്ധപ്പെട്ടതും സൂം ചെയ്യൽ, ഒരു പ്രത്യേക സമയ പോയിൻ്റിലേക്ക് നീങ്ങൽ, ഒരു നിശ്ചിത ദിശയിലേക്ക് സിഗ്നൽ മാറ്റൽ തുടങ്ങിയ പ്രവർത്തനങ്ങൾ പ്രാപ്തമാക്കുന്നു.

മാർക്കർ

മാർക്കറിൽ വിവിധ കൃത്രിമങ്ങൾ നടത്തുന്നതിനും ഓഫ്‌സ്‌ക്രീനിൽ സ്‌ക്രോളിംഗ് നിയന്ത്രിക്കുന്നതിനും മാർക്കർ ഉപമെനു ഉപയോഗിക്കുന്നു.
സിഗ്നൽ വിൻഡോയിൽ നിരവധി മാർക്കറുകൾ ചേർക്കുന്നതിനുള്ള പ്രവർത്തനത്തെ ഇത് പ്രാപ്തമാക്കുന്നു. പരമാവധി 26 പേരുകളുടെ മാർക്കറുകൾ അനുവദനീയമാണ്, എല്ലാവരുടെയും സമയങ്ങൾ വ്യത്യസ്തമായിരിക്കണം.

a. സിഗ്നൽ വിൻഡോയിൽ മാർക്കറുകൾ ചേർക്കാൻ
നിങ്ങൾക്ക് മാർക്കർ സ്ഥാപിക്കാൻ ആവശ്യമുള്ള പോയിൻ്റിൽ ഇടത് ക്ലിക്ക് ചെയ്ത് ALT + N അമർത്തുക. ഇത് ആവശ്യമുള്ള പോയിൻ്റിൽ ഒരു പേരുള്ള മാർക്കർ (A,B,C, മുതലായവ) സ്ഥാപിക്കും. 26 വ്യത്യസ്ത സമയ ലൊക്കേഷനുകൾക്കായി ഉപയോക്താവിന് ഇത് തുടരാം.
എല്ലാ സ്ഥല മാർക്കറുകളിലെയും സമയ മൂല്യം താരതമ്യം ചെയ്യാൻ, മെനു → മാർക്കറുകൾ → മാറ്റ മാർക്കർ ഡാറ്റ കാണിക്കുക.
ഇത് ഓരോ മാർക്കറിലും സമയ മൂല്യമുള്ള ഒരു വിൻഡോ തുറക്കും. സ്ഥാപിച്ചിരിക്കുന്ന ഓരോ മാർക്കറിലെയും സമയ മൂല്യം ഉപയോക്താവിന് സ്വമേധയാ രേഖപ്പെടുത്തുകയും 2 മാർക്കറുകൾ തമ്മിലുള്ള സമയ വ്യത്യാസം കണക്കാക്കാൻ അവ കുറയ്ക്കുകയും ചെയ്യാം.
b. സിഗ്നൽ വിൻഡോയിലെ മാർക്കർ നീക്കം ചെയ്യാൻ

ഉപയോക്താവിന് മെനു → മാർക്കറുകൾ → പേരുള്ള മാർക്കർ ശേഖരിക്കുക എന്നതിലേക്ക് പോകാം. സിഗ്നൽ വിൻഡോയിൽ സ്ഥാപിച്ചിരിക്കുന്ന അവസാനത്തെ പേരുള്ള മാർക്കർ ഇത് നീക്കം ചെയ്യും. മെനു → മാർക്കറുകൾ → പേരുള്ള എല്ലാ മാർക്കറുകളും ശേഖരിക്കുക (ചിത്രം 12) എന്നതിലേക്ക് പോയി ഉപയോക്താവിന് പേരുള്ള എല്ലാ മാർക്കറുകളും നീക്കം ചെയ്യാൻ കഴിയും.
മെനു ഓപ്ഷനുകൾ

ചിത്രം 13 ൽ, സിഗ്നൽ നിറങ്ങൾ എങ്ങനെ മാറിയെന്ന് നമുക്ക് കാണാൻ കഴിയും. സിഗ്നൽ വിൻഡോയിലേക്ക് ഒരു ബ്ലാങ്ക് സിഗ്നൽ ചേർത്തിരിക്കുന്നത് നിങ്ങൾക്ക് നിരീക്ഷിക്കാം - ബ്ലാങ്ക് സിഗ്നൽ.
6 പേരുള്ള മാർക്കറുകളുടെ (A - E) സാന്നിധ്യവും ഈ മാർക്കറുകൾക്കിടയിലുള്ള സമയ മൂല്യത്തിൻ്റെ കംപർഗേഷനും ps-ൽ ശ്രദ്ധിക്കുക.
മെനു ഓപ്ഷനുകൾ

View

ദി View സ്റ്റാറ്റസ് ഇനങ്ങളുടെ ഗ്രാഫിക്കൽ റെൻഡറിംഗും സിഗ്നൽ സബ് വിൻഡോയിലെ മൂല്യങ്ങളും കൈകാര്യം ചെയ്യുന്ന വിവിധ ആട്രിബ്യൂട്ടുകൾ നിയന്ത്രിക്കാൻ ഉപമെനു ഉപയോഗിക്കുന്നു. ഈ മെനുവിൽ നിന്ന്, നിങ്ങൾക്ക് സിഗ്നൽ വിൻഡോ ബ്ലാക്ക് & വൈറ്റ് അല്ലെങ്കിൽ നിറമുള്ളതാക്കി മാറ്റാം. ദി View സെക്കൻഡ് (സെക്കൻഡ്) മുതൽ ഫിക്കോസെക്കൻഡ് (എഫ്എസ്) വരെയുള്ള സമയത്തിൻ്റെ അളവ് മാറ്റാനും ഉപമെനു നിങ്ങളെ പ്രാപ്തമാക്കുന്നു. ഉപയോക്താവിന് ഈ ഓപ്ഷൻ കണ്ടെത്താനാകും 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 സിമുലേഷൻ, സോഫ്റ്റ്‌വെയർ സിമുലേഷൻ, സിമുലേഷൻ, സോഫ്റ്റ്‌വെയർ

റഫറൻസുകൾ

ഒരു അഭിപ്രായം ഇടൂ

നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിക്കില്ല. ആവശ്യമായ ഫീൽഡുകൾ അടയാളപ്പെടുത്തി *