verilog testbench 写法.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
verilog testbench 写法

Verilog测试平台(testbench)技术(一) 收藏 Verilog语言描述的设计模块,最好的方法自然同样是用Verilog语言对待测模块施加激励和检测模块的输出响应。实际应用中,Verilog测试平台(testbench)就是用来提供上述功能的。Verilog测试平台是一个例化的待测(MUT)Verilog模块,给它施加激励并观测其输出。由于测试平台是用Verilog语言描述 的,因此可以应用到不同的仿真环境中。待测模块和与之对应的测试平台组成一个仿真模型,应用这个模型可以在不同的测试环境中用相同的激励对待测模块进行调试。下面就对不同电路类型分别介绍verilog测试平台的语言结构。 ? 一、测试平台 1.组合电路测试 设计组合电路的测试平台时,待测模块及其功能决定了激烈的选择与测试次数。 对于一个已有的待测模块,测试平台中需要声明与待测模块输入输出端口对应的变量。与输入端口相连接的变量定义为reg,与输出端口相连接的变量定义为wire,例化时将测试平台中声明的变量与待测模块的输入输出端口相关联。使用initial语句控制程序运行,initial语句是一种过程结构,在initial块中可使用延迟控制语句来控制initial块中的程序流动。 这里对一个简单的算术逻辑单元(ALU)为例进行测试,下面是该单元Verilog描述。 /*************************************************************************/ //多动能ALU的Verilog代码 timescale 1ns/100ps ? module alu_4bit(a,b,f,oe,y,p,ov,a_gt_b,a_eg_b,a_lt_b); ? input [3:0] a,b; input [1:0] f; input oe; input [3:0] y; output p,ov,a_gt_b,a_eg_b,a_lt_b; ? reg [4:0] im_y; always @(a or b or f) begin ov=1b0; im_y=0; case(f) 2b00: begin im_y=a+b; if(im_y5b01111) ov=1b1; end 2b01: begin im_y=a-b; if(im_y5b01111) ov=1b1; end 2b10: im_y[3:0]=ab; 2b11: im_y[3:0]=a^b; default: im_y[3:0]=4b0000; endcase end always @(a or b) begin if(ab) {a_gt_b,a_ge_b,a_lt_b}=3b100; else if(ab) {a_gt_b,a_ge_b,a_lt_b}=3b001; else {a_gt_b,a_ge_b,a_lt_b}=3b010; end assign p=^im_y[3:0]; assign y=oe?im_y[3:0]:4bz; ? endmodule /*************************************************************************/ 模块alu_4bit是四功能的算术逻辑单元,输入包括数据信号a、b和功能信号f,输出包括数据信号y和ALU生成的奇偶校验信号p、溢出信号ov及比较信号。 下面代码描述了alu_4bit模块的测试平台。 /*************************************************************************/ module test_alu_4bit; reg [3:0] a=4b1011,b=4b0110; reg [1:0] f=2b00; reg oe=1; wire [3:0] y; wire p,ov,a_gt_b,a_eg_b,a_lt_b; ? alu_4bit cut(a,b,f,oe,y,p,ov,a_gt_b,a_eg_b,a_lt_b); ? initial begin #20 b=4b1011; #20

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档