北大数字集成电路课件 4 verilog testfixture的编写整理ppt.ppt

北大数字集成电路课件 4 verilog testfixture的编写整理ppt.ppt

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

数字集成电路设计入门 --从HDL到版图 于敦山 北大微电子学系 第四章 设计举例 进一步学习Verilog的结构描述和行为描述 Verilog混合(抽象)级仿真 语言的主要特点 module能够表示: 物理块,如IC或ASIC单元 逻辑块,如一个CPU设计的ALU部分 整个系统 每一个模块的描述从关键词module开始,有一个名称(如SN74LS74,DFF,ALU等等),由关键词endmodule结束。 语言的主要特点—模块端口(module ports) 注意模块的名称DFF,端口列表及说明 模块通过端口与外部通信 语言的主要特点 语言的主要特点 可以将模块的实例通过端口连接起来构成一个大的系统或元件。 在上面的例子中,REG4有模块DFF的四个实例。注意,每个实例都有自己的名字(d0, d1, d2, d3)。实例名是每个对象唯一的标记,通过这个标记可以查看每个实例的内部。 实例中端口的次序与模块定义的次序相同。 模块实例化与调用程序不同。每个实例都是模块的一个完全的拷贝,相互独立、并行。 一个完整的简单例子 test fixture 被测试器件DUT是一个二选一多路器。测试装置(test fixture)提供测试激励及验证机制。 Test fixture使用行为级描述,DUT采用门级描述。下面将给出Test fixture的描述、DUT的描述及如何进行混合仿真。 DUT 被测器件 (device under test) a, b, sel是输入端口,out是输出端口。所有信号通过这些端口从模块输入/输出。 另一个模块可以通过模块名及端口说明使用多路器。实例化多路器时不需要知道其实现细节。这正是自上而下设计方法的一个重要特点。模块的实现可以是行为级也可以是门级,但并不影响高层次模块对它的使用。 Test Fixture template Test Fixture — 如何说明实例 Test Fixture —过程(procedural block) Test Fixture —过程(procedural block) 通常采用过程语句进行行为级描述。test fixture的激励信号在一个过程语句中描述。 过程语句的活动与执行是有差别的 所有过程在时间0处于活动状态,并根据用户定义的条件等待执行; 所有过程并行执行,以描述硬件内在的并行性; Test fixture 激励描述 例子中,a, b, sel说明为reg类数据。reg类数据是寄存器类数据信号,在重新赋值前一直保持当前数据。 #5 用于指示等待5个时间单位。 $finish是结束仿真的系统任务。 Test Fixture 响应产生 $time 系统函数,给出当前仿真时间 $monitor 系统任务,若参数列表中的参数值发生变化,则在时间单位末显示参数值。 $monitor ([“format_specifiers”,] arguments); 例如: $monitor($time, o, in1, in2); $monitor($time, , out, , a, , b, , sel); $monitor($time, “%b %h %d %o”, sig1, sig2, sig3, sig4); Test Fixture 响应产生 $time是一个系统函数,返回当前返回仿真时间。时间用64位整数表示。 $monitor 在时间单位末,若参数列表中的参数值发生变化则显示所列参数的值。由$time引起的变化不会显示。 $monitor系统任务支持不同的数基。缺省数基是十进制。支持的数基还有二进制、八进制、十进制。 完整的Test Fixture 时间单位末的概念 VCD数据库 VCD数据库 用户可以用$dump*系统任务打开一个数据库,保存信号并控制信号的保存。除$dumpvars外,其它任务的作用都比较直观。 $dumpvars将在后面详细描述。 必须首先使用$dumpfile系统任务,并且在一次仿真中只能打开一个VCD数据库。 在仿真前(时间0前)必须先指定要观测的波形,这样才能看到信号完整的变化过程。 仿真时定期的将数据保存到磁盘是一个好的习惯,万一系统出现问题数据也不会全部丢失。 VCD数据库不记录仿真结束时的数据。因此如果希望看到最后一次数据变化后的波形,必须在结束仿真前使用$dumpall。 $dumpvars $dumpvars[( levels, scope*)]; scope可以是层次中的信号,实例或模块。 仿真时所有信号必须在同一时间下使用$dumpvars。 就是说可以使用多条$dumpvars语句,但必

文档评论(0)

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

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

1亿VIP精品文档

相关文档