我有一个带有多个input logic
和output logic
端口的模块,一个端口应该是input foo::bar
,其中 foo 是一个包,而 bar 是一个枚举。但是,我省略了input
,所以它只是简单的foo::bar
。然而,它仍然可以在模拟中工作(测试通过,您可以在波形上看到该值正在正确传输)。
从LRM,我们有:
inout_declaration ::=
inout port_type list_of_port_identifiers
input_declaration ::=
input port_type list_of_port_identifiers
| input data_type list_of_variable_identifiers
output_declaration ::=
output port_type list_of_port_identifiers
| output data_type list_of_variable_port_identifiers
interface_port_declaration ::=
interface_identifier list_of_interface_identifiers
| interface_identifier . modport_identifier list_of_interface_identifiers
ref_declaration ::=
ref data_type list_of_port_identifiers
port_type ::=
[ net_type_or_trireg ] [ signing ] { packed_dimension }
它显然不是 inout_dec、input_dec、output_dec 或 ref_dec。深入研究 LRM,net_type_or_trireg
issupply0 | supply1 | tri | triand | trior | tri0 | tri1 | wire | wand | wor
或tri
,而不是那些。
它可能是一个 interface_port_dec 吗?嗯,interface_identifier ::= identifier
和enum_identifier ::= identifier
。但是,肯定 := 不是对称和传递的,所以interface_identifier := enum_identifier
.
我在这里想念什么?