سنتز منطق کیست؟ توضیح بده.
در مهندسی کامپیوتر، سنتز منطق فرایندی است که طی آن مشخصات انتزاعی رفتار مدار مورد نظر، معمولاً در سطح انتقال ثبات (RTL)، از نظر دروازه‌های منطقی، به‌طور معمول توسط یک برنامه رایانه ای به نام "a synthesis tool"، به یک پیاده‌سازی طراحی تبدیل می‌شود. نمونه‌های متداول این فرایند شامل سنتز طراحی‌های مشخص شده در زبان‌های توصیف سخت‌افزار، از جمله وی‌اچ‌دی‌ال و Verilog است. برخی از ابزارهای سنتز برای دستگاه‌های منطقی قابل برنامه‌ریزی مانند PAL یا FPGA جریانهای بیت ایجاد می‌کنند، در حالی که برخی دیگر ایجاد ASIC را هدف قرار می‌دهند. سنتز منطق یکی از جنبه‌های اتوماسیون طراحی الکترونیکی است.تاریخچه سنتز منطق.ریشه‌های سنتز منطق را می‌توان در رفتار منطق توسط جورج بول (۱۸۱۵ تا ۱۸۶۴)، در آنچه که امروزه جبر بولین نامیده می‌شود، جستجو کرد. در سال ۱۹۳۸، کلود شانون نشان داد که جبر بولین (دو ارزشی) می‌تواند عملکرد مدارهای سوئیچینگ(switching) را توصیف کند. در روزهای اولیه، طراحی منطق شامل دستکاری در نمایش جدول حقیقت به عنوان نقشه‌های کارنو بود. به حداقل رساندن منطق مبتنی بر نقشه Karnaugh با مجموعه ای از قوانین در مورد چگونگی ترکیب ورودی‌ها در نقشه‌ها انجام می‌شود. یک طراح انسانی معمولاً فقط می‌تواند با نقشه‌های Karnaugh کار کند که شامل حداکثر چهار تا شش متغیر است.اولین گام به سمت خودکارسازی حداقل سازی منطقی، معرفی الگوریتم Quine – McCluskey بود که می‌تواند در رایانه پیاده‌سازی شود. این روش دقیق به حداقل رساندن مفهوم تأثیرگذارهای اصلی و حداقل هزینه‌ها را پوشش می‌دهد که می‌تواند سنگ بنای حداقل سازی دو سطح باشد. امروزه، کمینه ساز منطقی اکتشافی بسیار کارآمدتر Espresso به ابزاری استاندارد برای این عملیات تبدیل شده‌است. زمینه دیگر تحقیقات اولیه در زمینه به حداقل رساندن حالت و رمزگذاری ماشین‌های حالت محدود (FSM) بود، وظیفه ای که موجب آزار طراحان بود. کاربردهای سنتز منطق اساساً در طراحی رایانه دیجیتال است. از این رو، آزمایشگاه‌های IBM و Bell نقشی محوری در اتوماتی کردن اولیه سنتز منطق داشتند. تکامل از اجزای منطق گسسته به آرایه‌های منطقی قابل برنامه‌ریزی (PLA)، نیاز به حداقل رساندن دو سطح کارآمد را افزایش می‌دهد، زیرا به حداقل رساندن اصطلاحات در یک نمایش دو سطح، سطح منطقه را کاهش می‌دهد.با این وجود، مدارهای منطقی دو سطح در طراحی یکپارچه سازی در مقیاس بسیار بزرگ (VLSI) از اهمیت محدودی برخوردارند. در بیشتر طرح‌ها از چندین سطح منطق استفاده می‌شود. در واقع، تقریباً هر نمایش مدار در RTL یا توصیف رفتاری، نمایش چند سطح است. سیستم اولیه ای که برای طراحی مدارهای چند سطحی مورد استفاده قرار گرفت، LSS از IBM بود. از تحولات محلی برای ساده‌سازی منطق استفاده کرد. کار بر روی LSS و کامپایلر Yorktown Silicon باعث پیشرفت سریع تحقیقات در سنتز منطق در دهه ۱۹۸۰ شد. چندین دانشگاه با در دسترس قرار دادن تحقیقات خود به مردم کمک کردند، به ویژه SIS از دانشگاه کالیفرنیا، برکلی، RASP از دانشگاه کالیفرنیا، لس آنجلس و BOLD از دانشگاه کلرادو، بولدر. طی یک دهه، این فناوری به محصولات سنتز منطق تجاری که توسط شرکتهای اتوماسیون طراحی الکترونیکی ارائه شده‌است، مهاجرت کرد.عناصر منطقی."طراحی منطقی" گامی در چرخه طراحی استاندارد است که در آن طراحی عملکردی یک مدار الکترونیکی به نمایشی تبدیل می‌شود که عملیات منطقی، عملیات حساب، جریان کنترل و غیره را ضبط می‌کند. خروجی معمول این مرحله توصیف RTL است. طراحی منطق معمولاً با مرحله طراحی مدار دنبال می‌شود. در طراحی مدرن اتوماسیون ، بخشهایی از طراحی منطقی ممکن است بر اساس توصیف رفتاری مدار با استفاده از ابزار سنتز سطح بالا، خودکار شوند.عملیات منطقی معمولاً از عملیات boolean AND , OR , XOR و NAND تشکیل شده و اساسی‌ترین اشکال عملیات در یک مدار الکترونیکی است. عملیات حسابی معمولاً با استفاده از عملگرهای منطقی اجرا می‌شود.سنتز یا رفتار رفتاری سطح بالا.با هدف افزایش بهره‌وری طراح، تلاش‌های تحقیقاتی در زمینه ساخت مدارهای مشخص شده در سطح رفتاری منجر به ظهور راه حل‌های تجاری در سال ۲۰۰۴ شده‌است که برای طراحی پیچیده ASIC و FPGA استفاده می‌شوند. این ابزار به‌طور خودکار مدارهایی را که با استفاده از زبان‌های سطح بالا مشخص می‌شوند، مانند ANSI C++ / C یا SystemC، به مشخصات انتقال سطح ثبت (RTL)، که می‌تواند به عنوان ورودی به جریان سنتز منطقی سطح دروازه استفاده شود، ترکیب می‌کنند. با استفاده از سنتز سطح بالا، همچنین به عنوان سنتز ESL شناخته می‌شود، تخصیص کار به چرخه‌های ساعت و در تمام اجزای سازه ای، مانند ALUهای نقطه شناور، توسط کامپایلر با استفاده از روش بهینه‌سازی انجام می‌شود، در حالی که با سنتز منطقی RTL (حتی از نظر رفتاری Verilog یا VHDL، جایی که یک رشته اجرا می‌تواند چندین خواندن و نوشتن را برای یک متغیر در یک چرخه ساعت انجام دهد) آن تصمیمات تخصیص قبلاً گرفته شده‌است.