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