如何在SystemVerilog任务中打印作为参数传入信号的层次化名称
Verilog任务优化:自动显示信号层次化名称
优化方案
把重复代码封装为带参数的可复用任务,借助Verilog系统函数自动获取信号的完整层次化名称,彻底摆脱硬编码信号名的繁琐。
可复用任务代码
task monitor_signal; ref logic sig; // 以引用方式传入信号,保留层次关联 begin @(sig); // $fullname返回信号的完整层次化路径 $display("Signal %s changed at time %t", $fullname(sig), $time); failed = 1; end endtask
调用方式
直接传入需要监控的目标信号即可,无需修改任务内部代码:
// 监控baud_rate_A monitor_signal(testbench.top.baud_rate_A); // 监控其他信号 monitor_signal(testbench.top.baud_rate_B); monitor_signal(testbench.top.data_bus);
关键说明
ref类型参数:传递信号时保留其层次化信息,确保$fullname能正确获取完整路径$fullname(sig):系统函数,返回传入信号的完整层次化名称(如testbench.top.baud_rate_A),替代硬编码的固定字符串- 复用性:无论监控多少个信号,只需调用任务并传入目标信号,自动适配打印内容
内容的提问来源于stack exchange,提问作者Magor Keszthelyi
相关产品推荐
相关产品推荐

