هذا هو أداة التحقق من الأوامر التي يمكن تشغيلها في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
؛ Verilator - تحويل كود فيريلوج إلى C ++ / SystemC
موجز
أداة التحقق - مساعدة
المدقق - الإصدار
أداة التحقق --cc [options] [top_level.v] ... [opt_c_files.cpp / c / cc / a / o / so]
أداة التحقق --sc [الخيارات] [top_level.v] ... [opt_c_files.cpp / c / cc / a / o / so]
أداة التحقق - لينت فقط [top_level.v] ...
الوصف
يقوم Verilator بتحويل كود Verilog القابل للتركيب (وليس السلوكي) ، بالإضافة إلى بعض التوليف ،
SystemVerilog ومجموعة فرعية صغيرة من تأكيدات Verilog AMS ، في كود C ++ أو SystemC. هو - هي
ليس محاكيًا كاملاً ، ولكنه مترجم.
يتم استدعاء Verilator مع معلمات مشابهة لـ GCC أو Cadence Verilog-XL / NC-Verilog أو
VCS سينوبسيس. يقرأ رمز Verilog المحدد ويضعه ويضيف اختياريًا
التغطية ورمز تتبع شكل الموجة. بالنسبة لتنسيقات C ++ و SystemC ، يتم إخراج .cpp و. h
الملفات.
يتم بعد ذلك تجميع الملفات التي تم إنشاؤها بواسطة Verilator باستخدام C ++. يكتب المستخدم القليل من C ++
الملف المجمع ، الذي ينشئ وحدة المستوى الأعلى ويمرر اسم الملف هذا على ملف
سطر الأوامر. يتم تجميع ملفات C هذه في C ++ ، وربطها بملفات Verilated.
سينفذ الملف التنفيذي الناتج المحاكاة الفعلية.
للبدء ، انتقل إلى "EXAMPLE C ++ EXECUTION".
ARGUMENT ملخص
هذا ملخص قصير للحجج إلى Verilator. انظر الأوصاف التفصيلية في
الأقسام التالية لمزيد من المعلومات.
{file.v} أسماء ملفات المستوى الأعلى من Verilog
{file.c / cc / cpp} ملفات C ++ اختيارية للترجمة
{file.a / o / so} ملفات C ++ اختيارية للربط بها
+ 1364-1995 التالي + استخدم Verilog 1995 بامتداد الملف
+ 1364-2001 التالي + استخدم Verilog 2001 بامتداد الملف
+ 1364-2005 التالي + استخدم Verilog 2005 بامتداد الملف
+ 1800-2005 التالي + استخدم SystemVerilog 2005 بامتداد الملف
+ 1800-2009 التالي + استخدم SystemVerilog 2009 بامتداد الملف
+ 1800-2012 التالي + استخدم SystemVerilog 2012 بامتداد الملف
--assert تمكين كافة التأكيدات
- تدفق تدفق تلقائي بعد كل شاشات $
--bbox-sys Blackbox غير معروف $ نظام المكالمات
--bbox-unsup Blackbox ميزات اللغة غير المدعومة
--سلة مهملات تجاوز Verilator ثنائي
-CFLAGS أعلام مترجم C ++ لـ makefile
--cc إنشاء إخراج C ++
--cdc تحليل تقاطع المجال على مدار الساعة
--clk ضع علامة على الإشارة المحددة على أنها ساعة
- مترجم ضبط مترجم C ++ المحدد
- حدود التقارب ضبط الوقت التقارب ضبط الوقت
- Coverage تمكين كل التغطية
- Coverage-line - تمكين تغطية الخط
- Coverage-toggle تمكين تغطية التبديل
- Coverage-user - تمكين تغطية مستخدم SVL
- تغطية - تسطير سفلي - تمكين تغطية إشارات _
-د [= ] تعيين تعريف المعالج المسبق
--debug تمكين التصحيح
--debug-check تمكين تصحيحات التأكيدات
- ديبوجي تمكين التصحيح على مستوى محدد
- ديبوجي- تمكين تصحيح ملف مصدر على مستوى
- اللغة الافتراضية اللغة الافتراضية لتحليلها
+ تعريف + = تعيين تعريف المعالج المسبق
- تفريغ-شجرة تمكين إغراق ملفات شجرة
- تفريغ شجرة تفعيل تفريغ ملفات الشجرة. على مستوى
- تفريغ شجرة - تفعيل تفريغ ملف الشجرة في ملف مصدر على مستوى
-E Preprocess ولكن لا تترجم
- حد الخطأ إحباط بعد هذا العدد من الأخطاء
- رابط exe لإنشاء ملف قابل للتنفيذ
-F خيارات التحليل من ملف نسبيًا
-F خيارات التحليل من ملف
--gdb قم بتشغيل Verilator تحت GDB بشكل تفاعلي
--gdbbt قم بتشغيل Verilator تحت GDB للتتبع الخلفي
- ساعد في عرض هذه المساعدة
-أنا دليل للبحث عن يشمل
- في العمق ضبط تحذير IFDEPTH
+ incdir + دليل للبحث عن يشمل
- منع سيم إنشاء وظيفة لإيقاف تشغيل سيم
--inline-mult وحدة لحن مضمنة
- الكرات البيضاء إشارات الكائن المسبق للرابط لـ makefile
-الحشرات أعلام مكتبة الرابط لـ makefile
--لغة معيار اللغة الافتراضية لتحليله
+ libext + + [ext] ... ملحقات لإيجاد الوحدات
- لينت فقط ، ولكن لا تجعل الإخراج
- MMD إنشاء ملفات التبعية .d
--MP إنشاء أهداف تبعية زائفة
--مدير اسم دليل كائن الإخراج
--mod- بادئة الاسم الذي يسبق الطبقات الدنيا
--لا- clk منع تعليم الإشارة المحددة على أنها ساعة
--لا يوجد دبابيس 64 لا تستخدم vluint64_t's لـ 33-64 بت sigs
--لا يوجد تخطي متطابق لتعطيل تخطي الإخراج المتطابق
+ notimingchecks تم تجاهلها
-O0 تعطيل التحسينات
-O3 تحسينات عالية الأداء
-أ التحسينات القابلة للتحديد
-o اسم الملف التنفيذي النهائي
- no-order-clock-delay تعطيل ترتيب الساعة لتمكين التعيينات
- تقسيم الإخراج تقسيم ملفات .cpp إلى أجزاء
- إخراج وتقسيم cfuncs تقسيم وظائف .cpp
- إخراج - تقسيم - ctrace وظائف تتبع الانقسام
-P تعطيل أرقام الأسطر والفراغات مع -E
- دبابيس- bv حدد أنواعًا لمنافذ المستوى الأعلى
--pins-sc-uint تحديد أنواع المنافذ ذات المستوى الأعلى
--pins-sc-biguint تحديد أنواع المنافذ ذات المستوى الأعلى
--pins-uint8 حدد أنواعًا لمنافذ المستوى الأعلى
- مرشح الأنابيب تصفية كل المدخلات من خلال البرنامج النصي
--بادئة اسم الطبقة العليا
- Profile-cfuncs وظائف الاسم للتنميط
- تصحيح الأخطاء الخاصة ؛ انظر المستندات
- التنقيح العام ؛ انظر المستندات
- تقرير - unoptflat التشخيصات الإضافية لـ UNOPTFLAT
--savable تمكين نموذج حفظ الاستعادة
--sc إنشاء إخراج SystemC
--stats إنشاء ملف إحصائيات
--stats-vars توفير إحصائيات عن المتغيرات
-sv تمكين تحليل SystemVerilog
+ نظام مرادف لـ + 1800-2012 +
- وحدة علوية اسم وحدة إدخال المستوى الأعلى
--تتبع تمكين إنشاء شكل الموجة
- عمق التتبع عمق التعقب
--تتبع- ماكس- مجموعة أقصى عرض بت للتتبع
--تتبع ماكس العرض أقصى عمق للمصفوفة للتتبع
- معلمات التتبع - تمكين معلمات التتبع
--trace-Structs تمكين تتبع أسماء الهياكل
--trace-undercore تمكين تتبع الإشارات _signals
-U Undefine تعريف المعالج المسبق
- عد الانضغاط ضبط تكرار الحلقة القصوى
--انرول- stmts ضبط الحد الأقصى لحجم جسم الحلقة
- غير مستخدم - regexp قم بضبط إشارات النسالة غير المستخدمة
-V مطول الإصدار والتكوين
-الخامس مكتبة فيريلوج
+ فيريلوج 1995 + مرادف لـ + 1364-1995ext +
+ فيريلوج 2001 + مرادف لـ + 1364-2001ext +
-خطأ- تحويل التحذير إلى خطأ
-مستقبل- تعطيل تحذيرات الرسائل غير المعروفة
-لا- تعطيل التحذير
-Wno-lint قم بتعطيل كافة تحذيرات النسالة
-Wno-style تعطيل كافة تحذيرات النمط
-Wno-fatal تعطيل الخروج القاتل عند التحذيرات
--x- تعيين في البداية قم بتعيين Xs لهذه القيمة
--x-initial-edge قم بتمكين مشغلات الحافة الأولية X-> 0 و X-> 1
-ص دليل للبحث عن وحدات
الحجج
{ملف.v}
يحدد ملف Verilog الذي يحتوي على أعلى وحدة سيتم التحقق منها.
{file.c / .cc / .cpp / .cxx}
يحدد ملفات C ++ الاختيارية لربطها برمز Verilog. إن وجدت ملفات C ++
بهذه الطريقة ، سيقوم Verilator بتضمين قاعدة إنشاء تنشئ ملف وحدة
تنفيذ. بدون أي ملفات C ++ ، سيتوقف Verilator عند ملف وحدةمكتبة __ALL.A ،
وافترض أنك ستستمر في الارتباط بوضع القواعد التي تكتبها بنفسك. انظر أيضا
-CFLAGS الخيار.
{file.a / .o / .so}
تحدد ملفات الكائنات أو المكتبة الاختيارية المراد ربطها برمز Verilog ، كملف
اختصار لـ -LDFLAGS " ". إذا تم تحديد أي ملفات بهذه الطريقة ، Verilator
ستتضمن قاعدة إنشاء تستخدم هذه الملفات عند ربط ملف وحدة تنفيذ.
يكون هذا مفيدًا بشكل عام فقط عند استخدامه مع خيار - exe.
+ 1364-1995 التالي +تحويلة
+ 1364-2001 التالي +تحويلة
+ 1364-2005 التالي +تحويلة
+ 1800-2005 التالي +تحويلة
+ 1800-2009 التالي +تحويلة
+ 1800-2012 التالي +تحويلة
يحدد معيار اللغة الذي سيتم استخدامه مع امتداد اسم ملف معين ، تحويلة.
للتوافق مع المحاكيات الأخرى ، راجع أيضًا المرادفات "+ verilog1995ext +"تحويلة,
"+ verilog2001ext +"تحويلةو "+ systemverilogext +"تحويلة.
بالنسبة لأي ملف مصدر ، فإن اللغة المحددة بواسطة هذه الخيارات لها الأسبقية على أي ملف
اللغة المحددة بواسطة خياري "--default-language" أو "--language".
تسري هذه الخيارات بالترتيب الذي تمت مواجهته بها. وبالتالي فإن ما يلي
استخدم Verilog 1995 لـ "av" و Verilog 2001 لـ "bv".
أداة التحقق ... + 1364-1995ext + v av + 1364-2001ext + v bv
يُنصح باستخدام هذه العلامات فقط للتصميمات اللغوية المختلطة القديمة ، حسب الأفضل
الخيار هو تعديل الكود لإصلاح كلمات رئيسية جديدة ، أو إضافة مناسبة
"" start_keywords ".
ملاحظات "" start_keywords "هو بناء SystemVerilog ، والذي يحدد فقط التي
مجموعة من الكلمات الرئيسية ليتم التعرف عليها. مهما كانت المجموعة المختارة ، ستكون الدلالات
تلك الخاصة بـ SystemVerilog. على النقيض من "+ 1364-1995ext +" وما إلى ذلك ، حدد كلا من بناء الجملة
الدلالات المطلوب استخدامها.
--يجزم
قم بتمكين كل التأكيدات.
انظر أيضًا --x-assign و-x-initial-edge ؛ إعداد "--x- تعيين فريد" و / أو
قد يكون من المرغوب فيه "--x-initial-edge".
- أوتوفلاش
بعد كل $ display أو $ fdisplay ، قم بمسح تدفق الإخراج. هذا يضمن ذلك
ستظهر الرسائل على الفور ولكنها قد تقلل الأداء ؛ للحصول على أفضل أداء
"fflush (stdout)" أحيانًا في حلقة C الرئيسية. الافتراضات قبالة ، والتي سوف عازلة
الإخراج كما هو منصوص عليه في مكالمات C العادية.
--bbox-sys
الصندوق الأسود أي مهمة نظام $ غير معروفة أو استدعاءات وظيفية. ستكون مهام النظام ببساطة
NOPed ، وسيتم استبدال وظائف النظام بصفر بدون حجم. الحجج على ذلك
سيتم تحليل الوظائف ، ولكن لن يتم التحقق منها بطريقة أخرى. هذا يمنع الأخطاء عندما
الفحص في وجود مكالمات PLI الخاصة بالشركة.
--bbox-unsup
الصندوق الأسود بعض ميزات اللغة غير المدعومة ، وجداول UDP حاليًا و cmos و
البدائيين بوابة تران. قد يؤدي ذلك إلى تمكين فحص بقية التصميم حتى عندما
البنيات غير المدعومة موجودة.
--سلة مهملات اسم الملف
نادرا ما تكون هناك حاجة. تجاوز اسم الملف الافتراضي لـ Verilator نفسه. عند التبعية
(.d) ، سيصبح اسم الملف هذا تابعًا للمصدر ، بحيث يكون ملف
التغيير في هذا الثنائي سيجعل إعادة بناء ملفات الإخراج.
-كفلاجس الأعلام
أضف إشارات برنامج التحويل البرمجي C المحدد إلى ملفات makefiles التي تم إنشاؤها. عندما يتم تشغيل Make على
سيتم تمرير ملفات makefile التي تم إنشاؤها إلى مترجم C ++ (gcc / g ++ / msvc ++).
--نسخة
يحدد C ++ بدون وضع إخراج SystemC ؛ انظر أيضا - sc.
--cdc
تجريبي. قم بإجراء بعض عمليات التحقق من تجاوز النطاق على مدار الساعة وإصدار التحذيرات ذات الصلة
(CDCRSTLOGIC) ثم الخروج ؛ إذا كانت هناك حاجة إلى تحذيرات بخلاف تحذيرات CDC ، فقم بإجراء
المدى الثاني مع - لينت فقط. يتم أيضًا كتابة معلومات تحذير إضافية إلى
ملف {بادئة} __ cdc.txt.
يتحقق حاليًا فقط من بعض العناصر التي فاتتها أدوات CDC الأخرى ؛ إذا كان لديك اهتمام
إضافة المزيد من فحوصات CDC التقليدية ، يرجى الاتصال بالمؤلفين.
--clk اسم الإشارة
في بعض الأحيان يكون من الصعب جدًا على Verilator التمييز بين إشارات الساعة عن الأخرى
إشارات البيانات. من حين لآخر ، يمكن أن ينتهي الأمر بإشارات الساعة في قائمة التحقق الخاصة بـ
الإشارات التي تحدد ما إذا كانت هناك حاجة إلى مزيد من التقييم. هذا سوف يتحلل بشدة
أداء نموذج التحقق.
مع --clk ، يمكن للمستخدم تحديد ساعة الجذر في النموذج ، ثم Verilator
سيضع علامة على الإشارة كساعة وينشر سمة عداد الوقت تلقائيًا إلى
إشارات أخرى مشتقة من ذلك. بهذه الطريقة ، سيحاول Verilator تجنب أخذ ملف
إشارة على مدار الساعة في قائمة التحقق.
ملاحظة يتم تحديد اسم الإشارة بواسطة مسار البحث hiearchy من RTL. على سبيل المثال ، v.foo.bar. لو
الإشارة هي الإدخال إلى الوحدة النمطية العليا ، اسم الإشارة مباشرة. إذا وجدت ذلك
من الصعب العثور على الاسم الدقيق ، حاول استخدام "/ * verilator clocker * /" في ملف RTL
بمناسبة الإشارة مباشرة.
- مترجم اسم المترجم
لتمكين التوليفات والتغلب على مترجم C ++ المحدد.
قعقع
لحن رنة. قد يقلل هذا من سرعة التنفيذ لأنه يتيح العديد من الحلول
لتجنب الحدود غير المشفرة السخيفة في الرنة. وهذا يشمل كسر الهياكل العميقة
بالنسبة لـ msvc كما هو موضح أدناه.
gcc Tune لـ Gnu C ++ ، على الرغم من أن الكود المُنشأ يجب أن يعمل على أي لغة C ++ متوافقة تقريبًا
مترجم. الافتراضي حاليا.
msvc
لحن لـ Microsoft Visual C ++. قد يقلل هذا من سرعة التنفيذ لأنه يتيح
العديد من الحلول لتجنب الحدود غير المشفرة في MSVC ++. هذا يتضمن
تقسيم التعبيرات المتداخلة بين الأقواس إلى تعبيرات فرعية لتجنبها
خطأ C1009 ، وتقسيم الكتل العميقة إلى وظائف لتجنب الخطأ C1061.
- حدود التقارب
نادرا ما تكون هناك حاجة. يحدد الحد الأقصى لعدد مرات تكرار وقت التشغيل قبل إنشاء ملف
فشل النموذج في تقارب الخطأ. الافتراضي هو 100.
--تغطية
لتمكين جميع أشكال التغطية ، الاسم المستعار لـ "--coverage-line --coverage-toggle
- Coverage-user ".
- خط التغطية
يحدد يجب إدراج كود تحليل تغطية خط الكتلة الأساسي.
يضيف تحليل التغطية عبارات في كل نقطة تغيير تدفق الكود ، وهي ملفات
فروع عبارات IF و CASE ، وهي مجموعة فائقة من تغطية خط Verilog العادية. في
كل فرع من هذا القبيل هو زيادة عداد فريد. في نهاية الاختبار ، العدادات
جنبًا إلى جنب مع اسم الملف ورقم السطر المقابل لكل عداد مكتوب فيه
السجلات / التغطية. pl.
يقوم Verilator تلقائيًا بتعطيل تغطية الفروع التي تحتوي على توقف $ فيها
من المفترض أن تحتوي فروع $ stop على فحص خطأ لا يجب أن يحدث. أ / * المدقق
cover_block_off * / comment سوف تؤدي وظيفة مماثلة على أي كود في تلك الكتلة
أو أدناه ، أو / * أداة التحقق من التغطية على / cover_off * / ستعطل التغطية حول الخطوط
من التعليمات البرمجية.
ملاحظة قد يقوم المُحقق بالإفراط في حساب الكتل التوافقية (غير المُسجَّلة) عند تلك الكتل
استقبال الإشارات التي تم تعطيل تحذير UNOPTFLAT ؛ للأكثر دقة
النتائج لا تقم بتعطيل هذا التحذير عند استخدام التغطية.
--تغطية التبديل
يحدد يجب إدخال رمز تحليل تغطية تبديل الإشارة.
يتم إدخال عداد لكل جزء من كل إشارة في الوحدة النمطية. سوف العداد
زيادة على كل تغيير حافة للبت المقابل.
تعتبر الإشارات التي تشكل جزءًا من المهام أو كتل البداية / النهاية متغيرات محلية و
لا يتم تغطيتها. الإشارات التي تبدأ بشرطة سفلية ، أو هي أعداد صحيحة ، أو واسعة جدًا
(> تخزين إجمالي 256 بت عبر جميع الأبعاد) غير مغطاة أيضًا.
يتم ضغط التسلسل الهرمي ، بحيث إذا تم إنشاء وحدة نمطية عدة مرات ،
سيتم تلخيص التغطية لهذا الجزء عبر جميع عمليات إنشاء تلك الوحدة بامتداد
مجموعة المعلمات نفسها. الوحدة النمطية التي تم إنشاؤها باستخدام قيم معلمات مختلفة هي
تعتبر وحدة مختلفة ، وسيتم عدها بشكل منفصل.
يتخذ Verilator قرارًا ذكيًا بالحد الأدنى حول نطاق الساعة للإشارة
إلى ، ويبحث فقط عن الحواف في نطاق الساعة هذا. هذا يعني أن الحواف قد تكون
يتم تجاهله إذا كان معروفًا أن المنطق المستقبِل لا يمكن رؤيته مطلقًا. هذا
قد تتحسن الخوارزمية في المستقبل. النتيجة الصافية هي أن التغطية قد تكون أقل من
ما يمكن رؤيته من خلال النظر إلى الآثار ، ولكن التغطية أكثر دقة
تمثيل جودة التحفيز في التصميم.
قد تكون هناك حواف محسوبة بالقرب من وقت الصفر بينما يستقر النموذج. إنه جيد
تدرب على عدم وجود تغطية كاملة قبل إطلاق إعادة التعيين مباشرة لمنع احتساب مثل هذا
السلوك.
يمكن استخدام زوج A / * verilator cover_off / on * / comment حول الإشارات التي لا تفعل ذلك
تحتاج إلى تبديل التحليل ، مثل ذاكرة الوصول العشوائي وملفات التسجيل.
- تغطية - تسطير سفلي
تمكين تغطية الإشارات التي تبدأ بشرطة سفلية. عادة ، هذه الإشارات
لم يشملها. راجع أيضًا - تتبع - تسطير سفلي.
- التغطية-المستخدم
تمكن التغطية الوظيفية التي أدخلها المستخدم. حاليا ، جميع نقاط التغطية الوظيفية
باستخدام SVA والتي يجب تمكينها بشكل منفصل مع --assert.
على سبيل المثال ، ستضيف العبارة التالية نقطة تغطية مع التعليق
"DefaultClock":
DefaultClock: خاصية الغلاف (@ (posedge clk) cyc == 3) ؛
-Dفار=قيمنا
يحدد رمز المعالج المعطى ، بدون السماح. على غرار + تحديد ؛ + تحديد
قياسي إلى حد ما عبر أدوات Verilog بينما يعتبر -D اسمًا مستعارًا لتوافق دول مجلس التعاون الخليجي.
--Debug
حدد الصورة المضمنة لتصحيح الأخطاء لـ Verilator (إذا كانت متوفرة) ، وقم بتمكين المزيد من التفاصيل الداخلية
التأكيدات (مكافئة لـ "--debug-check") ، رسائل التصحيح (تعادل
"--debugi 4") ، وملفات تفريغ النموذج الوسيط (تعادل "--dump-treei 3").
- فحص الشوائب
نادرا ما تكون هناك حاجة. تمكين عمليات التحقق من تأكيد التصحيح الداخلي ، بدون تغيير التصحيح
الإسهاب. يتم التمكين تلقائيًا عند تحديد --debug.
- ديبوجي
- ديبوجي-
نادرًا ما يكون مطلوبًا - لاستخدام المطور. عيّن مستوى التصحيح الداخلي عالميًا إلى
مستوى التصحيح المحدد (1-10) أو تعيين ملف مصدر Verilator المحدد إلى
المستوى المحدد (على سبيل المثال "--debugi-V3Width 9"). المستويات الأعلى تنتج أكثر تفصيلاً
الرسائل.
- اللغة الافتراضية قيمنا
حدد اللغة المراد استخدامها افتراضيًا عند معالجة كل ملف Verilog لأول مرة.
يجب أن تكون قيمة اللغة "1364-1995" ، "1364-2001" ، "1364-2005" ، "1800-2005" ،
"1800-2009" أو "1800-2012".
أي لغة مرتبطة بامتداد ملف معين (انظر ملفات +طويلتحويلة +
الخيارات) تفضيلًا للغة المحددة بواسطة --default-language.
يوصى بعلامة --default-language فقط للكود القديم الذي يستخدم نفس الشيء
اللغة في جميع الملفات المصدر ، حيث أن الخيار المفضل هو تحرير الكود لإصلاحه
كلمات رئيسية جديدة ، أو إضافة "start_keywords" المناسبة. لتصميمات اللغات المختلطة القديمة ،
المتنوع +طويليجب استخدام خيارات ext +.
إذا لم يتم تحديد لغة ، إما عن طريق هذه العلامة أو +طويلext + options ، ثم الأحدث
تم استخدام لغة SystemVerilog (IEEE 1800-2012).
+ تحديد +فار=قيمنا
+ تحديد +فار=قيمنا+var2=value2
يعرّف رمز المعالج المعطى ، أو الرموز المتعددة إذا تم الفصل بينها بحروف منقطة.
على غرار -D ؛ + تعريف قياسي إلى حد ما عبر أدوات Verilog بينما -D هو اسم مستعار
لتوافق دول مجلس التعاون الخليجي.
- تفريغ الشجرة
نادرا ما تكون هناك حاجة. تفعيل كتابة ملفات تصحيح الأخطاء .tree بمستوى التفريغ 3 ، والذي يؤدي إلى تفريغ ملفات
المراحل الحرجة القياسية. للحصول على تفاصيل حول التنسيق ، راجع Verilator Internals
يدوي. يتم تمكين --dump-tree تلقائيًا مع --debug ، لذلك "--debug
- no-dump-tree "قد يكون مفيدًا إذا كانت ملفات التفريغ كبيرة وغير مرغوب فيها.
- تفريغ شجرة
- تفريغ شجرة -
نادرًا ما يكون مطلوبًا - لاستخدام المطور. اضبط مستوى إغراق الشجرة الداخلي عالميًا على أ
مستوى الإغراق المحدد أو تعيين ملف مصدر Verilator المحدد إلى الملف المحدد
مستوى إغراق الشجرة (على سبيل المثال "- تفريغ- Treei-V3Order 9"). المستوى 0 يفسد المقالب ويكون
ما يعادل "- لا تفريغ - شجرة". يتيح المستوى 9 إغراق كل مرحلة.
-إجراء معالجة مسبقة لشفرة المصدر ، ولكن لا تقم بالتجميع ، كما هو الحال مع "gcc -E". الإخراج مكتوب
للمعايير. احذر من تمكين رسائل التصحيح ، لأنها ستنتقل أيضًا إلى
معيار بها.
- حد الخطأ
بعد مواجهة هذا العدد من الأخطاء أو التحذيرات ، قم بإنهاء. الافتراضي هو 50.
--إملف تنفيذى
إنشاء ملف قابل للتنفيذ. ستحتاج أيضًا إلى تمرير ملفات .cpp إضافية على ملف
سطر الأوامر الذي ينفذ الحلقة الرئيسية للمحاكاة الخاصة بك.
-F ملف
اقرأ الملف المحدد ، وتصرف كما لو أن كل النص الموجود بداخله قد تم تحديده كأمر
معلمات الخط. أي مسارات ذات صلة تتعلق بالدليل الذي يحتوي على الامتداد
الملف المحدد. انظر أيضا -f. ملاحظة -F قياسي إلى حد ما عبر أدوات Verilog.
-f ملف
اقرأ الملف المحدد ، وتصرف كما لو أن كل النص الموجود بداخله قد تم تحديده كأمر
معلمات الخط. أي مسارات ذات صلة تتعلق بالدليل الحالي. أنظر أيضا
-F. ملاحظة -f قياسية إلى حد ما عبر أدوات Verilog.
قد يحتوي الملف على // التعليقات التي يتم تجاهلها حتى نهاية السطر. أي VAR دولار ،
سيتم استبدال $ (VAR) أو $ {VAR} بمتغير البيئة المحدد.
--gdb
قم بتشغيل Verilator أسفل GDB تفاعلي (أو متغير بيئة VERILATOR_GDB
القيمة). انظر أيضا - gdbbt.
--gdbbt
إذا تم تحديد --debug ، فقم بتشغيل Verilator أسفل عملية GDB واطبع backtrace
عند الخروج ، ثم الخروج من GDB على الفور. بدون --debug أو إذا كان GDB لا يعمل ،
تم تجاهل هذا العلم. مصممة لسهولة إنشاء مسارات خلفية من قبل المستخدمين ؛ خلاف ذلك
انظر - علم gdb.
--مساعدة
يعرض هذه الرسالة وإصدار البرنامج والخروج.
-Iدير
اراك.
- في العمق قيمنا
نادرا ما تكون هناك حاجة. عيّن العمق الذي سينطلق عنده تحذير IFDEPTH ، وافتراضيًا إلى 0
مما يعطل هذا التحذير.
+ incdir +دير
اراك.
- منع سيم
نادرا ما تكون هناك حاجة. قم بإنشاء وظيفة "implitSim (bool)" لتمكين التقييم وتعطيله.
يسمح هذا لمنضدة الاختبار ذات المستوى الأعلى بتعطيل الوحدات النمطية غير المهمة في ملف
محاكاة معينة ، دون الحاجة إلى إعادة ترجمة أو تغيير وحدات SystemC
تم إنشاء مثيل له.
--inline-mult قيمنا
قم بضبط تضمين الوحدات. تحدد القيمة الافتراضية 2000 ذلك ما يصل إلى 2000 جديد
يمكن إضافة العمليات إلى النموذج بالتضمين ، إذا كان أكثر من هذا العدد من
العمليات التي ستنتج ، الوحدة غير مضمنة. قيم أكبر أو قيمة <= 1
سيضمن كل شيء ، سيؤدي إلى أوقات ترجمة أطول ، ولكن من المحتمل أن يكون أسرع
أوقات التشغيل. يتم تجاهل هذا الإعداد للوحدات النمطية الصغيرة جدًا ؛ سيكونون دائما
مضمنة ، إذا سمح.
- الكرات البيضاء الأعلام
قم بإضافة إشارات رابط C المحددة إلى ملفات makefiles التي تم إنشاؤها. عندما يتم تشغيل Make على
تم إنشاء makefile سيتم تمريرها إلى رابط C ++ (ld) * بعد * الأساسي
يتم ربط الملف. يسمى هذا العلم -LDFLAGS لأن هذا هو الاسم التقليدي في
المحاكاة. كان من الأفضل أن يطلق عليه LDLIBS لأن هذا هو متغير Makefile
يتحكم. (في Make ، يكون LDFLAGS قبل الكائن الأول ، LDLIBS بعد. -L
يجب أن تكون المكتبات في Make LDLIBS المتغير وليس LDFLAGS.)
--لغة قيمنا
مرادف لـ "--default-langauge" ، للتوافق مع الأدوات الأخرى وما قبلها
إصدارات Verilator.
+ libext +تحويلة+تحويلة
حدد الامتدادات التي يجب استخدامها لإيجاد الوحدات. إذا على سبيل المثال وحدة
x المشار إليها ، انظر في x.تحويلة. ملاحظة + libext + قياسي إلى حد ما عبر Verilog
أدوات. افتراضات إلى .v و. sv.
- لينت فقط
افحص الملفات بحثًا عن انتهاكات النسالة فقط ، ولا تقم بإنشاء أي مخرجات أخرى.
قد ترغب أيضًا في الخيار -Wall لتمكين الرسائل التي تعتبر أسلوبية
ولا يتم تمكينه افتراضيًا.
إذا لم يتم التحقق من التصميم بالكامل ، فراجع أيضًا ملفي --bbox-sys و
- خيارات bbox-unsup.
- MMD
تفعيل إنشاء ملفات التبعية d. ، المستخدمة في الكشف عن التبعية ، على غرار ملفات
خيار دول مجلس التعاون الخليجي-MMD. قيد التشغيل افتراضيًا ، استخدم --no-MMD للتعطيل.
- MP
عند إنشاء ملفات تبعية d. باستخدام --MMD ، اجعل أهدافًا زائفة. مماثل لـ gcc -MP
الخيار.
--مدير دليل
يحدد اسم دليل الكائن Make. سيتم وضع جميع الملفات التي تم إنشاؤها
في هذا الدليل. إذا لم يتم تحديده ، فسيتم استخدام "obj_dir". يتم إنشاء الدليل إذا
غير موجود والدلائل الأصل موجودة ؛ خلاف ذلك يدويا إنشاء Mdir
قبل الاتصال بـ Verilator.
--mod- بادئة الاسم العلوي
يحدد الاسم الذي سيتبع لجميع فئات المستوى الأدنى. الافتراضيات إلى نفس
--بادئة.
--لا- clk
منع الإشارة المحددة من أن يتم تمييزها على أنها ساعة. انظر "--clk".
- لا دبابيس 64
الاسم المستعار المتوافق مع الإصدارات السابقة لـ "--pins-bv 33".
- لا تخطي متطابقة
نادرا ما تكون هناك حاجة. تعطيل تخطي تنفيذ Verilator إذا كانت جميع ملفات المصدر
متطابقة ، وجميع ملفات الإخراج موجودة بتواريخ أحدث.
+ notimingchecks
تم التجاهل للتوافق مع أجهزة المحاكاة الأخرى.
-0 تعطيل تحسين النموذج.
-O3 يتيح تحسينات بطيئة للرمز الذي ينشئه Verilator نفسه (على عكس
"-CFLAGS -O3" الذي يؤثر على تحسين مترجم لغة سي. -O3 قد يقلل من المحاكاة
runtimes على حساب وقت الترجمة. هذا يعين حاليًا --inline-mult -1.
-Oرسالة التحسين
نادرا ما تكون هناك حاجة. تمكين أو تعطيل تحسينات معينة ، مع التحسين
تم اختياره بناءً على الحرف الذي تم تمريره. يؤدي الحرف الصغير إلى تعطيل التحسين ، وهو ملف
حرف كبير يتيح ذلك. هذا مخصص لتصحيح الأخطاء فقط ؛ انظر المصدر
رمز للتعيينات المعتمدة على الإصدار للتحسينات لأحرف-O.
-o
حدد اسم الملف التنفيذي النهائي الذي تم إنشاؤه في حالة استخدام - exe. افتراضات إلى
--prefix إذا لم يتم تحديدها.
- أي تأخير على مدار الساعة
نادرا ما تكون هناك حاجة. تعطيل إصلاح الخلل لطلب الساعة مع تأخير
تعيينات. يجب استخدام هذه العلامة فقط عندما يقترحها المطورون.
- تقسيم الإخراج بايت
يتيح تقسيم ملفات الإخراج .cpp / .sp إلى عدة مخرجات. عندما يكون ملف C ++
يتجاوز العدد المحدد من العمليات ، سيتم إنشاء ملف جديد في اليوم التالي
حدود الوظيفة. بالإضافة إلى ذلك ، سيتم وضع أي إجراءات بطيئة في ملفات __ بطيئة.
يؤدي هذا إلى تسريع عملية التجميع حيث يمكن تعطيل التحسين في الإجراءات البطيئة ،
ويمكن تجميع الملفات المتبقية على أجهزة متوازية. باستخدام - Output-split
يجب أن يكون لها تأثير ضئيل فقط على الأداء. مع GCC 3.3 على 2GHz Opteron ،
- سينتج عن تقسيم الإخراج 20000 تقسيم إلى ترجمة دقيقة واحدة تقريبًا
قطع.
- إخراج وتقسيم cfuncs البيانات
يمكن تقسيم الوظائف في ملفات الإخراج .cpp / .sp إلى وظائف متعددة.
عندما تتجاوز دالة مُنشأة العدد المحدد من العمليات ، يتم إنشاء وظيفة جديدة
سيتم إنشاؤه. باستخدام - output-split ، سيمكن هذا GCC من التجميع بشكل أسرع وبسعر
خسارة صغيرة في الأداء تزداد سوءًا مع انخفاض قيم الانقسام. لاحظ أن
هذا الخيار أقوى من - Output-split بمعنى أن - Output-split لن يكون كذلك
انقسام داخل دالة.
- إخراج - تقسيم - ctrace البيانات
لتمكين تقسيم وظائف التتبع في ملفات الإخراج .cpp / .sp إلى ملفات متعددة
المهام. افتراضات إلى نفس الإعداد مثل - Output-split-cfuncs.
-P مع -E ، قم بتعطيل إنشاء `` علامات الخطوط والخطوط الفارغة ، على غرار علم GCC -P.
- دبابيس 64
الاسم المستعار المتوافق مع الإصدارات السابقة لـ "--pins-bv 65". لاحظ أن هذا هو 65 وليس 64.
- دبابيس- bv عرض
يحدد مدخلات / مخرجات SystemC أكبر من أو تساوي عرض يجب أن بتات واسعة
استخدم sc_bv بدلاً من uint32 / vluint64_t's. الافتراضي هو "--pins-bv 65". إصدارات
قبل Verilator 3.671 الافتراضي إلى "--pins-bv 33". كلما زاد استخدام sc_bv ، كان ذلك أسوأ
للأداء. استخدم السمة "/ * أداة التحقق sc_bv * /" لتحديد منافذ معينة
يكون sc_bv.
- دبابيس- sc-uint
تحديد مدخلات / مخرجات SystemC التي يزيد عرضها عن 2 بت يجب أن تستخدم sc_uint
بين 2 و 64. عند دمجها مع تركيبة "--pins-sc-biguint" ، ينتج عنها
في sc_uint يتم استخدامه بين 2 و 64 ويتم استخدام sc_biguint بين 65 و 512.
- دبابيس sc-biguint
تحديد مدخلات / مخرجات SystemC التي يزيد عرضها عن 65 بت يجب أن تستخدم sc_biguint
بين 65 و 512 ، و sc_bv من 513 فصاعدًا. عندما يقترن بامتداد
تركيبة "--pins-sc-uint" ، ينتج عنها استخدام sc_uint بين 2 و 64 و
sc_biguint قيد الاستخدام بين 65 و 512.
- دبابيس uint8
يحدد مدخلات / مخرجات SystemC الأصغر من الإعداد --pins-bv و 8
يجب أن تستخدم بت أو أقل uint8_t بدلاً من uint32_t. وبالمثل سوف دبابيس عرض 9-16
استخدم uint16_t بدلاً من uint32_t.
- مرشح الأنابيب أمر
نادرًا ما تكون هناك حاجة إليها وتجريبية. سيقوم المُحقق بنشر الأمر المحدد كملف
أنبوب العملية الفرعية ، للسماح للأمر بإجراء تعديلات مخصصة على كود Verilog
قبل أن تصل إلى Verilator.
قبل قراءة كل ملف Verilog ، سيقوم Verilator بتمرير اسم الملف إلى العملية الفرعية '
stdin مع "read_verilog" "". قد يقوم المرشح بعد ذلك بقراءة الملف وإجراء
أي ترشيح يرغب فيه ، ويغذي محتويات الملف الجديد مرة أخرى إلى Verilator على stdout
مع "طول المحتوى". الإخراج إلى stderr من يغذي مرشح من خلال إلى Verilator's
stdout وإذا خرج المرشح بحالة غير صفرية ينتهي Verilator. انظر
اختبار t / t_pipe_filter على سبيل المثال.
لتصحيح أخطاء إخراج المرشح ، حاول استخدام الخيار -E لرؤية الإخراج المعالج مسبقًا.
--اختصار الاسم العلوي
يحدد اسم فئة المستوى الأعلى والملف makefile. الافتراضيات على V مُسبقة إلى
اسم مفتاح التبديل - الوحدة النمطية العلوية ، أو V مُسبقًا إلى اسم ملف Verilog الأول
مرت على سطر الأوامر.
- الملف الشخصي- cfuncs
تعديل وظائف C ++ التي تم إنشاؤها لدعم التشكيل الجانبي. ستكون الوظائف
تم تصغيرها لاحتواء عبارة "أساسية" واحدة ، بشكل عام كتلة أو سلك واحد دائمًا
إفادة. (لاحظ أن هذا سيؤدي إلى إبطاء الملف التنفيذي بنسبة 5٪ تقريبًا.) علاوة على ذلك ، فإن ملف
سيتم لاحقة اسم الوظيفة بالاسم الأساسي لوحدة Verilog ورقم السطر
جاء البيان من. هذا يسمح بربط تقارير gprof أو oprofile مع
بيانات مصدر Verilog الأصلية.
--نشر
مقابل الجمهور. هو الافتراضي ؛ هذا الخيار موجود للتوافق مع الإصدارات السابقة.
--عام
هذا فقط للاستخدام التاريخي لتصحيح الأخطاء. قد يؤدي استخدامه إلى محاكاة خاطئة لـ
ولدت الساعات.
تعلن عن جميع الإشارات والوحدات النمطية. سيؤدي هذا إلى إيقاف تشغيل تحسينات الإشارة كـ
إذا كانت جميع الإشارات تحتوي على / * مدقق عام * / تعليقات ومضمنة. هذا سوف يتحول أيضا
إيقاف التضمين كما لو أن جميع الوحدات تحتوي على / * أداة التحقق public_module * / ، ما لم تكن الوحدة النمطية
تم تمكينه على وجه التحديد مع / * أداة التحقق المضمنة في الوحدة */.
- تقرير غير مسطح
التشخيصات الإضافية لتحذيرات UNOPTFLAT. وهذا يشمل ، لكل حلقة ، أوسع 10
المتغيرات في الحلقة ، والمتغيرات العشرة الأكثر انتشارًا في الحلقة. هؤلاء هم
المرشحين للتقسيم إلى متغيرات متعددة لكسر الحلقة.
بالإضافة إلى ذلك ، ينتج ملف GraphViz DOT لكامل المكونات المتصلة بقوة
ضمن المصدر المرتبط بكل حلقة. يتم إنتاج هذا بغض النظر عما إذا كان
- تم تعيين تفريغ شجرة. قد تساعد مثل هذه الرسوم البيانية في تحليل المشكلة ، ولكن يمكن أن تكون مفيدة للغاية
كبير بالفعل.
توجد أوامر مختلفة لعرض ملفات DOT ومعالجتها. على سبيل المثال نقطة
يمكن استخدام الأمر لتحويل ملف DOT إلى PDF للطباعة. على سبيل المثال:
نقطة -Tpdf -O Vt_unoptflat_simple_2_35_unoptflat.dot
سيقوم بإنشاء ملف PDF Vt_unoptflat_simple_2_35_unoptflat.dot.pdf من ملف DOT.
--قابل للحفظ
تمكين تضمين وظائف الحفظ والاستعادة في النموذج الذي تم إنشاؤه.
يجب أن ينشئ رمز المستخدم كائن VerilatedSerialize أو VerilatedDeserialze بعد ذلك
استدعاء عوامل التشغيل << أو >> على النموذج الذي تم إنشاؤه وأي بيانات أخرى بالعملية
يحتاج حفظ / استعادة. على سبيل المثال:
باطل save_model (const char * filenamep) {
VerilatedSave نظام التشغيل ؛
os.open (filenamep) ؛
نظام التشغيل << main_time ؛ // يجب أن يحفظ كود المستخدم الطابع الزمني ، وما إلى ذلك
نظام التشغيل << * توب ؛
}
نموذج استعادة باطل (اسم ملف * حرف ملف) {
استعادة نظام التشغيل ؛
os.open (filenamep) ؛
نظام التشغيل >> main_time ؛
نظام التشغيل >> * قمة ؛
}
--sc
يحدد وضع إخراج SystemC ؛ انظر أيضا --cc.
--الحالات
ينشئ ملف تفريغ مع إحصائيات عن التصميم في {بادئة} __ stats.txt.
--stats-vars
ينشئ إحصائيات أكثر تفصيلاً بما في ذلك قائمة بجميع المتغيرات حسب الحجم (عادي
- تعطي الإحصائيات عددًا فقط). انظر - الحالات ، وهو ما يعنيه هذا ضمنيًا.
-sv يحدد يجب تمكين ميزات لغة SystemVerilog ؛ يعادل "--language
1800-2005 ". يتم تحديد هذا الخيار افتراضيًا ، وهو موجود للتوافق مع
محاكيات أخرى.
+ نظامتحويلة
مرادف لـ "+ 1800-2012 +"تحويلة.
- وحدة علوية الاسم العلوي
عندما يحتوي إدخال Verilog على أكثر من وحدة مستوى أعلى ، يحدد اسم
وحدة Verilog ذات المستوى الأعلى لتصبح الأعلى ، وتعيين الإعداد الافتراضي لـ if --prefix
هو ليس مستخدما. هذا ليس مطلوبًا مع التصميمات القياسية ذات القمة الواحدة فقط.
--أثر
يضيف رمز تتبع شكل الموجة إلى النموذج. المحقق سوف تولد إضافية
{بادئة} __ تتبع ملفات * .cpp التي ستحتاج إلى تجميعها. فضلاً عن ذلك
يجب أن يكون verilated_vcd_sc.cpp (لتتبع SystemC) أو verilated_vcd_c.cpp (لكليهما)
تم تجميعها وربطها. في حالة استخدام ملفات Makefiles التي تم إنشاؤها بواسطة Verilator ، فستكون هذه الملفات
أضيفت كأهداف مصدر بالنسبة لك. إذا كنت لا تستخدم ملفات Verilator makefiles ، فأنت
سوف تحتاج إلى إضافة هذه إلى Makefile الخاص بك يدويًا.
قد يؤدي تجميع التتبع في بعض الخسائر الصغيرة في الأداء ، حتى عندما
لا يتم تشغيل أشكال الموجة أثناء تنفيذ النموذج.
- عمق التتبع ومستوياتها
حدد عدد المستويات العميق لتمكين التتبع ، على سبيل المثال - مستوى التتبع 1 إلى
ترى فقط إشارات المستوى الأعلى. افتراضات على النموذج بأكمله. باستخدام عدد صغير
سيقلل من الرؤية ، ولكنه يحسن بشكل كبير وقت التشغيل وحجم ملف التتبع.
--تتبع- ماكس- مجموعة عمق
نادرا ما تكون هناك حاجة. حدد الحد الأقصى لعمق المصفوفة للإشارة التي يمكن تتبعها.
افتراضيات إلى 32 ، حيث أن تتبع المصفوفات الكبيرة قد يبطئ بشكل كبير عمليات المحاكاة المتتبعة.
--تتبع ماكس العرض عرض
نادرا ما تكون هناك حاجة. حدد أقصى عرض بت للإشارة التي يمكن تتبعها.
الافتراضيات إلى 256 ، حيث أن تتبع نواقل كبيرة قد يبطئ بشكل كبير عمليات المحاكاة المتتبعة.
--لا تتبع بارامز
تعطيل تتبع المعلمات.
--تتبع الهياكل
قم بتمكين التتبع لإظهار اسم البنية المجمعة والوحدة وحقول الصفيف المحزومة ،
بدلا من مجرد حافلة معبأة مجتمعة. قد يكون هذا بسبب قيود تنسيق ملف VCD
ينتج عنه أوقات تتبع أبطأ بشكل ملحوظ وملفات تتبع أكبر.
- تتبع- تسطير
تفعيل تتبع الإشارات التي تبدأ بشرطة سفلية. عادة ، هذه الإشارات
لا تخرج أثناء التتبع. انظر أيضا - تغطية - تسطير سفلي.
-Uفار
لإلغاء تحديد رمز المعالج المعطى.
- عد الانضغاط الحلقات
نادرا ما تكون هناك حاجة. يحدد الحد الأقصى لعدد تكرارات الحلقة التي يمكن إلغاء تسجيلها.
انظر أيضًا تحذير BLKLOOPINIT.
--انرول- stmts البيانات
نادرا ما تكون هناك حاجة. يحدد الحد الأقصى لعدد العبارات في حلقة لتلك الحلقة
يكون غير مقيد. انظر أيضًا تحذير BLKLOOPINIT.
- غير مستخدم - regexp REGEXP
نادرا ما تكون هناك حاجة. تحديد regexp بسيط بـ * و؟ أنه إذا تطابق اسم الإشارة
سوف يقمع التحذير UNUSED. افتراضات على "* غير مستخدم *". تعيينه على تعطيل
مطابقة.
-V يعرض الإصدار المطول ، بما في ذلك معلومات التكوين المترجمة إلى
المحقق. (على غرار perl -V.)
-v اسم الملف
اقرأ اسم الملف كمكتبة فيريلوج. يمكن استخدام أي وحدات في الملف
حل عمليات إنشاء الخلايا في وحدة المستوى الأعلى ، وإلا تم تجاهلها. ملاحظة- v إلى حد ما
قياسي عبر أدوات Verilog.
+ فيريلوج 1995 +تحويلة
+ فيريلوج 2001 +تحويلة
مرادفات لـ "+ 1364-1995ext +"تحويلة و "+ 1364-2001ext +"تحويلة على التوالي
الجدار شاحن
تمكين جميع التحذيرات ، بما في ذلك تحذيرات نمط التعليمات البرمجية التي يتم تعطيلها عادةً بواسطة
افتراضي.
-خطأ-الرسالة
تحويل رسالة التحذير المحددة إلى رسالة خطأ. هذا بشكل عام
تثني المستخدمين عن انتهاك القواعد المهمة على مستوى الموقع ، على سبيل المثال
"-خطأ- NOUNOPTFLAT".
-مستقبل-الرسالة
نادرا ما تكون هناك حاجة. قم بإلغاء تعليقات Verilator غير المعروفة أو رسائل التحذير مع المعطى
رمز الرسالة. يستخدم هذا للسماح للكود المكتوب باستخدام براغماس لإصدار لاحق من
أداة التحقق ليتم تشغيلها باستخدام إصدار أقدم ؛ إضافة -Wfuture- وسيطات لكل رمز رسالة
أو علق على أن الإصدار الجديد لا يدعمه الإصدار الأقدم.
-لا-الرسالة
تعطيل رسالة التحذير المحددة. سيؤدي هذا إلى تجاوز أي توجيهات lint_on في
المصدر ، أي أن التحذير لن يُطبع بعد.
-لا-لينت
قم بتعطيل كافة رسائل التحذير المتعلقة بالنُسالة وجميع تحذيرات النمط. هذا يعادل
إلى "-Wno-ALWCOMBORDER -Wno-CASEINCOMPLETE -Wno-CASEOVERLAP -Wno-CASEX -Wno-CASEWITHX
-Wno-CMPCONST -Wno-ENDLABEL -Wno-ضمني -Wno-LITENDIAN -Wno-PINCONNECTEMPTY
-Wno-PINMISSING -Wno-SYNCASYNCNET -Wno-UNDRIVEN -Wno-UNSIGNED -Wno-UNUSED -Wno-WIDTH "
بالإضافة إلى القائمة المعروضة لنمط Wno.
يوصى بشدة بتنظيف الكود الخاص بك بدلاً من استخدام هذا الخيار ، فهو كذلك
الغرض منه هو استخدامه فقط عند تشغيل حالات اختبار الشفرة المستلمة من أطراف ثالثة.
-لا نمط
قم بتعطيل كافة رسائل التحذير المتعلقة بنمط الكود (لاحظ افتراضيًا أنها موجودة بالفعل
عاجز). هذا يعادل "-Wno-DECLFILENAME -Wno-DEFPARAM -Wno-INCABSPATH
-Wno-PINCONNECTEMPTY -Wno-PINNOCONNECT -Wno-SYNCASYNCNET -Wno-UNDRIVEN -Wno-UNUSED
-لا-فارهيدن ".
-لا-مميتة
عند اكتشاف تحذيرات ، اطبعها ، لكن لا تخرج من جهاز المحاكاة.
وجود رسائل تحذير في البنيات أمر مهمل. يوصى بشدة بالتنظيف
التعليمات البرمجية الخاصة بك ، استخدم lint_off المضمنة ، أو استخدم -Wno -... العلامات بدلاً من استخدام هذا الخيار.
-حذر-الرسالة
لتمكين رسالة التحذير المحددة.
-حذر-لينت
تمكين جميع رسائل التحذير المتعلقة بالنُسالة (لاحظ افتراضيًا أنها ممكّنة بالفعل) ،
لكن لا تؤثر على رسائل النمط. هذا يعادل "تحذير- ALWCOMBORDER
- تحذير - CASEINCOMPLETE - تحذير - CASEOVERLAP - تحذير - CASEX - تحذير - CASEWITHX - تحذير - CMPCONST
-WWWWN-ENDLABEL -WWWN-IMPLICIT -WWWN-LITENDIAN -WWWWN-PINMISSING -WWWN-REALCVT
- تحذير - غير موقّع - تحذير - عرض ".
-نبه على غرار
قم بتمكين جميع رسائل التحذير المتعلقة بنمط التعليمات البرمجية. هذا يعادل "-Wwarn
ASSIGNDLY - تحذير - DECLFILENAME - تحذير - DEFPARAM - تحذير - INCABSPATH - تحذير - PINNOCONNECT
- تحذير - SYNCASYNCNET - تحذير - UNDRIVEN - تحذير - غير مستخدم - Wwarn-VARHIDDEN ".
--x- تعيين 0
--x- تعيين 1
--x- تعيين سريع (افتراضي)
--x- تعيين فريد
يتحكم في قيمة الحالتين التي يتم استبدالها عند مواجهة مهمة إلى X.
--x-assign = fast ، الافتراضي ، يحول كل Xs إلى الأفضل للأداء.
--x-assign = 0 يحول كل Xs إلى 0s ، وهو سريع أيضًا. --x-assign = 1 يحول كل Xs إلى
1s ، يكون هذا تقريبًا بسرعة 0 ، ولكن من المرجح أن تجد أخطاء إعادة التعيين عالية النشاط
سيطلق المنطق. --x-assign = الفريد سوف يستدعي دالة لتحديد القيمة ، هذا
يسمح بالتوزيع العشوائي لجميع Xs للعثور على أخطاء إعادة الضبط وهو الأبطأ والأكثر أمانًا
البحث عن إعادة تعيين الأخطاء في التعليمات البرمجية.
إذا كنت تستخدم --x-assign فريدًا ، فقد ترغب في زرع مولد الأرقام العشوائي مثل
أن كل عملية انحدار تحصل على تسلسل عشوائي مختلف. استخدم ملفات النظام
srand48 () أو لنظام التشغيل Windows srand () وظيفة للقيام بذلك. قد ترغب أيضًا في ذلك
اطبع أي بذور تم تحديدها ، وقم بطباعة التعليمات البرمجية لتمكين إعادة التشغيل باستخدام نفس البذور حتى تتمكن من ذلك
استنساخ البق.
الملاحظات. ينطبق هذا الخيار فقط على المتغيرات التي تم تعيينها صراحةً إلى X في ملف
كود مصدر فيريلوج. يتم تعيين القيم الأولية للساعات على 0 ما لم يتم ضبط --x-initial-edge
محدد. يتم تعيين القيم الأولية لجميع متغيرات الدولة الأخرى كما لو
تم تحديد --x- تعيين فريد.
--x الحافة الأولية
تمكن من محاكاة المحاكيات التي تحركها الأحداث والتي تؤدي بشكل عام إلى إطلاق حافة على a
الانتقال من X إلى 1 ("posedge") أو X إلى 0 ("negedge"). وبالتالي فإن الكود التالي ،
حيث يكون "rst_n" غير مهيأ ، فسيؤدي إلى تعيين "res_n" على "1'b1" عند تعيين "rst_n" لأول مرة
إلى الصفر:
reg res_n = 1'b0 ؛
تبدأ دائمًا @ (negedge rst_n)
إذا (rst_n == 1'b0) تبدأ
res_n <= 1'b1 ؛
النهاية
النهاية
في Verilator ، بشكل افتراضي ، يتم إعطاء الساعات غير المهيأة قيمة صفر ، لذلك ما سبق
لن يتم تشغيل الكتلة "دائمًا".
على الرغم من أنها ليست ممارسة جيدة ، إلا أن هناك بعض التصميمات التي تعتمد على XX 0 لتشغيل ملف
"Negedge" ، خاصة في إعادة تعيين التسلسلات. استخدام --x-initial-edge مع Verilator will
تكرار هذا السلوك. سيضمن أيضًا أن XX 1 يطلق "posedge".
الملاحظات. أبلغ بعض المستخدمين أن استخدام هذا الخيار يمكن أن يؤثر على التقارب ، وذاك
قد يكون من الضروري استخدام --converge-limit لزيادة عدد التقارب
التكرارات. قد يكون هذا مؤشرا آخر على مشاكل التصميم النموذجي
ينبغي معالجتها.
-y دير
أضف الدليل إلى قائمة الدلائل التي يجب البحث عنها لتضمين الملفات
أو المكتبات. الأعلام الثلاثة -y و + incdir و -I لها تأثير مماثل ؛ + incdir و + y
معياري إلى حد ما عبر أدوات Verilog بينما -I هو اسم مستعار لتوافق دول مجلس التعاون الخليجي.
يقوم Verilator بالتعيين الافتراضي إلى الدليل الحالي ("-y.") وأي دليل محدد --Mdir ، على الرغم من ذلك
يتم استخدام هذه المسارات الافتراضية بعد أي أدلة محددة من قبل المستخدم. هذا يسمح "-y
يتم استخدام "$ (pwd)" 'إذا كانت أسماء الملفات المطلقة مطلوبة لرسائل الخطأ بدلاً من
أسماء الملفات النسبية.
مثال C + + إعدام
سنقوم بترجمة هذا المثال إلى C ++.
mkdir test_our
اختبار القرص المضغوط_our
قطة < لدينا
وحدة لدينا ؛
الأولي start $ display ("Hello World") ؛ $ النهاية ؛ نهاية
endmodule
EOF
قطة < sim_main.cpp
# تضمين "Vour.h"
# تضمين "verilated.h"
int main (int argc، char ** argv، char ** env) {
Verilated :: commandArgs (argc، argv) ؛
Vour * top = جديد Vour ؛
while (! Verilated :: gotFinish ()) {top-> Eval ()؛ }
حذف الأعلى
خروج(0)
}
EOF
إذا قمت بتثبيت Verilator من المصادر ، أو كرة القطران ، ولكن ليس كجزء من التشغيل الخاص بك
النظام (مثل RPM) ، تحتاج أولاً إلى الإشارة إلى المجموعة:
تصدير VERILATOR_ROOT = / path / to / where / verilator / was / been install
تصدير PATH = $ VERILATOR_ROOT / bin: $ PATH
الآن نقوم بتشغيل Verilator على مثالنا الصغير.
أداة التحقق - جدار --cc our.v - exe sim_main.cpp
يمكننا رؤية الكود المصدري تحت دليل "obj_dir". راجع قسم FILES أدناه للحصول على
أوصاف بعض الملفات التي تم إنشاؤها.
ليرة سورية -l obj_dir
يمكننا بعد ذلك تجميعها
القرص المضغوط obj_dir
Make -j -f Vour.mk Vour
(قام Verilator بتضمين قاعدة ترجمة وقاعدة ارتباط افتراضية ، نظرًا لأننا استخدمنا - exe ومررنا ملف
ملف .cpp على سطر أوامر Verilator. يمكنك أيضًا كتابة قواعد الترجمة الخاصة بك ، مثل
سنعرض في قسم SYSTEMC.)
والآن نقوم بتشغيله
مؤتمر نزع السلاح ..
obj_dir / فور
ونحصل على الناتج
مرحبا يا عالم
- our.v: 2: Verilog $ finish
حقًا ، من الأفضل كتابة ملف Makefile للقيام بكل هذا من أجلك. ثم ، عندما يكون لديك
تغييرات المصدر سيتم تشغيل كل هذه الخطوات تلقائيًا. راجع دليل test_c بتنسيق
التوزيع على سبيل المثال.
مثال نظام إعدام
هذا مثال مشابه لما ورد أعلاه ، ولكن باستخدام SystemC.
اختبار mkdir_our_sc
القرص المضغوط test_our_sc
قطة < لدينا
وحدة لدينا (clk) ؛
إدخال clk ؛ // الساعة مطلوبة للحصول على التنشيط الأولي
دائما @ (posedge clk)
start $ display ("Hello World")؛ $ النهاية ؛ نهاية
endmodule
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 (أعلى ، فور) ؛
أعلى-> clk (clk) ؛ // SP_PIN (أعلى ، clk ، clk) ؛
while (! Verilated :: gotFinish ()) {sc_start (1، SC_NS) ؛ }
حذف الأعلى
خروج(0)
}
EOF
إذا قمت بتثبيت Verilator من المصادر ، أو كرة القطران ، ولكن ليس كجزء من التشغيل الخاص بك
النظام (مثل RPM) ، تحتاج أولاً إلى الإشارة إلى المجموعة:
تصدير VERILATOR_ROOT = / path / to / where / verilator / was / been install
تصدير PATH = $ VERILATOR_ROOT / bin: $ PATH
الآن نقوم بتشغيل Verilator على مثالنا الصغير.
أداة التحقق - جدار --sc our.v
يمكننا بعد ذلك تجميعها
Make -j -f Vour.mk Vour__ALL.a
جعل -j -f Vour.mk ../sc_main.o verilated.o
والربط مع SystemC. لاحظ أن مسارك إلى المكتبات قد يختلف ، اعتمادًا على ملف
نظام التشغيل.
تصدير SYSTEMC_LIBDIR = / path / to / where / libsystemc.a / موجود
تصدير 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 فور -نظام ج
والآن نقوم بتشغيله
مؤتمر نزع السلاح ..
obj_dir / فور
ونحصل على نفس الناتج مثل مثال C ++:
مرحبا يا عالم
- our.v: 2: Verilog $ finish
حقًا ، من الأفضل لك استخدام Makefile للقيام بكل هذا من أجلك. ثم ، عندما مصدرك
التغييرات سيتم تشغيل كل هذه الخطوات تلقائيًا. راجع دليل test_sc في ملف
التوزيع على سبيل المثال.
المرجعية & تهيئة
للحصول على أفضل أداء ، قم بتشغيل Verilator باستخدام العلامات "-O3 --x-assign = fast --noassert". ال
-تتطلب علامة O3 أوقات ترجمة أطول ، وقد يؤدي --x-assign = fast إلى زيادة مخاطر
إعادة ضبط الأخطاء في التجارة من أجل الأداء ؛ انظر الوثائق أعلاه لهذه العلامات.
يمكن أن تؤدي التغييرات الطفيفة في كود Verilog أيضًا إلى تحقيق مكاسب كبيرة. لا ينبغي أن يكون لديك أي UNOPTFLAT
تحذيرات من Verilator. يمكن أن يؤدي إصلاح هذه التحذيرات إلى تحسينات كبيرة ؛ مستخدم واحد
إصلاح تحذير UNOPTFLAT عن طريق إجراء تغيير بسيط على مزلاج الساعة المستخدم للبوابة
الساعات وتحسن الأداء بنسبة 60٪.
علاوة على ذلك ، يعتمد أداء نموذج Verilated في الغالب على مترجم 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" مفيدًا ، لكن دول مجلس التعاون الخليجي
قد تكون أوقات الترجمة مفرطة تحت O3 حتى في التصميمات متوسطة الحجم. بدلا من ذلك ، بعض
تشير التصميمات الأكبر إلى أداء أفضل باستخدام "-Os".
لسوء الحظ ، يمكن أن يؤدي استخدام المحسن مع ملفات SystemC إلى أخذ تجميعات
عدة دقائق. (تحتوي مكتبات SystemC على العديد من الوظائف المضمنة الصغيرة التي تدفع ملف
صواميل المترجم.)
للحصول على أفضل النتائج ، استخدم GCC 3.3 أو أحدث. يوجد في مجلس التعاون الخليجي 3.2 وما قبله أخطاء في التحسين
اكتشاف التعرج للمؤشر ، والذي يمكن أن يؤدي إلى خسائر أداء مضاعفة.
إذا كنت ستجري العديد من عمليات المحاكاة على تجميع واحد ، فابحث عن التعليقات المدفوعة
التحويل البرمجي. مع مجلس التعاون الخليجي ، باستخدام -fprofile-arcs ، ثم -fbranch-الاحتمالات ستنتج
15٪ أخرى أو نحو ذلك.
يدعم المترجمون الحديثون أيضًا تحسين وقت الارتباط (LTO) ، والذي يمكن أن يساعد بشكل خاص إذا كان
قمت بربطها في رمز DPI. لتمكين LTO على GCC ، مرر "-flto" في كل من التجميع والارتباط.
ملاحظة قد يتسبب LTO في أوقات ترجمة مفرطة على التصميمات الكبيرة.
إذا كنت تستخدم ملفات makefiles الخاصة بك ، فقد ترغب في تجميع رمز التحقق باستخدام
-DVL_INLINE_OPT = مضمنة. هذا سوف مضمنة وظائف ، ولكن هذا يتطلب أن جميع cpp
يتم تجميع الملفات في تشغيل مترجم واحد.
يمكنك الكشف عن المزيد من إمكانيات الضبط من خلال تحديد سمات رمز Verilog. يستخدم
Verilator's - Profile-cfuncs ، ثم GCC's -g -pg. يمكنك بعد ذلك تشغيل إما oprofile أو
gprof لمعرفة أين يقضي الوقت في كود C ++. قم بتشغيل إخراج gprof من خلال
verilator_profcfunc وسوف يخبرك ما هي أرقام خطوط Verilog التي معظم ملفات
الوقت ينفق.
عند الانتهاء ، يرجى إعلام المؤلف بالنتائج. أحب الاحتفاظ بعلامات تبويب حول كيفية استخدام Verilator
يقارن ، وقد يكون قادرًا على اقتراح تحسينات إضافية.
استخدم أداة التحقق عبر الإنترنت باستخدام خدمات onworks.net