Specman e编译错误:没有这样的变量' XXX'

时间:2014-09-16 07:49:52

标签: specman e

我在函数my_reg_file中定义变量post_access()(此函数是用于实现副作用的vr_ad挂钩):

//file1.e
extend TIMER_LOAD_0 vr_ad_reg {
    post_access(direction : vr_ad_rw_t) is first {
        var my_reg_file : TIMER vr_ad_reg_file = 
        get_parents()[0].as_a(TIMER vr_ad_reg_file);

        ....  

    };
};

然后我将此函数扩展到另一个e文件中:

//file2.e
extend TIMER_LOAD_0 vr_ad_reg {
    post_access(direction : vr_ad_rw_t) is also {
        start my_reg_file.some_tcm();
    };
};

我收到编译错误:

*** Error: No such variable 'my_reg_file'

为什么post_access()无法识别变量my_reg_file?谢谢你的帮助。

注意:file1.e在file2.e

之前导入

2 个答案:

答案 0 :(得分:3)

my_reg_file是该特定方法层的局部变量,不与其他方法层共享。 我认为方法层之间进行通信的唯一方法是: 一个。使用结果保存变量,可以从任何方法层访问。 湾使用结构成员。

答案 1 :(得分:3)

另一个似乎更好的解决方案是为这个子类型添加一个单独的方法,例如get_my_reg_file(),它将返回所需的值,然后在需要此值的位置调用此方法,而不是使用局部变量。