如何在系统verilog中声明它的文件之外的类中使用枚举类型

时间:2017-01-04 20:06:35

标签: verilog system-verilog enumerated-types

所以我在bool_struct.sv中有以下代码:

typedef enum {false=0, true=1} bool;
class my_bool_class;
    bool my_bool_value;

    function new (bool initial_bool_value)
        my_bool_value = initial_bool_value;
    endfunction

endclass

在checker.sv中,我想执行以下操作:

class checker;
    my_bool_class bool_class_handle = new(true)
endclass

我的问题是,这会编译吗?我想新调用中的“true”将超出typedef的范围,所以它不会。如何在新的工作呼叫中获得“真实”?

1 个答案:

答案 0 :(得分:1)

枚举类型的typedef声明所有标签以及同一级别的枚举(这就是为什么你不能在同一范围内声明两个带有重叠标签的不同枚举)。

您应该始终将typedef和类声明放在package中,然后import放在您要使用的包bool,{{1} },falsetrue

请参阅http://go.mentor.com/package-import-versus-include