数字集成电路课件-4-verilog-testfixture的编写.ppt

上传人(卖家):三亚风情 文档编号:2460628 上传时间:2022-04-20 格式:PPT 页数:23 大小:204.50KB
下载 相关 举报
数字集成电路课件-4-verilog-testfixture的编写.ppt_第1页
第1页 / 共23页
数字集成电路课件-4-verilog-testfixture的编写.ppt_第2页
第2页 / 共23页
数字集成电路课件-4-verilog-testfixture的编写.ppt_第3页
第3页 / 共23页
数字集成电路课件-4-verilog-testfixture的编写.ppt_第4页
第4页 / 共23页
数字集成电路课件-4-verilog-testfixture的编写.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、数字集成电路设计入门-从HDL到版图于敦山 北大微电子学系第四章第四章 设计举例设计举例进一步学习Verilog的结构描述和行为描述Verilog混合(抽象)级仿真学习目标:学习目标:语言的主要特点语言的主要特点module(模块模块)module能够表示:能够表示:物理块,如物理块,如IC或或ASIC单元单元逻辑块,如一个逻辑块,如一个CPU设计的设计的ALU部分部分整个系统整个系统每一个模块的描述从关键词每一个模块的描述从关键词module开始,有一个开始,有一个名称名称(如(如SN74LS74,DFF,ALU等等),由关键词等等),由关键词endmodule结束。结束。module是层是

2、层次化设计的基次化设计的基本构件本构件逻辑描述放在逻辑描述放在module内部内部语言的主要特点语言的主要特点模块端口(module ports)端口在模块名字端口在模块名字后的括号中列出后的括号中列出端口可以说明为端口可以说明为input, output及及inout端口等价于硬件端口等价于硬件的引脚的引脚(pin)注意模块的名称DFF,端口列表及说明模块通过端口与外部通信语言的主要特点语言的主要特点模块实例化模块实例化(module instances)module DFF (d, clk, clr, q, qb); .endmodulemodule REG4( d, clk, clr,

3、q, qb); output 3: 0 q, qb; input 3: 0 d; input clk, clr; DFF d0 (d 0, clk, clr, q 0, qb 0); DFF d1 (d 1, clk, clr, q 1, qb 1); DFF d2 (d 2, clk, clr, q 2, qb 2); DFF d3 (d 3, clk, clr, q 3, qb 3);endmodule语言的主要特点语言的主要特点可以将模块的实例通过端口连接起来构成一个大的系可以将模块的实例通过端口连接起来构成一个大的系统或元件。统或元件。在上面的例子中,在上面的例子中,REG4有模块有模

4、块DFF的四个实例。注的四个实例。注意,每个实例都有自己的名字意,每个实例都有自己的名字(d0, d1, d2, d3)。实例。实例名是每个对象唯一的标记,通过这个标记可以查看每名是每个对象唯一的标记,通过这个标记可以查看每个实例的内部。个实例的内部。实例中端口的次序与模块定义的次序相同。实例中端口的次序与模块定义的次序相同。模块实例化与调用程序不同。每个实例都是模块的一模块实例化与调用程序不同。每个实例都是模块的一个完全的拷贝,相互独立、并行。个完全的拷贝,相互独立、并行。模块实例化模块实例化(module instances)一个完整的简单例子一个完整的简单例子 test fixture被

5、测试器件被测试器件DUT是一个二选一多路器。测试装置是一个二选一多路器。测试装置(test fixture)提提供测试激励及验证机制。供测试激励及验证机制。Test fixture使用行为级描述,使用行为级描述,DUT采用门级描述。下面将给出采用门级描述。下面将给出Test fixture的描述、的描述、DUT的描述及如何进行混合仿真。的描述及如何进行混合仿真。DUT 被测器件 (device under test) module MUX2_1 (out, a, b, sel); / Port declarations output out; input a, b, sel; wire out

