第七讲verilog语法案例.ppt

  1. 1、本文档共116页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模块的测试 如何把被测模块的输出变化记录到数据库文件中? (文件格式为VCD,大多数的波形显示工具都能读取该格式) 可用以下七个系统任务: $dumpfile(“file.dump”); //打开记录数据变化的数据文件 $dumpvars(); //选择需要记录的变量 $dumpflush; //把记录在数据文件中的资料转送到硬盘保存 $dumpoff; //停止记录数据变化 $dumpon; //重新开始记录数据变化 $dumplimit(<file_size>); //规定数据文件的大小(字节) $dumpall; //记录所有指定信号的变化值到数据文件中 模块的测试 如何把被测模块的响应变化记录到数据库文件中? 举例说明: $dumpvars; //记录各层次模块中所有信号的变化 $dumpvars(1,top); //只记录模块top中所有信号的变化 $dumpvars(2,top.u1); //记录top模块中实例u1和它以下一层子模块所有信号的变化 $dumpvars(0,top.u2,top.u1.u13.q); //记录top模块中实例u2和它本层所有信号的变化,还有top.u1.u13.q 信号的变化。 $dumpvars(3,top.u2,top.u1); //记录top模块中u2和u1所有信号的变化(包括其两层以下子模块的信号变化)。 模块的测试 如何把被测模块的响应变化记录到数据库文件中? 举例说明: 下面的 Verilog 代码段可以代替测试文件中的系统任务$monitor initial begin $dumpfile(“vlog.dump”); $dumpvars(0,top); end 语法详细讲解 编译引导语句 使用 `uselib 的语法: `uselib 器件库1的地点 器件库2的地点 。。。 上面的器件库地点可用以下两种方法表示: 1) file = 库文件名的路径 2) dir = 库目录名的路径 libext = .文件扩展 例如: `uselib dir =/lib/FAST_lib/ `uselib dir =/lib/TTL_lib/ libext=.v file = /libs/TTL_U/udp.lib 语法详细讲解 强制激励 在一个过程块中,可以用两种不同的方式对信号变量或表达式进行连续赋值。 过程连续赋值往往是不可以综合的,通常用在测试模块中。 两种方式都有各自配套的命令来停止赋值过程。 两种不同方式均不允许赋值语句间的时间控制。 assign和deassign 适用于对寄存器类型的信号(例如:RTL级上 的节点或测试模块中在多个地方被赋值的信号)进行赋值。 initial begin #10 assign top.dut.fsml.state_reg = `init_state; 语法详细讲解 强制激励 #20 deassign top.dut.fsml.state_reg; end force 和 release 用于寄存器类型和网络连接类型(例如:门级扫描寄存器的输出)的强制赋值,强制改写其它地方的赋值。 initial begin # 10 force top.dut.counter.scan_reg.q=0; # 20 release top.dut.counter.scan_reg.q; end 在以上两个例子中,在10到20 这个时间段内,网络或寄存器类型的信号被强制赋值,而别处对该变量的赋值均无效。 force的赋值优先级高于assign。 如果先使用assign,再使用force对同一信号赋值,则信号的值为force所赋 的值, 语法详细讲解 强制激励 当执行release后,则信号的值为assign所赋 的值。 如果用force对同一个信号赋了几次值,再执行release,则所有赋的值均不再存在。 可以对信号的某(确定)位、某些(确定)位或拼接的信号,使用force和release赋值;但不能对信号的可变位使用force和release 来赋值。 不能对寄存器类型的信号某位或某些位使用 assign 和deassign 来赋值。 语法详细讲解 建立时钟 虽然有时在设计中会包含时钟,但时钟

文档评论(0)

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

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

1亿VIP精品文档

相关文档