Thanh Vũ
11/26/2024, 4:38 AMMitch Bailey
11/26/2024, 5:55 AMcaravel/rtl/pads.v
file
sky130_ef_io__gpiov2_pad_wrapped X``_pad ( \
`MGMT_ABUTMENT_PINS \
`ifndef TOP_ROUTING \
.PAD(X), \
`endif \
.OUT(Y_OUT), \
.OE_N(OUT_EN_N), \
.HLD_H_N(loop_one_``X), \
.ENABLE_H(porb_h), \
.ENABLE_INP_H(loop_zero_``X), \
.ENABLE_VDDA_H(porb_h), \
.ENABLE_VSWITCH_H(loop_zero_``X), \
.ENABLE_VDDIO(CONB_ONE), \
.INP_DIS(INPUT_DIS), \
.IB_MODE_SEL(CONB_ZERO), \
.VTRIP_SEL(CONB_ZERO), \
.SLOW(CONB_ZERO), \
.HLD_OVR(CONB_ZERO), \
.ANALOG_EN(CONB_ZERO), \
.ANALOG_SEL(CONB_ZERO), \
.ANALOG_POL(CONB_ZERO), \
.DM(MODE), \
.PAD_A_NOESD_H(), \
.PAD_A_ESD_0_H(), \
.PAD_A_ESD_1_H(), \
.IN(Y), \
.IN_H(), \
.TIE_HI_ESD(loop_one_``X), \
.TIE_LO_ESD(loop_zero_``X) )
sky130_ef_io__gpiov2_pad_wrapped
is a wrapper for the io cell you’re using. The wrapper definition is in $PDK_ROOT/$PDK/libs.ref/sky130_fd_io/verilog/sky130_ef_io.v
but it looks to be a direct mapping.
So in answer to your question, I imagine that the circuit won’t work unless all the ENABLE
signals have the correct levels.
Don’t know if it will make much difference, but the external input is actually connected to the PAD
port. The PAD_A_ESD_0_H
signal is an internal connection to the PAD
through a small resistor.Thanh Vũ
11/26/2024, 6:14 AMMitch Bailey
11/26/2024, 6:44 AMINOUT_PAD
. ```X` refers to the first parameter of the macro, I think. It creates a unique connection from the outputs TIE_HI_ESD
and TIE_LO_ESD
of each io cell back to the inputs of that io cell.