دوره آموزشی Vivado 1A
Vivado Design Suit Part1A (R05)
پیش نیازها:
امکانات آزمایشگاهی:
مواردی که در اختیار دانشجویان قرار داده میشود:
نکته: امکان تغییر تعداد و عنوان آزمایشها وجود دارد.
روش ارزیابی:
نمرهای که در مدرک دانشجو قید میشود، براساس ارزیابیهایی است که در طول دوره انجام میشود. این ارزیابیها عبارتند از:
به دلیل زیاد بودن مطالب، عدم حضور دانشجو و عدم مطالعه باعث فاصله گرفتن از ساختار ورکشاپ و فراگرفتن مطالب خواهد شد. به همین دلیل حضور دانشجو و عدم غیبت در ارزیابی تأثیر مستقیمی دارد.
به صورت تصادفی در بعضی از جلسهها آزمونهای کوتاه یک تا 5 سؤالی برای ارزیابی و همچنین تکرار و تمرین مطالب ارائه شده، از دانشجویان گرفته میشود.
انجام دادن کامل و صحیح آزمایشها و گرفتن نتیجه مطلوب نیز در ارزیابی تأثیر دارد. هدف انجام دادن تمام آزمایشها نیست و در صورت نیاز و کمبود زمان ممکن است یک یا چند آزمایش به صورت کار در منزل ارائه شود. هدف تمرین و تکرار مطالب آموزش داده شده، تلسط بر آنها و یادگیری نکتههای جدید میباشد. بنابراین کیفیت انجام آزمایشها از اهمیت بالایی برخوردار است.
نسخه نرمافزار مورد استفاده:
Vivado Design Suit 2017.3
مکان دوره:
شرکت فنی و مهندسی محققان یاسین
سرفصل مطالب:
Latin:
فارسی:
توضیح تفصیلی مطالب ارائه شده در ورکشاپ:
1) مطالبی که در بخش Xilinx ISE Design Suit Overview بیان میشود.
در این بخش خلاصهای از قابلیتهای نرمافزار ISE بیان میشود.
2) مطالبی که در بخش Vivado Design Suit بیان میشود.
در این بخش، ضمن معرفی نرم افزار Vivado، دلایل استفاده از آن بیان میشود. ضمن معرفی طرحواره کلی طراحی با استفاده از نرمافزار Vivado، انواع مدهای استفاده آن بیان خواهد شد.
3) مطالبی که در بخش Terminology and Concepts بیان میشود.
در این بخش مفاهیمی نظیر RTL، Netlist، گیت منطقی، سنتز در سطح منتطقی، سنتز رفتاری یا سنتز در سطح بالا، جانمایی و مسیریابی بین عناصر بیان خواهد شد.
4) مطالبی که در بخش Design Entry (Sources, IP Cores, Constraints,…) بیان میشود.
در این بخش ابتدا بخشهای مختلف نرمافزار Vivado بیان خواهد شد، پس از آن روش ایجاد پروژه، کار با پنجرههای مختلف، فرایند ایجاد و ویرایش قیدها زمانی و مکانی در سطح مقدماتی، اضافه کردن فایلها و منابع دیگر به پروژه و مدیریت آنها، روش ایجاد IPها، اضافه کردن آنها به پروژه و مدیرت آنها، کار با منابع DSP، روش اضافه کردن و سنتز آنها در نرمافزار Vivado، مفهوم طراحی OUT-Of-Context، مفاهیم مربوط به قیدهای زمانی و مکانی در IPها بیان خواهد شد.
5) مطالبی که در بخش RTL Elaboration بیان میشود.
در این بخش مفهوم بررسی پروژه در سطح RTL، تنظیمات مربوط به آن بیان شده و سپس روند بررسی پروژه در سطح RTL بیان خواهد شد. پس از انوع قانونهای بررسی طراحی (DRCs) و روش آنالیز آنها بیان خواهد شد.
6) مطالبی که در بخش Simulation بیان میشود.
در این بخش روند کلی شبیهسازی بیان شده و انوع کتابخانهها، دستورها و منابعی که در شبیهسازی استفاده میشوند، معرفی خواهند شد. پس از آن روند تعریف ستهای شبیهسازی و تنظیمات مربوط به آنها بیان خواهد شد. پس از آن شبیهساز نرمافزار Vivado معرفی خواهد شد و روند شبیهسازی در این نرمافزار، کار با بخشهای مختلف شبیهساز، خطایابی طراحی و موارد خاص در شبیهسازی بیان خواهند شد.
7) مطالبی که در بخش TCL Scripting and XDCبیان میشود.
در این بخش مفاهیم SDC، XDC و TCL معرفی شده و تفاوتهای آنها، روش ایجاد و ویرایش آنها بیان خواهند شد. سپس مفهوم شیء که در هر سه مورد استفاده میشود، معرفی خواهد شد. پس از آن انوع دستورات TCL و جزئیات بیشتری از TCL Store بیان خواهد شد.
ح) مطالبی که در بخش IO & Clock Planning & Analyzing بیان میشود.
در این بخش ابزارهای موجود در نرمافزار Vivado برای بررسی ورودی-خروجیها بیان خواهد شد و پس از آن انوع قیدهای مربوط به تراشه و روش تغییر آنها بیان خواهد شد. در ادامه روش استفاده از ابزارهای موجود برای طراحی پورتهای ورودی-خروجی، اتصال حافظه خارجی، طراحی کلاک و آنالیز نویز سوئیچنگ بیان میشود. در انتها روش استخراج قیدهای طراحی شده از ابزارهای موجود و استفاده از آنها در پروژه بیان خواهد شد.
8) مطالبی که در بخش Logic Synthesis & Simulation بیان میشود.
در این بخش ابتدا تمامی ابزارهای موجود برای سنتز پروژه بیان شده و سپس انوع تنظیمات مربوط به سنتز، روشن تعریف استراتژی، اعمال تنظیمات مربوط به تراشه در این مرحله و در نهایت سنتز پروژه بیان خواهد شد. پس از آن سنتز به صورت Out-Of_Context بیان میشود. روش اضافه کردن Netlist به پروژه در این بخش بیان شده است. ضمن بیان آنالیز نتایج سنتز، نوع دستورات مربوط به سنتز، Attributeهای سنتز و شبیهسازی پروژه بعد از سنتز نیز در انتها بیان خواهد شد.
9) مطالبی که در بخش Implementation & Simulation بیان میشود.
مشابه با بخش سنتز، در این بخش نیز ابتدا تمام ابزارهای موجود برای پیادهسازی یک پروژه بیان میشودند، روش تعیین استراتژی، بهینهسازی پروژه از لحاظ فیزیکی، مسیریابی بین المانها، پیادهسازی به صورت Retrofitting، Repeating و Incremental، انوع تنظیمات دیگر پیادهسازی بیان میشود. سپس انواع روشهای ویرایش Netlist بعد از پیادهسازی و کاربردهای آنها بیان خواهد شد. از مهمترین کاربردهای ویرایش Netlist بعد از پیادهسازی میتوان به تغییر کمی در پروژه بعد از پیادهسازی و استفاده از آن در دیباگ کردن پروژه اشاره کرد. در نهایت روش ذخیره فایل DCP و شبیهسازی بعد از پیادهسازی پروژه بیان خواهد شد.
10) مطالبی که در بخش Programming and Debugging بیان میشود.
در این بخش ابتدا اصطلاحات مربوط به Debug بیان میشوند، سپس انوع تنظیمات مربوط به Bitstream و روش ایجاد آن، بخش مدیریت سختافزار در نرمافزار Vivado، برنامهریزی FPGA و حافظه فلش، ویژگیهای پیشرفته مربوط به برنامهریزی، خطایابی طراحی با استفاده از ابزارهای موجود بعد از برنامهریزی، جزئیات مربوط به IPهای ILA و VIO و در نهایت محیطهای دیباگ دیگر نظیر MIG و IBERT معرفی شده و زبان برنامهنویسی ماشین حالت برای خطایابی پروژه بیان خواهد شد. از مهمترین مطالبی که در این بخش بیان میشود میتوان به ویرایش و ایجاد IPهای دیباگ بعد از سنتز و پیادهسازی اشاره کرد که از اهمیت بسیار بالایی خصوصا در پروژههای بزرگ دارند.
آزمایشها:
این ورکشاپ شامل 15 آزمایش میباشد که سعی شده است در آنها بسیاری از مباحث بیان شده در ورکشاپ پوشش داده شوند.
Lab_1: TCL Scripting1 (Concept of Level)
Lab_2: TCL scripting2 (An example of complete script)
Lab_3: Simulation1 (Non-Project Mode)
Lab_4: Simulation2 (Project Mode + Debugging Design)
Lab_5: Project1 (Non-Project mode)
Lab_6: Project2 (Project Mode: Synthesize, Implementation, …)
Lab_7: I/O Planning1 (Pre-Synthesize)
Lab_8: I/O Planning2 (Post-Synthesize)
Lab_9: Implementation1 (Runs and Strategies)
Lab_10: Implementation2 (Incremental Compile)
Lab_11: Debug1 (Post-Synthesis Netlist Insertion)
Lab_12: Debug2: (HDL Insertion: ILA)
Lab_13: Debug3 (VIO Core)
Lab_14: Debug4 (Debugging in the Hardware with YE-E15Z Board)
Lab_15: Debug5 (Post-Implementation Netlist and Debug Core modification)
جزئیات مربوط به آزمایشها:
آزمایش 1: TCL Scripting1 (Concept of Level)
در این آزمایش، دانشجو با مفاهیم اولیه اسکریپت نویسی آشنان میشود. یک اسکریپت بسیار ساده نوشته شده و تست میشود. در حین انجام آزمایش دانشجو با مواردی نظیر روش اضافه کردن اسکریپت به نرمافزار Vivado و اجرای آن آشنا میشود. یکی از مفاهیم اولیهای که در این آزمایش مورد بحث است، مفهوم Level میباشد.
آزمایش 2: TCL Scripting1 (Concept of Level)
در این آزمایش Template کامل یک اسکریپت در اختیار دانشجو قرار داده میشود که توضیحات آن در ورکشاپ بیان شده است و با توجه به آزمایش شماره 1، مسئول آزمایشگاه توضیحات تکمیلی را نیز ارائه میدهد. هدف از این آزمایش استفاده از Template برای نوشتن یک اسکریپ کامل است که تمام مسائل مربوط به اسکریپت در آن رعایت شده باشد. یک اسکریپت کامل باید بتواند ورودیهای به صورت لیست را تحلیل کند، راهنما داشته باشد، نسخه داشته باشد، در صورتی که یک آرگومان غیرمرتبط در وردی دریافت کند، باید خطا دهد و .... در این آزمایش تمام این موارد در نظر گرفته شده است.
آزمایش 3: Simulation1 (Non-Project Mode)
در این آزمایش شبیهسازی به صورت Non Project Mode و با استفاده از Tcl Shell انجام خواهد شد. برای شبیهسازی در محیط Tcl Shell، به دو صورت میتوان عمل کرد. روش اول اینکه با استفاده از دستور xelab فایلهای پروژه را به یکدیگر لینک کرده و سپس با استفاده از محیط shell آن را شبیهسازی کرد. برای استفاده از دستور xelab نیاز به فایل .prj دارید که توضیحات لازم در این باره در ورکشاپ داده شده است. روش دوم شبیهسازی این است که با استفاده از دستور xvldl و دستور xvlog فایلهای طراحی را در یک کتابخانه فراخوانی کرد و سپس شبیهسازی را انجام داد. در آزمایش هر دو روش شبیهسازی انجام خواهد شد و هدف آن آشنایی دانشجو با محیط Tcl shell میباشد.
آزمایش 4: Simulation2 (Project Mode + Debugging Design)
در این آزمایش شبیهسازی یک پروژه در حالت Project Mode انجام میشود و هدف آن آشنایی کامل دانشجو با محیط شبیهسازی در نرمافزار Vivado و قابلیتهای مختلف آن که در ورکشاپ توضیح داده شده میباشد. این آزمایش شامل 25 گام میباشد که اکثر مباحث شبیهسازی در آن لحاظ شده است. از مواردی که در این آزمایش در نظر گرفته شده، استفاده از قابلیت دیباگ در محیط شبیهسازی برای یافتن و رفع خطاهای احتمالی در پروژه است.
آزماش 5: Project1 (Non-Project mode)
در این آزمایش یک پروژه به صورت Non Project mode تا مرحله پیادهسازی و تولید bitfile با استفاده از محیط Shell سنتز میشود. از اهداف اصلی این آزمایش میتوان به آشنایی با مراحل ایجاد، سنتز و پیادهسازی پروژه در محیط Shell و همچنین ذخیره نتایج خروجی نظیر فایل DCP و آنالیز آن به صورت مستقل اشاره کرد.
آزمایش 6: Project2 (Project Mode: Synthesize, Implementation, …)
در این آزمایش یک پروژه با استفاده از نرمافزار Vivado در حالت Project Mode انجام میشود تا دانشجویان مطالب توضیح داده شده در ورکشاپ را مورد بررسی قرار دهند. از اهداف اصلی این آزمایش میتوان به آشنایی کامل با روند ایجاد پروژه و مدیریت آن، Elaborate، سنتز و پیادهسازی پروژه، ایجاد Runهای مختلف، روش آنالیز و گزارش گرفتن از پروژه، ذخیره کردن فایل DCP آنالیز آن به صورت مجزا اشاره کرد.
آزمایش 7: I/O Planning1 (Pre-Synthesize)
در این آزمایش مفهوم I/O Planning قبل از سنتز و بدون فایل HDL بیان میشود. در واقع I/O Planning در مرحله طراحی مورد استفاده قرار میگیرد و در انتهای آزمایش پروژه I/O Planning تبدیل به پروژه RTL میشود. آشنایی با قابلیتهای مهم I/O Planning در مرحله طراحی و استخراج فایلهای خروجی برای تبادل با طراح سیستم و PCB از اهداف اصلی این آزمایش میباشد.
آزمایش 8: I/O Planning2 (Post-Synthesize)
در این آزمایش مباحث مربوط به I/O planning بعد از ایجاد پروژه یعنی در حالتی که فایلهای HDL و XDC داریم مورد بررسی قرار میگیرد. طبق مطالب بیان شده در ورکشاپ، بعضی از قابلیتهای I/O Planning در حالتی که RTL داریم با حالتی که روی پروژه I/O Planning کار میکنیم متفاوت هستند. بسیاری از قابلیتهای I/O Planning نیز در هر دو حالت مشابه هستند. هدف از انجام این آزمایش، استفاده از قابلیتهای I/O Planning بعد از مرحله طراحی و در حین توسعه پروژه HDL است. برای انجام این آزمایش یک پروژه RTL که از قبل تولید شده، استفاده میشود.
آزمایش 9: Implementation1 (Runs and Strategies)
هدف از این آزمایش بررسی تأثیر استراتژیهای مختلف هم در زمان پیادهسازی و هم در نتیجه پیادهسازی است. در مورد انوع استراتژیها و زمان استفاده از آنها به تفصیل در ورکشاپ بحث شده است. در این آزمایش یک پروژه در اختیار دانشجویان قرار داده شده است که باید Runهای مختلف Implementation را با استراتژیهای مختلف ایجاد کرده و نتایج پیادهسازی در حالتهای مختلف بررسی کنند.
آزمایش 10: Implementation2 (Incremental Compile)
انواع روشهای پیادهسازی نظیر Retrofitting، Repeating و Incremental در ورکشاپ به تفصیل مورد بحث قرار گرفت. یکی از مهمترین و پرکاربردترین این روشها، روش Incremental Compile است. در این آزمایش از روش Incremental Compile برای پیادهسازی استفاده میشود تا دانشجویان با استفاده از این روش، کاربردهای آن و آنالیز نتایج آن آشنا شوند.
آزمایش 11: Debug1 (Post-Synthesis Netlist Insertion)
یکی از مهمترین قابلیتهای نرمافزار Vivado، ویرایش و اضافه کردن IPهای دیباگ بعد از سنتز پروژه است. در واقع در این روش، Netlist حاصل از سنتز ویرایش شده و بدون تغییر کد HDL، تغییرات در Netlist اعمال میشود. این روش مزایای بسیار زیادی دارد که از جمله میتوان به افزایش سرعت اضافه و ویرایش کردن IPهای دیباگ بدون تغییر کد HDL و ویرایش و ایجاد IPهای دیباگ بعد از سنتز اشاره کرد. هدف از انجام این آزمایش، آشنایی کامل دانشجو با جزئیات مربوط به استفاده از این روش میباشد. پروژهای که در این آزمایش در نظر گرفته شده است، روی سختافزار نیز تست خواهد شد.
آزمایش 12: Debug2: (HDL Insertion: ILA)
در آزمایش قبلی از روش Netlist برای اضافه کردن ILA به پروژه استفاده شد. یکی از روشهای اولیه استفاده از ابزارهای دیباگ، استفاده مستقیم از IPهای مربوط به دیباگ نظیر ILA و VIO در کد HDL است. در این آزمایش یک پروژه که در آن یک IP ILA به صورت مستقیم در پروژه استفاده شده است، مورد بررسی قرار میگیرد. پروژهای که برای این آزمایش در نظر گرفته شده، روی سختافزار نیز تست خواهد شد. در این آزمایش دانشجو میتواند روش فعالسازی قابلیتهای پیشرفته مربوط به ILA نظیر Advanced Control و Capture Control که در ورکشاپ در مورد آنها صحبت شد، بررسی کند.
آزمایش 13: Debug3 (VIO Core)
این آزمایش در واقع تکمیل آزمایش قبل است و در آن از یک VIO برای کارهای کنترلی در پروژه استفاده میشود. دانشجو ضمن ایجاد یک IP VIO و تکمیل پروژه، آن را سنتز و پیادهسازی کرده و در نهایت bitfile خروجی را طبق طراحی انجام شده در سخت افزار تست خواهد کرد.
آزمایش 14: Debug4 (Debugging in the Hardware with YE-E15Z Board)
در این آزمایش، bitfileهای تولید شده از آزمایشهای قبلی در سختافزار مورد تست قرار میگیرند و دانشجو ضمن کار با محیط دیباگ و آشنایی با Dashboard، پنجره Waveform، پنجره Trigger، پنجره Hardware و برنامهریزی و دیباگ سختافزار، میتواند تمام جزئیات پیشرفته مربوط به دیباگ نظیر پنجرهگذاری، Capture Control، Advanced Control و ... را که در ورکشاپ توضیح داده شده تست کند.
آزمایش 15: Debug5 (Post-Implementation Netlist and Debug Core modification)
یکی از قابلیتهای مهم Vivado امکان اصلاح Netlist بعد از مرحله Implementation است. کاربر میتواند با استفاده از این قابلیت تغییراتی در منطق پروژه ایجاد کرده و یا اینکه IPهای دیباگ را ویرایش و یا ایجاد کند. خصوصاً در FPGAهای بزرگ و همچنین در پروژههای بزرگ این قابلیت باعث کاهش قابل ملاحظهای در زمان سنتز و پیادهسازی پروژه میشود. در این آزمایش ابتدا یک پروژه پیادهسازی شده و سپس در Netlist خروجی حاصل از Implementation در دو پروژه جداگانه دو نوع تغییر ایجاد میشود. تغییر اول شامل اصلاح Netlist برای پیادهسازی یک تغییر در منطق پروژه است و تغییر دوم شامل اصلاح IP دیباگ است. سپس مراحل پیادهسازی، تولید Bitfile اصلاح شده بیان میشود. در نهایت با استفاده از بورد E15Z پروژه اصلی و پروژههای اصلاح شده روی سختافزار تست میشوند.