第10章 Verilog行为仿真概要1.ppt

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

第10章;测试程序TestBench;一个完整的简单例子 test fixture;DUT 被测器件 (device under test) ;Test Fixture template;;Test fixture 激励描述;完整的Test Fixture;系统任务与系统函数 ;$display和$write是两个系统任务,两者的功能相同,都用于显示模拟结果,其区别是$display在输出结束后能自动换行,而$write不能。 $display和$write的使用格式为: $display(“格式控制符”,输出变量名列表); $write(“格式控制符”,输出变量名列表);;;$monitor、$strobe与$display、$write一样也是属于输出控制类的系统任务,$monitor与$strobe都提供了监控和输出参数列表中字符或变量的值的功能,其使用格式为: $monitor(“格式控制符”,输出变量名列表); $strobe(“格式控制符”,输出变量名列表); 这里的格式控制符、输出变量名列表与$display和$write中定义的完全相同。;$time、$realtime是属于显示仿真时间标度的系统函数。 这两个函???被调用时,都返回当前时刻距离仿真开始时 刻的时间量值。 $time 函数以64位整数值的形式返回模拟时间, $realtime 函数则以实数型数据返回模拟时间。 ;系统任务$finish与$stop用于对仿真过程进行控制,分别表示结束仿真和中断仿真。 $finish与$stop 的使用格式如下: $stop; $stop(n); $finish; $finish(n); n是$finish和$stop的参数,n 可以是0、1、2等值,分别表示如下含义。 0:不输出任何信息; 1:给出仿真时间和位置; 2:给出仿真时间和位置,还有其他一些运行统计数据。;$random: 产生随机数的系统函数,每次调用该函数将返回一个32位的随机数,该随机数是一个带符号的整数。 一般用法为: $random % b 其中b0,它给出了一个范围在0~b-1之间的随机数。 $random%15,产生一个0~14之间的随机数。;用户定义的原语;用户自定义元件 ;primitive 元件名(输出端口,输入端口1,输入端口2,…) output 输出端口名; input 输入端口1,输入端口2,…; reg输出端口名; initial begin 输出端口或内部寄存器赋初值(0,1或x); end table //输入1 输入2 …… :输出 真值列表 endtable endprimitive;组合逻辑示例:2-1 多路器;注: 在模块外定义 UDP 。 如果在表中没有规定输入组合,将输出不确定逻辑值 (x)。 表的列中元素的顺序应与端口列表中的一致。 表中的 ?的意义是:重复的输入 0,1或 任意不确定逻辑值(x)。 表中开始两行表示:当 s等于 1 时,不管 b 逻辑值如何变化,输出 o 将与 输入 a 保持一致。 表中的下两行表示:当 s 等于 0 时,不管 a逻辑值如何变化,输出 o 将与输入 b 保持一致。 表中 的最后两行使此器件的描述更加的全面、准确。它们表示:当输入 a 和 b 的逻辑值相同时,如果 sel 逻辑值不确定,则输出 o 的值 将与输入 a 和 b 的值相同。这种行为不能使用 Verilog 语言提供的基本原语元件进行建模。UDP 将 x 作为实际的未知值,而不是 Verilog 语言逻辑值来进行处理,因此使其比Verilog语言提供的基本原语元件更加准确。;可以只使用两个 UDP 来描述全加器的逻辑功能。 // 全加器进位实现部分 primitive U_ADDR2_C (CO, A, B, CI); output CO; input A, B, CI, table // A B CI : CO 1 1 ? : 1; 1 ? 1 : 1; ? 1 1 : 1; 0 0 ? : 0; 0 ? 0 : 0; ? 0 0 : 0; endtalbe endprimitive;//全加器求和实现部分 primitive U_ADDR2_S(S, A, B,CI); out

文档评论(0)

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

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

1亿VIP精品文档

相关文档