最初的MBD
基于模型的设计(MBD)天生就与硬件很亲近,因为不论是晶体管级别,逻辑门级别,SoC级别还是PCB级别,硬件都是由较低级别的多个实体(即模型)按照一定的拓扑结构摆放和连接,从而构成特定的功能。硬件设计首先采用图形输入(模型设计的基本形态)是很自然而然的事情。这一设计方法仍然主导着PCB电路设计,一些FPGA软件也还保留着这一“原始”的输入方法。就算是HDL(硬件描述语言)设计方法成为主导后,工程师也还是喜欢用Verdi之类的工具将HDL设计转换成模型化、层次化的视图来进行调试和分析。
HDL出现
数字系统规模越来越大后,基于逻辑门的电路复杂度已经远远超出了人力之所及,必须要把一部分设计工作交由计算机来辅助完成。于是就发明了人类和机器都可以“理解”的硬件描述语言(HDL),人们用HDL宏观而抽象地描述电路功能,计算机把HDL综合成微观而具体的电路结构。为了迁就计算机,人们放弃了更符合人性的MBD方法。
误入歧途HLS
基于模型的方法之所以失效,是因为门级模型的抽象级别太低了,人们无法在这一级别上掌控硬件系统设计的复杂度。HDL提高了抽象级别,从而降低了硬件系统在人力面前的复杂度,让设计又变得可控起来。然而,随着电路系统规模的进一步增加,HDL级别的复杂度也开始逐渐失控,解决方法只有再提高抽象级别一途,这就是HLS诞生的背景,然而似乎一开始HLS就走入了歧途。
HLS使用抽象级别更高的编程语言C/C++来设计硬件,然而面向软件开发的C/C++和面向硬件描述的HDL有着