1014
也就是说我们声明出信号,绑定数据类型。
然后我们把组件声明的部分,内部信号声明的部分,放在architecture和begin之间,那么这些声明的信号作用域,就是整个结构体的作用域。
现在我们来写它的例化。
例化的时候加上实例名dut,放在它的前面。
Verilog的实例名放在名称的后面。然后我们做端口的映射。
1015
它写成port map,一看即知。
做端口的映射。
拷贝过来,然后接线。连接符是=>。
连接符左侧的是电路端口,连接符右侧的是线。
当然端口跟线现在同名。
1016
接着我们要写它的激励。
我们用行为来激励。
VHDL里面的循环行为体也只有一个,process。
循环行为体的定义,跟Verilog一样。
1017
这一点,Verilog有抄袭VHDL的嫌疑。
我们不需要写时标,它有自己的时间单位。
用wait for语句。
wait for 0 ns,立即做一件什么事呢?
1018
A赋值为0,b赋值为0。
1019
验证是基于执行,还是基于综合?
验证肯定是非综合目的嘛。
它是在电脑上做的。
1020
周而复始,形成循环。
1021
然后我们来做它的nativelink的设置。
分析综合。
检查一下有没有打字错误。
做nativelink的设置。
跟我们Verilog完全相同。
这个testbench我们没有写系统的停机任务。
VHDL没有那么多的系统任务,它有第三方的库支持,它的语法上并没有。
所以我们要在仿真工具上指定。
1022
我们让它运行1us。
虽然它在第三方的库里面包含这个功能,但是语法上并不支持。
系统任务这一点上没有Verilog灵活。
分析综合。
运行仿真。
结果并不出乎我们的意料。
1023
这是前仿。
现在我们看VHDL如何做后仿。
后仿也要全编译。
但是设置上有一点不同。
EDA要你告诉它,它的顶层的实例名是什么。
这一点不是很方便,没有Verilog方便。
