首先需要清楚,在module、interface中声明的无论是方法还是变量,默认都是静态属性(static),这意味着module中的task、function默认是静态方法。同时,这些静态方法中的变量默认也是静态的,因此在调用它们时会遇到静态变量的存储共享,可能会出现不同线程在同一时间调用同一方法,继而引起结果干扰的问题。
关键词:
module,interface,task,function,dynamic,static
避坑指南:
module、interface中的方法在声明时建议添加automatic,避免可能会出现的存储共享的问题。
参考代码: sv_static_and_automatic.sv
仿真结果:
阅读手记: