学霸笔记5——static automatic 的“是与非”
写在前面:

针对以上内容我们进行简单的代码练习,以做到更深入的了解其中含义,话不多说,直接上号!!!
练习主代码:

代码分析:


??????????????????????????????????????????
上边的解析是否可以帮助你理清前5个时钟周期的运行顺序呢?在理解仿真运行的过程中,不知你是否会有以下疑问:
在1000ns时,进程1temp被赋值 2‘b01,在2000ps时,进程2temp被赋值 2‘b10, 那5000ps时进程1display 中temp打印的值究竟是多少?6000ps时进程2display 中temp打印的值究竟是多少?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

为什么会使这样呢?

=============================static终止线===================================
那有什么方法可以使最后5000ps时temp的输出值为进程1的输入值1,6000ps时temp的输出值为进程2呢?不妨先分析一下,上边在5000ps和6000ps输出一样的结果,原因是两个进程公用了同一个储存空间,使得后边进来的值会一直将前边的值覆盖掉,那是不是给每个进程的值都有自己的进程空间,就会避免这样的情况发生,赶快尝试一下吧!
============================automatic起始线================================
将静态方法修改为动态方法

仿真结果:
将task声明为automatic,得到预想中的答案,automatic task为每一个进程中的temp都开辟了临时的储存空间,但是它的生命周期只局限于从task开始执行到结束。

可有曾想过,如果不将task定义为automatic,只将task内部的temp变量声明为automatic是不是最后得到的结果和将task声明为automatic一样呢?
各位小伙伴赶快动手试一下吧!!!
注:优秀验证学员随堂笔记,已经征求到学生的同意,会持续给牛友们分享!
大家看完记得 一键三连!多多支持
查看10道真题和解析