Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന കമാൻഡ് വെരിലേറ്ററാണിത്.
പട്ടിക:
NAME
വെരിലേറ്റർ - വെരിലോഗ് കോഡ് C++/SystemC ലേക്ക് പരിവർത്തനം ചെയ്യുക
സിനോപ്സിസ്
വെരിലേറ്റർ --സഹായം
വെരിലേറ്റർ --പതിപ്പ്
verilator --cc [options] [top_level.v]... [opt_c_files.cpp/c/cc/a/o/so]
verilator --sc [options] [top_level.v]... [opt_c_files.cpp/c/cc/a/o/so]
വെരിലേറ്റർ --lint-only [top_level.v]...
വിവരണം
വെരിലേറ്റർ സിന്തസൈസ് ചെയ്യാവുന്ന (സ്വഭാവമല്ല) വെരിലോഗ് കോഡും ചില സിന്തസിസും പരിവർത്തനം ചെയ്യുന്നു,
SystemVerilog, C++ അല്ലെങ്കിൽ SystemC കോഡിലേക്ക് വെരിലോഗ് AMS അവകാശവാദങ്ങളുടെ ഒരു ചെറിയ ഉപവിഭാഗം. അത്
ഒരു സമ്പൂർണ്ണ സിമുലേറ്റർ അല്ല, ഒരു കമ്പൈലർ ആണ്.
GCC, Cadence Verilog-XL/NC-Verilog, അല്ലെങ്കിൽ
സിനോപ്സിസിന്റെ വി.സി.എസ്. ഇത് നിർദ്ദിഷ്ട വെരിലോഗ് കോഡ് വായിക്കുകയും ലിന്റ് ചെയ്യുകയും ഓപ്ഷണലായി ചേർക്കുകയും ചെയ്യുന്നു
കവറേജും വേവ്ഫോം ട്രെയ്സിംഗ് കോഡും. C++, SystemC ഫോർമാറ്റുകൾക്കായി, ഇത് .cpp, .h എന്നിവ ഔട്ട്പുട്ട് ചെയ്യുന്നു
ഫയലുകൾ.
വെരിലേറ്റർ സൃഷ്ടിച്ച ഫയലുകൾ പിന്നീട് C++ ഉപയോഗിച്ച് കംപൈൽ ചെയ്യുന്നു. ഉപയോക്താവ് കുറച്ച് C++ എഴുതുന്നു
റാപ്പർ ഫയൽ, അത് ടോപ്പ് ലെവൽ മൊഡ്യൂളിനെ തൽക്ഷണം ചെയ്യുകയും ഈ ഫയലിന്റെ പേര് ഇതിലേക്ക് കൈമാറുകയും ചെയ്യുന്നു
കമാൻഡ് ലൈൻ. ഈ C ഫയലുകൾ C++ ൽ കംപൈൽ ചെയ്യുകയും വെരിലേറ്റഡ് ഫയലുകളുമായി ലിങ്ക് ചെയ്യുകയും ചെയ്യുന്നു.
തത്ഫലമായുണ്ടാകുന്ന എക്സിക്യൂട്ടബിൾ യഥാർത്ഥ സിമുലേഷൻ നിർവഹിക്കും.
ആരംഭിക്കുന്നതിന്, "ഉദാഹരണം C++ എക്സിക്യൂഷൻ" എന്നതിലേക്ക് പോകുക.
അധികാരം സംഗ്രഹം
വെരിലേറ്ററിലേക്കുള്ള വാദങ്ങളുടെ ഒരു ഹ്രസ്വ സംഗ്രഹമാണിത്. എന്നതിൽ വിശദമായ വിവരണങ്ങൾ കാണുക
കൂടുതൽ വിവരങ്ങൾക്ക് അടുത്ത ഭാഗങ്ങൾ.
{file.v} വെരിലോഗ് ടോപ്പ് ലെവൽ ഫയൽനാമങ്ങൾ
{file.c/cc/cpp} കംപൈൽ ചെയ്യാനുള്ള ഓപ്ഷണൽ C++ ഫയലുകൾ
{file.a/o/so} ലിങ്ക് ചെയ്യാനുള്ള ഓപ്ഷണൽ C++ ഫയലുകൾ
+1364-1995ext+ ഫയൽ എക്സ്റ്റൻഷനോടൊപ്പം വെരിലോഗ് 1995 ഉപയോഗിക്കുക
+1364-2001ext+ ഫയൽ എക്സ്റ്റൻഷനോടൊപ്പം വെരിലോഗ് 2001 ഉപയോഗിക്കുക
+1364-2005ext+ ഫയൽ എക്സ്റ്റൻഷനോടൊപ്പം വെരിലോഗ് 2005 ഉപയോഗിക്കുക
+1800-2005ext+ ഫയൽ എക്സ്റ്റൻഷനോടൊപ്പം SystemVerilog 2005 ഉപയോഗിക്കുക
+1800-2009ext+ ഫയൽ എക്സ്റ്റൻഷനോടൊപ്പം SystemVerilog 2009 ഉപയോഗിക്കുക
+1800-2012ext+ ഫയൽ എക്സ്റ്റൻഷനോടൊപ്പം SystemVerilog 2012 ഉപയോഗിക്കുക
--assert എല്ലാ അവകാശവാദങ്ങളും പ്രാപ്തമാക്കുക
--എല്ലാ $ഡിസ്പ്ലേകൾക്കും ശേഷം സ്വയമേവ ഫ്ലഷ് സ്ട്രീമുകൾ
--bbox-sys ബ്ലാക്ക്ബോക്സ് അജ്ഞാത $സിസ്റ്റം കോളുകൾ
--bbox-unsup ബ്ലാക്ക്ബോക്സ് പിന്തുണയ്ക്കാത്ത ഭാഷാ സവിശേഷതകൾ
--ബിൻ വെരിലേറ്റർ ബൈനറി അസാധുവാക്കുക
-CFLAGS മേക്ക്ഫൈലിനായി C++ കംപൈലർ ഫ്ലാഗുകൾ
--cc C++ ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക
--cdc ക്ലോക്ക് ഡൊമെയ്ൻ ക്രോസിംഗ് വിശകലനം
--clk നിർദ്ദിഷ്ട സിഗ്നലിനെ ക്ലോക്ക് ആയി അടയാളപ്പെടുത്തുക
--കംപൈലർ നിർദ്ദിഷ്ട C++ കംപൈലറിനായി ട്യൂൺ ചെയ്യുക
--കൺവേർജ്-പരിധി ട്യൂൺ കൺവേർജൻസ് സെറ്റിൽ ടൈം
--കവറേജ് എല്ലാ കവറേജുകളും പ്രവർത്തനക്ഷമമാക്കുക
--coverage-line ലൈൻ കവറേജ് പ്രവർത്തനക്ഷമമാക്കുക
--coverage-toggle ടോഗിൾ കവറേജ് പ്രവർത്തനക്ഷമമാക്കുക
--coverage-user SVL ഉപയോക്തൃ കവറേജ് പ്രവർത്തനക്ഷമമാക്കുക
--coverage-underscore _signals-ന്റെ കവറേജ് പ്രവർത്തനക്ഷമമാക്കുക
-ഡി [= ] പ്രീപ്രോസസർ നിർവ്വചിക്കുക
--debug ഡീബഗ്ഗിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
--debug-check ഡീബഗ്ഗിംഗ് ഉറപ്പുകൾ പ്രാപ്തമാക്കുക
--debugi ഒരു നിർദ്ദിഷ്ട തലത്തിൽ ഡീബഗ്ഗിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
--debugi- ഒരു ലെവലിൽ ഒരു സോഴ്സ് ഫയൽ ഡീബഗ്ഗിംഗ് പ്രാപ്തമാക്കുക
--default-language പാഴ്സ് ചെയ്യാനുള്ള ഡിഫോൾട്ട് ഭാഷ
+define+ = പ്രീപ്രൊസസ്സർ നിർവ്വചിക്കുക
--dump-tree ഡംപിംഗ് .tree ഫയലുകൾ പ്രവർത്തനക്ഷമമാക്കുക
--ഡമ്പ്-ട്രീ ഒരു ലെവലിൽ .tree ഫയലുകൾ ഡംപിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
--ഡമ്പ്-ട്രീ- ഒരു ലെവലിൽ ഒരു ഉറവിട ഫയലിൽ ഡംപിംഗ് .tree ഫയൽ പ്രവർത്തനക്ഷമമാക്കുക
-ഇ പ്രീപ്രൊസസ്സ്, എന്നാൽ കംപൈൽ ചെയ്യരുത്
--പിശക്-പരിധി ഈ പിശകുകളുടെ എണ്ണം കഴിഞ്ഞ് നിർത്തുക
എക്സിക്യൂട്ടബിൾ സൃഷ്ടിക്കുന്നതിനുള്ള --exe ലിങ്ക്
-എഫ് താരതമ്യേന ഒരു ഫയലിൽ നിന്നുള്ള ഓപ്ഷനുകൾ പാഴ്സ് ചെയ്യുക
-എഫ് ഒരു ഫയലിൽ നിന്നുള്ള ഓപ്ഷനുകൾ പാഴ്സ് ചെയ്യുക
--gdb ഇന്ററാക്ടീവ് ആയി ജിഡിബിക്ക് കീഴിൽ വെരിലേറ്റർ പ്രവർത്തിപ്പിക്കുക
--gdbbt ബാക്ക്ട്രെയിസിനായി GDB-ന് കീഴിൽ വെരിലേറ്റർ പ്രവർത്തിപ്പിക്കുക
--സഹായം ഈ സഹായം പ്രദർശിപ്പിക്കുക
-ഐ തിരയാനുള്ള ഡയറക്ടറി ഉൾപ്പെടുന്നു
--ആഴം IFDEPTH മുന്നറിയിപ്പ് ട്യൂൺ ചെയ്യുക
+incdir+ തിരയാനുള്ള ഡയറക്ടറി ഉൾപ്പെടുന്നു
--inhibit-sim സിം ഓഫാക്കുന്നതിന് ഫംഗ്ഷൻ സൃഷ്ടിക്കുക
--ഇൻലൈൻ-മൾട്ട് ട്യൂൺ മൊഡ്യൂൾ ഇൻലൈനിംഗ്
-LDFLAGS Makefile-നായി ലിങ്കർ പ്രീ-ഒബ്ജക്റ്റ് ഫ്ലാഗുകൾ
-LDLIBS മേക്ക്ഫൈലിനായി ലിങ്കർ ലൈബ്രറി ഫ്ലാഗുകൾ
--ഭാഷ പാഴ്സ് ചെയ്യാനുള്ള ഡിഫോൾട്ട് ഭാഷാ നിലവാരം
+libext+ +[ext]... മൊഡ്യൂളുകൾ കണ്ടെത്തുന്നതിനുള്ള വിപുലീകരണങ്ങൾ
--lint-only Lint, എന്നാൽ ഔട്ട്പുട്ട് ഉണ്ടാക്കരുത്
--MMD .d ഡിപൻഡൻസി ഫയലുകൾ സൃഷ്ടിക്കുക
--എംപി വ്യാജ ആശ്രിത ലക്ഷ്യങ്ങൾ സൃഷ്ടിക്കുക
--എംഡിർ ഔട്ട്പുട്ട് ഒബ്ജക്റ്റ് ഡയറക്ടറിയുടെ പേര്
--mod-prefix താഴ്ന്ന ക്ലാസുകളെ മുൻനിർത്തിയുള്ള പേര്
--no-clk നിർദ്ദിഷ്ട സിഗ്നൽ ക്ലോക്ക് ആയി അടയാളപ്പെടുത്തുന്നത് തടയുക
--no-pins64 64-33 ബിറ്റ് സിഗുകൾക്ക് vluint64_t's ഉപയോഗിക്കരുത്
--no-skip-identical സമാനമായ ഔട്ട്പുട്ട് ഒഴിവാക്കുന്നത് അപ്രാപ്തമാക്കുക
+നോട്ടിമിംഗ് ചെക്കുകൾ അവഗണിച്ചു
-O0 ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനരഹിതമാക്കുക
-O3 ഉയർന്ന പ്രകടന ഒപ്റ്റിമൈസേഷനുകൾ
-ഒ തിരഞ്ഞെടുക്കാവുന്ന ഒപ്റ്റിമൈസേഷനുകൾ
-ഒ അന്തിമ എക്സിക്യൂട്ടബിളിന്റെ പേര്
--no-order-clock-delay ക്രമപ്പെടുത്തൽ ക്ലോക്ക് പ്രവർത്തനരഹിതമാക്കുക അസൈൻമെന്റുകൾ പ്രവർത്തനക്ഷമമാക്കുക
--ഔട്ട്പുട്ട്-സ്പ്ലിറ്റ് .cpp ഫയലുകൾ കഷണങ്ങളായി വിഭജിക്കുക
--output-split-cfuncs .cpp ഫംഗ്ഷനുകൾ വിഭജിക്കുക
--ഔട്ട്പുട്ട്-സ്പ്ലിറ്റ്-ക്ട്രേസ് സ്പ്ലിറ്റ് ട്രെയ്സിംഗ് ഫംഗ്ഷനുകൾ
-P -E ഉപയോഗിച്ച് ലൈൻ നമ്പറുകളും ബ്ലാങ്കുകളും പ്രവർത്തനരഹിതമാക്കുക
--pins-bv ഉയർന്ന തലത്തിലുള്ള പോർട്ടുകൾക്കുള്ള തരങ്ങൾ വ്യക്തമാക്കുക
--pins-sc-uint ടോപ്പ് ലെവൽ പോർട്ടുകൾക്കായി തരങ്ങൾ വ്യക്തമാക്കുക
--pins-sc-biguint ടോപ്പ് ലെവൽ പോർട്ടുകൾക്കായി തരങ്ങൾ വ്യക്തമാക്കുക
--pins-uint8 ടോപ്പ് ലെവൽ പോർട്ടുകൾക്കായി തരങ്ങൾ വ്യക്തമാക്കുക
--പൈപ്പ്-ഫിൽട്ടർ ഒരു സ്ക്രിപ്റ്റിലൂടെ എല്ലാ ഇൻപുട്ടുകളും ഫിൽട്ടർ ചെയ്യുക
--പ്രിഫിക്സ് ഉയർന്ന തലത്തിലുള്ള ക്ലാസിന്റെ പേര്
--profile-cfuncs പ്രൊഫൈലിങ്ങിനുള്ള നെയിം ഫംഗ്ഷനുകൾ
--സ്വകാര്യ ഡീബഗ്ഗിംഗ്; ഡോക്സ് കാണുക
--പൊതു ഡീബഗ്ഗിംഗ്; ഡോക്സ് കാണുക
--report-unoptflat UNOPTFLAT-നുള്ള അധിക ഡയഗ്നോസ്റ്റിക്സ്
--savable മോഡൽ സേവ്-റിസ്റ്റോർ പ്രവർത്തനക്ഷമമാക്കുക
--sc SystemC ഔട്ട്പുട്ട് സൃഷ്ടിക്കുക
--stats സ്ഥിതിവിവരക്കണക്ക് ഫയൽ സൃഷ്ടിക്കുക
--stats-vars വേരിയബിളുകളുടെ സ്ഥിതിവിവരക്കണക്കുകൾ നൽകുക
-sv SystemVerilog പാഴ്സിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
+systemverilogext+ +1800-2012ext+ എന്നതിന്റെ പര്യായപദം
--ടോപ്പ്-മൊഡ്യൂൾ ടോപ്പ് ലെവൽ ഇൻപുട്ട് മൊഡ്യൂളിന്റെ പേര്
--trace തരംഗരൂപം സൃഷ്ടിക്കൽ പ്രാപ്തമാക്കുക
--ട്രേസ്-ഡെപ്ത് ട്രാക്കിംഗിന്റെ ആഴം
--trace-max-array ട്രെയ്സിംഗിനുള്ള പരമാവധി ബിറ്റ് വീതി
--trace-max-width ട്രെയ്സിംഗിനുള്ള പരമാവധി അറേ ഡെപ്ത്ത്
--trace-params ട്രെയ്സിംഗ് പാരാമീറ്ററുകൾ പ്രവർത്തനക്ഷമമാക്കുക
--trace-structs ഘടനയുടെ പേരുകൾ കണ്ടെത്തുന്നത് പ്രവർത്തനക്ഷമമാക്കുക
--trace-underscore _signals-ന്റെ ട്രെയ്സിംഗ് പ്രവർത്തനക്ഷമമാക്കുക
-U Undefine preprocessor define
--unroll-count പരമാവധി ലൂപ്പ് ആവർത്തനങ്ങൾ ട്യൂൺ ചെയ്യുക
--unroll-stmts പരമാവധി ലൂപ്പ് ബോഡി സൈസ് ട്യൂൺ ചെയ്യുക
--unused-regexp ഉപയോഗിക്കാത്ത ലിന്റ് സിഗ്നലുകൾ ട്യൂൺ ചെയ്യുക
-വി വെർബോസ് പതിപ്പും കോൺഫിഗും
-വി വെരിലോഗ് ലൈബ്രറി
+verilog1995ext+ +1364-1995ext+ എന്നതിന്റെ പര്യായപദം
+verilog2001ext+ +1364-2001ext+ എന്നതിന്റെ പര്യായപദം
-വെറർ- മുന്നറിയിപ്പ് പിശകായി പരിവർത്തനം ചെയ്യുക
-ഭാവി- അജ്ഞാത സന്ദേശ മുന്നറിയിപ്പുകൾ പ്രവർത്തനരഹിതമാക്കുക
-അറിയില്ല- മുന്നറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കുക
-Wno-lint എല്ലാ ലിന്റ് മുന്നറിയിപ്പുകളും പ്രവർത്തനരഹിതമാക്കുക
-Wno-style എല്ലാ സ്റ്റൈൽ മുന്നറിയിപ്പുകളും പ്രവർത്തനരഹിതമാക്കുക
-Wno-fatal മുന്നറിയിപ്പുകളിൽ മാരകമായ എക്സിറ്റ് പ്രവർത്തനരഹിതമാക്കുക
--x-അസൈൻ തുടക്കത്തിൽ ഈ മൂല്യത്തിലേക്ക് Xs അസൈൻ ചെയ്യുക
--x-initial-edge പ്രാരംഭ X->0, X->1 എഡ്ജ് ട്രിഗറുകൾ പ്രവർത്തനക്ഷമമാക്കുക
-വൈ മൊഡ്യൂളുകൾക്കായി തിരയാനുള്ള ഡയറക്ടറി
വാദങ്ങൾ
{file.v}
വെരിലേറ്റ് ചെയ്യേണ്ട ടോപ്പ് മൊഡ്യൂൾ അടങ്ങിയ വെരിലോഗ് ഫയൽ വ്യക്തമാക്കുന്നു.
{file.c/.cc/.cpp/.cxx}
വെരിലോഗ് കോഡുമായി ലിങ്ക് ചെയ്യേണ്ട ഓപ്ഷണൽ C++ ഫയലുകൾ വ്യക്തമാക്കുന്നു. ഏതെങ്കിലും C++ ഫയലുകൾ ഉണ്ടെങ്കിൽ
ഈ രീതിയിൽ വ്യക്തമാക്കിയിരിക്കുന്നു, വെരിലേറ്ററിൽ ഒരു മേക്ക് റൂൾ ഉൾപ്പെടുത്തും മൊഡ്യൂൾ
എക്സിക്യൂട്ടബിൾ. C++ ഫയലുകളൊന്നുമില്ലാതെ, വെരിലേറ്റർ ഇവിടെ നിർത്തും മൊഡ്യൂൾ__എല്ലാം.ഒരു ലൈബ്രറി,
നിങ്ങൾ സ്വയം എഴുതുന്ന നിയമങ്ങളുമായി ലിങ്ക് ചെയ്യുന്നത് തുടരുമെന്ന് കരുതുക. ഇതും കാണുക
-CFLAGS ഓപ്ഷൻ.
{file.a/.o/.so}
വെരിലോഗ് കോഡുമായി ലിങ്ക് ചെയ്യേണ്ട ഓപ്ഷണൽ ഒബ്ജക്റ്റ് അല്ലെങ്കിൽ ലൈബ്രറി ഫയലുകൾ വ്യക്തമാക്കുന്നു, a
-LDFLAGS" എന്നതിന്റെ ചുരുക്കെഴുത്ത് ". ഏതെങ്കിലും ഫയലുകൾ ഈ രീതിയിൽ വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ, വെരിലേറ്റർ
ലിങ്ക് ചെയ്യുമ്പോൾ ഈ ഫയലുകൾ ഉപയോഗിക്കുന്ന ഒരു മേക്ക് റൂൾ ഉൾപ്പെടുത്തും മൊഡ്യൂൾ എക്സിക്യൂട്ടബിൾ.
--exe ഓപ്ഷൻ ഉപയോഗിക്കുമ്പോൾ മാത്രമേ ഇത് സാധാരണയായി ഉപയോഗപ്രദമാകൂ.
+1364-1995ext+ext
+1364-2001ext+ext
+1364-2005ext+ext
+1800-2005ext+ext
+1800-2009ext+ext
+1800-2012ext+ext
ഒരു നിർദ്ദിഷ്ട ഫയൽനാമം വിപുലീകരണത്തിനൊപ്പം ഉപയോഗിക്കേണ്ട ഭാഷാ നിലവാരം വ്യക്തമാക്കുന്നു, ext.
മറ്റ് സിമുലേറ്ററുകളുമായുള്ള അനുയോജ്യതയ്ക്കായി, "+verilog1995ext+" എന്ന പര്യായപദങ്ങളും കാണുക.ext,
"+verilog2001ext+"ext, കൂടാതെ "+systemverilogext+"ext.
ഏതൊരു സോഴ്സ് ഫയലിനും, ഈ ഓപ്ഷനുകളാൽ നിർവചിച്ചിരിക്കുന്ന ഭാഷ ഏതൊരു ഫയലിനേക്കാളും മുൻഗണന നൽകുന്നു
"--default-language" അല്ലെങ്കിൽ "--language" ഓപ്ഷനുകൾ വഴി വ്യക്തമാക്കിയ ഭാഷ.
ഈ ഓപ്ഷനുകൾ അവർ നേരിടുന്ന ക്രമത്തിൽ പ്രാബല്യത്തിൽ വരും. അങ്ങനെ താഴെ പറയും
"av" എന്നതിന് Verilog 1995 ഉം "bv" ന് Verilog 2001 ഉം ഉപയോഗിക്കുക.
വെരിലേറ്റർ ... +1364-1995ext+v av +1364-2001ext+v bv
ലെഗസി മിക്സഡ് ലാംഗ്വേജ് ഡിസൈനുകൾക്ക് മാത്രമേ ഈ ഫ്ലാഗുകൾ ശുപാർശ ചെയ്യുന്നുള്ളൂ, അഭികാമ്യം
പുതിയ കീവേഡുകൾ നന്നാക്കാൻ കോഡ് എഡിറ്റ് ചെയ്യുകയോ ഉചിതമായത് ചേർക്കുകയോ ചെയ്യുക എന്നതാണ് ഓപ്ഷൻ
"`begin_keywords".
കുറിപ്പ് "`begin_keywords" എന്നത് ഒരു SystemVerilog നിർമ്മാണമാണ്, അത് വ്യക്തമാക്കുന്നു മാത്രം ഏത്
ഒരു കൂട്ടം കീവേഡുകൾ തിരിച്ചറിയണം. ഏത് സെറ്റ് തിരഞ്ഞെടുത്താലും അർത്ഥശാസ്ത്രം ആയിരിക്കും
SystemVerilog-ന്റേത്. വിപരീതമായി "+1364-1995ext+" മുതലായവ. രണ്ട് വാക്യഘടനയും വ്യക്തമാക്കുക ഒപ്പം
ഉപയോഗിക്കേണ്ട അർത്ഥശാസ്ത്രം.
--അുറപ്പിക്കുക
എല്ലാ അവകാശവാദങ്ങളും പ്രവർത്തനക്ഷമമാക്കുക.
--x-assign, --x-initial-edge എന്നിവയും കാണുക; "--x-assign തനത്" കൂടാതെ/അല്ലെങ്കിൽ ക്രമീകരണം
"--x-initial-edge" അഭികാമ്യമായിരിക്കാം.
--ഓട്ടോഫ്ലഷ്
ഓരോ $display അല്ലെങ്കിൽ $fdisplay ന് ശേഷം, ഔട്ട്പുട്ട് സ്ട്രീം ഫ്ലഷ് ചെയ്യുക. ഇത് ഇൻഷ്വർ ചെയ്യുന്നു
സന്ദേശങ്ങൾ ഉടനടി ദൃശ്യമാകും, പക്ഷേ പ്രകടനം കുറച്ചേക്കാം; മികച്ച പ്രകടന കോളിനായി
പ്രധാന C ലൂപ്പിൽ ഇടയ്ക്കിടെ "fflush(stdout)". ഡിഫോൾട്ട് ഓഫ്, അത് ബഫർ ചെയ്യും
സാധാരണ C stdio കോളുകൾ നൽകുന്ന ഔട്ട്പുട്ട്.
--bbox-sys
അജ്ഞാത $സിസ്റ്റം ടാസ്ക്കോ ഫംഗ്ഷൻ കോളുകളോ ബ്ലാക്ക് ബോക്സ് ചെയ്യുക. സിസ്റ്റം ജോലികൾ ലളിതമായിരിക്കും
NOPed, കൂടാതെ സിസ്റ്റം ഫംഗ്ഷനുകൾ വലുപ്പമില്ലാത്ത പൂജ്യം ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കും. അത്തരത്തിലുള്ള വാദങ്ങൾ
ഫംഗ്ഷനുകൾ പാഴ്സ് ചെയ്യപ്പെടും, പക്ഷേ പരിശോധിക്കില്ല. ഇത് എപ്പോൾ പിശകുകൾ തടയുന്നു
കമ്പനി നിർദ്ദിഷ്ട PLI കോളുകളുടെ സാന്നിധ്യത്തിൽ ലിന്റിംഗ്.
--bbox-unsup
ബ്ലാക്ക് ബോക്സ് പിന്തുണയ്ക്കാത്ത ചില ഭാഷാ സവിശേഷതകൾ, നിലവിൽ UDP പട്ടികകൾ, cmos എന്നിവയും
ട്രാൻ ഗേറ്റ് പ്രാകൃതങ്ങൾ. എപ്പോൾ പോലും ഡിസൈനിന്റെ ബാക്കി ഭാഗങ്ങൾ ലൈനിംഗ് ചെയ്യാൻ ഇത് പ്രാപ്തമാക്കിയേക്കാം
പിന്തുണയ്ക്കാത്ത നിർമ്മാണങ്ങൾ നിലവിലുണ്ട്.
--ബിൻ ഫയലിന്റെ പേര്
അപൂർവ്വമായി ആവശ്യമാണ്. വെരിലേറ്ററിന്റെ സ്ഥിരസ്ഥിതി ഫയൽനാമം അസാധുവാക്കുക. ഒരു ആശ്രിതത്വം വരുമ്പോൾ
(.d) ഫയൽ സൃഷ്ടിച്ചു, ഈ ഫയലിന്റെ പേര് ഒരു ഉറവിട ആശ്രിതത്വമായി മാറും, അത്തരത്തിലുള്ള a
ഈ ബൈനറിയിലെ മാറ്റം ഔട്ട്പുട്ട് ഫയലുകൾ പുനർനിർമ്മിക്കാൻ ഇടയാക്കും.
-CFLAGS ഫ്ലാഗുകൾ
ജനറേറ്റ് ചെയ്ത മേക്ക് ഫയലുകളിലേക്ക് നിർദ്ദിഷ്ട സി കംപൈലർ ഫ്ലാഗുകൾ ചേർക്കുക. മേക്ക് പ്രവർത്തിപ്പിക്കുമ്പോൾ
ജനറേറ്റ് ചെയ്ത മേക്ക്ഫൈൽ ഇവ C++ കമ്പൈലറിലേക്ക് (gcc/g++/msvc++) കൈമാറും.
--cc
SystemC ഔട്ട്പുട്ട് മോഡ് ഇല്ലാതെ C++ വ്യക്തമാക്കുന്നു; ഇതും കാണുക --sc.
--CDC
പരീക്ഷണാത്മകം. ചില ക്ലോക്ക് ഡൊമെയ്ൻ ക്രോസിംഗ് പരിശോധനകൾ നടത്തുകയും ബന്ധപ്പെട്ട മുന്നറിയിപ്പുകൾ നൽകുകയും ചെയ്യുക
(CDCRSTLOGIC) തുടർന്ന് പുറത്തുകടക്കുക; CDC മുന്നറിയിപ്പുകൾ ഒഴികെയുള്ള മുന്നറിയിപ്പുകൾ ആവശ്യമാണെങ്കിൽ a
രണ്ടാമത്തെ ഓട്ടം --lint-only. കൂടുതൽ മുന്നറിയിപ്പ് വിവരങ്ങളും എഴുതിയിട്ടുണ്ട്
ഫയൽ {prefix}__cdc.txt.
നിലവിൽ മറ്റ് CDC ടൂളുകൾ നഷ്ടമായ ചില ഇനങ്ങൾ മാത്രമേ പരിശോധിക്കൂ; നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടെങ്കിൽ
കൂടുതൽ പരമ്പരാഗത CDC ചെക്കുകൾ ചേർക്കുന്നു, ദയവായി രചയിതാക്കളുമായി ബന്ധപ്പെടുക.
--clk സിഗ്നൽ-നാമം
ക്ലോക്ക് സിഗ്നലുകളെ മറ്റുള്ളവയിൽ നിന്ന് വേർതിരിച്ചറിയാൻ വെരിലേറ്ററിന് ചിലപ്പോൾ ബുദ്ധിമുട്ടാണ്
ഡാറ്റ സിഗ്നലുകൾ. ഇടയ്ക്കിടെ ക്ലോക്ക് സിഗ്നലുകൾ ചെക്കിംഗ് ലിസ്റ്റിൽ അവസാനിക്കാം
കൂടുതൽ മൂല്യനിർണ്ണയം ആവശ്യമാണോ എന്ന് നിർണ്ണയിക്കുന്ന സിഗ്നലുകൾ. ഇത് വൻതോതിൽ നശിപ്പിക്കും
വെരിലേറ്റഡ് മോഡലിന്റെ പ്രകടനം.
കൂടെ --clk , ഉപയോക്താവിന് മോഡലിലേക്ക് റൂട്ട് ക്ലോക്ക് വ്യക്തമാക്കാൻ കഴിയും, തുടർന്ന് വെരിലേറ്റർ
സിഗ്നലിനെ ക്ലോക്കറായി അടയാളപ്പെടുത്തുകയും ക്ലോക്കർ ആട്രിബ്യൂട്ട് സ്വയമേവ പ്രചരിപ്പിക്കുകയും ചെയ്യും
അതിൽ നിന്ന് ഉരുത്തിരിഞ്ഞ മറ്റ് സിഗ്നലുകൾ. ഈ രീതിയിൽ, വെരിലേറ്റർ എടുക്കുന്നത് ഒഴിവാക്കാൻ ശ്രമിക്കും
ചെക്കിംഗ് ലിസ്റ്റിലേക്ക് ക്ലോക്കർ സിഗ്നൽ.
കുറിപ്പ് സിഗ്നൽ-നാമം RTL ഹൈയർക്കി പാത്ത് വ്യക്തമാക്കുന്നു. ഉദാഹരണത്തിന്, v.foo.bar. എങ്കിൽ
സിഗ്നൽ ടോപ്പ്-മൊഡ്യൂളിലേക്കുള്ള ഇൻപുട്ടാണ്, നേരിട്ട് സിഗ്നൽ നാമം. നിങ്ങൾ അത് കണ്ടെത്തുകയാണെങ്കിൽ
കൃത്യമായ പേര് കണ്ടെത്താൻ പ്രയാസമാണ്, RTL ഫയലിൽ "/*verilator ക്ലോക്കർ*/" ഉപയോഗിക്കാൻ ശ്രമിക്കുക
സിഗ്നൽ നേരിട്ട് അടയാളപ്പെടുത്തുക.
--കംപൈലർ കമ്പൈലർ-നാമം
നിർദ്ദിഷ്ട C++ കംപൈലറിനായി ട്യൂണിംഗുകളും വർക്ക്-അറൗണ്ടുകളും പ്രവർത്തനക്ഷമമാക്കുന്നു.
ക്ലോംഗ്
ക്ലോങ്ങിനായി ട്യൂൺ ചെയ്യുക. നിരവധി പരിഹാരങ്ങൾ പ്രാപ്തമാക്കുന്നതിനാൽ ഇത് എക്സിക്യൂഷൻ വേഗത കുറച്ചേക്കാം
ക്ലാംഗിൽ ഹാർഡ്കോഡുള്ള വിഡ്ഢിത്തമായ പരിധികൾ ഒഴിവാക്കാൻ. ആഴത്തിലുള്ള ഘടനകളെ തകർക്കുന്നതും ഇതിൽ ഉൾപ്പെടുന്നു
msvc-യെ സംബന്ധിച്ചിടത്തോളം താഴെ വിവരിച്ചിരിക്കുന്നതുപോലെ.
Gnu C++ നായുള്ള gcc ട്യൂൺ, ജനറേറ്റ് ചെയ്ത കോഡ് മിക്കവാറും എല്ലാ അനുരൂപമായ C++ ലും പ്രവർത്തിക്കണം
കമ്പൈലർ. നിലവിൽ സ്ഥിരസ്ഥിതി.
msvc
Microsoft Visual C++ നായി ട്യൂൺ ചെയ്യുക. ഇത് പ്രാപ്തമാക്കുന്നതിനാൽ ഇത് എക്സിക്യൂഷൻ വേഗത കുറച്ചേക്കാം
MSVC++-ൽ ഹാർഡ്കോഡ് ചെയ്ത വിഡ്ഢിത്തമായ പരിധികൾ ഒഴിവാക്കാൻ നിരവധി പരിഹാരങ്ങൾ. ഇതിൽ ഉൾപ്പെടുന്നു
ഒഴിവാക്കാനായി ആഴത്തിൽ നെസ്റ്റഡ് പരാൻതീസൈസ് ചെയ്ത പദപ്രയോഗങ്ങളെ ഉപ-ഭാവങ്ങളാക്കി മാറ്റുന്നു
പിശക് C1009, കൂടാതെ C1061 പിശക് ഒഴിവാക്കാൻ ആഴത്തിലുള്ള ബ്ലോക്കുകളെ പ്രവർത്തനങ്ങളാക്കി മാറ്റുന്നു.
--കൺവേർജ്-പരിധി
അപൂർവ്വമായി ആവശ്യമാണ്. a സൃഷ്ടിക്കുന്നതിന് മുമ്പ് പരമാവധി റൺടൈം ആവർത്തനങ്ങളുടെ എണ്ണം വ്യക്തമാക്കുന്നു
മോഡൽ പിശക് സംയോജിപ്പിക്കുന്നതിൽ പരാജയപ്പെട്ടു. സ്ഥിരസ്ഥിതികൾ 100 ആയി.
--കവറേജ്
എല്ലാ തരത്തിലുള്ള കവറേജുകളും പ്രവർത്തനക്ഷമമാക്കുന്നു, "--കവറേജ്-ലൈൻ --കവറേജ്-ടോഗിൾ എന്നതിന്റെ അപരനാമം
--കവറേജ്-ഉപയോക്താവ്".
--കവറേജ്-ലൈൻ
അടിസ്ഥാന ബ്ലോക്ക് ലൈൻ കവറേജ് അനാലിസിസ് കോഡ് ചേർക്കണമെന്ന് വ്യക്തമാക്കുന്നു.
കവറേജ് വിശകലനം ഓരോ കോഡ് ഫ്ലോ മാറ്റ പോയിന്റിലും പ്രസ്താവനകൾ ചേർക്കുന്നു, അവയാണ്
IF, CASE പ്രസ്താവനകളുടെ ശാഖകൾ, സാധാരണ വെരിലോഗ് ലൈൻ കവറേജിന്റെ ഒരു സൂപ്പർ സെറ്റ്. ചെയ്തത്
അത്തരത്തിലുള്ള ഓരോ ശാഖയും ഒരു പ്രത്യേക കൗണ്ടർ വർദ്ധിപ്പിക്കും. ഒരു പരിശോധനയുടെ അവസാനം, കൗണ്ടറുകൾ
ഓരോ കൗണ്ടറുമായി ബന്ധപ്പെട്ട ഫയലിന്റെ പേരും വരി നമ്പറും സഹിതം എഴുതിയിരിക്കുന്നു
logs/coverage.pl.
$stop ഉള്ള ശാഖകളുടെ കവറേജ് വെരിലേറ്റർ സ്വയമേവ പ്രവർത്തനരഹിതമാക്കുന്നു
$stop ശാഖകളിൽ സംഭവിക്കാൻ പാടില്ലാത്ത ഒരു പിശക് പരിശോധന ഉണ്ടെന്ന് അനുമാനിക്കപ്പെടുന്നു. എ /* വെരിലേറ്റർ
coverage_block_off*/ കമന്റ് ആ ബ്ലോക്കിലെ ഏത് കോഡിലും സമാനമായ പ്രവർത്തനം നടത്തും
അല്ലെങ്കിൽ താഴെ, അല്ലെങ്കിൽ /*verilator coverage_on/coverage_off*/ വരികൾക്ക് ചുറ്റുമുള്ള കവറേജ് പ്രവർത്തനരഹിതമാക്കും
കോഡിന്റെ.
കുറിപ്പ് വെരിലേറ്റർ കോമ്പിനേറ്റോറിയൽ (നോൺ-ക്ലോക്ക്ഡ്) ബ്ലോക്കുകളെ ആ ബ്ലോക്കുകൾ അമിതമായി കണക്കാക്കിയേക്കാം
UNOPTFLAT മുന്നറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കിയ സിഗ്നലുകൾ സ്വീകരിക്കുക; ഏറ്റവും കൃത്യമായി
കവറേജ് ഉപയോഗിക്കുമ്പോൾ ഫലങ്ങൾ ഈ മുന്നറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കില്ല.
--കവറേജ്-ടോഗിൾ
സിഗ്നൽ ടോഗിൾ കവറേജ് വിശകലന കോഡ് ചേർക്കണമെന്ന് വ്യക്തമാക്കുന്നു.
ഒരു മൊഡ്യൂളിലെ ഓരോ സിഗ്നലിന്റെയും ഓരോ ബിറ്റും ഒരു കൗണ്ടർ ചേർത്തിട്ടുണ്ട്. കൗണ്ടർ ചെയ്യും
അനുബന്ധ ബിറ്റിന്റെ ഓരോ എഡ്ജ് മാറ്റത്തിലും വർദ്ധനവ്.
ടാസ്ക്കുകളുടെ ഭാഗമോ ബിഗ്/എൻഡ് ബ്ലോക്കുകളോ ആയ സിഗ്നലുകൾ ലോക്കൽ വേരിയബിളുകളായി കണക്കാക്കപ്പെടുന്നു
മൂടിയിട്ടില്ല. അടിവരയിട്ട് ആരംഭിക്കുന്ന സിഗ്നലുകൾ പൂർണ്ണസംഖ്യകളാണ് അല്ലെങ്കിൽ വളരെ വിശാലമാണ്
(>എല്ലാ അളവുകളിലുമുള്ള മൊത്തം സംഭരണം 256 ബിറ്റുകൾ) എന്നിവയും പരിരക്ഷിച്ചിട്ടില്ല.
ശ്രേണി കംപ്രസ്സുചെയ്യുന്നു, അതായത് ഒരു മൊഡ്യൂൾ ഒന്നിലധികം തവണ തൽക്ഷണം ചെയ്താൽ,
ആ മൊഡ്യൂളിന്റെ എല്ലാ ഘട്ടങ്ങളിലും കവറേജ് സംഗ്രഹിക്കും
ഒരേ പാരാമീറ്റർ സെറ്റ്. വ്യത്യസ്ത പാരാമീറ്റർ മൂല്യങ്ങളുള്ള ഒരു മൊഡ്യൂൾ ആണ്
മറ്റൊരു മൊഡ്യൂളായി കണക്കാക്കുകയും പ്രത്യേകം കണക്കാക്കുകയും ചെയ്യും.
ഏത് ക്ലോക്ക് ഡൊമെയ്നാണ് സിഗ്നൽ എന്നതിനെ കുറിച്ച് വെരിലേറ്റർ ചുരുങ്ങിയ ബുദ്ധിപരമായ തീരുമാനം എടുക്കുന്നു
എന്നതിലേക്ക് പോകുന്നു, ആ ക്ലോക്ക് ഡൊമെയ്നിലെ അറ്റങ്ങൾ മാത്രം നോക്കുന്നു. ഇതിനർത്ഥം അരികുകൾ ആയിരിക്കാം എന്നാണ്
സ്വീകരിക്കുന്ന യുക്തിയാൽ അറ്റം ഒരിക്കലും കാണാൻ കഴിയില്ലെന്ന് അറിയാമെങ്കിൽ അവഗണിച്ചു. ഈ
അൽഗോരിതം ഭാവിയിൽ മെച്ചപ്പെട്ടേക്കാം. കവറേജ് ഇതിനേക്കാൾ കുറവായിരിക്കാം എന്നതാണ് ആകെ ഫലം
അടയാളങ്ങൾ നോക്കുമ്പോൾ എന്താണ് കാണാൻ കഴിയുക, എന്നാൽ കവറേജ് കൂടുതൽ കൃത്യമാണ്
ഡിസൈനിലെ ഉത്തേജനത്തിന്റെ ഗുണനിലവാരത്തിന്റെ പ്രതിനിധാനം.
മോഡൽ സ്ഥിരത കൈവരിക്കുമ്പോൾ പൂജ്യത്തിനടുത്തായി അരികുകൾ കണക്കാക്കിയേക്കാം. അതൊരു നല്ല കാര്യമാണ്
അത്തരം എണ്ണുന്നത് തടയാൻ റീസെറ്റ് റിലീസ് ചെയ്യുന്നതിന് തൊട്ടുമുമ്പ് എല്ലാ കവറേജുകളും പൂജ്യമാക്കാൻ പരിശീലിക്കുക
പെരുമാറ്റം.
ഒരു /*verilator coverage_off/on */ comment pair ഉപയോഗിക്കാത്ത സിഗ്നലുകൾക്ക് ചുറ്റും ഉപയോഗിക്കാം
റാമുകളും രജിസ്റ്റർ ഫയലുകളും പോലുള്ള വിശകലനം ടോഗിൾ ചെയ്യേണ്ടതുണ്ട്.
--കവറേജ്-അണ്ടർസ്കോർ
അണ്ടർ സ്കോറിൽ ആരംഭിക്കുന്ന സിഗ്നലുകളുടെ കവറേജ് പ്രവർത്തനക്ഷമമാക്കുക. സാധാരണയായി, ഈ സിഗ്നലുകൾ
മൂടിയിട്ടില്ല. ഇതും കാണുക --trace-underscore.
--കവറേജ്-ഉപയോക്താവ്
ഉപയോക്താവ് ചേർത്ത ഫങ്ഷണൽ കവറേജ് പ്രവർത്തനക്ഷമമാക്കുന്നു. നിലവിൽ, എല്ലാ പ്രവർത്തനപരമായ കവറേജ് പോയിന്റുകളും
--assert ഉപയോഗിച്ച് പ്രത്യേകം പ്രവർത്തനക്ഷമമാക്കേണ്ട SVA ഉപയോഗിച്ചാണ് വ്യക്തമാക്കുന്നത്.
ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന പ്രസ്താവന കമന്റിനൊപ്പം ഒരു കവറേജ് പോയിന്റ് ചേർക്കും
"DefaultClock":
DefaultClock: കവർ പ്രോപ്പർട്ടി (@(posedge clk) cyc==3);
-Dവേരിയബിൾ=മൂല്യം
അനുവദിച്ചിരിക്കുന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നം അനുവദിക്കാതെ നിർവചിക്കുന്നു. +നിർവചിക്കുന്നതിന് സമാനമായത്; + നിർവചിക്കുക
വെരിലോഗ് ടൂളുകളിലുടനീളം സ്റ്റാൻഡേർഡ് ആണ്, അതേസമയം -D എന്നത് GCC അനുയോജ്യതയുടെ അപരനാമമാണ്.
--ഡീബഗ്
വെരിലേറ്ററിന്റെ ഡീബഗ് ബിൽറ്റ് ഇമേജ് തിരഞ്ഞെടുക്കുക (ലഭ്യമെങ്കിൽ), കൂടുതൽ ഇന്റേണൽ പ്രവർത്തനക്ഷമമാക്കുക
അവകാശവാദങ്ങൾ ("--ഡീബഗ്-ചെക്ക്" എന്നതിന് തുല്യം), ഡീബഗ്ഗിംഗ് സന്ദേശങ്ങൾ (തുല്യം
"--debugi 4"), ഇന്റർമീഡിയറ്റ് ഫോം ഡംപ് ഫയലുകൾ ("--dump-treei 3" ന് തുല്യം).
--ഡീബഗ്-ചെക്ക്
അപൂർവ്വമായി ആവശ്യമാണ്. ഡീബഗ് മാറ്റാതെ തന്നെ ആന്തരിക ഡീബഗ്ഗിംഗ് ഉറപ്പ് പരിശോധനകൾ പ്രവർത്തനക്ഷമമാക്കുക
വാചാലത. --ഡീബഗ് വ്യക്തമാക്കുമ്പോൾ സ്വയമേവ പ്രവർത്തനക്ഷമമാകും.
--debugi
--debugi-
അപൂർവ്വമായി ആവശ്യമാണ് - ഡവലപ്പർ ഉപയോഗത്തിന്. ആഗോളതലത്തിൽ ആന്തരിക ഡീബഗ്ഗിംഗ് നില സജ്ജമാക്കുക
വ്യക്തമാക്കിയ ഡീബഗ് ലെവൽ (1-10) അല്ലെങ്കിൽ നിർദ്ദിഷ്ട വെരിലേറ്റർ സോഴ്സ് ഫയൽ സജ്ജമാക്കുക
നിർദ്ദിഷ്ട ലെവൽ (ഉദാ: "--debugi-V3Width 9"). ഉയർന്ന തലങ്ങൾ കൂടുതൽ വിശദമായി ഉത്പാദിപ്പിക്കുന്നു
സന്ദേശങ്ങൾ.
--default-language മൂല്യം
ഓരോ വെരിലോഗ് ഫയലും ആദ്യം പ്രോസസ്സ് ചെയ്യുമ്പോൾ ഡിഫോൾട്ടായി ഉപയോഗിക്കേണ്ട ഭാഷ തിരഞ്ഞെടുക്കുക.
ഭാഷാ മൂല്യം "1364-1995", "1364-2001", "1364-2005", "1800-2005" ആയിരിക്കണം,
"1800-2009" അല്ലെങ്കിൽ "1800-2012".
ഒരു പ്രത്യേക ഫയൽ വിപുലീകരണവുമായി ബന്ധപ്പെട്ട ഏത് ഭാഷയും (വിവിധ + കാണുകlangext+
ഓപ്ഷനുകൾ) --default-language വ്യക്തമാക്കിയ ഭാഷയ്ക്ക് മുൻഗണന നൽകും.
--default-language ഫ്ലാഗ് ഉപയോഗിക്കുന്ന ലെഗസി കോഡിന് മാത്രമേ ശുപാർശ ചെയ്യൂ
എല്ലാ സോഴ്സ് ഫയലുകളിലും ഭാഷ, റിപ്പയർ ചെയ്യാൻ കോഡ് എഡിറ്റ് ചെയ്യുന്നതാണ് അഭികാമ്യമായ ഓപ്ഷൻ
പുതിയ കീവേഡുകൾ, അല്ലെങ്കിൽ ഉചിതമായ "`begin_keywords" ചേർക്കുക. ലെഗസി മിക്സഡ് ലാംഗ്വേജ് ഡിസൈനുകൾക്കായി,
വിവിധ +langext+ ഓപ്ഷനുകൾ ഉപയോഗിക്കണം.
ഭാഷയൊന്നും വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, ഒന്നുകിൽ ഈ ഫ്ലാഗ് അല്ലെങ്കിൽ +langext+ ഓപ്ഷനുകൾ, തുടർന്ന് ഏറ്റവും പുതിയത്
SystemVerilog ഭാഷ (IEEE 1800-2012) ഉപയോഗിക്കുന്നു.
+നിർവചിക്കുക+വേരിയബിൾ=മൂല്യം
+നിർവചിക്കുക+വേരിയബിൾ=മൂല്യം+var2=മൂല്യം 2...
നൽകിയിരിക്കുന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നം അല്ലെങ്കിൽ പ്ലസ്സുകൾ കൊണ്ട് വേർതിരിക്കുകയാണെങ്കിൽ ഒന്നിലധികം ചിഹ്നങ്ങൾ നിർവചിക്കുന്നു.
സമാനമായത് -D; +define എന്നത് വെരിലോഗ് ടൂളുകളിലുടനീളം സാധാരണമാണ്, അതേസമയം -D ഒരു അപരനാമമാണ്
GCC അനുയോജ്യതയ്ക്കായി.
--ഡമ്പ്-ട്രീ
അപൂർവ്വമായി ആവശ്യമാണ്. ഡംപിംഗ് ലെവൽ 3 ഉപയോഗിച്ച് .tree ഡീബഗ് ഫയലുകൾ എഴുതുന്നത് പ്രവർത്തനക്ഷമമാക്കുക, അത് ഡംപ് ചെയ്യുന്നു
സാധാരണ നിർണായക ഘട്ടങ്ങൾ. ഫോർമാറ്റിനെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾക്ക് വെരിലേറ്റർ ഇന്റേണലുകൾ കാണുക
മാനുവൽ. --debug ഉപയോഗിച്ച് --dump-tree സ്വയമേവ പ്രവർത്തനക്ഷമമാക്കുന്നു, അതിനാൽ "--ഡീബഗ് ചെയ്യുക
ഡംപ് ഫയലുകൾ വലുതും ആവശ്യമില്ലാത്തതുമാണെങ്കിൽ --no-dump-tree" ഉപയോഗപ്രദമാകും.
--ഡമ്പ്-ട്രീ
--ഡമ്പ്-ട്രീ-
അപൂർവ്വമായി ആവശ്യമാണ് - ഡവലപ്പർ ഉപയോഗത്തിന്. ഇന്റേണൽ ട്രീ ഡമ്പിംഗ് ലെവൽ ആഗോളതലത്തിൽ a ആയി സജ്ജമാക്കുക
നിർദ്ദിഷ്ട ഡംപിംഗ് ലെവൽ അല്ലെങ്കിൽ നിർദ്ദിഷ്ട വെരിലേറ്റർ സോഴ്സ് ഫയൽ നിർദ്ദിഷ്ടമായി സജ്ജമാക്കുക
ട്രീ ഡമ്പിംഗ് ലെവൽ (ഉദാ "--ഡംപ്-ട്രീ-വി3ഓർഡർ 9"). ലെവൽ 0 ഡംപുകൾ ഡിസ്ബിൾ ചെയ്യുന്നു
"--no-dump-tree" എന്നതിന് തുല്യമാണ്. ലെവൽ 9 എല്ലാ ഘട്ടങ്ങളിലും ഡംപിംഗ് സാധ്യമാക്കുന്നു.
-E സോഴ്സ് കോഡ് പ്രീപ്രോസസ് ചെയ്യുക, എന്നാൽ 'gcc -E' പോലെ കംപൈൽ ചെയ്യരുത്. ഔട്ട്പുട്ട് എഴുതിയിരിക്കുന്നു
സ്റ്റാൻഡേർഡ് ഔട്ട്. ഡീബഗ്ഗിംഗ് സന്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നതിൽ സൂക്ഷിക്കുക, കാരണം അവയും പോകും
സ്റ്റാൻഡേർഡ് ഔട്ട്.
--പിശക്-പരിധി
ഇത്രയും പിശകുകളോ മുന്നറിയിപ്പുകളോ നേരിട്ടതിന് ശേഷം, പുറത്തുകടക്കുക. സ്ഥിരസ്ഥിതികൾ 50 ആയി.
--exe
ഒരു എക്സിക്യൂട്ടബിൾ സൃഷ്ടിക്കുക. നിങ്ങൾ അധിക .cpp ഫയലുകളും കൈമാറേണ്ടതുണ്ട്
നിങ്ങളുടെ സിമുലേഷനായി പ്രധാന ലൂപ്പ് നടപ്പിലാക്കുന്ന കമാൻഡ് ലൈൻ.
-F ഫയല്
നിർദ്ദിഷ്ട ഫയൽ വായിക്കുക, അതിനുള്ളിലെ എല്ലാ ടെക്സ്റ്റുകളും കമാൻഡായി വ്യക്തമാക്കിയിരിക്കുന്നതുപോലെ പ്രവർത്തിക്കുക
ലൈൻ പാരാമീറ്ററുകൾ. ഏതെങ്കിലും ആപേക്ഷിക പാതകൾ അടങ്ങിയിരിക്കുന്ന ഡയറക്ടറിയുമായി ബന്ധപ്പെട്ടതാണ്
വ്യക്തമാക്കിയ ഫയൽ. ഇതും കാണുക -f. ശ്രദ്ധിക്കുക -F വെരിലോഗ് ടൂളുകളിലുടനീളം സാധാരണമാണ്.
-f ഫയല്
നിർദ്ദിഷ്ട ഫയൽ വായിക്കുക, അതിനുള്ളിലെ എല്ലാ ടെക്സ്റ്റുകളും കമാൻഡായി വ്യക്തമാക്കിയിരിക്കുന്നതുപോലെ പ്രവർത്തിക്കുക
ലൈൻ പാരാമീറ്ററുകൾ. ഏതെങ്കിലും ആപേക്ഷിക പാതകൾ നിലവിലെ ഡയറക്ടറിയുമായി ബന്ധപ്പെട്ടതാണ്. ഇതും കാണുക
-എഫ്. വെരിലോഗ് ടൂളുകളിലുടനീളം നോട്ട് -എഫ് സാമാന്യം നിലവാരമുള്ളതാണ്.
വരിയുടെ അവസാനം വരെ അവഗണിക്കപ്പെട്ട // കമന്റുകൾ ഫയലിൽ അടങ്ങിയിരിക്കാം. ഏതെങ്കിലും $VAR,
$(VAR), അല്ലെങ്കിൽ ${VAR} എന്നത് നിർദ്ദിഷ്ട പരിസ്ഥിതി വേരിയബിൾ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കും.
--ജിഡിബി
ഒരു ഇന്ററാക്ടീവ് GDB (അല്ലെങ്കിൽ VERILATOR_GDB എൻവയോൺമെന്റ് വേരിയബിളിന് കീഴിൽ വെരിലേറ്റർ പ്രവർത്തിപ്പിക്കുക
മൂല്യം) സെഷൻ. ഇതും കാണുക --gdbbt.
--gdbbt
--ഡീബഗ് വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ, ഒരു GDB പ്രോസസ്സിന് താഴെ വെരിലേറ്റർ പ്രവർത്തിപ്പിച്ച് ഒരു ബാക്ക്ട്രെയിസ് പ്രിന്റ് ചെയ്യുക
പുറത്തുകടക്കുമ്പോൾ, ഉടൻ തന്നെ GDB-യിൽ നിന്ന് പുറത്തുകടക്കുക. --ഡീബഗ് ഇല്ലാതെ അല്ലെങ്കിൽ GDB പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ,
ഈ പതാക അവഗണിക്കപ്പെട്ടു. ഉപയോക്താക്കൾ ബാക്ക്ട്രെയിസുകൾ എളുപ്പത്തിൽ സൃഷ്ടിക്കാൻ ഉദ്ദേശിച്ചുള്ളതാണ്; അല്ലാത്തപക്ഷം
--gdb ഫ്ലാഗ് കാണുക.
--സഹായിക്കൂ
ഈ സന്ദേശവും പ്രോഗ്രാമിന്റെ പതിപ്പും പ്രദർശിപ്പിക്കുകയും പുറത്തുകടക്കുകയും ചെയ്യുന്നു.
-Iമുതലാളി
കാണുക -y.
--ആഴം മൂല്യം
അപൂർവ്വമായി ആവശ്യമാണ്. IFDEPTH മുന്നറിയിപ്പ് നൽകുന്ന ഡെപ്ത് ഡിഫോൾട്ടായി 0 ആയി സജ്ജമാക്കുക
ഈ മുന്നറിയിപ്പ് പ്രവർത്തനരഹിതമാക്കുന്നു.
+incdir+മുതലാളി
കാണുക -y.
--ഇൻഹിബിറ്റ്-സിം
അപൂർവ്വമായി ആവശ്യമാണ്. മൂല്യനിർണ്ണയം പ്രവർത്തനക്ഷമമാക്കുന്നതിനും പ്രവർത്തനരഹിതമാക്കുന്നതിനും ഒരു "inhibitSim(bool)" ഫംഗ്ഷൻ സൃഷ്ടിക്കുക.
a-യിൽ പ്രധാനമല്ലാത്ത മൊഡ്യൂളുകൾ പ്രവർത്തനരഹിതമാക്കാൻ ഇത് ഒരു ഉയർന്ന തലത്തിലുള്ള ടെസ്റ്റ്ബെഞ്ചിനെ അനുവദിക്കുന്നു
സിസ്റ്റം സി മൊഡ്യൂളുകൾ വീണ്ടും കംപൈൽ ചെയ്യുകയോ മാറ്റുകയോ ചെയ്യാതെ തന്നെ സിമുലേഷൻ നൽകിയിരിക്കുന്നു
തൽക്ഷണം.
--ഇൻലൈൻ-മൾട്ട് മൂല്യം
മൊഡ്യൂളുകളുടെ ഇൻലൈനിംഗ് ട്യൂൺ ചെയ്യുക. 2000 ന്റെ ഡിഫോൾട്ട് മൂല്യം 2000 വരെ പുതിയത് വ്യക്തമാക്കുന്നു
ഈ സംഖ്യയിൽ കൂടുതലാണെങ്കിൽ, ഇൻലൈനിംഗ് വഴി മോഡലിലേക്ക് പ്രവർത്തനങ്ങൾ ചേർക്കാം
പ്രവർത്തനങ്ങൾ ഫലം ചെയ്യും, മൊഡ്യൂൾ ഇൻലൈൻ ചെയ്തിട്ടില്ല. വലിയ മൂല്യങ്ങൾ, അല്ലെങ്കിൽ ഒരു മൂല്യം <= 1
എല്ലാം ഇൻലൈൻ ചെയ്യും, ദൈർഘ്യമേറിയ കംപൈൽ സമയങ്ങളിലേക്ക് നയിക്കും, പക്ഷേ വേഗതയേറിയേക്കാം
റൺടൈമുകൾ. വളരെ ചെറിയ മൊഡ്യൂളുകൾക്ക് ഈ ക്രമീകരണം അവഗണിക്കപ്പെടുന്നു; അവർ എപ്പോഴും ആയിരിക്കും
അനുവദനീയമെങ്കിൽ ഇൻലൈൻ.
-LDFLAGS ഫ്ലാഗുകൾ
ജനറേറ്റ് ചെയ്ത മേക്ക് ഫയലുകളിലേക്ക് നിർദ്ദിഷ്ട സി ലിങ്കർ ഫ്ലാഗുകൾ ചേർക്കുക. മേക്ക് പ്രവർത്തിപ്പിക്കുമ്പോൾ
ജനറേറ്റ് ചെയ്ത മേക്ക്ഫൈൽ ഇവ പ്രൈമറിക്ക് ശേഷം* C++ ലിങ്കറിലേക്ക് (ld) കൈമാറും
ഫയൽ ലിങ്ക് ചെയ്യുന്നു. പരമ്പരാഗത നാമമായതിനാൽ ഈ പതാകയെ -LDFLAGS എന്ന് വിളിക്കുന്നു
സിമുലേറ്ററുകൾ; മേക്ക്ഫൈൽ വേരിയബിൾ ആയതിനാൽ ഇതിനെ LDLIBS എന്ന് വിളിക്കുന്നതാണ് നല്ലത്
അത് നിയന്ത്രിക്കുന്നു. (മേക്കിൽ, LDFLAGS ആദ്യ ഒബ്ജക്റ്റിന് മുമ്പാണ്, LDLIBS ശേഷം. -L
ലൈബ്രറികൾ Make variable LDLIBS-ൽ ആയിരിക്കണം, LDFLAGS അല്ല.)
--ഭാഷ മൂല്യം
"--default-langauge" എന്നതിന്റെ പര്യായപദം, മറ്റ് ടൂളുകളുമായും അതിനുമുമ്പും അനുയോജ്യതയ്ക്ക്
വെരിലേറ്ററിന്റെ പതിപ്പുകൾ.
+libext+ext+ext...
മൊഡ്യൂളുകൾ കണ്ടെത്തുന്നതിന് ഉപയോഗിക്കേണ്ട വിപുലീകരണങ്ങൾ വ്യക്തമാക്കുക. ഉദാഹരണത്തിന് മൊഡ്യൂൾ ആണെങ്കിൽ
x പരാമർശിച്ചിരിക്കുന്നു, നോക്കുക x.ext. കുറിപ്പ് +libext+ വെരിലോഗിൽ ഉടനീളം സാധാരണമാണ്
ഉപകരണങ്ങൾ. .v, .sv എന്നിവയിലേക്കുള്ള ഡിഫോൾട്ടുകൾ.
--ലിന്റ്-മാത്രം
ലിന്റ് ലംഘനങ്ങൾക്കായി മാത്രം ഫയലുകൾ പരിശോധിക്കുക, മറ്റേതെങ്കിലും ഔട്ട്പുട്ട് സൃഷ്ടിക്കരുത്.
സ്റ്റൈലിസ്റ്റിക് ആയി കണക്കാക്കുന്ന സന്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കാൻ നിങ്ങൾക്ക് -Wall ഓപ്ഷൻ ആവശ്യമായി വന്നേക്കാം
സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല.
ഡിസൈൻ പൂർണ്ണമായി പരിശോധിച്ചുറപ്പിക്കാൻ പാടില്ലെങ്കിൽ --bbox-sys എന്നിവയും കാണുക
--bbox-unsup ഓപ്ഷനുകൾ.
--എംഎംഡി
.d ഡിപൻഡൻസി ഫയലുകൾ സൃഷ്ടിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക, ഡിപൻഡൻസി ഡിറ്റക്ഷൻ ഉണ്ടാക്കാൻ ഉപയോഗിക്കുന്നു
gcc -MMD ഓപ്ഷൻ. ഡിഫോൾട്ടായി ഓൺ, പ്രവർത്തനരഹിതമാക്കാൻ --no-MMD ഉപയോഗിക്കുക.
--എം.പി
--MMD ഉപയോഗിച്ച് .d ഡിപൻഡൻസി ഫയലുകൾ സൃഷ്ടിക്കുമ്പോൾ, വ്യാജ ലക്ഷ്യങ്ങൾ ഉണ്ടാക്കുക. gcc -MP ന് സമാനമാണ്
ഓപ്ഷൻ.
--എംഡിർ ഡയറക്ടറി
മേക്ക് ഒബ്ജക്റ്റ് ഡയറക്ടറിയുടെ പേര് വ്യക്തമാക്കുന്നു. സൃഷ്ടിച്ച എല്ലാ ഫയലുകളും സ്ഥാപിക്കും
ഈ ഡയറക്ടറിയിൽ. വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, "obj_dir" ഉപയോഗിക്കുന്നു. എങ്കിൽ ഡയറക്ടറി സൃഷ്ടിക്കപ്പെടുന്നു
അത് നിലവിലില്ല കൂടാതെ പാരന്റ് ഡയറക്ടറികൾ നിലവിലുണ്ട്; അല്ലെങ്കിൽ സ്വയം Mdir സൃഷ്ടിക്കുക
വെരിലേറ്ററിനെ വിളിക്കുന്നതിന് മുമ്പ്.
--മോഡ്-പ്രിഫിക്സ് ഉന്നതനാമം
എല്ലാ ലോവർ ലെവൽ ക്ലാസുകളിലേക്കും മുൻകൈയെടുക്കാൻ പേര് വ്യക്തമാക്കുന്നു. ഡിഫോൾട്ടുകൾ ഇതുപോലെ തന്നെ
--പ്രിഫിക്സ്.
--no-clk
നിർദ്ദിഷ്ട സിഗ്നൽ ക്ലോക്ക് ആയി അടയാളപ്പെടുത്തുന്നത് തടയുക. "--clk" കാണുക.
--no-pins64
"--pins-bv 33" എന്നതിനായുള്ള ബാക്ക്വേർഡ് കോംപാറ്റിബിൾ അപരനാമം.
--നോ-സ്കിപ്പ്-സമാനം
അപൂർവ്വമായി ആവശ്യമാണ്. എല്ലാ ഉറവിട ഫയലുകളും ആണെങ്കിൽ വെരിലേറ്ററിന്റെ എക്സിക്യൂഷൻ ഒഴിവാക്കുന്നത് പ്രവർത്തനരഹിതമാക്കുന്നു
സമാനമാണ്, കൂടാതെ എല്ലാ ഔട്ട്പുട്ട് ഫയലുകളും പുതിയ തീയതികളിൽ നിലവിലുണ്ട്.
+നോട്ടിമിംഗ് ചെക്കുകൾ
മറ്റ് സിമുലേറ്ററുകളുമായുള്ള അനുയോജ്യതയ്ക്കായി അവഗണിച്ചു.
-O0 മോഡലിന്റെ ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനരഹിതമാക്കുന്നു.
-O3 വെരിലേറ്റർ തന്നെ സൃഷ്ടിക്കുന്ന കോഡിനായി സ്ലോ ഒപ്റ്റിമൈസേഷനുകൾ പ്രാപ്തമാക്കുന്നു (ഇതിന് വിപരീതമായി
സി കംപൈലറിന്റെ ഒപ്റ്റിമൈസേഷനെ ബാധിക്കുന്ന "-CFLAGS -O3". -O3 സിമുലേഷൻ കുറച്ചേക്കാം
കംപൈൽ സമയത്തിന്റെ ചിലവിൽ റൺടൈം. ഇത് നിലവിൽ --inline-mult -1 സജ്ജമാക്കുന്നു.
-Oഒപ്റ്റിമൈസേഷൻ-ലെറ്റർ
അപൂർവ്വമായി ആവശ്യമാണ്. ഒപ്റ്റിമൈസേഷൻ ഉപയോഗിച്ച് ഒരു നിർദ്ദിഷ്ട ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നു അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുന്നു
പാസായ കത്തിന്റെ അടിസ്ഥാനത്തിൽ തിരഞ്ഞെടുത്തു. ഒരു ചെറിയ അക്ഷരം ഒരു ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനരഹിതമാക്കുന്നു, an
വലിയ അക്ഷരം അത് പ്രവർത്തനക്ഷമമാക്കുന്നു. ഇത് ഡീബഗ്ഗിംഗ് ഉപയോഗത്തിന് മാത്രമുള്ളതാണ്; ഉറവിടം കാണുക
-O അക്ഷരങ്ങളിലേക്കുള്ള ഒപ്റ്റിമൈസേഷനുകളുടെ പതിപ്പ്-ആശ്രിത മാപ്പിംഗുകൾക്കുള്ള കോഡ്.
-ഒ
--exe ഉപയോഗിക്കുകയാണെങ്കിൽ ബിൽറ്റ് ചെയ്ത ഫൈനൽ എക്സിക്യൂട്ടബിളിന്റെ പേര് വ്യക്തമാക്കുക. ഡിഫോൾട്ടുകൾ
--പ്രിഫിക്സ് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ.
--നോ-ഓർഡർ-ക്ലോക്ക്-ഡിലേ
അപൂർവ്വമായി ആവശ്യമാണ്. ക്ലോക്ക് ക്രമപ്പെടുത്തുന്നതിനുള്ള ബഗ് പരിഹരിക്കൽ പ്രവർത്തനരഹിതമാക്കുന്നു, കാലതാമസത്തോടെ പ്രവർത്തനക്ഷമമാക്കുന്നു
നിയമനങ്ങൾ. ഡെവലപ്പർമാർ നിർദ്ദേശിക്കുമ്പോൾ മാത്രമേ ഈ ഫ്ലാഗ് ഉപയോഗിക്കാവൂ.
--ഔട്ട്പുട്ട്-സ്പ്ലിറ്റ് ബൈറ്റുകൾ
ഔട്ട്പുട്ട് .cpp/.sp ഫയലുകളെ ഒന്നിലധികം ഔട്ട്പുട്ടുകളായി വിഭജിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുന്നു. ഒരു C++ ഫയൽ ചെയ്യുമ്പോൾ
നിർദ്ദിഷ്ട പ്രവർത്തനങ്ങളുടെ എണ്ണം കവിയുന്നു, അടുത്തതിൽ ഒരു പുതിയ ഫയൽ സൃഷ്ടിക്കപ്പെടും
പ്രവർത്തന പരിധി. കൂടാതെ, ഏതെങ്കിലും വേഗത കുറഞ്ഞ ദിനചര്യകൾ __Slow ഫയലുകളിലേക്ക് സ്ഥാപിക്കും.
മന്ദഗതിയിലുള്ള ദിനചര്യകളിൽ ഒപ്റ്റിമൈസേഷൻ പ്രവർത്തനരഹിതമാക്കാൻ കഴിയുന്നതിനാൽ ഇത് സമാഹരണം ത്വരിതപ്പെടുത്തുന്നു,
ശേഷിക്കുന്ന ഫയലുകൾ സമാന്തര മെഷീനുകളിൽ കംപൈൽ ചെയ്യാവുന്നതാണ്. --ഔട്ട്പുട്ട്-സ്പ്ലിറ്റ് ഉപയോഗിക്കുന്നു
പ്രകടനത്തിൽ നിസ്സാരമായ സ്വാധീനം മാത്രമേ ഉണ്ടാകൂ. 3.3GHz ഒപ്റ്റെറോണിൽ GCC 2 ഉപയോഗിച്ച്,
--ഔട്ട്പുട്ട്-സ്പ്ലിറ്റ് 20000 ഏകദേശം ഒരു മിനിറ്റ്-കംപൈലായി വിഭജിക്കുന്നതിന് കാരണമാകും.
കഷണങ്ങൾ.
--output-split-cfuncs പ്രസ്താവനകൾ
ഔട്ട്പുട്ട് .cpp/.sp ഫയലുകളിലെ ഫംഗ്ഷനുകൾ ഒന്നിലധികം ഫംഗ്ഷനുകളായി വിഭജിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുന്നു.
ഒരു ജനറേറ്റഡ് ഫംഗ്ഷൻ നിർദ്ദിഷ്ട പ്രവർത്തനങ്ങളുടെ എണ്ണം കവിയുമ്പോൾ, ഒരു പുതിയ ഫംഗ്ഷൻ
സൃഷ്ടിക്കപ്പെടും. --ഔട്ട്പുട്ട്-സ്പ്ലിറ്റ് ഉപയോഗിച്ച്, ഇത് വേഗത്തിൽ കംപൈൽ ചെയ്യാൻ ജിസിസിയെ പ്രാപ്തമാക്കും
സ്പ്ലിറ്റ് മൂല്യങ്ങൾ കുറയുന്നതിനനുസരിച്ച് പ്രകടനത്തിലെ ചെറിയ നഷ്ടം മോശമാകും. അതല്ല
--ഔട്ട്പുട്ട്-സ്പ്ലിറ്റ് എന്ന അർത്ഥത്തിൽ --ഔട്ട്പുട്ട്-സ്പ്ലിറ്റിനേക്കാൾ ശക്തമാണ് ഈ ഓപ്ഷൻ
ഒരു ഫംഗ്ഷന്റെ ഉള്ളിൽ പിളർന്നു.
--ഔട്ട്പുട്ട്-സ്പ്ലിറ്റ്-ക്ട്രേസ് പ്രസ്താവനകൾ
ഔട്ട്പുട്ട് .cpp/.sp ഫയലുകളിലെ ട്രെയ്സ് ഫംഗ്ഷനുകൾ ഒന്നിലധികം ആയി വിഭജിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുന്നു
പ്രവർത്തനങ്ങൾ. --output-split-cfuncs-ന്റെ അതേ ക്രമീകരണത്തിലേക്ക് ഡിഫോൾട്ടുകൾ.
-P വിത്ത് -E, GCC -P ഫ്ലാഗ് പോലെയുള്ള `ലൈൻ മാർക്കറുകളും ശൂന്യമായ ലൈനുകളും സൃഷ്ടിക്കുന്നത് പ്രവർത്തനരഹിതമാക്കുക.
--പിൻസ്64
"--pins-bv 65" എന്നതിനായുള്ള ബാക്ക്വേർഡ് കോംപാറ്റിബിൾ അപരനാമം. അത് 65 അല്ല, 64 ആണെന്ന് ശ്രദ്ധിക്കുക.
--pins-bv വീതി
അതിലും വലുതോ തുല്യമോ ആയ SystemC ഇൻപുട്ടുകൾ/ഔട്ട്പുട്ടുകൾ വ്യക്തമാക്കുന്നു വീതി ബിറ്റുകൾ വീതി വേണം
uint32/vluint64_t's-ന് പകരം sc_bv ഉപയോഗിക്കുക. സ്ഥിരസ്ഥിതി "--pins-bv 65" ആണ്. പതിപ്പുകൾ
വെരിലേറ്ററിന് മുമ്പ് 3.671 "--pins-bv 33" ലേക്ക് സ്ഥിരസ്ഥിതിയായി. കൂടുതൽ sc_bv ഉപയോഗിക്കുന്നു, മോശമാണ്
പ്രകടനത്തിന്. നിർദ്ദിഷ്ട പോർട്ടുകൾ തിരഞ്ഞെടുക്കാൻ "/*verilator sc_bv*/" ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുക
sc_bv ആകുക.
--pins-sc-uint
2 ബിറ്റിലധികം വീതിയുള്ള SystemC ഇൻപുട്ടുകൾ/ഔട്ട്പുട്ടുകൾ വ്യക്തമാക്കുന്നു sc_uint ഉപയോഗിക്കണം
2 നും 64 നും ഇടയിൽ. "--pins-sc-biguint" കോമ്പിനേഷനുമായി സംയോജിപ്പിക്കുമ്പോൾ, അത് ഫലം നൽകുന്നു
sc_uint-ൽ 2 നും 64 നും ഇടയിലും sc_biguint 65 നും 512 നും ഇടയിൽ ഉപയോഗിക്കുന്നു.
--pins-sc-biguint
65 ബിറ്റിലധികം വീതിയുള്ള SystemC ഇൻപുട്ടുകൾ/ഔട്ട്പുട്ടുകൾ വ്യക്തമാക്കുന്നു sc_biguint ഉപയോഗിക്കണം
65 നും 512 നും ഇടയിൽ, sc_bv 513 മുതൽ മുകളിലേക്ക്. എന്നിവയുമായി സംയോജിപ്പിക്കുമ്പോൾ
"--pins-sc-uint" കോമ്പിനേഷൻ, ഇത് 2 നും 64 നും ഇടയിൽ sc_uint ഉപയോഗിക്കുന്നതിന് കാരണമാകുന്നു
sc_biguint 65 നും 512 നും ഇടയിൽ ഉപയോഗിക്കുന്നു.
--pins-uint8
--pins-bv ക്രമീകരണം, 8 എന്നിവയേക്കാൾ ചെറുതായ SystemC ഇൻപുട്ടുകൾ/ഔട്ട്പുട്ടുകൾ വ്യക്തമാക്കുന്നു.
ബിറ്റുകളോ അതിൽ കുറവോ uint8_t-ന് പകരം uint32_t ഉപയോഗിക്കണം. അതുപോലെ 9-16 വീതിയുള്ള പിന്നുകൾ ചെയ്യും
uint16_t-ന് പകരം uint32_t ഉപയോഗിക്കുക.
--പൈപ്പ്-ഫിൽട്ടർ കമാൻഡ്
അപൂർവ്വമായി ആവശ്യമുള്ളതും പരീക്ഷണാത്മകവുമാണ്. വെരിലേറ്റർ നിർദ്ദിഷ്ട കമാൻഡ് a ആയി നൽകും
സബ്പ്രോസസ് പൈപ്പ്, വെരിലോഗ് കോഡിൽ ഇഷ്ടാനുസൃത എഡിറ്റുകൾ നടത്താൻ കമാൻഡിനെ അനുവദിക്കുന്നതിന്
വെരിലേറ്ററിൽ എത്തുന്നതിനുമുമ്പ്.
ഓരോ വെരിലോഗ് ഫയലും വായിക്കുന്നതിന് മുമ്പ്, വെരിലേറ്റർ ഉപപ്രോസസിലേക്ക് ഫയലിന്റെ പേര് കൈമാറും.
'read_verilog" ഉള്ള stdin "'. ഫിൽട്ടർ ഫയൽ വായിച്ച് പ്രവർത്തിപ്പിച്ചേക്കാം
അത് ആഗ്രഹിക്കുന്ന ഏതെങ്കിലും ഫിൽട്ടറിംഗ്, പുതിയ ഫയൽ ഉള്ളടക്കങ്ങൾ stdout-ലെ Verilator-ലേക്ക് തിരികെ നൽകുന്നു
'ഉള്ളടക്ക ദൈർഘ്യം' ഉപയോഗിച്ച്. ഫിൽട്ടറിൽ നിന്ന് stderr-ലേക്കുള്ള ഔട്ട്പുട്ട് Verilator-ലേക്ക് നൽകുന്നു
stdout കൂടാതെ ഫിൽട്ടർ പൂജ്യമല്ലാത്ത അവസ്ഥയിൽ പുറത്തുകടക്കുകയാണെങ്കിൽ, Verilator അവസാനിക്കുന്നു. കാണുക
ഒരു ഉദാഹരണത്തിനായി t/t_pipe_filter ടെസ്റ്റ്.
ഫിൽട്ടറിന്റെ ഔട്ട്പുട്ട് ഡീബഗ് ചെയ്യാൻ, പ്രീപ്രോസസ് ചെയ്ത ഔട്ട്പുട്ട് കാണാൻ -E ഓപ്ഷൻ ഉപയോഗിച്ച് ശ്രമിക്കുക.
--പ്രിഫിക്സ് ഉന്നതനാമം
ടോപ്പ് ലെവൽ ക്ലാസിന്റെയും മേക്ക് ഫയലിന്റെയും പേര് വ്യക്തമാക്കുന്നു. V യിലേക്കുള്ള ഡിഫോൾട്ടുകൾ മുൻകൂട്ടി നിശ്ചയിച്ചിരിക്കുന്നു
--top-module സ്വിച്ചിന്റെ പേര്, അല്ലെങ്കിൽ V ആദ്യ വെരിലോഗ് ഫയൽനാമത്തിന് മുമ്പായി
കമാൻഡ് ലൈനിൽ കടന്നു.
--പ്രൊഫൈൽ-cfuncs
പ്രൊഫൈലിംഗ് പിന്തുണയ്ക്കുന്നതിനായി സൃഷ്ടിച്ച C++ ഫംഗ്ഷനുകൾ പരിഷ്ക്കരിക്കുക. ചടങ്ങുകൾ ആയിരിക്കും
ഒരു "അടിസ്ഥാന" പ്രസ്താവന ഉൾക്കൊള്ളുന്ന തരത്തിൽ ചെറുതാക്കിയിരിക്കുന്നു, പൊതുവെ എപ്പോഴും ഒരു ബ്ലോക്ക് അല്ലെങ്കിൽ വയർ
പ്രസ്താവന. (ഇത് എക്സിക്യൂട്ടബിളിനെ ~5% മന്ദഗതിയിലാക്കുമെന്ന് ശ്രദ്ധിക്കുക.) കൂടാതെ, ദി
വെരിലോഗ് മൊഡ്യൂളിന്റെ അടിസ്ഥാന നാമവും ലൈൻ നമ്പറും ഉപയോഗിച്ച് ഫംഗ്ഷൻ നാമം സഫിക്സ് ചെയ്യും
എന്നതിൽ നിന്നാണ് പ്രസ്താവന വന്നത്. ഇത് gprof അല്ലെങ്കിൽ oprofile റിപ്പോർട്ടുകളുമായി പരസ്പരബന്ധം സ്ഥാപിക്കാൻ അനുവദിക്കുന്നു
യഥാർത്ഥ വെരിലോഗ് ഉറവിട പ്രസ്താവനകൾ.
--സ്വകാര്യം
--പൊതുവിനു വിപരീതം. സ്ഥിരസ്ഥിതിയാണോ; ബാക്ക്വേർഡ് കോംപാറ്റിബിളിറ്റിക്ക് ഈ ഓപ്ഷൻ നിലവിലുണ്ട്.
--പൊതു
ഇത് ചരിത്രപരമായ ഡീബഗ് ഉപയോഗത്തിന് മാത്രമുള്ളതാണ്. ഇത് ഉപയോഗിക്കുന്നത് തെറ്റായ അനുകരണത്തിന് കാരണമായേക്കാം
സൃഷ്ടിച്ച ക്ലോക്കുകൾ.
എല്ലാ സിഗ്നലുകളും മൊഡ്യൂളുകളും പൊതുവായി പ്രഖ്യാപിക്കുന്നു. ഇത് സിഗ്നൽ ഒപ്റ്റിമൈസേഷനുകൾ ഓഫാക്കും
എല്ലാ സിഗ്നലുകൾക്കും ഒരു /*വെരിലേറ്റർ പൊതു*/ അഭിപ്രായങ്ങളും ഇൻലൈനിംഗും ഉണ്ടെങ്കിൽ. ഇതും തിരിയും
മൊഡ്യൂൾ ഒഴികെ എല്ലാ മൊഡ്യൂളുകളിലും /*verilator public_module*/ ഉള്ളതുപോലെ ഇൻലൈനിംഗ് ഓഫ്
/*verilator inline_module* ഉപയോഗിച്ച് ഇത് പ്രത്യേകമായി പ്രവർത്തനക്ഷമമാക്കി/.
--report-unoptflat
UNOPTFLAT മുന്നറിയിപ്പുകൾക്കുള്ള അധിക ഡയഗ്നോസ്റ്റിക്സ്. ഇതിൽ ഓരോ ലൂപ്പിനും ഉൾപ്പെടുന്നു, ഏറ്റവും വീതിയുള്ള 10
ലൂപ്പിലെ വേരിയബിളുകളും ലൂപ്പിലെ ഏറ്റവും കൂടുതൽ ഫാൻ ചെയ്ത 10 വേരിയബിളുകളും. ഇവയാണ്
ലൂപ്പ് തകർക്കാൻ ഒന്നിലധികം വേരിയബിളുകളായി വിഭജിക്കാനുള്ള കാൻഡിഡേറ്റുകൾ.
കൂടാതെ, ശക്തമായി ബന്ധിപ്പിച്ചിരിക്കുന്ന മുഴുവൻ ഘടകങ്ങളുടെയും ഒരു GraphViz DOT ഫയൽ നിർമ്മിക്കുന്നു
ഓരോ ലൂപ്പുമായി ബന്ധപ്പെട്ട ഉറവിടത്തിനുള്ളിൽ. എന്നത് പരിഗണിക്കാതെയാണ് ഇത് നിർമ്മിക്കുന്നത്
--dump-tree സജ്ജമാക്കി. അത്തരം ഗ്രാഫുകൾ പ്രശ്നം വിശകലനം ചെയ്യാൻ സഹായിച്ചേക്കാം, പക്ഷേ വളരെ ആകാം
ശരിക്കും വലിയ.
DOT ഫയലുകൾ കാണുന്നതിനും കൈകാര്യം ചെയ്യുന്നതിനും വിവിധ കമാൻഡുകൾ നിലവിലുണ്ട്. ഉദാഹരണത്തിന് ദി ഡോട്ട്
ഒരു DOT ഫയൽ അച്ചടിക്കുന്നതിനായി PDF ആക്കി മാറ്റാൻ കമാൻഡ് ഉപയോഗിക്കാം. ഉദാഹരണത്തിന്:
ഡോട്ട് -Tpdf -O Vt_unoptflat_simple_2_35_unoptflat.dot
DOT ഫയലിൽ നിന്ന് ഒരു PDF Vt_unoptflat_simple_2_35_unoptflat.dot.pdf സൃഷ്ടിക്കും.
--സംരക്ഷിക്കാവുന്ന
ജനറേറ്റ് ചെയ്ത മോഡലിൽ സേവ് ആൻഡ് റീസ്റ്റോർ ഫംഗ്ഷനുകൾ ഉൾപ്പെടെ പ്രവർത്തനക്ഷമമാക്കുക.
ഉപയോക്തൃ കോഡ് ഒരു VerilatedSerialize അല്ലെങ്കിൽ VerilatedDeserialze ഒബ്ജക്റ്റ് സൃഷ്ടിക്കണം
സൃഷ്ടിച്ച മോഡലിലെയും മറ്റേതെങ്കിലും ഡാറ്റയിലെയും << അല്ലെങ്കിൽ >> ഓപ്പറേറ്റർമാരെ പ്രോസസ് എന്ന് വിളിക്കുന്നു
സംരക്ഷിച്ച/പുനഃസ്ഥാപിക്കേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്:
void save_model(const char* ഫയൽനാമം) {
വെരിലേറ്റഡ് സേവ് ഒഎസ്;
os.open(ഫയലിന്റെ പേര്);
os << main_time; // ഉപയോക്തൃ കോഡ് ടൈംസ്റ്റാമ്പ് മുതലായവ സംരക്ഷിക്കണം
os << *topp;
}
void restore_model(const char* ഫയൽനാമം) {
വെരിലേറ്റഡ് റിസ്റ്റോർ ഒഎസ്;
os.open(ഫയലിന്റെ പേര്);
os >> main_time;
os >> *ടോപ്പ്;
}
--sc
SystemC ഔട്ട്പുട്ട് മോഡ് വ്യക്തമാക്കുന്നു; ഇതും കാണുക --cc.
-- സ്ഥിതിവിവരക്കണക്കുകൾ
{prefix}__stats.txt-ൽ ഡിസൈനിന്റെ സ്ഥിതിവിവരക്കണക്കുകൾ അടങ്ങിയ ഒരു ഡംപ് ഫയൽ സൃഷ്ടിക്കുന്നു.
--stats-vars
വലുപ്പമനുസരിച്ച് എല്ലാ വേരിയബിളുകളുടെയും ഒരു ലിസ്റ്റ് ഉൾപ്പെടെ കൂടുതൽ വിശദമായ സ്ഥിതിവിവരക്കണക്കുകൾ സൃഷ്ടിക്കുന്നു (പ്ലെയിൻ
-- സ്ഥിതിവിവരക്കണക്കുകൾ ഒരു എണ്ണം നൽകുന്നു). ഇത് സൂചിപ്പിക്കുന്നത് --stats കാണുക.
-sv SystemVerilog ഭാഷാ സവിശേഷതകൾ പ്രവർത്തനക്ഷമമാക്കണം; "--ഭാഷയ്ക്ക് തുല്യം
1800-2005". ഈ ഓപ്ഷൻ ഡിഫോൾട്ടായി തിരഞ്ഞെടുത്തിരിക്കുന്നു, ഇത് അനുയോജ്യതയ്ക്കായി നിലവിലുണ്ട്
മറ്റ് സിമുലേറ്ററുകൾ.
+systemverilogext+ext
"+1800-2012ext+" എന്നതിന്റെ പര്യായപദംext.
--ടോപ്പ്-മൊഡ്യൂൾ ഉന്നതനാമം
ഇൻപുട്ടിൽ വെരിലോഗിൽ ഒന്നിലധികം ടോപ്പ് ലെവൽ മൊഡ്യൂളുകൾ അടങ്ങിയിരിക്കുമ്പോൾ, ഇതിന്റെ പേര് വ്യക്തമാക്കുന്നു
ടോപ്പ് ലെവൽ വെരിലോഗ് മൊഡ്യൂൾ ടോപ്പായി മാറുകയും if --പ്രിഫിക്സിനായി സ്ഥിരസ്ഥിതി സജ്ജമാക്കുകയും ചെയ്യുന്നു
ഉപയോഗിക്കുന്നില്ല. ഒരു ടോപ്പ് മാത്രമുള്ള സ്റ്റാൻഡേർഡ് ഡിസൈനുകളിൽ ഇത് ആവശ്യമില്ല.
--ട്രേസ്
മോഡലിലേക്ക് വേവ്ഫോം ട്രെയ്സിംഗ് കോഡ് ചേർക്കുന്നു. വെരിലേറ്റർ അധികമായി സൃഷ്ടിക്കും
{prefix}__Trace*.cpp ഫയലുകൾ സമാഹരിക്കേണ്ടതുണ്ട്. ഇതുകൂടാതെ
verilated_vcd_sc.cpp (SystemC ട്രെയ്സുകൾക്ക്) അല്ലെങ്കിൽ verilated_vcd_c.cpp (രണ്ടിനും) ആയിരിക്കണം
കംപൈൽ ചെയ്ത് ലിങ്ക് ചെയ്തു. വെരിലേറ്റർ സൃഷ്ടിച്ച മേക്ക്ഫയലുകൾ ഉപയോഗിക്കുകയാണെങ്കിൽ, ഇവ ആയിരിക്കും
നിങ്ങൾക്കുള്ള ഉറവിട ലക്ഷ്യങ്ങളായി ചേർത്തു. നിങ്ങൾ വെരിലേറ്റർ മേക്ക് ഫയലുകൾ ഉപയോഗിക്കുന്നില്ലെങ്കിൽ, നിങ്ങൾ
നിങ്ങളുടെ Makefile-ലേക്ക് ഇവ സ്വമേധയാ ചേർക്കേണ്ടതുണ്ട്.
ട്രെയ്സിംഗ് കംപൈൽ ചെയ്തത് ചില ചെറിയ പ്രകടന നഷ്ടങ്ങൾക്ക് കാരണമായേക്കാം
മോഡൽ എക്സിക്യൂഷൻ സമയത്ത് തരംഗരൂപങ്ങൾ ഓണാക്കില്ല.
--ട്രേസ്-ഡെപ്ത് ലെവലുകൾ
ട്രെയ്സിംഗ് പ്രവർത്തനക്ഷമമാക്കാൻ ആഴത്തിലുള്ള ലെവലുകളുടെ എണ്ണം വ്യക്തമാക്കുക, ഉദാഹരണത്തിന് --ട്രേസ്-ലെവൽ 1 മുതൽ
മുകളിലെ ലെവലിന്റെ സിഗ്നലുകൾ മാത്രം കാണുക. മുഴുവൻ മോഡലിലേക്കും ഡിഫോൾട്ടുകൾ. ഒരു ചെറിയ സംഖ്യ ഉപയോഗിക്കുന്നു
ദൃശ്യപരത കുറയ്ക്കും, പക്ഷേ റൺടൈം മെച്ചപ്പെടുത്തുകയും ഫയൽ വലുപ്പം കണ്ടെത്തുകയും ചെയ്യും.
--trace-max-array ആഴത്തിൽ
അപൂർവ്വമായി ആവശ്യമാണ്. കണ്ടെത്താവുന്ന ഒരു സിഗ്നലിന്റെ പരമാവധി അറേ ഡെപ്ത് വ്യക്തമാക്കുക.
ഡിഫോൾട്ട് 32, കാരണം വലിയ അറേകൾ കണ്ടെത്തുന്നത് ട്രേസ് ചെയ്ത സിമുലേഷനുകളെ വളരെ മന്ദഗതിയിലാക്കിയേക്കാം.
--trace-max-width വീതി
അപൂർവ്വമായി ആവശ്യമാണ്. കണ്ടെത്താവുന്ന ഒരു സിഗ്നലിന്റെ പരമാവധി ബിറ്റ് വീതി വ്യക്തമാക്കുക.
ഡിഫോൾട്ട് 256, കാരണം വലിയ വെക്ടറുകൾ കണ്ടെത്തുന്നത് ട്രെയ്സ് ചെയ്ത സിമുലേഷനുകളെ വളരെ മന്ദഗതിയിലാക്കിയേക്കാം.
--നോ-ട്രേസ്-പാരാമുകൾ
പാരാമീറ്ററുകളുടെ ട്രെയ്സിംഗ് പ്രവർത്തനരഹിതമാക്കുക.
--ട്രെസ്-സ്ട്രക്റ്റുകൾ
പാക്ക് ചെയ്ത ഘടന, യൂണിയൻ, പാക്ക് ചെയ്ത അറേ ഫീൽഡുകൾ എന്നിവയുടെ പേര് കാണിക്കാൻ ട്രേസിംഗ് പ്രവർത്തനക്ഷമമാക്കുക,
ഒരു സിംഗിൾ കോമ്പിനേഷൻ പാക്ക്ഡ് ബസിനേക്കാൾ. വിസിഡി ഫയൽ ഫോർമാറ്റ് പരിമിതികൾ കാരണം ഇത് സംഭവിക്കാം
ഗണ്യമായി മന്ദഗതിയിലുള്ള ട്രെയ്സ് ടൈമുകളും വലിയ ട്രേസ് ഫയലുകളും ഫലമായി.
--ട്രേസ്-അണ്ടർസ്കോർ
അണ്ടർ സ്കോർ ഉപയോഗിച്ച് ആരംഭിക്കുന്ന സിഗ്നലുകളുടെ ട്രെയ്സിംഗ് പ്രവർത്തനക്ഷമമാക്കുക. സാധാരണയായി, ഈ സിഗ്നലുകൾ
ട്രേസിംഗ് സമയത്ത് ഔട്ട്പുട്ട് അല്ല. ഇതും കാണുക --കവറേജ്-അണ്ടർസ്കോർ.
-Uവേരിയബിൾ
നൽകിയിരിക്കുന്ന പ്രീപ്രൊസസ്സർ ചിഹ്നം നിർവചിക്കാതിരിക്കുന്നു.
--unroll-count ലൂപ്പുകൾ
അപൂർവ്വമായി ആവശ്യമാണ്. അൺറോൾ ചെയ്തേക്കാവുന്ന പരമാവധി എണ്ണം ലൂപ്പ് ആവർത്തനങ്ങൾ വ്യക്തമാക്കുന്നു.
BLKLOOPINIT മുന്നറിയിപ്പും കാണുക.
--unroll-stmts പ്രസ്താവനകൾ
അപൂർവ്വമായി ആവശ്യമാണ്. ആ ലൂപ്പിനുള്ള ലൂപ്പിലെ പരമാവധി എണ്ണം പ്രസ്താവനകൾ വ്യക്തമാക്കുന്നു
ചുരുട്ടും. BLKLOOPINIT മുന്നറിയിപ്പും കാണുക.
--unused-regexp regexp
അപൂർവ്വമായി ആവശ്യമാണ്. * ഒപ്പം ? ഒരു സിഗ്നൽ നാമം പൊരുത്തപ്പെടുന്നെങ്കിൽ
ഉപയോഗിക്കാത്ത മുന്നറിയിപ്പ് അടിച്ചമർത്തും. "*ഉപയോഗിക്കാത്ത*" എന്നതിലേക്കുള്ള ഡിഫോൾട്ടുകൾ. ഇത് "" ആയി സജ്ജമാക്കുന്നത് പ്രവർത്തനരഹിതമാക്കുന്നു
പൊരുത്തപ്പെടുന്നു.
-വി കംപൈൽ ചെയ്ത കോൺഫിഗറേഷൻ വിവരങ്ങൾ ഉൾപ്പെടെ, വെർബോസ് പതിപ്പ് കാണിക്കുന്നു
വെരിലേറ്റർ. (perl -V ന് സമാനമാണ്.)
-v ഫയലിന്റെ പേര്
ഫയലിന്റെ പേര് വെരിലോഗ് ലൈബ്രറിയായി വായിക്കുക. ഫയലിലെ ഏത് മൊഡ്യൂളുകളും ഉപയോഗിക്കാം
ടോപ്പ് ലെവൽ മൊഡ്യൂളിലെ സെൽ ഇൻസ്റ്റന്റേഷനുകൾ പരിഹരിക്കുക, അല്ലാത്തപക്ഷം അവഗണിക്കപ്പെടും. കുറിപ്പ് -v ന്യായമാണ്
വെരിലോഗ് ടൂളുകളിലുടനീളം സ്റ്റാൻഡേർഡ്.
+verilog1995ext+ext
+verilog2001ext+ext
"+1364-1995ext+" എന്നതിന്റെ പര്യായങ്ങൾext കൂടാതെ "+1364-2001ext+"ext യഥാക്രമം
- മതിൽ
സാധാരണയായി പ്രവർത്തനരഹിതമാക്കുന്ന കോഡ് ശൈലിയിലുള്ള മുന്നറിയിപ്പുകൾ ഉൾപ്പെടെ എല്ലാ മുന്നറിയിപ്പുകളും പ്രവർത്തനക്ഷമമാക്കുക
സ്ഥിരസ്ഥിതിയായി.
-വെറർ-സന്ദേശം
നിർദ്ദിഷ്ട മുന്നറിയിപ്പ് സന്ദേശം ഒരു പിശക് സന്ദേശമാക്കി മാറ്റുക. ഇത് പൊതുവെ ആണ്
സൈറ്റിലുടനീളം പ്രധാനപ്പെട്ട നിയമങ്ങൾ ലംഘിക്കുന്നതിൽ നിന്ന് ഉപയോക്താക്കളെ നിരുത്സാഹപ്പെടുത്തുക, ഉദാഹരണത്തിന്
"-വെറർ-NOUNOPTFLAT".
-ഭാവി-സന്ദേശം
അപൂർവ്വമായി ആവശ്യമാണ്. അജ്ഞാത വെരിലേറ്റർ അഭിപ്രായങ്ങളോ മുന്നറിയിപ്പ് സന്ദേശങ്ങളോ നൽകിയിരിക്കുന്നത് ഉപയോഗിച്ച് അടിച്ചമർത്തുക
സന്ദേശ കോഡ്. പിന്നീടുള്ള പതിപ്പിനായി പ്രാഗ്മകൾ ഉപയോഗിച്ച് കോഡ് എഴുതാൻ അനുവദിക്കുന്നതിന് ഇത് ഉപയോഗിക്കുന്നു
പഴയ പതിപ്പിന് കീഴിൽ പ്രവർത്തിക്കാൻ വെരിലേറ്റർ; ഓരോ സന്ദേശ കോഡിനും -Wfuture- ആർഗ്യുമെന്റുകൾ ചേർക്കുക
അല്ലെങ്കിൽ പഴയ പതിപ്പ് പിന്തുണയ്ക്കാത്തതിനെ പുതിയ പതിപ്പ് പിന്തുണയ്ക്കുന്നുവെന്ന് അഭിപ്രായമിടുക.
-അറിയില്ല-സന്ദേശം
നിർദ്ദിഷ്ട മുന്നറിയിപ്പ് സന്ദേശം പ്രവർത്തനരഹിതമാക്കുക. ഇത് ഏത് lint_on നിർദ്ദേശങ്ങളെയും അസാധുവാക്കും
ഉറവിടം, അതായത് മുന്നറിയിപ്പ് ഇപ്പോഴും അച്ചടിക്കില്ല.
-Wno-lint
ലിന്റുമായി ബന്ധപ്പെട്ട എല്ലാ മുന്നറിയിപ്പ് സന്ദേശങ്ങളും എല്ലാ ശൈലി മുന്നറിയിപ്പുകളും പ്രവർത്തനരഹിതമാക്കുക. ഇത് തുല്യമാണ്
ലേക്ക് "-Wno-ALWCOMBORDER -Wno-CASEINCOMPLETE -Wno-CASEOVERLAP -Wno-CASEX -Wno-CASEWITHX
-Wno-CMPCONST -Wno-ENDLABEL -No-implICIT -No-LITENDIAN -Wno-PINCONNECTEMPT
-Wno-PINMISSING -Wno-SynCASYNCNET -Wno-UNDRIVEN -Wno-UNSigned -No-UNUSE -Wno-WIDTH"
കൂടാതെ Wno-style-നായി കാണിച്ചിരിക്കുന്ന ലിസ്റ്റ്.
ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നതിനുപകരം നിങ്ങളുടെ കോഡ് വൃത്തിയാക്കാൻ ശക്തമായി ശുപാർശ ചെയ്യുന്നു
മൂന്നാം കക്ഷികളിൽ നിന്ന് ലഭിച്ച കോഡിന്റെ ടെസ്റ്റ് കേസുകൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ മാത്രം ഉപയോഗിക്കാൻ ഉദ്ദേശിച്ചുള്ളതാണ്.
-Wno-ശൈലി
എല്ലാ കോഡ് ശൈലിയുമായി ബന്ധപ്പെട്ട മുന്നറിയിപ്പ് സന്ദേശങ്ങളും പ്രവർത്തനരഹിതമാക്കുക (ഡിഫോൾട്ടായി അവ ഇതിനകം തന്നെയാണെന്ന് ശ്രദ്ധിക്കുക
വികലാംഗൻ). ഇത് "-Wno-DECLFILENAME -Wno-DEFPARAM -Wno-INCABSPATH എന്നതിന് തുല്യമാണ്
-വൺ-പിൻകണക്ട്
-Wno-VARHIDDEN".
- മാരകമായ
മുന്നറിയിപ്പുകൾ കണ്ടെത്തുമ്പോൾ, അവ പ്രിന്റ് ചെയ്യുക, എന്നാൽ സിമുലേറ്ററിൽ നിന്ന് പുറത്തുകടക്കരുത്.
ബിൽഡുകളിൽ മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ ഉള്ളത് മന്ദഗതിയിലാണ്. നിങ്ങൾ വൃത്തിയാക്കാൻ ശക്തമായി ശുപാർശ ചെയ്യുന്നു
നിങ്ങളുടെ കോഡ്, ഇൻലൈൻ lint_off ഉപയോഗിക്കുക, അല്ലെങ്കിൽ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നതിന് പകരം -Wno-... ഫ്ലാഗുകൾ ഉപയോഗിക്കുക.
-വാർൺ-സന്ദേശം
നിർദ്ദിഷ്ട മുന്നറിയിപ്പ് സന്ദേശം പ്രവർത്തനക്ഷമമാക്കുന്നു.
-Wwarn-lint
ലിന്റുമായി ബന്ധപ്പെട്ട എല്ലാ മുന്നറിയിപ്പ് സന്ദേശങ്ങളും പ്രവർത്തനക്ഷമമാക്കുക (ഡിഫോൾട്ടായി അവ ഇതിനകം പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെന്ന് ശ്രദ്ധിക്കുക),
എന്നാൽ സ്റ്റൈൽ സന്ദേശങ്ങളെ ബാധിക്കരുത്. ഇത് "-Wwarn-ALWCOMBORDER ന് തുല്യമാണ്
-Wwarn-CASEINCOMPLETE -Wwarn-CASEOVERLAP -Wwarn-CASEX -Wwarn-CASEWITHX -Wwarn-CMPCONST
-Wwarn-ENDLABEL -Wwarn-Implicit -Wwarn-LITENDian -Wwarn-PINMISSING -Wwarn-REALCVT
-Wwarn-Unsigned -Wwarn-WIDTH".
-Wwarn-ശൈലി
എല്ലാ കോഡ് ശൈലിയുമായി ബന്ധപ്പെട്ട മുന്നറിയിപ്പ് സന്ദേശങ്ങളും പ്രവർത്തനക്ഷമമാക്കുക. ഇത് "-Wwarn ന് തുല്യമാണ്
നിയുക്ത -Wwarn-DECLFILENAME -Wwarn-DEFPARAM -Wwarn-INCABSPATH -Wwarn-PINNOCONNECT
-Wwarn-SYNCASYNCNET -Wwarn-UNDRIVEN -Wwarn-unused -Wwarn-VARHIDDEN".
--x-അസൈൻ 0
--x-അസൈൻ 1
--x-വേഗത അസൈൻ ചെയ്യുക (സ്ഥിരസ്ഥിതി)
--x-അസൈൻ അദ്വിതീയം
X ലേക്ക് ഒരു അസൈൻമെന്റ് നേരിടുമ്പോൾ മാറ്റിസ്ഥാപിക്കുന്ന രണ്ട്-സംസ്ഥാന മൂല്യം നിയന്ത്രിക്കുന്നു.
--x-assign=ഫാസ്റ്റ്, ഡിഫോൾട്ട്, എല്ലാ X-കളും പ്രകടനത്തിന് ഏറ്റവും മികച്ചതിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു.
--x-assign=0 എല്ലാ Xs-ഉം 0s ആയി പരിവർത്തനം ചെയ്യുന്നു, കൂടാതെ വേഗതയേറിയതുമാണ്. --x-assign=1 എല്ലാ X-കളെയും പരിവർത്തനം ചെയ്യുന്നു
1സെ, ഇത് ഏതാണ്ട് 0 പോലെ വേഗതയുള്ളതാണ്, എന്നാൽ റീസെറ്റ് ബഗുകൾ സജീവമായ ഉയർന്ന നിലയിൽ കണ്ടെത്താനുള്ള സാധ്യത കൂടുതലാണ്
യുക്തി തീർക്കും. --x-assign=unique മൂല്യം നിർണ്ണയിക്കാൻ ഒരു ഫംഗ്ഷൻ വിളിക്കും, ഇത്
റീസെറ്റ് ബഗുകൾ കണ്ടെത്താൻ എല്ലാ X-കളുടെയും ക്രമരഹിതമാക്കൽ അനുവദിക്കുന്നു, ഇത് ഏറ്റവും വേഗത കുറഞ്ഞതും എന്നാൽ സുരക്ഷിതവുമാണ്
കോഡിൽ റീസെറ്റ് ബഗുകൾ കണ്ടെത്തുന്നു.
--x-assign unique ഉപയോഗിക്കുകയാണെങ്കിൽ, നിങ്ങളുടെ റാൻഡം നമ്പർ ജനറേറ്റർ സീഡ് ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം
ഓരോ റിഗ്രഷൻ റണ്ണിനും വ്യത്യസ്ത റാൻഡമൈസേഷൻ സീക്വൻസ് ലഭിക്കുന്നു. സിസ്റ്റം ഉപയോഗിക്കുക
srand48() അല്ലെങ്കിൽ വിൻഡോസിനായി srand() ഇത് ചെയ്യുന്നതിനുള്ള പ്രവർത്തനം. ഒരുപക്ഷേ നിങ്ങൾക്കും ആഗ്രഹിക്കും
തിരഞ്ഞെടുത്ത ഏതെങ്കിലും വിത്തുകൾ പ്രിന്റ് ചെയ്യുക, അതേ വിത്ത് ഉപയോഗിച്ച് വീണ്ടും പ്രവർത്തിപ്പിക്കുന്നത് സാധ്യമാക്കാൻ കോഡ് ചെയ്യുക
ബഗുകൾ പുനർനിർമ്മിക്കുക.
കുറിപ്പ്. ഈ ഓപ്ഷൻ X-ന് വ്യക്തമായി നൽകിയിരിക്കുന്ന വേരിയബിളുകൾക്ക് മാത്രമേ ബാധകമാകൂ
വെരിലോഗ് സോഴ്സ് കോഡ്. --x-initial-edge അല്ലാത്ത പക്ഷം ക്ലോക്കുകളുടെ പ്രാരംഭ മൂല്യങ്ങൾ 0 ആയി സജ്ജീകരിച്ചിരിക്കുന്നു
വ്യക്തമാക്കിയ. മറ്റെല്ലാ സംസ്ഥാന ഹോൾഡിംഗ് വേരിയബിളുകളുടെയും പ്രാരംഭ മൂല്യങ്ങൾ ഇതുപോലെ സജ്ജീകരിച്ചിരിക്കുന്നു
--x-assign തനത് വ്യക്തമാക്കിയിരുന്നു.
--x-initial-edge
ഇവന്റ് ഡ്രൈവ് സിമുലേറ്ററുകളുടെ അനുകരണം പ്രവർത്തനക്ഷമമാക്കുന്നു, ഇത് സാധാരണയായി a-യിൽ ഒരു എഡ്ജ് ട്രിഗർ ചെയ്യുന്നു
X-ൽ നിന്ന് 1-ലേക്കുള്ള പരിവർത്തനം ("posedge") അല്ലെങ്കിൽ X-ൽ നിന്ന് 0 ("negedge"). അതിനാൽ ഇനിപ്പറയുന്ന കോഡ്,
"rst_n" ആദ്യം സജ്ജമാക്കിയാൽ "rs_n" എന്നത് "1'b1" ആയി സജ്ജീകരിക്കും
പൂജ്യത്തിലേക്ക്:
reg res_n = 1'b0;
എപ്പോഴും @(negedge rst_n) ആരംഭിക്കുക
എങ്കിൽ (rst_n == 1'b0) ആരംഭിക്കുക
res_n <= 1'b1;
അവസാനിക്കുന്നു
അവസാനിക്കുന്നു
വെരിലേറ്ററിൽ, സ്വതവേ, ആരംഭിക്കാത്ത ക്ലോക്കുകൾക്ക് പൂജ്യത്തിന്റെ മൂല്യം നൽകിയിരിക്കുന്നു, അതിനാൽ മുകളിൽ
"എപ്പോഴും" ബ്ലോക്ക് ട്രിഗർ ചെയ്യില്ല.
ഇത് നല്ല രീതിയല്ലെങ്കിലും, XX 0 ട്രിഗർ ചെയ്യുന്ന ചില ഡിസൈനുകൾ ഉണ്ട്
"negedge", പ്രത്യേകിച്ച് റീസെറ്റ് സീക്വൻസുകളിൽ. വെരിലേറ്ററിനൊപ്പം --x-initial-edge ഉപയോഗിക്കുന്നു
ഈ സ്വഭാവം ആവർത്തിക്കുക. XX 1 ഒരു "പോസ്ജ്" ട്രിഗർ ചെയ്യുന്നുവെന്ന് ഇത് ഉറപ്പാക്കും.
കുറിപ്പ്. ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നത് ഒത്തുചേരലിനെ ബാധിക്കുമെന്ന് ചില ഉപയോക്താക്കൾ റിപ്പോർട്ട് ചെയ്തിട്ടുണ്ട്
ഒത്തുചേരലിന്റെ എണ്ണം വർദ്ധിപ്പിക്കുന്നതിന് --converge-limit ഉപയോഗിക്കേണ്ടി വന്നേക്കാം
ആവർത്തനങ്ങൾ. ഇത് മാതൃകാ രൂപകൽപ്പനയിലെ പ്രശ്നങ്ങളുടെ മറ്റൊരു സൂചനയായിരിക്കാം
അഭിസംബോധന ചെയ്യണം.
-y മുതലാളി
ഫയലുകൾ ഉൾപ്പെടുത്തുന്നതിനായി തിരയേണ്ട ഡയറക്ടറികളുടെ പട്ടികയിലേക്ക് ഡയറക്ടറി ചേർക്കുക
അല്ലെങ്കിൽ ലൈബ്രറികൾ. മൂന്ന് പതാകകൾ -y, +incdir, -I എന്നിവയ്ക്ക് സമാനമായ ഫലമുണ്ട്; +incdir കൂടാതെ +y
വെരിലോഗ് ടൂളുകളിലുടനീളം സാമാന്യം നിലവാരമുള്ളവയാണ്, അതേസമയം -ഞാൻ GCC അനുയോജ്യതയുടെ അപരനാമമാണ്.
വെരിലേറ്റർ നിലവിലെ ഡയറക്ടറിയിലും ("-y .") ഏതെങ്കിലും നിർദ്ദിഷ്ട --Mdir, എങ്കിലും
ഏതെങ്കിലും ഉപയോക്താവ് വ്യക്തമാക്കിയ ഡയറക്ടറികൾക്ക് ശേഷം ഈ സ്ഥിരസ്ഥിതി പാതകൾ ഉപയോഗിക്കുന്നു. ഇത് '-y' അനുവദിക്കുന്നു
"$(pwd)"' എന്നതിനുപകരം പിശക് സന്ദേശങ്ങൾക്ക് കേവല ഫയൽനാമങ്ങൾ വേണമെങ്കിൽ ഉപയോഗിക്കും
ആപേക്ഷിക ഫയൽ നാമങ്ങൾ.
ഉദാഹരണം സി ++ നിർവ്വഹണം
ഞങ്ങൾ ഈ ഉദാഹരണം C++ ലേക്ക് കംപൈൽ ചെയ്യും.
mkdir test_our
cd test_our
പൂച്ച < ഞങ്ങളുടെ.വി
മൊഡ്യൂൾ ഞങ്ങളുടെ;
പ്രാരംഭ ആരംഭം $ ഡിസ്പ്ലേ ("ഹലോ വേൾഡ്"); $ ഫിനിഷ്; അവസാനിക്കുന്നു
അന്തിമ ഘടകം
EOF
പൂച്ച < sim_main.cpp
#"Vour.h" ഉൾപ്പെടുത്തുക
#"verilated.h" ഉൾപ്പെടുത്തുക
int main(int argc, char **argv, char **env) {
Verilated ::commandArgs(argc, argv);
Vour* top = new Vour;
അതേസമയം (! Verilated::gotFinish()) {top->eval(); }
മുകളിൽ ഇല്ലാതാക്കുക;
പുറത്ത്(0);
}
EOF
നിങ്ങൾ ഉറവിടങ്ങളിൽ നിന്നോ ടാർബോൾ ഉപയോഗിച്ചോ വെരിലേറ്റർ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെങ്കിൽ, എന്നാൽ നിങ്ങളുടെ പ്രവർത്തനത്തിന്റെ ഭാഗമായിട്ടല്ല
സിസ്റ്റം (ആർപിഎം ആയി), ആദ്യം നിങ്ങൾ കിറ്റിലേക്ക് പോയിന്റ് ചെയ്യേണ്ടതുണ്ട്:
കയറ്റുമതി
കയറ്റുമതി PATH=$VERILATOR_ROOT/bin:$PATH
ഇപ്പോൾ ഞങ്ങൾ ഞങ്ങളുടെ ചെറിയ ഉദാഹരണത്തിൽ വെരിലേറ്റർ പ്രവർത്തിപ്പിക്കുന്നു.
verilator -Wall --cc our.v --exe sim_main.cpp
"obj_dir" ഡയറക്ടറിക്ക് കീഴിൽ നമുക്ക് സോഴ്സ് കോഡ് കാണാം. അതിനായി താഴെയുള്ള FILES വിഭാഗം കാണുക
സൃഷ്ടിച്ച ചില ഫയലുകളുടെ വിവരണങ്ങൾ.
ls -l obj_dir
അപ്പോൾ നമുക്ക് അത് സമാഹരിക്കാം
cd obj_dir
ഉണ്ടാക്കുക -j -f Vour.mk Vour
(വെരിലേറ്ററിൽ സ്ഥിരസ്ഥിതി കംപൈൽ റൂളും ലിങ്ക് റൂളും ഉൾപ്പെടുത്തിയിട്ടുണ്ട്, കാരണം ഞങ്ങൾ --exe ഉപയോഗിക്കുകയും ഒരു പാസ്സാക്കുകയും ചെയ്തു.
വെരിലേറ്റർ കമാൻഡ് ലൈനിൽ .cpp ഫയൽ. നിങ്ങൾക്ക് സ്വന്തമായി കംപൈൽ നിയമങ്ങൾ എഴുതാനും കഴിയും
ഞങ്ങൾ SYSTEMC വിഭാഗത്തിൽ കാണിക്കും.)
ഇപ്പോൾ ഞങ്ങൾ അത് പ്രവർത്തിപ്പിക്കുന്നു
സി.ഡി ..
obj_dir/Vour
നമുക്ക് ഔട്ട്പുട്ടായി ലഭിക്കുന്നു
ഹലോ വേൾഡ്
- our.v:2: വെരിലോഗ് $ഫിനിഷ്
ശരിക്കും, നിങ്ങൾക്കായി ഇതെല്ലാം ചെയ്യാൻ ഒരു Makefile എഴുതുന്നതാണ് നല്ലത്. അപ്പോൾ, നിങ്ങളുടെ
ഉറവിട മാറ്റങ്ങൾ അത് ഈ ഘട്ടങ്ങളെല്ലാം യാന്ത്രികമായി പ്രവർത്തിപ്പിക്കും. ടെസ്റ്റ്_സി ഡയറക്ടറി കാണുക
ഒരു ഉദാഹരണത്തിനായി വിതരണം.
ഉദാഹരണം സിസ്റ്റം നിർവ്വഹണം
ഇത് മുകളിൽ പറഞ്ഞതിന് സമാനമായ ഒരു ഉദാഹരണമാണ്, പക്ഷേ SystemC ഉപയോഗിക്കുന്നു.
mkdir test_our_sc
cd test_our_sc
പൂച്ച < ഞങ്ങളുടെ.വി
മൊഡ്യൂൾ ഞങ്ങളുടെ (clk);
ഇൻപുട്ട് clk; // പ്രാരംഭ സജീവമാക്കൽ ലഭിക്കാൻ ക്ലോക്ക് ആവശ്യമാണ്
എപ്പോഴും @ (പോസ്ഡ്ജ് ക്ലിക്ക്)
$ ഡിസ്പ്ലേ ("ഹലോ വേൾഡ്") ആരംഭിക്കുക; $ ഫിനിഷ്; അവസാനിക്കുന്നു
അന്തിമ ഘടകം
EOF
പൂച്ച < sc_main.cpp
#"Vour.h" ഉൾപ്പെടുത്തുക
int sc_main(int argc, char **argv) {
Verilated ::commandArgs(argc, argv);
sc_clock clk ("clk",10, 0.5, 3, true);
Vour * മുകളിൽ;
മുകളിൽ = പുതിയ വൂർ ("മുകളിൽ"); // SP_CELL (മുകളിൽ, വൂർ);
top->clk(clk); // SP_PIN (top, clk, clk);
അതേസമയം (!Verilated::gotFinish()) {sc_start(1, SC_NS); }
മുകളിൽ ഇല്ലാതാക്കുക;
പുറത്ത്(0);
}
EOF
നിങ്ങൾ ഉറവിടങ്ങളിൽ നിന്നോ ടാർബോൾ ഉപയോഗിച്ചോ വെരിലേറ്റർ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെങ്കിൽ, എന്നാൽ നിങ്ങളുടെ പ്രവർത്തനത്തിന്റെ ഭാഗമായിട്ടല്ല
സിസ്റ്റം (ആർപിഎം ആയി), ആദ്യം നിങ്ങൾ കിറ്റിലേക്ക് പോയിന്റ് ചെയ്യേണ്ടതുണ്ട്:
കയറ്റുമതി
കയറ്റുമതി PATH=$VERILATOR_ROOT/bin:$PATH
ഇപ്പോൾ ഞങ്ങൾ ഞങ്ങളുടെ ചെറിയ ഉദാഹരണത്തിൽ വെരിലേറ്റർ പ്രവർത്തിപ്പിക്കുന്നു.
വെരിലേറ്റർ -വാൾ --sc our.v
അപ്പോൾ നമുക്ക് അത് സമാഹരിക്കാം
ഉണ്ടാക്കുക -j -f Vour.mk Vour__ALL.a
make -j -f Vour.mk ../sc_main.o verilated.o
കൂടാതെ SystemC-യുമായി ലിങ്ക് ചെയ്യുക. ലൈബ്രറികളിലേക്കുള്ള നിങ്ങളുടെ പാതയെ ആശ്രയിച്ച് വ്യത്യാസപ്പെടാം
ഓപ്പറേറ്റിംഗ് സിസ്റ്റം.
കയറ്റുമതി SYSTEMC_LIBDIR=/path/to/where/libsystemc.a/exists
കയറ്റുമതി LD_LIBRARY_PATH=$SYSTEMC_LIBDIR:$LD_LIBRARY_PATH
# SystemC 2.3.0 ആണെങ്കിൽ ആവശ്യമായി വന്നേക്കാം
കയറ്റുമതി SYSTEMC_CXX_FLAGS=-pthread
g++ -L$SYSTEMC_LIBDIR ../sc_main.o Vour__ALL*.o verilated.o \
-o Vour -lsystemc
ഇപ്പോൾ ഞങ്ങൾ അത് പ്രവർത്തിപ്പിക്കുന്നു
സി.ഡി ..
obj_dir/Vour
നമുക്ക് C++ ഉദാഹരണത്തിന് സമാനമായ ഔട്ട്പുട്ട് ലഭിക്കും:
ഹലോ വേൾഡ്
- our.v:2: വെരിലോഗ് $ഫിനിഷ്
ശരിക്കും, നിങ്ങൾക്കായി ഇതെല്ലാം ചെയ്യാൻ ഒരു Makefile ഉപയോഗിക്കുന്നതാണ് നല്ലത്. പിന്നെ, എപ്പോൾ നിങ്ങളുടെ ഉറവിടം
മാറ്റങ്ങൾ അത് ഈ ഘട്ടങ്ങളെല്ലാം യാന്ത്രികമായി പ്രവർത്തിപ്പിക്കും. ഇതിലെ test_sc ഡയറക്ടറി കാണുക
ഒരു ഉദാഹരണത്തിനായി വിതരണം.
ബെഞ്ച്മാർക്കിംഗ് & ഒപ്റ്റിമൈസേഷൻ
മികച്ച പ്രകടനത്തിന്, "-O3 --x-assign=fast --noassert" ഫ്ലാഗുകൾ ഉപയോഗിച്ച് വെരിലേറ്റർ പ്രവർത്തിപ്പിക്കുക. ദി
-O3 ഫ്ലാഗിന് കൂടുതൽ കംപൈൽ സമയം വേണ്ടിവരും, --x-assign=fast എന്നതിന്റെ അപകടസാധ്യത വർദ്ധിപ്പിച്ചേക്കാം
പ്രകടനത്തിനായി ട്രേഡിലെ ബഗുകൾ പുനഃസജ്ജമാക്കുക; ഈ പതാകകൾക്കായുള്ള മുകളിലെ ഡോക്യുമെന്റേഷൻ കാണുക.
ചെറിയ വെരിലോഗ് കോഡ് മാറ്റങ്ങൾ വലിയ വിജയങ്ങൾ നൽകും. നിങ്ങൾക്ക് UNOPTFLAT ഒന്നും ഉണ്ടാകരുത്
വെരിലേറ്ററിൽ നിന്നുള്ള മുന്നറിയിപ്പുകൾ. ഈ മുന്നറിയിപ്പുകൾ പരിഹരിക്കുന്നത് വലിയ മെച്ചപ്പെടുത്തലുകൾക്ക് കാരണമാകും; ഒരു ഉപയോക്താവ്
ഗേറ്റിന് ഉപയോഗിക്കുന്ന ക്ലോക്ക് ലാച്ചിൽ ഒരു ലളിതമായ മാറ്റം വരുത്തിക്കൊണ്ട് അവരുടെ ഒരു UNOPTFLAT മുന്നറിയിപ്പ് പരിഹരിച്ചു
ക്ലോക്കുകൾ 60% പ്രകടന മെച്ചപ്പെടുത്തൽ നേടി.
അതിനപ്പുറം, വെരിലേറ്റഡ് മോഡലിന്റെ പ്രകടനം കൂടുതലും നിങ്ങളുടെ C++ കംപൈലറിനെ ആശ്രയിച്ചിരിക്കുന്നു
നിങ്ങളുടെ സിപിയു കാഷെകളുടെ വലിപ്പം.
സ്ഥിരസ്ഥിതിയായി, lib/verilated.mk ഫയൽ ഒപ്റ്റിമൈസേഷൻ ഓഫാക്കിയിരിക്കുന്നു. ഇത് വേണ്ടിയുള്ളതാണ്
പുതിയ ഉപയോക്താക്കളുടെ പ്രയോജനം, ഇത് റൺടൈമിന്റെ ചെലവിൽ കംപൈൽ സമയം മെച്ചപ്പെടുത്തുന്നു. ചേർക്കാൻ
ഒപ്റ്റിമൈസേഷൻ ഡിഫോൾട്ടായി, OPT, OPT_FAST, അല്ലെങ്കിൽ OPT_SLOW എന്നിങ്ങനെ മൂന്ന് വേരിയബിളുകളിൽ ഒന്ന് സജ്ജമാക്കുക
lib/verilated.mk. അല്ലെങ്കിൽ, വെരിലേറ്റർ കമാൻഡിൽ -CFLAGS കൂടാതെ/അല്ലെങ്കിൽ -LDFLAGS ഓപ്ഷൻ ഉപയോഗിക്കുക
കംപൈലറിനോ ലിങ്കറിനോ ഫ്ലാഗുകൾ നേരിട്ട് കൈമാറുന്നതിനുള്ള ലൈൻ. അല്ലെങ്കിൽ, ഒരു റണ്ണിന്, പാസ്
അവ നിർമ്മിക്കുന്നതിനുള്ള കമാൻഡ് ലൈനിൽ:
OPT_FAST="-O2" -f Vour.mk Vour__ALL.a ഉണ്ടാക്കുക
OPT_FAST വേഗത്തിലുള്ള പാതയുടെ ഭാഗമായ പ്രോഗ്രാമുകൾക്കായുള്ള ഒപ്റ്റിമൈസേഷനുകൾ വ്യക്തമാക്കുന്നു.
ഓരോ സൈക്കിളിലും നടപ്പിലാക്കുന്ന കോഡ്. OPT_SLOW സ്ലോ-പാത്ത് ഫയലുകൾക്കായുള്ള ഒപ്റ്റിമൈസേഷനുകൾ വ്യക്തമാക്കുന്നു
(കൂടുതൽ ട്രെയ്സിംഗ്), ഇത് വളരെ അപൂർവമായി മാത്രമേ നടപ്പിലാക്കൂ, എന്നിട്ടും കംപൈൽ ചെയ്യാൻ വളരെ സമയമെടുക്കും
ഒപ്റ്റിമൈസേഷൻ ഓണാണ്. OPT മൊത്തത്തിലുള്ള ഒപ്റ്റിമൈസേഷൻ വ്യക്തമാക്കുകയും എല്ലാ കംപൈലുകളെയും ബാധിക്കുകയും ചെയ്യുന്നു
OPT_FAST, OPT_SLOW എന്നിവയെ ബാധിക്കുന്നു. മികച്ച ഫലങ്ങൾക്കായി, OPT="-O2" ഉപയോഗിക്കുക, ഒപ്പം ലിങ്ക് ചെയ്യുക
"-സ്റ്റാറ്റിക്". കൂടുതൽ മികച്ച കംപൈൽ സമയങ്ങളിൽ ഏതാണ്ട് സമാന ഫലങ്ങൾ ലഭിക്കും
OPT_FAST="-O1 -fstrict-aliasing". "-O3" പോലുള്ള ഉയർന്ന ഒപ്റ്റിമൈസേഷൻ സഹായിച്ചേക്കാം, എന്നാൽ gcc
ഇടത്തരം വലിപ്പമുള്ള ഡിസൈനുകളിൽ പോലും O3 ന് കീഴിൽ കംപൈൽ സമയം അമിതമായേക്കാം. പകരമായി, ചിലത്
വലിയ ഡിസൈനുകൾ "-Os" ഉപയോഗിച്ച് മികച്ച പ്രകടനം റിപ്പോർട്ട് ചെയ്യുന്നു.
നിർഭാഗ്യവശാൽ, SystemC ഫയലുകൾക്കൊപ്പം ഒപ്റ്റിമൈസർ ഉപയോഗിക്കുന്നത് കംപൈലുകൾ എടുക്കുന്നതിന് കാരണമാകും
നിരവധി മിനിറ്റ്. (സിസ്റ്റംസി ലൈബ്രറികൾക്ക് നിരവധി ചെറിയ ഇൻലൈൻ ഫംഗ്ഷനുകൾ ഉണ്ട്
കമ്പൈലർ പരിപ്പ്.)
മികച്ച ഫലങ്ങൾക്കായി, GCC 3.3 അല്ലെങ്കിൽ പുതിയത് ഉപയോഗിക്കുക. GCC 3.2-നും അതിനുമുമ്പും ഒപ്റ്റിമൈസേഷൻ ബഗുകൾ ഉണ്ട്
പോയിന്റർ അപരനാമ കണ്ടെത്തൽ, ഇത് 2x പ്രകടന നഷ്ടത്തിന് കാരണമാകും.
ഒരൊറ്റ കംപൈലിൽ നിങ്ങൾ നിരവധി സിമുലേഷനുകൾ പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ, ഫീഡ്ബാക്ക് അടിസ്ഥാനമാക്കിയുള്ള അന്വേഷണം നടത്തുക
സമാഹാരം. GCC ഉപയോഗിച്ച്, -fprofile-arcs ഉപയോഗിച്ച്, അപ്പോൾ -fbranch-probabilities ലഭിക്കും
മറ്റൊരു 15% അല്ലെങ്കിൽ അതിൽ കൂടുതൽ.
ആധുനിക കംപൈലറുകളും ലിങ്ക്-ടൈം ഒപ്റ്റിമൈസേഷനെ (LTO) പിന്തുണയ്ക്കുന്നു, ഇത് പ്രത്യേകിച്ചും സഹായിക്കും
നിങ്ങൾ DPI കോഡിൽ ലിങ്ക് ചെയ്യുക. GCC-യിൽ LTO പ്രവർത്തനക്ഷമമാക്കാൻ, സമാഹരണത്തിലും ലിങ്കിലും "-flto" നൽകുക.
ശ്രദ്ധിക്കുക LTO വലിയ ഡിസൈനുകളിൽ അമിതമായ കംപൈൽ സമയത്തിന് കാരണമായേക്കാം.
നിങ്ങളുടേതായ മേക്ക് ഫയലുകളാണ് നിങ്ങൾ ഉപയോഗിക്കുന്നതെങ്കിൽ, നിങ്ങൾക്ക് വെരിലേറ്റഡ് കോഡ് കംപൈൽ ചെയ്യാവുന്നതാണ്
-DVL_INLINE_OPT=ഇൻലൈൻ. ഇത് ഫംഗ്ഷനുകൾ ഇൻലൈൻ ചെയ്യും, എന്നിരുന്നാലും ഇതിന് എല്ലാ സിപിപിയും ആവശ്യമാണ്
ഒരൊറ്റ കംപൈലർ റണ്ണിൽ ഫയലുകൾ കംപൈൽ ചെയ്യാം.
വെരിലോഗ് കോഡ് പ്രൊഫൈൽ ചെയ്യുന്നതിലൂടെ നിങ്ങൾക്ക് കൂടുതൽ ട്യൂണിംഗ് സാധ്യതകൾ കണ്ടെത്താനാകും. ഉപയോഗിക്കുക
വെരിലേറ്ററിന്റെ --പ്രൊഫൈൽ-സിഫങ്കുകൾ, തുടർന്ന് ജിസിസിയുടെ -ജി -പിജി. അപ്പോൾ നിങ്ങൾക്ക് ഒപ്രൊഫൈൽ അല്ലെങ്കിൽ പ്രവർത്തിപ്പിക്കാം
സി++ കോഡിൽ എവിടെയാണ് സമയം ചെലവഴിച്ചതെന്ന് കാണാൻ gprof. gprof ഔട്ട്പുട്ട് പ്രവർത്തിപ്പിക്കുക
verilator_profcfunc കൂടാതെ ഏതൊക്കെ വെരിലോഗ് ലൈൻ നമ്പറുകളാണ് കൂടുതലും ഉള്ളതെന്ന് ഇത് നിങ്ങളോട് പറയും
സമയം ചെലവഴിക്കുന്നു.
പൂർത്തിയാകുമ്പോൾ, ഫലങ്ങൾ രചയിതാവിനെ അറിയിക്കുക. വെരിലേറ്റർ എങ്ങനെയെന്ന് അറിയാൻ ഞാൻ ആഗ്രഹിക്കുന്നു
താരതമ്യം ചെയ്യുന്നു, കൂടാതെ കൂടുതൽ മെച്ചപ്പെടുത്തലുകൾ നിർദ്ദേശിക്കാൻ കഴിഞ്ഞേക്കും.
onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് വെരിലേറ്റർ ഓൺലൈനായി ഉപയോഗിക്കുക