1055
VHDL的数据流建模,它是正宗的米德体系,它做得很好。但是Verilog是商业化行为,商业化行为的数据流建模。
业界曾经有一种批评,就是认为Verilog的数据流建模做得是很差很少很失败,三个很。
但是呢,尽管如此,2015以后的verilog呢,做了弥补,虽然它的语法上支持很弱,但是呢,它还是有一些手段,能够解决对数据流建模的支持。
最著名的,最重要的一个verilog的一个数据流的建模,就是带问号的assign语句。
我们知道,带问号的assign语句,还可以对资源进行描述,这是唯一的一个。
另外一种方式,就是称为behavioral description,行为的描述。
1056
2000年之前呢,EDA的教材上呢,或者说在EDA界值得欢欣鼓舞的一件事,就是引入了behavior,引入了行为的statements,语句。
当时的人们有这样的感觉,EDA的设计者,因为在之前,EDA的设计呢,总要考虑what to do和how to do。
既要考虑它要做什么,也要考虑它的门级实现,如何用门来实现对应的任务的,执行它的what to do和how to do的这个过程的。
正是由于EDA这个语言的出现呢,引入了行为的语句,使得这种效率呢,得到了极大的提升。
我们不再需要描述how to do了,我们只需要描述what to do,做什么,这个电路做什么。
什么是what to do呢?
就是我只要考虑,如果出现了什么样的情况,电路发生什么样的动作,需要把这件事情描述清楚。
1057
类似于人类的语言,if怎么样,结果怎么样。
Case怎么样,结果怎么样。
想想看,这个跟电路有没有关系,没有任何的关系,或者需要用行为,用behavior来描述,带来的效率的巨大提升。
我刚才已经解释了,正是由于行为的描述,导致了更多的故事。
就是2000年之前,我们只要会写行为,就会写EDA,但是2000年之后,写了行为,你不一定能够写出一个很好的电路。
因为有可能会出现综合的问题,综合不友好,或者说综合效率低下,或者说不可综合。
那么,行为的描述显然带来了巨大的提升。
什么是行为呢?
就是类似于人类的语言,如果怎么样,就怎么样,出现什么样的情况怎么样,我们要怎么样地处理。
但你做这种描述的时候,你描述了行为,但是行为变成电路呢,如何变成电路?
1058
how to do完全是EDA,自动化地进行,自动化地进行固然带来了效率的提升。
但2000年之后也提到了一个特别的问题,除了追求效率的问题之外,就是核心竞争力。
你不能指望你的行为语句会产生核心竞争力,因为行为变成电路完全交给EDA来做,EDA不可能替你进行创造性的思维。
它只可能用行为所对应的、尽可能优化的电路结构来实现你的行为,而绝不会根据你的行为产生一个你有而别人没有,人无我有的一种特定的、高端的、更高级的一个电路结构,不可能。
更高级的电路结构怎么做呢?
还得回到结构化,structural description,结构化的描述,既描述了what to do,又描述了how to do。
1059
结构化的描述,可以说,又回到了传统的电子设计的那种思路上,用结构化,用具体的部件,下层的部件来实现上层的部件,这种描述。
这种描述的方式呢,都在一个电路模型里面,可能会交流,综合地来说,就是在现在的国外的高校的教案里面,大多数都会这样讨论这三种方式。
就是行为是描述what to do,没有描述how to do。省略了how to do,带来效率的提升。
而结构化是既描述what to do,又描述how to do,是完整的描述。
数据流居于其中,它有的时候可以描述how to do,有的时候可以不用描述,居于其中。
下面呢,我们就通过具体的例子来说明这三种方式是如何实现的。
并且我们可以看到verilog里面的,它的编译器的一些特征。
1100
有同学指出来,什么时候声明成reg呢?什么时候声明成线呢?
这个跟EDA三种建模方式密切相关,密不可分。
现在呢,我们通过一个例子,通过一个简单的例子,来说明这三种建模方式。
我们这里通过一个简单的例子来比较,这三种建模方式的相同之处和不同之处,它们的特点。
我们仍然通过多路器的例子,a输入,b输入,s输入。