资源描述
数字电路验证方法数字电路验证方法刘晓鹏刘晓鹏2011年年03月月6/23/20241共37页主要内容主要内容n验证的必要性验证的必要性n软件验证介绍及演示软件验证介绍及演示n硬件验证介绍及演示硬件验证介绍及演示6/23/20242共37页ASIC芯片设计流程芯片设计流程综合系统定义系统定义HDL代码编代码编写写功能验证功能验证布局布线布局布线流片流片综合综合前端设计前端设计后端设计后端设计6/23/20243共37页为什么需要验证为什么需要验证?n1.语法检查语法检查moduleclk_devider(clk,en,data_in,clk_d7,clk_d8,clk_out,);inputclk,en;data_in;outputclk_d7,clk_d8,clk_out;wire2:0count;wireclk_d8,clk_out;regclk_d7;assignclk_out=data_in?clk_d8:clk_d7;assignclk_d7=count2;assignclk_d8=count2;always(posedgeclk)if(!en)count=0;elseif(en)if(!data_in)count=count+1;elsebeginif(count=6)count=0;elsecount=count+1;endmodulen1.语法检查语法检查moduleclk_devider(clk,en,data_in,clk_d7,clk_d8,clk_out,);inputclk,en,data_in;outputclk_d7,clk_d8,clk_out;wire 2:0 count;wireclk_d8,clk_out;reg clk_d7;assignclk_out=data_in?clk_d8:clk_d7;assign clk_d7=count2;assignclk_d8=count2;always(posedgeclk)if(!en)count=0;elseif(en)if(!data_in)count=count+1;elsebeginif(count=6)count=0;elsecount=count+1;endendmodule端口申明结束端口申明结束变量类型错误变量类型错误wire类型变量类型变量不能使用连续不能使用连续赋值赋值同一过程块赋同一过程块赋值类型要一直,值类型要一直,不过不过reg类型最类型最好使用好使用“配置配置-语法着色选项卡中选择相应的语法着色选项卡中选择相应的wordfile6/23/20248共37页Ultraedit 列块编辑列块编辑6/23/20249共37页Notepad+6/23/202410共37页6/23/202411共37页测试矢量测试矢量-Testbench Testbench更像一个激励更像一个激励的产生器的产生器,对所设计的输入对所设计的输入管脚产生相应的输入值管脚产生相应的输入值(0,或者,或者1),通过观察),通过观察输出值来评估设计的正确输出值来评估设计的正确性。性。Testbench 的工作就是把的工作就是把这些不同的输入值加载到这些不同的输入值加载到所设计的电路中。所设计的电路中。abctest00010011010101111000101011001111 test=a|b&c;6/23/202412共37页Testbench与设计模块的关系与设计模块的关系n仿真软件仿真软件-铁锅铁锅n设计模块设计模块-准备好的生菜准备好的生菜nTestbench-调料调料n观察输出观察输出-尝味道尝味道n仿真仿真-修改修改-再仿真再仿真6/23/202413共37页Testbench生成方式生成方式 MaxplusII里面仿真,可能对着那个画图一样的东里面仿真,可能对着那个画图一样的东西画上输入,然后编译以后看设计的输出。西画上输入,然后编译以后看设计的输出。在在Modelsim里面,需要按照一定规则写一个里面,需要按照一定规则写一个.v或者或者.vhd的文件,这个文件可以给你的设计提供的文件,这个文件可以给你的设计提供你预想的输入。你预想的输入。6/23/202414共37页画画testbench输出结果输出结果6/23/202415共37页编写编写testbenchtimescale 1ns/1ns /定义仿真时间步长定义仿真时间步长module top_test();reg a_test,b_test,c_test;test test(.a(a_test),.b(b_test),.c(c_test),.test(test_out);/调调用设计模块用设计模块begin a_test=0;b_test=0;c_test=0;end#(100)begin a_test=0;b_test=0;c_test=1;end#(100)begin a_test=0;b_test=1;c_test=0;end#(100)begin a_test=0;b_test=1;c_test=1;end#(100)begin a_test=1;b_test=0;c_test=0;end#(100)begin a_test=1;b_test=0;c_test=1;end#(100)begin a_test=1;b_test=1;c_test=0;end#(100)begin a_test=1;b_test=1;c_test=1;endendmodule不需要端口列表和不需要端口列表和端口类型定义端口类型定义6/23/202416共37页各种仿真工具工作站启动方法各种仿真工具工作站启动方法nModelsimnSource/opt/demo/modelsim.envnVsim&nVsim c&nQuestasimnSource/opt/demo/questa.envnVsim&nVsim c&nVcsnSource/opt/demo/synopsys.envnVcs nNCVerilognSource/opt/demo/ldv4.envnNclaunch&6/23/202417共37页QuestaSim 6/23/202418共37页Ncverilog6/23/202419共37页演示演示(QuestaSim)远程连接6/23/202420共37页QuestaSim 仿真总结仿真总结n建立新的工作库建立新的工作库 FileNewlibraryn建立新的工程建立新的工程 FileNewprojectn添加添加.v文件到新的文件到新的project,包括测试激励包括测试激励testbenchn编译编译 n仿真仿真6/23/202421共37页硬件验证硬件验证nFPGA 概述概述nFPGA常用软件常用软件nFPGA验证流程验证流程n演示演示6/23/202422共37页FPGA概述概述n发展历程及现状发展历程及现状n内部结构及实现原理内部结构及实现原理n应用领域举例应用领域举例6/23/202423共37页发展历程及现状发展历程及现状1、电子管、晶体管、电子管、晶体管2、MSIC、LSIC3、PLD(乘积和)乘积和)PAL、GAL4、FPGA(Field programmable Gates Array)CPLD(Complex Programmable Logic Device)6/23/202424共37页内部结构及实现原理内部结构及实现原理兰兰 色:逻辑阵列块色:逻辑阵列块红色:连线资源红色:连线资源黄色:输入输出块黄色:输入输出块6/23/202425共37页内部结构及实现原理内部结构及实现原理n基于乘积项基于乘积项(Product-Term)n基于查找表基于查找表(Look-Up-Table)6/23/202426共37页基于乘积项基于乘积项6/23/202427共37页基于乘积项基于乘积项f=(A+B)*C*(!D)=A*C*!D+B*C*!D6/23/202428共37页基于查找表基于查找表6/23/202429共37页基于查找表基于查找表f=(A+B)*C*(!D)=A*C*!D+B*C*!D实际逻辑电路实际逻辑电路LUT的实现方式的实现方式a,b,c,d 输入输入逻辑输出逻辑输出地地址址RAM中存储的中存储的内容内容00000000000001000010.0.011111111116/23/202430共37页应用领域举例应用领域举例n总线接口总线接口n高速数据采集高速数据采集n通信领域通信领域 编解码、信号纠错编解码、信号纠错n嵌入式系统嵌入式系统n数字图象处理数字图象处理n数字信号处理数字信号处理6/23/202431共37页软件设计软件设计 Altera公司公司 QUARTUS II Xilinx公司公司 ISE1、开发工具、开发工具 Lattice公司公司 ispLEVER ACTEL公司公司 Actel Fesigner 2、开发语言、开发语言 VHDL Verilog6/23/202432共37页Quartus II6/23/202433共37页ISE 6/23/202434共37页开发流程开发流程6/23/202435共37页演示(演示(Quartus II)远程连接6/23/202436共37页Thanks!6/23/202437共37页
展开阅读全文