什么是验证环境? --- 验证的流程VHDL实例
内容导读:
首先我们来解决第一个问题:什么是验证环境。在解释这个概念之前,讲解一下验证的流程是必须的。对很多人而言是老调重谈了。那么就可以略过这一节。
我们知道验证分为:编写testbench,利用仿真工具进行功能仿真,利用检测覆盖率工具进行代码覆盖率分析,进行loose的综合,等价性检测,门级仿真。当然在这些步骤之中,都需要同时写就各个阶段的文档。
各个验证阶段的关系,见下图:
下面概略性的讲解每一个步骤:
1. 编写testbench
编写testbench
是验证工程师的一个重点工作,好的testbench易于阅读,升级,重用。要写就好的testbench是基于对设计的理解和对spec的要求上的。testbench所要使用的语言有很多,比如:vera,systemverilog
,verilog 和C 等等。每种语言都有各自的好处,在此处就不说明了。比如C具体的这方面的内容见:
论坛的 验证语言版块
2.功能仿真
在testbench写就后,就需要对这个设计进行验证了。而这个步骤就是利用仿真工具进行仿真。这一阶段的工具很多,最典型的是: Cadence
的 NC系列,Synopsys的VCS以及Metor的 Modelsim工具。这一阶段一般都分为三步骤:编译,连接和仿真。
编译,就是对所写的testbench每个文件进行语法验证和编译;
连接,把每个testbench文件进行连接;
仿真,对testbench进行添加激励并按时序进行运行。
3.综合
这里的综合,是非常宽松的综合,所涉及的约束也不是很多,但是能一定程度反映问题。或许你可以只设一个上限频率,观察是否符合时序要求,如果是在10%左右或许还可以通过综合的技巧进行修改,如果有大的误差,就表明设计有问题,需要重新设计。这一步骤主要是想产生,门级的电路描述。采用的工具可能是:Synopsys的Design
Compiler , Cadence的RTL Compiler。
4. 等价性检测
由于综合工具不能保证综合后的设计是百分百正确的,检测综合后的网表和RTL代码之间的一致性就是非常必要的。这一阶段的工具:LEC。
5. 门级仿真
这一步骤是对网表级描述的设计进行仿真,这一步骤与功能仿真不同的是有一些延时信息引入到仿真中,更能接近于现实的情况。
说到这里,所有主要的验证步骤都已经涉及到,这里讲的也许有诸多不全或者疏忽和错误之处,请大家指正和补充。
另:这里提到的工具的使用和技巧,请见设计工具版
标签:
来源: 作者: 时间:2006/9/25 16:50:53