Estoy intentando crear un módulo de controlador para la interfaz SMI en mi ethernet PHY. Mi módulo de nivel superior contiene los siguientes puertos con eth_mdio marcado como inout.
module top
(
input clk_100,
input cpu_rst_n,
output eth_mdc,
inout eth_mdio,
output eth_rstn,
inout eth_crsdv,
inout eth_rxerr,
inout [1:0] eth_rxd,
output eth_txen,
output [1:0] eth_txd,
output eth_clkin,
inout eth_intn,
input [15:0] sw,
output [15:0] led,
input btnc
);
...
smi smi_inst
(
.clk_50(clk_50),
.rst_n(rst_n),
.valid(read_reg),
.write(0),
.phyaddr(0),
.register(sw[4:0]),
.read_value(led),
.eth_mdc(eth_mdc),
.eth_mdio(eth_mdio)
);
endmodule
Dentro del módulo superior, creo una instancia de un submódulo llamado smi que tiene los siguientes puertos.
module smi
(
input clk_50,
input rst_n,
output ready,
input valid,
input write,
input [4:0] phyaddr,
input [4:0] register,
input [15:0] write_value,
output [15:0] read_value,
output reg eth_mdc,
inout eth_mdio
);
Dentro de smi asigno eth_mdio como sigue ...
assign eth_mdio = state == STATE_IDLE ? 1'b0 : (state == STATE_READ ? 1'bz : send_buffer[64]);
Cuando voy a sintetizar el diseño, aparece la siguiente advertencia crítica ...
[Synth 8-5744] El búfer de entrada no se crea en la parte superior del módulo superior para el pin eth_mdio, otras conexiones pueden no tener una conexión de búfer ["/home/chase/workspace/EthernetTest/src/top.v":3]
¿Qué está causando esto y cómo puedo solucionarlo? ¿Cómo puedo pasar un inout a través de la jerarquía?