Verilog语法详解:禁止命名块与任务执行-Xilinx ISE测试实践

需积分: 38 11 下载量 155 浏览量 更新于2024-08-20 收藏 317KB PPT 举报
"这篇教程详细讲解了Verilog HDL中的语法,特别强调了禁止命名块和任务的使用,以及在Xilinx ISE环境下如何进行测试。文中通过一个名为`do_arith`的模块示例,展示了如何在always块中定义命名块`arith_block`,并演示了在正沿和负沿触发的always块中如何调用任务和禁止执行。此外,还介绍了测试代码的编写,包括测试平台的组成、并行块的使用,以及如何进行强制激励。" 在Verilog HDL中,禁止命名块和任务是设计中的一种控制结构,用于在特定条件下停止块或任务的执行。例如,在`do_arith`模块中,当`en_mult`的负边沿到来时,会通过`disable`语句禁止`multme`任务和`arith_block`命名块的执行。这在设计中是必要的,因为它允许在不希望这些计算继续时有效地关闭它们。 模块`do_arith`包含了两个always块,一个在时钟的正边沿触发,另一个在`en_mult`的负边沿触发。正边沿触发的always块定义了一个命名块`arith_block`,在这个块内声明了局部变量`tmp1`和`tmp2`,并调用了函数`f_or_and`和任务`multme`。负边沿触发的always块则负责在`en_mult`低电平时禁止任务和块的执行。 测试代码的编写是验证设计功能的关键步骤,它包括创建激励信号来驱动设计,以及定义期望的输出。在Verilog中,测试平台通常由两部分组成:激励信号(输入)和需要验证的设计。对于更复杂的测试,可以使用`fork...join`结构来表示并行事件,这样可以同时执行多个操作,如示例中的`inline_tb`模块所示。`fork...join`结构中的`initial`语句用于初始化激励,而`fork`和`join`分别表示开始并行执行和等待所有任务完成。 此外,文中还提到了连续赋值,这是Verilog中一种重要的语句类型,用于在过程块中对信号进行赋值。连续赋值有两种形式:过程连续赋值(不能被综合)和阻塞赋值(可以被综合)。过程连续赋值通常用于仿真,因为它允许在任何时候改变信号状态,而不会影响其他并发的赋值。 通过理解和熟练运用这些Verilog语法,设计师能够创建出可验证、可综合的数字逻辑设计,并在Xilinx ISE这样的工具中进行有效的测试和实现。测试代码的质量直接影响到设计验证的全面性和准确性,因此在设计流程中占有重要地位。