مقدمه
اگر چه زبانهای توصیف سخت افزار یا HDL همچنان وجه غالب برنامه نویسی و طراحی FPGA را به خود اختصاص میدهند، اما رویکرد سنتز سطح بالا یا HLS آرام آرام در حال تکمیل کردن مراحل تکامل و تثبیت جایگاه خودش است. زبانهای مرسوم و نام آشنای Verilog و VHDL حدود ۴۰ سال پیش در دهه ۸۰ میلادی ظهور کردند، جالب اینجاست هر دوی آنها در ابتدا برای شبیه سازی رفتار مدارات دیجیتال بکار گرفته شدند و نه برای پیاده سازی رفتار آنها. با این اوصاف تقریباً تمامی توسعه دهندگان در این حوزه همواره از این دو زبان و زبانهای مشابه برای طراحی در FPGA استفاده میکردند و البته همچنان استفاده میکنند. این روش طراحی برای سالهای متمادی تنها گزینه موجود برای طراحی بود تا اینکه متدهای جدید طراحی و پیاده سازی کم کم ظهور کردند. سنتز سطح بالا یکی از این متدهاست که به کمک آن در یک فرایند خودکار، رفتار مورد انتظار یک مدار در FPGA از روی کدهای C استنتاج میشود و سخت افزار متناسب با آن پیاده سازی میشود. در این نوشتار از پایگاه دانش هگزالینکس هدف ما روشن کردن چندین حقیقت ناگفته پیرامون این مفهوم است و قصد داریم برخی از روایات غیر واقعی و باورهای نادرست در مورد سنتز سطح بالا را از بین ببریم. همینطور امیدواریم در اثبات این حقیقت که چگونه سنتز سطح بالا هنگام طراحی یک سیستم با FPGA برای شما یک ارزش افزوده خلق میکند، موفق شویم.
باور شماره یک
فناوری سنتز سطح بالا نابالغ است.
در واقع عکس این موضوع صادق است و سنتز سطح بالا یک فناوری بالغ است. به عنوان مثال شرکت Mentor Graphics ، ابزار CatapultC خود را حدود ۱۶ سال پیش راه اندازی کرد.
اینکه چرا این باور تا این حد مورد پذیرش است، یک دلیل ساده دارد. در حقیقت نشانههای اولیه مفهوم سنتز سطح بالا در دهه ۹۰ میلادی زمانی که شرکت Synopsys کامپایلر رفتاری خودش را معرفی کرد، نمایان شد، ولی در آن زمان به اندازه کافی مورد توجه بازیگران اصلی صنعت تراشههای قابل پیکره بندی قرار نگرفت. این اقبال کم باعث شده است که رویکرد سنتز سطح بالا همچنان به عنوان یک فناوری نابالغ شناخته شود. اما بد نیست بدانید که تقریباً ۱۰ سال بعد از آن، چندین راه حل موفق مبتنی بر سنتز سطح بالا به شکل ویژه در اروپا و ژاپن و کمی بعدتر در ایالات متحده ظهور کرد، که همگی مورد استقبال قرار گرفتند. این ابزارهای تقریباً رایگان و نسبتاً با کیفیت به سنتز مدارات در سطح کدهای توصیف شده به زبان C و کدهای سطح رجیستر (RTL) کمک میکردند.
باور شماره دو
منحنی یادگیری سنتز سطح بالا طولانی است.
فراگیری هر ابزار جدیدی یک منحنی یادگیری دارد. اگر سالها است که با FPGA کار میکنید، پس کاملاً مسلط به مفاهیم طراحی RTL هستید، طبیعتاً یادگیری یک رویکرد جدید در طراحی مدتی طول میکشد، اما زمان آن با تعداد هفته اندازه گیری میشود و به چندین ماه برای یادگیری آن نیاز ندارید. کتابهای زیادی در مورد سنتز بالا يا HLS نوشته شده است، به علاوه آموزشهای آنلاین بسیار خوبی نیز وجود دارد که برخی از آنها در دانشگاههای برجسته جهان ارائه میشوند. علاوه بر این، ابزارها خودشان به صورت کاملاً مستند شده همراه با مجموعه کاملی از دستور العملهای طراحی ارائه میشوند، و نیازی به گفتن نیست که این مستندات ادامه آموزشهای آنلاین ارائه شده توسط خود سازندگان و توزیع کنندگان است. به عنوان مثال، Intel HLS با ۱۰ آموزش ارائه میشود و مجموعه کاملی از آموزشهای گام به گام برای Vivado HLS ارائه شده است. بعلاوه اینکه تعداد قابل توجهی ویدئوی آموزشی و مقاله رایگان در وبلاگ هگزالینکس در دسترس شما قرار دارد، که میتوانید از آنها بهره مند شوید.
باور شماره سه
طرحی که با ابزارهای سنتز بالا پیاده سازی میشود در مقایسه با خروجی سایر ابزارهای طراحی، کیفیت پایین تری دارد.
حقیقت این است با استفاده از سنتز سطح بالا شما به ابزار سنتزگر برای تولید یک طرح RTL اعتماد میکنید، و با این کار بهره وری کار خود را افزایش میدهید، چون در زمان کوتاه تری موفق به تولید مدارات RTL بیشتری میشوید. این حقیقت در رابطه با برنامه نویسی اسمبلی برای میکرو کنترلرها نیز صدق میکند. بدون شک شما همواره میتوانید هنگام کار با میکرو کنترلرها به کمک زبان اسمبلی یک برنامه کاملاً بهینه و مینیمال بنویسید، اما واقعیت این است که در حالت عادی معمولاً شما سراغ انتخاب این گزینه نمیروید مگر اینکه الزامات خاصی بر پروژه شما حاکم باشد. آیا اینطور نیست؟
هدف اصلی در استفاده از مفهومی به نام سنتز سطح بالا دستیابی به کارایی ۱۰ الی ۱۵ درصدی نسبت به بهینه ترین کدی است که با روشهای مرسوم طراحی RTL انجام میدادید. ابزارهای سنتز سطح بالا که اغلب توسط سازندگان تراشههای FPGA ارائه میشوند مشخصاً برای تراشههای تولیدی خودشان بهینه شدهاند. دلیل اصلی این مسأله این است که این سازندگان با توجه به دانشی که نسبت به ساختار درونی تراشههای تولیدیشان دارند، میتوانند به بهترین شکل از معماری و مسیرهای ارتباطی داخلی تراشه استفاده کنند.
ابزارهای سنتز سطح بالا غالباً نوعی از رویکرد جستجو در فضای طراحی را پشتیبانی میکنند که به شما اجازه میدهد با توجه به منابع و ویژگیهای تراشه هدف بهترین طرحی را که قادر به برآورده کردن الزامات مد نظر شما است، پیاده سازی کنید. بدون شک همانطور که گفته شد یک طراح RTL میتواند هر زمان که لازم باشد به طرحی که معماری کاملاً بهینه دارد، دست پیدا کند، اما استفاده از سنتز سطح بالا دسترسی به یک طرح بهینه شده برای تراشه انتخابی را در زمانی به مراتب کوتاه تر تضمین میکند.
باور شماره چهار
سنتز سطح بالا به اندازه کافی انعطاف پذیر و قابل یکپارچه سازی نیست.
اگر تصمیم دارید یک سیستم سخت افزاری مبتنی بر FPGA با استفاده از سنتز سطح بالا طراحی کنید، این بدان معنی نیست که اکنون شما الزاماً مجبور هستید از آن برای کل جریان طراحی استفاده کنید. سنتز سطح بالا تنها تکمیل کننده جریان طراحی سنتی در FPGA است. علاوه بر این، بهتر است از آن در بخشهایی از کار که نیاز به توسعه الگوریتمهای پیچیده دارید، استفاده کنید. تولید کنندگان اصلی تراشههای FPGA با هدف گیری دقیق بخشهای مختلف صنعت اقدام به ارائه کتابخانههای بزرگی از بلوکهای از پیش طراحی شده و IP های متنوع کردهاند که به شما برای پیاده سازی هر چه ساده تر الگوریتمها کمک میکنند. اکثر کتابخانهها و IP ها مستندات کاربری جامعی دارند، و به خوبی بروزرسانی میشوند.
باور شماره پنج
سنتز سطح بالا، ابزاری برای طراحی سخت افزار نیست و به مهارت های توسعه نرم افزار نیاز دارد.
این باور کاملاً اشتباه است، بر خلاف چیزی که به نظر میرسد طراحی با کمک سنتز سطح بالا برای یک مهندس نرم افزار نسبتاً دشوار است، زیرا استفاده از آن به تجربه کافی و عمیق طراحی سخت افزار نیاز دارد. دلیل وجود این تصور غلط این است که شما باید بتوانید در ++C/C کد بزنید. کد نویسی به این دو زبان برای اکثر مهندسان سخت افزار چندان دشوار نیست.
باور شماره شش
ابزارهای توسعه سنتز سطح بالا گران هستند.
این هم یک باور اشتباه دیگر است. بسیاری فکر میکنند تمامی محیطهای توسعه سخت افزاری که برای طراحی با سنتز سطح بالا در بازار وجود دارند در مقایسه با ابزارهای طراحی نرم افزاری که غالباً منبع باز میباشند، گران قیمت هستند. شاید برخی از گزینههای مورد نظر شما برای طراحی در این حوزه مثلاً Mentor Graphics CatapultC و یا Mathworks Matlab HDL Coder کمی گران قیمت باشند، اما بخش قابل توجهی از ابزارها و محیطهای توسعه سخت افزاری، به صورت رایگان یک ابزار سنتز سطح بالا در اختیار شما قرار میدهند. ابزار Vivado HLS که همراه با محیط توسعه Vivado توسط Xilinx عرضه شده است، یک نمونه از آنهاست. سالهای قبل این ابزار به عنوان بخشی از زنجیره ابزار طراحی سخت افزاری Vivado ارائه میشد و شما برای استفاده از آن نیاز به تهیه لایسنس برای محیط توسعه Vivado و نصب آن روی کامپیوترتان داشتید. اما طی سالهای اخیر اغلب پکیجهای آن به صورت رایگان و منبع باز و بدون هیچ هزینهای در اختیار همه قرار گرفته است.
باور شماره هفت
سنتز سطح بالا به رفع چالشهای موجود برای استفاده مجدد از طراحی کمکی نمیکند.
مجدداً باید شما را ناامید کنم، چون این باور هم نادرست است. برخلاف چیزی که جا افتاده است، سنتز سطح بالا به استفاده مجدد از طراحیها کمک میکند زیرا سورس کدها مستقل از فن آوری ساخت تراشه هستند، به این معنی که سورس کدها میتوانند با استفاده از پارامترهای مختلف (پراگما) به دفعات کامپایل شوند، و در عمل با جستجو در فضای طراحی، طرحی متناسب با تراشههای هدف مختلف پیاده سازی کنند.
به عنوان مثال، اگر شما یک تراشه FPGA ارزان قیمت و نسبتاً کند در اختیار داشته باشید، در این صورت ممکن است که برای دستیابی به اهداف عملکردی و کارایی مورد انتظارتان، نیاز به استفاده از قابلیتهای موازی سازی بیشتری در طراح داشته باشد. در عین حال، شرایط در طراحی بعدی شما ممکن است متفاوت باشد چون شما امکان استفاده از تراشه سریعتری را دارید و دست شما برای طراحی باز تر است و میتوانید از منابع سخت افزاری کمتری استفاده کنید. این شیوه حل مسأله در واقع فرایند کلی استفاده مجدد از طراحی را بهبود میبخشد.
باور شماره هشت
سنتز سطح بالا از طراحیهای پردازش سیگنال چند نرخی پشتیبانی نمیکند.
در سیستمهای مخابراتی و راداری به شکل گستردهای الزام به استفاده از ماژولهای چند نرخی وجود دارد، مثلاً برای افزایش یا کاهش نرخ نمونه برداری داده در سیستم نیاز به پیاده سازی ماژولهای چند نرخی داریم. تعداد زیادی مقاله و روش استاندارد در HLS برای طراحی سیستمها و ماژولهای چند نرخی وجود دارد، فیلترهای polyphase decimation و polyphase interpolation بهترین مثال برای آن است.
باور شماره نه
ابزارهای سنتز سطح بالا از اینترفیس مورد نیاز من پشتیبانی نمیکنند.
در عمل اینطور نیست، نگرانی در مورد نحوه دریافت دادههای ورودی و نحوه خروجی کردن نتایج از یک طرح کاملاً بی اساس است. در HLS، ابزار سنتز گر از یکسری تنظیمات پیکره بندی و یا پراگما استفاده میکند که به شما اجازه میدهند اینترفیسهای استانداردهای مورد نیازتان را مشخص کنید. با پشتیبانی از اینترفیسهای Memory MAP ، اینترفیسهای Stream و اینترفیسهای سیمی هندشیک دار، شما این امکان را دارید که هر نوع اینترفیسی که مورد نیاز است برای بلوک طراحی شده تنظیم کنید.
جمع بندی
سنتز سطح بالا را میتوان به عنوان یک ابزار کارآمد با بهره وری قابل قبول برای طراحی سخت افزار در نظر گرفت. در حالت کلی در سنتز سطح بالا از سورس فایلهای نوشته شده به زبان ++C/C برای تولید کدهای RTL استفاده میشود و تقریباً در اکثر موارد کدهای تولید شده توسط ابزارهای سنتز سطح بالا برای یک تراشه FPGA خاص بهینه سازی میشوند. رویکرد طراحی با استفاده از ابزارهای سنتز سطح بالا میتواند افزایش چشمگیری در بهره وری ایجاد کند. مراکز داده، ارتباطات بی سیم، پردازشهای بینایی ماشین، سیستمهای راداری و سایر سیستمهای نهفته میتوانند با کمک سنتز سطح بالا (HLS) به روشی کارآمدتر طراحی شوند.
همانند بسیاری از روشهای جدیدی که برای انجام یک کار قدیمی بکارگرفته میشود، تعدادی باور نادرست در مورد سنتز سطح بالا و سطح تکامل آن مطرح میشود که چندان منصافنه به نظر نمیرسند. در این نوشتار از پایگاه دانش هگزالینکس شما را با ۹ مورد از مهمترین باورهای شکل گرفته پیرامون HLS و چگونگی شکل گیری آنها آشنا کردیم.
منبع : promwad.com و electronicdesign.com