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