• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

sv中$stack()的使用方法

这个系统函数在[IEEE]SystemVerilog.std.1800_2017里你是搜索不到的,但是你在SystemVerilog的环境中是可以使用的。
你可以使用$stack()这个系统函数来查看报错的文件层次,类似于python的trackback,可以帮助你定位异常问题,从而协助你进行debug,尤其是当出错的地方层次很深的时候。
使用参考:

begin
    if(exist_error) begin
        $display(...); // 打印debug信息
        $stack();
    end
end

这样在仿真日志里会出现:

#0 in \xxx_obj1::xxx_api1 at xxx_path/xxx_file1:line_num1
#1 in \xxx_obj2::xxx_api2 at xxx_path/xxx_file2:line_num2
#2 in \xxx_obj3::xxx_api3 at xxx_path/xxx_file3:line_num3
...

标号从下到上,即从大到小的顺序,依次追溯到$stack()函数被调用的位置,包含目标对象或模块、接口名称,所在路径代码文件以及在第几行都会给你列出来。然后根据此信息可以帮助你看到该行代码的层次,从而帮助你进行追溯调试。

posted on 2023-06-04 14:35  SOC验证工程师  阅读(330)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3