6、, a, b, sel; wire sel_, a1, b1; / The netlist not (sel_, sel); and (a1, a, sel_); and (b1, b, sel); or (out, a1, b1);endmodule注释行注释行已定义的已定义的 Verilog基基本单元的本单元的实例实例a, b, sel是输入端口,是输入端口,out是输出是输出端口。所有信号通过这些端口从模端口。所有信号通过这些端口从模块输入块输入/输出。输出。另一个模块可以通过模块名及端口另一个模块可以通过模块名及端口说明使用多路器。实例化多路器时说明使用多路器。实例化多路器时不需要知道

7、其实现细节。这正是自不需要知道其实现细节。这正是自上而下设计方法的一个重要特点。上而下设计方法的一个重要特点。模块的实现可以是行为级也可以是模块的实现可以是行为级也可以是门级,但并不影响高层次模块对它门级,但并不影响高层次模块对它的使用。的使用。多路器由关键多路器由关键词词module和和endmodule开始及结束。开始及结束。Test Fixture templatemodule testfixture; / Data type declaration / Instantiate modules / Apply stimulus / Display resultsendmodule为什么没

8、为什么没有端口?有端口?由于由于testfixture是最顶层模是最顶层模块,不会被其它模块实例化。块,不会被其它模块实例化。因此不需要有端口。因此不需要有端口。Test Fixture 如何说明实例module testfixture; / Data type declaration / Instantiate modules MUX2_1 mux (out, a, b, sel); / Apply stimulus / Display resultsendmodule多路器实例化语句多路器实例化语句MUXMUX的实例化语句包括:的实例化语句包括: 模块名字:与引用模块相同模块名字:与引用模

9、块相同 实例名字:任意,但要符合标记命名规则实例名字:任意,但要符合标记命名规则 端口列表:与引用模块的次序相同端口列表:与引用模块的次序相同Test Fixture 过程(procedural block)所有过程在时间所有过程在时间0执行一次执行一次过程之间是并行执行的过程之间是并行执行的 过程语句有两种:过程语句有两种: initial :只执行一次:只执行一次 always :循环执行:循环执行Test Fixture 过程(procedural block)通常采用过程语句进行行为级描述。通常采用过程语句进行行为级描述。test fixture的激的激励信号在一个过程语句中描述。励信

10、号在一个过程语句中描述。过程语句的活动与执行是有差别的过程语句的活动与执行是有差别的所有过程在时间所有过程在时间0处于活动状态,并根据用户定义的条件等待处于活动状态,并根据用户定义的条件等待执行;执行;所有过程并行执行,以描述硬件内在的并行性;所有过程并行执行,以描述硬件内在的并行性;Test fixture 激励描述module testfixture; / Data type declaration reg a, b, sel; wire out; / MUX instance MUX2_1 mux (out, a, b, sel); / Apply stimulus initial be

11、gin a = 0; b = 1; sel = 0; #5 b = 0; #5 b = 1; sel = 1; #5 a = 1; #5 $finish; end / Display resultsendmoduleTime Values a b sel0 0 1 05 0 0 010 0 1 115 1 1 1例子中,例子中,a, b, sela, b, sel说明为说明为regreg类数据。类数据。regreg类数据是寄存器类数据信号,在重新类数据是寄存器类数据信号,在重新赋值前一直保持当前数据。赋值前一直保持当前数据。#5 #5 用于指示等待用于指示等待5 5个时间单位。个时间单位。$

12、$finishfinish是结束仿真的系统任务。是结束仿真的系统任务。Test Fixture 响应产生响应产生$time 系统函数,给出当前仿真时间$monitor 系统任务,若参数列表中的参数值发生变化,则在时间单位末显示参数值。 $monitor (“format_specifiers”, );例如: $monitor($time, o, in1, in2); $monitor($time, , out, , a, , b, , sel); $monitor($time, “%b %h %d %o”, sig1, sig2, sig3, sig4);Verilog提供了一些系统任务和系统

