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

设置断点和查看变量

  • 在软件执行过程中,通过设置断点可以查看在程序执行到断点处时变量数值
  • 设置断点可以便于查看软件程序(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
在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值