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

Selftest is not supported on revC #151

Open
electroniceel opened this issue Aug 19, 2019 · 10 comments
Open

Selftest is not supported on revC #151

electroniceel opened this issue Aug 19, 2019 · 10 comments
Labels
selftest Applet: selftest

Comments

@electroniceel
Copy link
Member

Selftest can give false-positive results on revC, see for example https://twitter.com/szeloof/status/1161346534098833408

The main reason is probably that cmos inputs are left floating in high-z and their value is used for the test results. This seems to be a leftover from revA and revB which had hold circuits.

So selftest for revC has to be reworked to utilize the pullups/pulldowns.

For the pins-int test the internal pullups of the ice40 should be used. This is not yet supported in nmigen.

@whitequark
Copy link
Member

One problem is that there could actually be shorts on the side of pull drivers too.

@whitequark whitequark added the selftest Applet: selftest label Aug 19, 2019
@electroniceel
Copy link
Member Author

There could be shorts on the side of the pull drivers, there could also be a bridge over the 10k resistor, changing pullup/pulldown to push-pull.

Some of this can be detected on the other port utilizing the pins-loop and hoping that there is not the same error on the same pins.

But in the end you can detect all shorts with current measurement. This is why I wanted to have it on the test jig pcb.

@esden
Copy link
Member

esden commented Aug 25, 2020

Just for added information. I just ran into this issue too.

The pins-int selftest consistently results in:

E: g.applet.internal.selftest: self-test: FAIL
E: g.applet.internal.selftest: pins-int: fail high: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7

All other selftests pass. This is consistent on 3 revC1 boards I could get tested.

@FFY00
Copy link
Contributor

FFY00 commented Sep 17, 2020

Also ran into this in a new board, I had tested before with an older version and it passed.

I: g.device.hardware: device already has bitstream ID b690670e14e6d9e9ae51bd8ddae5ad4d
I: g.cli: running handler for applet 'selftest'
I: g.applet.internal.selftest: running self-test mode pins-int
I: g.applet.internal.selftest: running self-test mode loopback
E: g.applet.internal.selftest: self-test: FAIL
E: g.applet.internal.selftest: pins-int: fail high: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7

@whitequark
Copy link
Member

Yes, the selftest is completely broken on revC, please stop reiterating this over and over again. I should probably just remove it.

@attie
Copy link
Member

attie commented Nov 4, 2020

@whitequark can this be closed after 13a3509?

@whitequark whitequark changed the title False positive results in selftest Selftest is not supported on revC Nov 4, 2020
@whitequark
Copy link
Member

No, we still have to implement some form of selftest on revC. I've renamed the issue.

@TomKeddie
Copy link
Contributor

@whitequark would you like me to look at this? I think the first steps would be to get the existing tests to be sane on revC?

@rwhitby
Copy link
Contributor

rwhitby commented Feb 16, 2021

@TomKeddie I'd be happy to assist you with that if desired (not that I think you need assistance to do it, but two sets of heads and hands may useful).

@TomKeddie
Copy link
Contributor

@rwhitby I'll look at this toward the end of the week. I have some fixes already on a branch, I made some changes/hacks to find the shorts in the boards I built.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
selftest Applet: selftest
Projects
None yet
Development

No branches or pull requests

7 participants