源自微信公众号 “数字芯片实验室”
task和function之间有什么区别?Verilog中的task和function都可以实现常用功能,有助于代码的清晰和可维护,避免在不同位置复制大量代码。 本质上,task和function都提供了在模块中不同位置重用相同代码段的“子程序”机制。
但是,task和function在以下方面有所不同:
![7a0223bfd8bcc02e888a54f69d1c0f58.png](https://i-blog.csdnimg.cn/blog_migrate/b26fbbd17d4449e122439cee936a4a6d.jpeg)
静态task和动态task有何不同?动态task在关键字task和名称之间有automatic关键字。 动态task在每个task调用期间,自动分配变量内存空间,即每次调用都不会覆盖这些值。没有automatic关键字,变量是静态分配的,这意味着这些变量在不同的task调用之间共享,因此可以被覆盖。
以下示例说明了关键字automatic的效果。 这是一个不可综合的代码。
![f156bd94274efff33ae878342a2c8ef4.png](https://i-blog.csdnimg.cn/blog_migrate/ec682312fb5b75e52b93eb8172a35f9f.jpeg)
在上面的示例中,my_value是task中的局部变量
每当调用此task时,输入in_value在5个仿真时间单位之后赋值给局部变量。
在initia