欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

仿真中设置断点和查看变量

程序员文章站 2022-07-01 13:53:44
...

设置断点和查看变量

  • 在软件执行过程中,通过设置断点可以查看在程序执行到断点处时变量数值
  • 设置断点可以便于查看软件程序(function、task、object)中局部变量的数值。要注意的是,软件部分的变量(即动态变量,与硬件变量即静态变量相对)是无法添加到波形窗口的,原因之一例如软件变量会在0时刻中完成多次运算,而波形窗口无法反映出在0时刻的若干变化,而且这么做对于波形存储的压力也很大。因此软件部分的变量只可以通过设置断点来查看当前程序中的变量数值。
  • 设置断点的另一个作用在于可以用来调试程序执行的顺序,设置多个位置断点缩小调试范围。
  • 信号窗口针对的是静态变量,而局部变量窗口针对的是动态变量

breakpoint.sv示例代码

module breakpoint1;

int val1;
int val2;

int result;
function int incr_static(input int a);
  result = a + 1;
  return result;
endfunction

function automatic int incr_dynamic(input int a);
  int result;
  result = a + 1;
  return result;
endfunction

initial begin
  val1 = 0;
  val1 = incr_static(val1);
  val1 = incr_static(val1);   
end

initial begin
  val2 = 0;
  val2 = incr_dynamic(val2);
  val2 = incr_dynamic(val2);  
end

endmodule

静态变量

我们在result=a+1处打上断点,会在这一行代码之前停下。
仿真中设置断点和查看变量
第一次执行incr_static(val1)
仿真中设置断点和查看变量
点击下一步,此时执行了result=a+1
仿真中设置断点和查看变量
result的值变成了1
仿真中设置断点和查看变量
继续执行,到第二次执行incr_static(val1)
仿真中设置断点和查看变量
因为result是静态变量,所以此时result的值还是1
仿真中设置断点和查看变量
第二次执行完result=a+1
仿真中设置断点和查看变量
此时静态变量result的值变成了2
仿真中设置断点和查看变量

动态变量

在动态函数incr_dynamicresult = a + 1处打上断点,第一次执行
仿真中设置断点和查看变量
result为局部变量,此时值为0
仿真中设置断点和查看变量
执行完result = a + 1
仿真中设置断点和查看变量
局部变量result的值变成1
仿真中设置断点和查看变量
第二次执行incr_dynamic
仿真中设置断点和查看变量
执行到断点处
仿真中设置断点和查看变量
此时的result为动态变量,所以值为0
仿真中设置断点和查看变量

通过给静态变量动态变量断点,可以对比静态变量和动态变量的区别,也可以看出断点在的调试能力和控制程序执行流程方面非常方便,可以查看和追踪变量的变化。