SystemVerilog Program Blocks

模块(module)是用于构建设计的基本结构。每个模块可以包含其他模块、网络、变量和其他过程块的层次结构来描述任何硬件功能。另一方面,testbench是验证设计的完整环境,因此重点放在建模的方式上,以使其更加可重用和有效。它必须正确地初始化和同步,以避免设计和测试之间的竞争条件。

为什么需要程序块?

引入SystemVerilog程序块的原因如下:
【1】提供执行测试平台的切入点;
【2】创建一个容器来容纳所有其他测试平台数据,例如任务,类对象和函数;
【3】通过在仿真周期的反应区域内执行来避免设计出现竞争条件;

Syntax

program [name] [port_list];
  ...
endprogram

Examples

program test1 (input clk, reset);
    initial ...
  endprogram
 
  program test2 (interface wb_if);
    initial ...
  endprogram
 
  program test3;
    initial ...
  endprogram

一个程序块可以嵌套在模块和接口中,因此同一模块中的多个程序可以共享该作用域的局部变量。在下面的例子中,mode是tb中的一个局部变量,可以被程序p1和p2访问。

module tb;
  bit [3:0] mode;
 
  program p1;
    ...
  endprogram
 
  program p2;
    ...
  endprogram
endmodule

参考文献:
【1】https://www.chipverify.com/systemverilog/systemverilog-program-block

发布了71 篇原创文章 · 获赞 8 · 访问量 7374

猜你喜欢

转载自blog.csdn.net/qq_43042339/article/details/104590266