13、函数,包括:提供了一些系统任务和系统函数,包括:注意不能注意不能有空格有空格Test Fixture 响应产生响应产生$time$time是一个系统函数,返回当前返回仿真时间。时间是一个系统函数,返回当前返回仿真时间。时间用用6464位整数表示。位整数表示。$monitor $monitor 在在时间单位时间单位末,若参数列表中的参数值发生末,若参数列表中的参数值发生变化则显示所列参数的值。由变化则显示所列参数的值。由$time$time引起的变化不会显引起的变化不会显示。示。$monitor$monitor系统任务支持不同的数基。缺省数基是十进系统任务支持不同的数基。缺省数基是十进制。支持的

14、数基还有二进制、八进制、十进制。制。支持的数基还有二进制、八进制、十进制。完整的完整的Test Fixturemodule testfixture; / Data type declaration reg a, b, sel; wire out; / MUX instance MUX2_1 mux (out, a, b, sel); / Apply stimulus initial begin a = 0; b = 1; sel = 0; #5 b = 0; #5 b = 1; sel = 1; #5 a = 1; #5 $finish; end/ Display results initia

15、l $monitor($time, out=%b a=%b b=%b sel=%b, out, a, b, sel);endmodule0 out= 0 a= 0 b= 1 sel= 05 out= 0 a= 0 b= 0 sel= 010 out= 1 a= 0 b= 1 sel= 115 out= 1 a= 1 b= 1 sel= 1结果输出结果输出时间单位末的概念时间单位末的概念timescale 1ns/1ns module testfixture; / Data type declaration reg a, b, sel; wire out; / MUX instance MUX2

16、_1 mux (out, a, b, sel); / Apply stimulus initial begin a = 0; b = 1; sel = 0; #5.7 b = 0; #5 b = 1; sel = 1; #5 a = 1; #5 $finish; end/ Display results initial $monitor($time, out=%b a=%b b=%b sel=%b, out, a, b, sel);endmodule0 out= 0 a= 0 b= 1 sel= 06 out= 0 a= 0 b= 0 sel= 011 out= 1 a= 0 b= 1 sel

17、= 116 out= 1 a= 1 b= 1 sel= 1结果输出VCD数据库数据库Verilog提供一系列系统任务用于记录信号值变化保存到标准的VCD(Value Change Dump)格式数据库中。大多数波形显示工具支持VCD格式。系统任务功能$dumpfile(file. dump); $dumpvars(); $dumpflush;$dumpoff; $dumpon; $dumplimit(); $dumpall; 打开一个VCD数据库用于记录选择要记录的信号将VCD数据保存到磁盘停止记录重新开始记录限制VCD文件的大小(以字节为单位)记录所有指定的信号值VCD数据库数据库用户可以用

18、用户可以用$dump*系统任务打开一个数据库,保存信号并控制系统任务打开一个数据库,保存信号并控制信号的保存。除信号的保存。除$dumpvars外,其它任务的作用都比较直观。外,其它任务的作用都比较直观。 $dumpvars将在后面详细描述将在后面详细描述。必须首先使用必须首先使用$dumpfile系统任务,并且在一次仿真中只能打开一系统任务,并且在一次仿真中只能打开一个个VCD数据库。数据库。在仿真前在仿真前(时间时间0前前)必须先指定要观测的波形,这样才能看到信号必须先指定要观测的波形,这样才能看到信号完整的变化过程。完整的变化过程。仿真时定期的将数据保存到磁盘是一个好的习惯,万一系统出现

19、仿真时定期的将数据保存到磁盘是一个好的习惯,万一系统出现问题数据也不会全部丢失。问题数据也不会全部丢失。VCD数据库不记录仿真结束时的数据。因此如果希望看到最后一数据库不记录仿真结束时的数据。因此如果希望看到最后一次数据变化后的波形,必须在结束仿真前使用次数据变化后的波形,必须在结束仿真前使用$dumpall。VCD数据库是仿真过程中数据信号变化的记录。它只记录数据库是仿真过程中数据信号变化的记录。它只记录用户指定的信号。用户指定的信号。$dumpvars$dumpvars(, *);scope可以是层次中的信号,实例或模块。可以是层次中的信号,实例或模块。仿真时所有信号必须在同一时间下使用仿

