1、SystemVerilog编码层面提速的若干策略介绍
频繁的函数/任务调用会增加开销
比如:用foreach遍历方式计数(foreach有内置函数),不如单独的计数器!如下代码:
这样写比较慢:
这样写比较快:
对于简单调用,编译器可以将函数/任务内联以避免堆栈帧操作,但复杂调用因为编译器性能考虑原因通常不会内联,每个函数/任务都将数据引用或完整的数据副本推送到调用堆栈,并处理任何指定的返回。如此就会增加仿真时间了。如果这个函数/任务本身又被循环掉用,时间就会浪费更多!
上面的反例代码,通过foreach遍历来统计mad_q中的元素数,每次都需要掉用一次内部的内置函数,将会慢于一个独立的计数器!
原作者:作者:Jerry 杰瑞IC验证
更多回帖