- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Verilog-testbench的写法
数字集成电路设计入门 --从HDL到版图 于敦山 北大微电子学系 第十五章 Verilog Test Bench使用简介 设计组织 test bench组织 并行块 包含文件 施加激励 线性激励 循环激励 数组激励 矢量采样 矢量回放 错误及警告报告 强制激励 强制激励 建立时钟 建立时钟 建立时钟 使用task 使用task 复习 * 学习内容: 用一个复杂的test bench复习设计的组织与仿真 建立test bench通常使用的编码风格及方法 虚线表示编译时检测输入文件是否存在及可读并允许生成输出文件。 简单的test bench向要验证的设计提供向量,人工验证输出。 复杂的test bench是自检测的,其结果自动验证。 stimulus 要验证的设计 简单的test bench 复杂的test bench 激励 验证结果 要验证的设计 fork…join块在测试文件中很常用。他们的并行特性使用户可以说明绝对时间,并且可以并行的执行复杂的过程结构,如循环或任务。 module inline_ tb; reg [7: 0] data_ bus; // instance of DUT initial fork data_bus = 8b00; #10 data_bus = 8h45; #20 repeat (10) #10 data_bus = data_bus + 1; #25 repeat (5) #20 data_bus = data_bus 1; #140 data_bus = 8h0f; join endmodule 上面的两个repeat循环从不同时间开始,并行执行。象这样的特殊的激励集在单个的begin…end块中将很难实现。 Time | data_ bus 0 | 8’b0000_0000 10 | 8’b0100_0101 30 | 8’b0100_0110 40 | 8’b0100_0111 45 | 8’b1000_1110 50 | 8’b1000_1111 60 | 8’b1001_0000 65 | 8’b0010_0000 70 | 8’b0010_0001 80 | 8’b0010_0010 85 | 8’b0100_0100 90 | 8’b0100_0101 100 | 8’b0100_0110 105 | 8’b1000_1100 110 | 8’b1000_1101 120 | 8’b1000_1110 125 | 8’b0001_1100 140 | 8’b0000_1111 包含文件用于读入代码的重复部分或公共数据。 module clk_gen (clk); output clk; reg clk; `include common.txt initial begin while ($ time sim_end) begin clk = initial_clock; #(period/2) clk = !initial_clock; #(period/2); end $finish; end endmodule 在上面的例子中,公共参数在一个独立的文件中定义。此文件在不同的仿真中可被不同的测试文件调用。 // common. txt // clock and simulator constants parameter initial_clock = 1; parameter period = 15; parameter max_cyc = 100; parameter sim_end = period * max_cyc 产生激励并加到设计有很多 种方法。一些常用的方法有: 从一个initial块中施加线激励 从一个循环或always块施加激励 从一个向量或整数数组施加激励 记录一个仿真过程,然后在另一个仿真中回放施加激励 线性激励有以下特性: 只有变量的值改变时才列出 易于定义复杂的时序关系 对一个复杂的测试,测试基准(test bench)可能非常大 module inline_ tb; reg [7: 0] data_ bus, addr; wire
文档评论(0)