-
Notifications
You must be signed in to change notification settings - Fork 6
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
HDL verification #24
Comments
nope, I didn't. |
No. We are scrambling to get things to work on the ZC706 before the deadline, lots of difficult problems appeared when we tried to run non-trivial kernels. |
Could you publish PDF schematics (we don't have Windows machines or Altium, and the online viewer is a bit unwieldy), and a machine-readable version of the FPGA pin assignments? |
Thx |
What is the purpose of the PL watchdog? The PL is generally quite well-behaved, it's the PS that is often troublesome. |
Table on Sheet 7 says " 1 | 1 => SD Card (not on board)", but now we have a SD card. |
Clock-capable EEM pins (indexed 0) must go to CC pins! |
@filipswit It would be better to tag a commit and make a (preliminary) release and post PDF there. It won't clutter up the repository (which can significantly increase in size due to many binary files) as PDF is an output file not a source. We follow this approach in other Sinara repositories. |
I suggest connecting RGMII to the PS (MIO). We have a driver for it so we might as well use it; and other Zynq code (e.g. some people love embedded Linux) also typically expects the PS Ethernet controller. |
I'd love to have Ethernet on the RJ45 in addition to the standard 4 SFPs. As an example use case: it's been an ambition of ours for a while to have a feature which lets us stream out diagnostic data via ethernet. e.g. ADC traces to implement scope-like functionality. Would be great to have this on satellites while still maintaining our 3 downstream DRTIO ports. |
I2C can go to the PS so we can autodetect the cards without any gateware programmed (@jordens might like this). Many of the other GPIO signals currently in PL bank 13 (fan, pushbutton, error LED, maybe some of the user LEDs, etc.) can go to the PS as well, but definitely not the WRPLL I2C. The Zynq architecture is PS-centric (for better or worse, IMO mostly the latter), and the card should reflect that. Note: if we need to free resources, the QSPI NOR flash can go. The SD card works well here (both r+w) and we don't currently plan to use the flash at all. |
@filipswit Moreover, EEMx signals should be in the same bank. Remember when changing CC pins assignments. |
Why do we have an EEPROM (IC8) with a dedicated I2C bus? |
@sbourdeauducq Ethernet is routed to PL for flexibility. The embedded MAC can talk to it via EMIO easily. |
I2C goes to PL for flexibility. We had issues with PS I2C reliability and had to use IPcore instead. But it was an issue with early silicon versions. |
It's more a compromise than "flexibility": This requires the gateware to be programmed for Ethernet to work, and then we cannot download gateware from the network during boot, for example.
PS peripherals are generally garbage indeed, but in the case of I2C I think we can use the MIO in GPIO mode and bit-bang from software. That should work around the idiocy built into the PS I2C controller. If you're worried we could demonstrate that on a devkit. |
I'm a little skeptical of the analog hack that involves AC coupling of the fan PWM signal. Has this been tested before? |
Don't we have the same I2C bug with the FTDI chip that caused contention on Kasli v2? |
The SRST signal absolutely needs to go on the FTDI chip GPIO directly, with a configuration that is strictly identical to a known-good programming adapter. Controlling it via FTDI I2C, switches and expanders in OpenOCD (or worse, Vivado, which already crashes every 15min when connected to a Zynq device) will be an absolute disaster and result in insane levels of frustration. For example, SRST control mostly works with the Olimex ARM-USB-TINY-H, but I could not get it to work with the internal JTAG module of the ZC706. Note that even with SRST control, there are still plenty of PS JTAG bugs and weird hardware states that require a power cycle to get out of. Even if we do manage to get the FTDI chip and the other I2C devices to behave, SRST-on-I2C would create one more such state where the Zynq chip locks up the I2C bus and control cannot be recovered as the programmer needs to pulse SRST to access the Zynq. |
And, someone should check, but I think that if you do not send a SRST pulse (constant level is not sufficient) then the ARM cores do not appear on the JTAG chain, only the PL does. So this signal is really important. |
SRST also needs to be exposed on J8. |
Nitpick: do we need a "general purpose pushbutton"? Kasli doesn't have one and there's no use case for it AFAIK. |
What about using the DRTIO aux channel for this? |
@dnadlinger but I believe the idea was to keep things distributed to avoid bottlenecks of doing everything through the master |
I recently discussed this with @pmldrmota, as he is looking into this with our summer student Miray. Basically, using the aux channel would be the preferred solution if we can get the "relay" bandwidth on the root of the tree, i.e. the core device, high enough (some dozen Mb/s to Ethernet) without interfering with kernel RPCs too much. If that turns out to be hard (which it might well on or1k), putting Ethernet on the satellites would be a "scalable" fallback option. |
I can remove it or connect to PS
I can remove it
It's a copy from Kasli, so I assume it works.
What kind of bug?
Ok will swap it from I2C expander to FTDI GPIO.
I thought might be useful. Will be removed. |
There are some PS states which are unrecoverable without a power cycle (and some include JTAG breakage). I don't know if using the POR signal instead of a power cycle would work. Maybe it is worth keeping the watchdog as an option that can pulse POR, with an easy option to disable it (e.g. jumper or solder bridge) so it does not get in the way of early development and/or can be permanently disabled if it causes trouble.
OK.
AFAIK nobody tested it.
Make sure this matches a layout that OpenOCD and - if possible - Vivado already supports. |
AFAIK nobody tested it.
We tested it at CTI during Kasli v2.0 tests. It works fine.
niedz., 26 lip 2020, 13:10 użytkownik Sébastien Bourdeauducq <
[email protected]> napisał:
… What is the purpose of the PL watchdog? The PL is generally quite
well-behaved, it's the PS that is often troublesome.
I can remove it or connect to PS
There are some PS states which are unrecoverable without a power cycle
(they include JTAG breakage). I don't know if using the POR signal instead
of a power cycle would work. Maybe it is worth keeping the watchdog as an
option that can pulse POR, with an easy option to disable it (e.g. jumper
or solder bridge) so it does not get in the way of early development and/or
can be permanently disabled if it causes trouble.
Also, keep in mind that loading a program into the Zynq from JTAG (PS+PL)
takes dozens of seconds during which the Zynq chip is frozen, and if you
pulse POR during that time then it won't work. Booting it from the SD card
is also not instantaneous, and a POR pulse will interrupt the boot process.
Any watchdog circuit must be designed accordingly.
Do we need the DS2411R identifier device when we can get I2C EEPROMs with
a unique ID burned in instead?
I can remove it
OK.
I'm a little skeptical of the analog hack that involves AC coupling of the
fan PWM signal. Has this been tested before?
It's a copy from Kasli, so I assume it works.
AFAIK nobody tested it.
Don't we have the same I2C bug with the FTDI chip that caused contention
on Kasli v2?
What kind of bug?
sinara-hw/Kasli#78 <sinara-hw/Kasli#78>
he SRST signal absolutely needs to go on the FTDI chip GPIO directly,
Ok will swap it from I2C expander to FTDI GPIO.
Make sure this matches a layout that OpenOCD and - if possible - Vivado
already supports.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#24 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AF3AQXFUT5PADEHNZ2BZOS3R5QFL3ANCNFSM4PESVWCQ>
.
|
Schematics and actual pin assignment: |
Which OpenOCD cable file should I use to set up SRST? |
How is the watchdog getting disabled during JTAG programming (which takes more than 700ms)? If there are too many issues with this watchdog chip and associated circuitry (IC29A, IC29B, C75...), we might as well remove them, simply keeping IC30. Also, remove PB2 (oftentimes, ARTIQ boards are used remotely without physical access to pushbuttons) and connect I2C_exp_POR to MR# of IC30. I suggest connecting I2C_exp_POR to a FTDI GPIO directly. Otherwise, the Zynq may lock up the I2C bus (all it takes is holding SCL or SDA low), which is a common situation, and then we can't POR it to recover control.
IC30 is only monitoring 3.3V, and 3.3V comes before VCCDDR according to the table on page 14. Isn't VCCDDR a PS supply? I still think more signals should be routed to the MIO instead of the PL, in particular the RGMII ones where timing is critical and where we may want to boot from the network including the PL. PL Ethernet, if required, can still be done with SFP and transceiver. Also, have you copied exactly the Ethernet circuit of a devkit? Is the PHY functional immediately after power up without having to fiddle with MDIO? What is the idea with the "internal" I2C bus? |
When we connect PS_POR to IC30 MR#, we can skip IC29 and simplify it a little. Is there any difference to which FTDI output I connect PS_POR? From UG: "The PS_POR_B input is required to be asserted to GND during the power-on sequence Actually I can connect tems sensors to SHARED_I2C. IC8 can be removed as well, I just havent noticed there is IC5 eeprom on MUX sheet. Ethernet is coppied from verified design: https://github.com/BerkeleyLab/Marble |
As long as the four tests above are OK, no. |
It works: Please connect I2C (and other things) to the PS. As long as there is no case for gateware acceleration/control, things should go to the PS by default. |
I made above changes. @sbourdeauducq I2C and interrupts, and switch reset are routed to PS now. |
What about this question?
Have you done these tests? RGMII should still go to the PS. I also recommend connecting at least LED_ERR to the PS so that errors that occur before PL startup can be reported on the front panel as well. Should there be pullups on I2C_SW_RESET so that the I2C switches are automatically reset when the Zynq is reset (please check if a simple pullup resistor would work: timing, state of MIO during reset)? Then the other I2C_SW_RESET line to the FTDI chip can perhaps be removed, since we could POR the Zynq to recover from a stuck I2C bus situation. |
Sorry I've never used OpenOCD. I cant figure what are 'cable files'. I connected it with this connecion list: from http://openocd.org/doc/pdf/openocd.pdf
Have you done these tests? I don't have possibilities to make these tests.
I will add PU/PD with default mounted PU and leave I2C_SW_RESET line to the FTDI as is, when will be not needed will mark it as not mounted in future. Because we connect Ethernet to PS, it will cause some more layout rework with LVDS and supplies and probabbly something more. @sbourdeauducq so now, I can connect some more stuff to PS, could you please point which exactly signals you would like to be conneccted to PS instead of PL. |
Someone ought to figure this out, study it in detail, and run the tests carefully before board fabrication. Both the FTDI chip and the Zynq JTAG/reset interface are obnoxious crap, which, combined together, really have a lot of potential for frustrating problems if we are not very careful.
If you want some simplification you can drop both SPI flash chips - we don't plan to use it, the SD card does the job.
Why are there still two general purpose I2C buses (SDA_int/SCL_int and I2C_2V5_SW_SDA/I2C_2V5_SW_SCL)? |
Are you leaving the 1-wire ID thing? It's still on the latest schematics. |
The less various interfaces the better. More useful are ID chips with MAC address |
@sbourdeauducq are you sure you are watching the latest files? |
No, my mistake. But please remove https://github.com/sinara-hw/Kasli-SOC/tree/master/PDF |
I will do it with next repo update. |
For POR I would put the jumper before the supervisory IC. The manual is clear that POR should be asserted until supplies are stable, so removing the jumper would otherwise always cause problems. The issue with these signals really comes from:
|
Anyway, this solution forgoes Vivado hardware manager support. Only dissecting Xilinx/Digilent adapters for supported POR/SRST configurations, putting a Xilinx compatible JTAG header, or putting one of those silly Digilent FTDI modules would enable it. |
If I understand correctly, the IC42 inverter would fix the equivalent of sinara-hw/Kasli#78. |
Yes |
@sbourdeauducq can we move this to its own issue to make following the conversation easier?
The USB-I2C interface provides useful functionality which I'd be sad to loose. |
As I mentioned: replace it with a I2C proxy firmware. |
Anyway as long as the hardware doesn't have problems, I don't really care about this issue, and we can always DNP the related components later. |
We have firmware now: |
@sbourdeauducq did you look at SoC pins assignments? We want to produce it pretty soon
@filipswit did you run the SI-DDR test after routing?
The text was updated successfully, but these errors were encountered: