HCL:Cilamari

Jump to: navigation, search

Driving bare metal tests is hard. We see that in functional tests for individual components as well as full system tests where you want to see whether a Linux distribution is actually functional on a target system. To solve the problem at least for a subset of devices (namely ARM development boards), we want to create our own device that would be able to drive a Device Under Test (DUT).

Some peripherals can only be fully emulated through an FPGA. So the Cilamari system is built around the Xilinx ZU2CG-1 which gives us FPGA logic to drive components we do not have native "target" hard IP blocks for in the SoC.

Hardware Specs

Base System

  • Xilinx ZU2CG
  • DDR4 SODIMM slot
  • SPI Flash
  • USB host (USB 3.0?)
  • SD host
  • JTAG
  • 2x RJ45 1Gbit/s
  • M.2 Slot for PCIe (and SATA?) connectivity
  • (eMMC)
  • Battery and quartz for RTC

To drive DUTs

  • 2x HDMI in/out (switchable)
  • 2x USB device
  • 2x SD card device (needs 1.8V & 3.3V switch)
  • 2+x TTL UART (3.3V)
  • 5+x Relay (galvanic separation)
  • 1+x Power measurement on relay
  • (CAN)
  • PMODs or another way to connect to the rest of PL pins. Most of these should be switchable for 1.8V/3.3V/5V

SD card device

This is self made IP to emulate an SD card. The plug will just be an extension of the PCB with an artefact that resembles a microSD card with a long tail. To actually connect to a DUT, this male plug can then be connected to an extension chord (or the cheap alternative) which in turn gives us a flex cable to not break any components.

We will eventually also want to support eMMC (so 8 DAT lines). I'm not quite sure how that will happen yet. Maybe a separate flex plug?

Additional Ideas

Display Port

Display Port may become more widely used again thanks to USB-C support, so it should be possible to test it. I don't know how hard it would be to handle DP via the FPGA. This is WIP to determine.

Ulrich had an idea to make one in/out HDMI port in only and mux that with a DP in:

 -> DP_in -> SN65DP159 (TI) -> \

                            HD3SS215 (TI) -> SoC-FPGA

 -> HDMI_in -----------------> /

The main uncertainty in the solution above is to figure out whether it's sufficient to test MST.

Question: Isn't this just an adapter to convert physical layer of the link? i.e. as I (Ben) understand it right now this is equivalent to a DP++ to HDMI adapter and the DP++ output would be switched to sending a TDMS bitstream rather than a DP bitstream. So from the computers perspective, it acts like HDMI. It would still be useful for connecting hardware, but it wouldn't be testing DP. After some research, it turned out that you, Ben, are right. The proposed solution is for DP++ (which was new to me as my last video PCB dates back to 2013). There are some devices out there from Parade Technologies (PS171, PS176), which could be used and are used in adapters. However the distributor in germany (hyline) indicated that only HDCP licensees are entitled to buy these devices with a minimum quantity of 2.5k parts.

HDMI I/O

As an HDMI input ADV7619 would be nice as it enables fast interfaces. It is available via standard distris (farnell, digikey, ...). HDMI output is TBD as of now.

HDMI input can probably be done straight inside the FPGA via DP decoding. The only problem here is that we need to attach an MMCM to the clock line and multiply that clock up by 10x which means we need really fast I/O pins. Maybe the HP pins can do that, but they are at 1.8V so we need a 3.3V to 1.8V converter.

USB-C

Supporting USB-C with actual USB-3.0 links as well as Display Port would be nice. Again, this is something we need to figure out whether it's feasible or not.

Audio

Capturing / sending audio is on the wish list. We'll see if we can wire something like i2s out. If not, it should always be possible to handle audio capture and playback support via a USB sound card. Audio jack detection works mechanically in most cases, which makes it close to impossible to emulate.

Used interfaces

PS

Port Pins Target
GT1 ? USB 3 host
GT2 ? USB 3 device
GT3 ? M.2 PCIe
GT4 ? ?
MIO ? Ethernet
MIO ? Ethernet
MIO ? SPI Flash
MIO 2 USB2 host (for USB3 port)
MIO 2 UART
MIO 2 UART
MIO ? free
? ? Power Measurement

PL

Port Pins Notes Target
HD 2 1xDP USB2 device
HD 2 1xDP USB2 device
HD 6 SD emulation
HD 10 SD emulation (w/ eMMC)
HD 5 Relay
HP 8 4xDP HDMI
HD 2 HDMI I2C
HP 8 4xDP HDMI
HD 2 HDMI I2C
HP 42 free
HD -5 free