Jorge Marin
12/06/2023, 1:54 PMMitch Bailey
12/06/2023, 2:27 PMTim Edwards
12/06/2023, 2:39 PMio_oeb
and io_out
signals for these pins? If you left them floating, then do not use mode GPIO_MODE_USER_STD_ANALOG
, which could fail to turn off the digital output buffer, but use GPIO_MODE_MGMT_STD_ANALOG
instead.Jorge Marin
12/06/2023, 2:41 PMJorge Marin
12/06/2023, 2:59 PMJorge Marin
12/06/2023, 3:06 PMJorge Marin
12/13/2023, 2:18 PMJorge Marin
12/13/2023, 2:23 PMTim Edwards
12/13/2023, 2:27 PMJorge Marin
12/13/2023, 3:15 PMMitch Bailey
12/13/2023, 3:38 PMMGMT
mode or USER
mode? For USER
mode, the rtl for caravel/rtl/gpio_control_block.v
has
assign pad_gpio_outenb = (mgmt_ena) ? ((mgmt_gpio_oeb == 1'b1) ?
gpio_outenb : 1'b0) : user_gpio_oeb;
This selects io_oeb
which if unconnected, might result in leakage.
If it’s related to gpio 0-6, the user_project_wrapper io_out[6:0] and io_oeb[6:0] signals are buffered which if unconnected, might also result in leakage whether in USER
mode or MGMT
mode.Jorge Marin
12/13/2023, 3:44 PMTim Edwards
12/13/2023, 4:49 PMMitch Bailey
12/13/2023, 5:02 PMgpio_control_block
is synthesized as a soft macro in caravel_core
. The schematic for the underlying gpio block itself is available at https://github.com/d-m-bailey/sky130_fd_io.git
I don’t know if that provides you with enough information or not.Jorge Marin
12/13/2023, 5:30 PMTim Edwards
12/13/2023, 5:31 PMJorge Marin
12/13/2023, 5:31 PMTim Edwards
12/13/2023, 5:33 PMMitch Bailey
12/13/2023, 5:56 PMtop_gpiov2
is the base gpio. But again, that does not include the gpio_control_block
which interfaces with the user_project_wrapper
.Jorge Marin
12/13/2023, 6:16 PMTim Edwards
12/13/2023, 6:30 PMJorge Marin
12/13/2023, 6:52 PMTim Edwards
12/13/2023, 7:52 PMVDDIO
to 5V:
(1) The FTDI chip continues to be powered to 3.3V, not VDDIO
. Any of pins GPIO 1 to 4, if they attempt to output a "high" signal at 5V, will dump current directly into the FTDI. Check that the lines are grounded, mainly GPIO 1 (SDO), which is an output from Caravel. I don't think this would be an issue.
(2) VDDA
continues to be connected to 3.3V as well. Nothing on the board other than some analog circuits inside the GPIO run on the VDDA
domain, and they're all well isolated. It shouldn't be a problem.
(3) The oscillator chip and the SPI flash both run on VDDIO
, and I don't think either of them is rated for 5V. I'm not sure how you verified that the SPI flash is being supplied by 3.3V, because the PCB schematic doesn't show it that way.
Your observation of problems occurring at around 3.8V is consistent with the VDDIO
supply dumping directly into the 3.3V supply somewhere, though, since that's about a diode drop above 3.3V. Right now I can't see a clear mechanism, unless something is going on with VDDA
that I'm not aware of.italo
12/13/2023, 8:13 PMTim Edwards
12/13/2023, 11:05 PMvddio
network is connecting to the top and right sides. I think all of those pins are shorted internally to the FTDI, meaning that cutting the trace under the header is not separating the domains. You would need to correct it by cutting the trace to the FTDI on the lower left (relative to the screenshot; the FTDI is oriented upside down) and reconnecting it manually to vddio
. (attn:@Andrew Wright / @jeffdi / @Passant / @mshalan). I need to review the FTDI pins before I'm sure of that answer, though.Tim Edwards
12/13/2023, 11:15 PMJorge Marin
12/13/2023, 11:33 PMTim Edwards
12/14/2023, 2:19 PMTim Edwards
12/14/2023, 4:33 PMvddio
wire ends at the M.2 connector and is not directly connected to the rest of the network to the right of it. So the board is not mis-labeled.
That means that you were correct that cutting J5 will isolate just the Caravel chip's vddio
from the rest of the regulated 3.3V network.
So I just ended up back where you started, which is that I don't know where vddio
could be dumping current into any 3.3V domain.
The only think I can think of is what I wrote originally as (2), which is that maybe vdda
is somehow connected to vddio
. It's a long-shot idea, but maybe cut vdda
from the 3.3V net and connect it to vddio
instead?Tim Edwards
12/14/2023, 4:41 PMJorge Marin
12/14/2023, 7:18 PMJorge Marin
12/14/2023, 7:22 PMJorge Marin
12/14/2023, 8:01 PMTim Edwards
12/14/2023, 8:33 PMvddio
domain. I was able to get vddio
up to 5V and the processor kept running and the 3.3V output of the regulator remained constant. The vddio
line was stable at 5V. I was running the blink test and the LED kept blinking, so the GPIO pad was still operating normally, as was the internal digital at 1.8V.Jorge Marin
12/14/2023, 8:43 PMTim Edwards
12/14/2023, 8:47 PMitalo
12/15/2023, 7:35 PMTim Edwards
12/15/2023, 7:56 PMitalo
12/21/2023, 7:22 PMTim Edwards
12/21/2023, 7:26 PMitalo
12/21/2023, 7:29 PMTim Edwards
12/21/2023, 7:30 PMitalo
12/21/2023, 7:46 PMJorge Marin
12/21/2023, 7:50 PMTim Edwards
12/22/2023, 1:00 AMitalo
12/27/2023, 7:03 PMPassant
12/27/2023, 7:30 PMitalo
12/27/2023, 7:34 PMMitch Bailey
12/28/2023, 12:52 AMgpio | in | out | analog | oeb min/sim/max | Message
0 | | | | / / |
1 | | | | / / |
2 | | | | / / |
3 | | | | / / |
4 | | | | / / |
5 | | | | / / |
6 | | | | / / |
7 | 4 | | | / / | Warning: oeb expected high for input only
8 | 4 | | | / / | Warning: oeb expected high for input only
9 | 4 | | | / / | Warning: oeb expected high for input only
10 | 4 | | | / / | Warning: oeb expected high for input only
11 | | | | / / |
12 | | | 4628 | / / | Warning: oeb expected high for analog
13 | | | 8468 | / / | Warning: oeb expected high for analog
14 | | | 8468 | / / | Warning: oeb expected high for analog
15 | | | | / / |
16 | | | 4628 | / / | Warning: oeb expected high for analog
17 | 4 | | | / / | Warning: oeb expected high for input only
18 | 4 | | | / / | Warning: oeb expected high for input only
19 | 4 | | | / / | Warning: oeb expected high for input only
20 | 4 | | | / / | Warning: oeb expected high for input only
21 | | | | / / |
22 | | | | / / |
23 | | | | / / |
24 | | | | / / |
25 | | | | / / |
26 | | | | / / |
gpio defaults report (gpio numbering corresponds to layout where 15-25 are missing)
USER_CONFIG_GPIO_5_INIT 13'h0000
USER_CONFIG_GPIO_6_INIT 13'h0000
USER_CONFIG_GPIO_7_INIT 13'h0402
USER_CONFIG_GPIO_8_INIT 13'h0402
USER_CONFIG_GPIO_9_INIT 13'h0402
USER_CONFIG_GPIO_10_INIT 13'h0402
USER_CONFIG_GPIO_11_INIT 13'h000a
USER_CONFIG_GPIO_12_INIT 13'h000a
USER_CONFIG_GPIO_13_INIT 13'h000a
USER_CONFIG_GPIO_14_INIT 13'h0000
USER_CONFIG_GPIO_26_INIT 13'h000a
USER_CONFIG_GPIO_27_INIT 13'h000a
USER_CONFIG_GPIO_28_INIT 13'h0402
USER_CONFIG_GPIO_29_INIT 13'h0402
USER_CONFIG_GPIO_30_INIT 13'h0402
USER_CONFIG_GPIO_31_INIT 13'h0402
USER_CONFIG_GPIO_32_INIT 13'h000a
USER_CONFIG_GPIO_33_INIT 13'h000a
USER_CONFIG_GPIO_34_INIT 13'h000a
USER_CONFIG_GPIO_35_INIT 13'h000a
USER_CONFIG_GPIO_36_INIT 13'h0000
USER_CONFIG_GPIO_37_INIT 13'h0000
First, 13'h0000
is probably not what you want. This has both input and output enabled (actually, `DM`’s are all 0 so output and input [edit] is effectively disabled). See attachment.
13'h000a
and 13'h0402
are user mode settings which may result in leaks because io_out
and io_oeb
are not connected.
You can safely use the mgmt mode counter-parts for user analog and user input modes without worrying about the io_out
and io_oeb
connections.
13'h000b
for analog and unused gpio and
13'h0403
for input.
Also gpio 14 has connections at the analog pin, but is configured as 13'h0000
.Tim Edwards
12/28/2023, 2:45 AMvdda1
should not be shorted to ground. By "continuity", you mean that you are seeing < 1 ohm between vdda1
and ground?Tim Edwards
12/28/2023, 3:09 AMvdda1
to short to ground would be if the level shifter failed for some reason; say, that vccd1
was not connected; then the inverter after the level shifter could be turned completely off, the value at its output could be mid-range, causing the large inverter to crowbar. The only other mechanisms would be latchup (but I don't see any part of the design that would tend to cause latchup) or clamping (unlikely unless you have wild spikes on your vdda1
supply).italo
12/28/2023, 3:23 PMTim Edwards
12/28/2023, 3:31 PMvccd1
connected?italo
12/28/2023, 3:36 PMTim Edwards
12/28/2023, 3:39 PMvccd1
is providing the 1.8V power supply to the level shifters. Without that power supply, your level shifters will fail and you will get exactly what you observe---A crowbar current on all the level shifter outputs which will effectively short vdda1
to the tune of something in the range of tens of ohms, for which your 10 ohm measurement sounds about right.Tim Edwards
12/28/2023, 3:40 PMPassant
12/28/2023, 3:56 PMitalo
12/28/2023, 4:58 PMTim Edwards
12/28/2023, 7:19 PMvdda1
then it will remain at ground unless something inside your circuit is charging it through a conductive path. Outside of the user project, all of the vdda*
domains are isolated from all other supplies.Nelson Salvador
12/28/2023, 7:40 PMTim Edwards
12/28/2023, 10:56 PMvdda1
and vdda2
would act like that if not connected to anything in the user project---they would jump up to some low voltage due to capacitive coupling, and eventually drift to zero from leakage through the clamp circuitry.Jorge Marin
12/29/2023, 10:56 AMMitch Bailey
12/29/2023, 11:29 AMuser_analog_project_wrapper
?Jorge Marin
01/02/2024, 8:03 AMMitch Bailey
01/02/2024, 8:59 AMsch
file.Jorge Marin
01/03/2024, 1:32 PMNelson Salvador
01/19/2024, 7:56 PMJorge Marin
01/26/2024, 12:24 PMTim Edwards
01/26/2024, 2:28 PMvdda1
vs. the side with vdda2
?Tim Edwards
01/26/2024, 2:35 PMvddio = 3.3V
and slowly ramp it up and figure out at what value of vddio
the failure occurs.
Most of the circuit pins are analog pins and have no path to any of the power supplies. I think it most likely that issues must occur on the GPIO pins. The GPIO pins are, of course, supposed to operate up to 5.5V without any issue. But there are many connections into each GPIO pad, and just because I can't think of any mechanism by which a 5V VDDIO would cause a GPIO pad to behave differently doesn't mean that there isn't such a mechanism. If there is one, though, it should be observable on any board with any chip.Nelson Salvador
01/31/2024, 1:19 PMNelson Salvador
01/31/2024, 1:38 PMTim Edwards
01/31/2024, 1:38 PMJorge Marin
01/31/2024, 1:43 PMTim Edwards
01/31/2024, 1:54 PMJorge Marin
01/31/2024, 1:58 PMJorge Marin
01/31/2024, 2:00 PMJorge Marin
01/31/2024, 2:49 PMTim Edwards
01/31/2024, 2:55 PMNelson Salvador
01/31/2024, 3:11 PMJorge Marin
01/31/2024, 3:16 PMJorge Marin
01/31/2024, 3:18 PMTim Edwards
01/31/2024, 3:33 PMJorge Marin
01/31/2024, 3:44 PMTim Edwards
01/31/2024, 7:04 PMJorge Marin
01/31/2024, 7:09 PMNelson Salvador
01/31/2024, 7:30 PMTim Edwards
01/31/2024, 7:49 PMJorge Marin
01/31/2024, 8:07 PMTim Edwards
01/31/2024, 8:16 PMJorge Marin
01/31/2024, 8:18 PMTim Edwards
01/31/2024, 8:21 PMMitch Bailey
02/01/2024, 12:34 AMDM[2:0]
not 000
and INPUT_DISABLE
low), then you might see increased leakage from VDDIO
as you ramped the voltage. You could try tying all the unused gpio pads to VSS
if they aren’t already.
I’ll try to run CVC-RV with VDDIO=5V
and VDDA*=3.3V
and see what’s flagged.Mitch Bailey
02/01/2024, 12:57 AMMitch Bailey
02/01/2024, 1:24 AMTim Edwards
02/01/2024, 1:57 AMVDDA
to 5V as well.
I don't think the reset pad should be an issue. The only thing in the vccd domain in that pad is the enable_vddio
signal, which should be going to some kind of level shifter. Would CVC flag a level shifter?Mitch Bailey
02/01/2024, 2:06 AMTim Edwards
02/01/2024, 2:11 AMMitch Bailey
02/01/2024, 2:13 AMTim Edwards
02/01/2024, 2:18 AMsky130_fd_io__xres4v2_in_buf
and is the "LV" block in the block diagram, but the whole I/O pad is rated for 5.5V operation, so I'm pretty sure it's all correct.Tim Edwards
02/01/2024, 2:39 AMTim Edwards
02/01/2024, 2:09 PMNelson Salvador
02/01/2024, 3:47 PMJorge Marin
02/01/2024, 3:51 PMTim Edwards
02/01/2024, 3:55 PMNelson Salvador
02/01/2024, 5:57 PMJorge Marin
02/05/2024, 3:56 PMTim Edwards
02/05/2024, 5:04 PMJorge Marin
02/07/2024, 2:19 PMNelson Salvador
02/07/2024, 3:09 PMJorge Marin
02/08/2024, 6:14 PMJorge Marin
02/08/2024, 6:16 PMTim Edwards
02/08/2024, 6:29 PM