Xiaochen Ni
05/24/2024, 11:49 PMTim Edwards
05/25/2024, 1:49 AMtnt
05/25/2024, 6:49 AMinp_dis
has been recommended to me to avoid the input buffer ending up using power if the input is in the middle range.Mitch Bailey
05/25/2024, 12:39 PMMitch Bailey
05/25/2024, 12:42 PMXiaochen Ni
05/26/2024, 5:21 PMXiaochen Ni
05/29/2024, 11:02 PMMitch Bailey
05/30/2024, 2:15 AMenable_vddio
high (or linked to chip reset), but if you’re just using the gpio for analog, that may not be necessary.
My (rather uninformed) suggestion is that if you plan to use any configuration other than something mimicking the standard caravel implementation, that you verify with simulation.Tim Edwards
06/01/2024, 1:30 AMverilog/rtl/pads.v
, although it still needs some interpretation:
.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) )
"CONB_ZERO" means the signal is tied to "LO" on a digital 1.8V "conb_1" cell from the standard cell set.
"CONB_ONE" means the signal is tied to "HI" on a "conb_1" cell.
Signals on net "loop_one" are getting set by the output TIE_HI_ESD, which is an output from the pad providing a logic high value in the 3.3V domain.
Signals on the net "loop_zero" are getting set by the output TIE_LO_ESD, which is an output from the pad providing a logic low value in the 3.3V domain.
Net "porb_h" is an output from the Power-on-reset circuit (in the 3.3V domain).
Signals with no connection ()
are left unconnected.Xiaochen Ni
06/01/2024, 5:44 PMcaravel/verilog/dv/caravel/defs.h
.
My only confusions come from the ENABLE_
and HLD_H_N
signals, since I don't see these on the gpio wrapper. Is it safe to assume I can ignore these?Tim Edwards
06/03/2024, 2:50 PM_H
are 3.3V domain and to set them to a constant value, you need to loop back a signal to TIE_HI_ESD or TIE_LO_ESD (which are in the vddio 3.3V domain). Some of these connections are made inside the wrapper cell, so if you do not see the signal exported from the wrapper, then you don't need to handle it yourself.tnt
06/03/2024, 2:51 PMtnt
06/03/2024, 2:52 PMMitch Bailey
06/03/2024, 3:30 PMwire [`OPENFRAME_IO_PADS-1:0] loop0_gpio; // Internal loopback to 3.3V domain ground
wire [`OPENFRAME_IO_PADS-1:0] loop1_gpio; // Internal loopback to 3.3V domain power
tnt
06/03/2024, 3:33 PM_H
signals at all.Mitch Bailey
06/03/2024, 3:42 PMopenframe_project_wrapper
, it will be integrated with chip_io_openframe
. While openframe_project_wrapper
does have access to many more of the gpio connections, as @Tim Edwards says, you do not have access to all of the gpio connections. The only signals you need to worry about are those available in the openframe_project_wrapper
.
On the other hand, if you are using the gpio cells to add pads internal to the user area for a bare chip, you will need to handle all the 1.8V and 3.3V connections.