cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
candycrush
Contributor
Contributor
470 Views
Registered: ‎11-28-2018

Vivado + Alveo u200

Jump to solution

Hi, all

 

I am trying to program alveo with bitstream generated in Vivado.

And I want to send data using PCIe with xillybus.

 

So I boot with PCIe, without USB and after booting I connect USB port and program device.

Then I reboot for programming after disconnecting USB.

But after that there is no output for lspci -vd 10ee:

 

Could you let me know what is the problem of my method?

Thanks!

Tags (2)
0 Kudos
1 Solution

Accepted Solutions
JohnFedakIV
Moderator
Moderator
428 Views
Registered: ‎09-04-2020

Hi @candycrush ,

Do you have access to UG1289 in the Alveo Vivado lounge?
Pages 12 & 13 in that guide walk through creating an MCS file from the bit file and programming the Alveo Card.

I'm not familiar with xillybus, but one note is that $ lspci -vd 10ee: is looking for a Xilinx Device (defined as 10ee). With the xillybus DMA IP - it may use a different Vender ID and show up differently. The PCIe Vendor and Device IDs are generally set in the DMA IP block.

I noticed that you had also posted in the PCIe forums about getting the PCIe example IP up and running on the card - one option to get the card up and running on lspci/PCIe using a Vivado/custom flow is to use the CMS IP Example Design (More information about the CMS IP can be found here), this example also incorporates the Xilinx XDMA PCIe IP to communicate with the host via the XDMA driver. With the CMS IP being dedicated for Alveo Cards, the example will make the necessary PCIe connections. Steps to get this up and running:

  • Open Vivado 2020.2 and create a new project
  • Choose RTL project with no sources specified
  • On the Default Part page go to the Boards tab and choose the Alveo U200
  • Once the project is open, check in the Project Summary window that the Project part is the Alveo U200 Card
  • Create Block Design and then add the CMS (Card Management Solution) IP, right click the IP block and Open IP Example Design
    • This may take 5-10 minutes to create
  • This will display the example design, from here, you can go ahead and run Synthesis and Implementation
    • This will take a while (> 30 minutes)
  • From this point, you can create a bitstream and then follow UG1289 to create an MCS file and program the Alveo Card
  • This will get the card on lspci after the coldboot, displaying Xilinx Corporation Device (10ee) with the PCIe ID of 8888
  • To communicate with the card, you will need to install the XDMA driver
  • Once the driver is installed, lspci ($lspci -vd 10ee:) should indicate Kernel driver in use: xdma to indicate that the driver is communicating with the card

Regards,
~John

----------------------------------------------------------------------------------
* Please don't forget to reply, kudo and accept as a solution! *

View solution in original post

6 Replies
JohnFedakIV
Moderator
Moderator
429 Views
Registered: ‎09-04-2020

Hi @candycrush ,

Do you have access to UG1289 in the Alveo Vivado lounge?
Pages 12 & 13 in that guide walk through creating an MCS file from the bit file and programming the Alveo Card.

I'm not familiar with xillybus, but one note is that $ lspci -vd 10ee: is looking for a Xilinx Device (defined as 10ee). With the xillybus DMA IP - it may use a different Vender ID and show up differently. The PCIe Vendor and Device IDs are generally set in the DMA IP block.

I noticed that you had also posted in the PCIe forums about getting the PCIe example IP up and running on the card - one option to get the card up and running on lspci/PCIe using a Vivado/custom flow is to use the CMS IP Example Design (More information about the CMS IP can be found here), this example also incorporates the Xilinx XDMA PCIe IP to communicate with the host via the XDMA driver. With the CMS IP being dedicated for Alveo Cards, the example will make the necessary PCIe connections. Steps to get this up and running:

  • Open Vivado 2020.2 and create a new project
  • Choose RTL project with no sources specified
  • On the Default Part page go to the Boards tab and choose the Alveo U200
  • Once the project is open, check in the Project Summary window that the Project part is the Alveo U200 Card
  • Create Block Design and then add the CMS (Card Management Solution) IP, right click the IP block and Open IP Example Design
    • This may take 5-10 minutes to create
  • This will display the example design, from here, you can go ahead and run Synthesis and Implementation
    • This will take a while (> 30 minutes)
  • From this point, you can create a bitstream and then follow UG1289 to create an MCS file and program the Alveo Card
  • This will get the card on lspci after the coldboot, displaying Xilinx Corporation Device (10ee) with the PCIe ID of 8888
  • To communicate with the card, you will need to install the XDMA driver
  • Once the driver is installed, lspci ($lspci -vd 10ee:) should indicate Kernel driver in use: xdma to indicate that the driver is communicating with the card

Regards,
~John

----------------------------------------------------------------------------------
* Please don't forget to reply, kudo and accept as a solution! *

View solution in original post

candycrush
Contributor
Contributor
387 Views
Registered: ‎11-28-2018

Thanks,@JohnFedakIV  !

I can follow your step 'From this point, you can create a bitstream and then follow UG1289 to create an MCS file and program the Alveo Card'

And I also follow  UG1289 p12, p13.

 

However after I reboot, I can't get the card on lspci.

So I have a question when programming card.

First, when I select Program the Configuration Memory Device at target(mt25qu..)

it erase first, and program(flash).

Then there is message like below picture. I just ignore this and reboot, but still there is same message.

Is there any more step after flash? For example, click program device or something..

candycrush_0-1616742027889.png

 

For reference I upload my xcu200's status

candycrush_1-1616742128755.png

 

Thank you!

 

0 Kudos
candycrush
Contributor
Contributor
380 Views
Registered: ‎11-28-2018

Oh I think warm reboot was problem, after cold reboot it works!

candycrush
Contributor
Contributor
351 Views
Registered: ‎11-28-2018

Thank you @JohnFedakIV !! I really appreciate it!

I succeed the step you mentioned, also succeed run_test for xdma ip driver!

 

Could you let me ask one more thing?

I found QDMA, and VSEC docs at https://github.com/Xilinx/dma_ip_drivers/tree/master/XDMA/linux-kernel but not XDMA.

Is there any docs for XDMA?

 

P.S. Is there any reason that Card or FPGA can be programmed with cold reboot, not warm reboot? It is just my curiosity

Thank you!!!

 

0 Kudos
JohnFedakIV
Moderator
Moderator
337 Views
Registered: ‎09-04-2020

Hi @candycrush ,

No problem, I'm glad to hear everything is working.

The documentation for XDMA can be found on the it's IP page (PG195): https://www.xilinx.com/products/intellectual-property/pcie-dma.html#documentation. There is also a Debug Guide found in AR 71435.

When the custom/Vivado program (or base platform for Vitis/XRT flow) is programmed, it's programmed into the QSPI memory. A cold reboot is required so that the FPGA is powered down and goes through it's initialization process. A warm reboot doesn't power down the main PCIe bus.

Regards,
~John

----------------------------------------------------------------------------------
* Please don't forget to reply, kudo and accept as a solution! *
candycrush
Contributor
Contributor
248 Views
Registered: ‎11-28-2018

Really thank you @JohnFedakIV !!

I got it.

I really appreciate everything you’ve done!

Thanks again!

0 Kudos