Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reloading FPGA bitstream causes all outputs whose Vio is enabled to strongly drive high #552

Open
whitequark opened this issue Apr 4, 2024 · 4 comments
Labels
hardware Component: hardware revC Hardware revision: C

Comments

@whitequark
Copy link
Member

whitequark commented Apr 4, 2024

This unfortunately happens because the reset state for the FPGA is pull-high, which translates to DIR=H (B=A), where A is FPGA-side and B is DUT-side.

Solutions:

  1. Turn off Vio during FPGA reconfiguration and wait for the output cap to discharge before proceeding.
    • Pros: costs nothing.
    • Cons: slow, turns off DUT power which is undesirable, makes Vsense alert even less useful.
  2. Add pulldowns on Dxn nets.
    • Pros: preserves existing design as much as feasible.
    • Cons: another BOM line, @esden has 4000 revC3 PCBs.
  3. Switch to 74AXP1T45 and swap A/B.
    • Pros: improves performance of the device, doesn't add a BOM line.
    • Cons: @esden has ~2000-3000 boards worth of SN74LVC1T.
  4. Power gate the FPGA bank or the IO drivers
    • Pros: zero new BOM lines, one added part
    • Cons: really awkward solution, may have unintended consequences

Swapping A/B on SN74LVC1T isn't feasible since this level shifter is asymmetric.

We have to implement (1) anyway to handle the existing devices; we must implement (2) or (3) for revD. What is not clear is whether or when revC4 will be designed, tested, and put into production.

@whitequark whitequark added revC Hardware revision: C hardware Component: hardware labels Apr 4, 2024
@smunaut
Copy link
Contributor

smunaut commented Apr 9, 2024

You can also power gate the VCCIO of the FPGA bank. Either using a power switch or having two 3v3 rail ( fed by another TLV75533PDRVR with a different EN line). Not saying it's a great option, but it's a fourth option.

Or shutdown the 3v3 to the IO drivers actually, that will also make them hi-z.

Either way, it's a bit similar to (2) since you can keep most of the design, but adds at least 1 part (albeit an already used one) but you can't keep the PCBs.

@whitequark
Copy link
Member Author

Thanks, added.

@nekrondev
Copy link

Many thanks for building and maintaining glasgow... I've got a question regarding this issue ... how practically does this affect using the current device revision (C3)? I'm new into this and can't reason about it if it's only an issue when there is some edge case hacking where you need to power the DUT or does it interfere using glasgow with some common setup? As this hasn't been detected during the different PCB version integration tests I guess it should be a minor concern, right?

@whitequark
Copy link
Member Author

@nekrondev We'll deploy a firmware based fix that only has trivial effect on usability of device (slight delay added to firmware reload).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hardware Component: hardware revC Hardware revision: C
Projects
None yet
Development

No branches or pull requests

3 participants