gpt4 book ai didi

interface - 系统 Verilog : enum inside interface

转载 作者:行者123 更新时间:2023-12-03 08:06:32 25 4
gpt4 key购买 nike

我有一个界面:

interface my_intf();
typedef enum logic [1:0] {
VAL_0 = 2'b00,
VAL_1 = 2'b01,
VAL_2 = 2'b10,
VAL_3 = 2'b11
} T_VAL;
T_VAL val;
endinterface

我的模块使用这个接口(interface):

my_intf intf;

问题是为 val 分配一个来自 enum 的值。

我可以将其分配为:

intf.val = 0;(并收到警告或错误)

但不是:

intf.val=VAL_0;

也不是

intf.val = my_intf.T_VAL.VAL_0

我如何克服这个问题?

最佳答案

我之前只处理过包含枚举的包,并避免使用接口(interface)。这就是我使用包的方式。在要使用它的模块定义之前导入包:

import my_intf_pkg::* ;

module bla(
output my_val_t intf
);

initial begin
intf = VAL_0 ;
end

endmodule

包含枚举的包可能如下所示:

package my_intf_pkg;
typedef enum logic [1:0] {
VAL_0 = 2'b00,
VAL_1 = 2'b01,
VAL_2 = 2'b10,
VAL_3 = 2'b11
} my_val_t;
endpackage : my_intf_pkg

请注意 VAL_0 等是全局的,与 T_VAL typedef 无关。因此,我经常让它们更独特一些,包括名称中的 typedef。 T_VAL_0 用于 T_VAL 类型定义等

Here is an example on EDAplayground .

关于interface - 系统 Verilog : enum inside interface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22190165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com