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()函数被调用的位置,包含目标对象或模块、接口名称,所在路径代码文件以及在第几行都会给你列出来。然后根据此信息可以帮助你看到该行代码的层次,从而帮助你进行追溯调试。
                    
                
                
            
        
浙公网安备 33010602011771号