20、真时所有信号必须在同一时间下使用$dumpvars。就是说可以使用多条就是说可以使用多条$dumpvars语句,但必须从语句,但必须从同一同一时间时间开始。如:开始。如: initial begin $dumpfile (“verilog. dump”); $dumpvars (0, testfixture.a); #1 $dumpvars (0, testfixture.b); end$dumpvars语法:此语句将引起一个警告信息并被忽略$dumpvars$dumpvars; / Dump所有层次的信号所有层次的信号$dumpvars (1, top); / Dump top模块中的所有信

21、号模块中的所有信号$dumpvars (2, top. u1); / Dump实例实例top. u1及其下及其下一一层的信号层的信号$dumpvars (0, top. u2, top. u1. u13. q); / Dump top.u2及其及其以下所有信号,以及信号以下所有信号,以及信号top. u1. u13. q。$dumpvars (3, top. u2, top. u1); / Dump top. u1和和top. u2及及其下两层中的所有信号。其下两层中的所有信号。用下面的代码可以代替前面用下面的代码可以代替前面test fixture的的$monitor命令命令: initia

22、l begin $dumpfile (“verilog. dump”); $dumpvars (0, testfixture); end要给$dumpvars提供层次(levels)及范围(scope)参数,例如复习复习Verilog的基本构建模块是什么?是如何构成一个系统的?的基本构建模块是什么?是如何构成一个系统的?module怎样与其它模块通信?怎样与其它模块通信?仿真时两个性质不同的模块是什么?仿真时两个性质不同的模块是什么?在在test fixture中两类不同的过程语句是什么?它们有什么不同?中两类不同的过程语句是什么?它们有什么不同?用什么方法能以文本格式显示仿真结果?用什么方法

23、能以文本格式显示仿真结果?module是基本构建单元。在是基本构建单元。在module中实例化另一个中实例化另一个module可可以构成一个复杂的层次化系统。以构成一个复杂的层次化系统。module之间通过端口的连接进行互相通信之间通过端口的连接进行互相通信两个模块是设计模块和激励模块。设计模块又称为两个模块是设计模块和激励模块。设计模块又称为DUT,激励,激励模块又称为模块又称为testbench或或test fixture。测试模块用于设计模块。测试模块用于设计模块验证验证在在testbench中用到的两类过程语句是中用到的两类过程语句是initial和和always。其不同。其不同处是处

24、是initial只执行一次,而只执行一次,而always循环执行。循环执行。$monitor语句以文本格式显示仿真结果语句以文本格式显示仿真结果习习Verilog中的空白符总是忽略的吗?中的空白符总是忽略的吗?在源代码中插入注释有哪两种方法?在源代码中插入注释有哪两种方法?整数常数的尺寸如何指定?缺省的尺寸及数基是多少?整数常数的尺寸如何指定?缺省的尺寸及数基是多少?设置的编译指导如何解除?设置的编译指导如何解除?编译指导影响全局吗?编译指导影响全局吗?在仿真时为什么要用接近实际的最大在仿真时为什么要用接近实际的最大timescale精度?精度?是的。空白符用于隔开标识符及关键词,多余的忽略是

25、的。空白符用于隔开标识符及关键词,多余的忽略/用于单行注释,用于单行注释,/* */用于多行注释用于多行注释整数常量的尺寸由整数常量的尺寸由10进制数表示的位数确定。缺省为进制数表示的位数确定。缺省为32位,缺位,缺省的数基为十进制。省的数基为十进制。使用使用resetall解除解除编译指导是全局的。编译时遇到编译指导后开始有效,直至复编译指导是全局的。编译时遇到编译指导后开始有效,直至复位或被覆盖,可能影响多个文件。位或被覆盖,可能影响多个文件。使用尽可能大的精度。精度越小,仿真时间步越小,仿真时间使用尽可能大的精度。精度越小,仿真时间步越小,仿真时间越长。使用适当的精度,既达到必要的精度,又不会仿真太慢。越长。使用适当的精度,既达到必要的精度,又不会仿真太慢。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(数字集成电路课件-4-verilog-testfixture的编写.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|