Intel® SoC FPGA Embedded Development Suite
Support for SoC FPGA Software Development, SoC FPGA HPS Architecture, HPS SoC Boot and Configuration, Operating Systems
508 Discussions

Multi-Processor Implimentation in Platform Designer

Embeddedesigner
New Contributor I
628 Views

I have two boards I purchased from Terasic, one is the DE1-SoC and the other is the Apollo S10 SOM. The first one has the Dual Core A9 processor, the latter has Quad Core A53.

The reference designs by Terasic includes a GHRD. In each case, when I open up Platform Designer and load in the top design.qsys, I do not see in the component editor that there is more then 1 core available to map out my signals to custom IP I implement in the FPGA. 

 

I wish to have multiple cores in my design, and to implment the code with the Pthread command in Linux. 

 

Do I have to include multiple instances of the HPS Core in Platform Designer? When I add the physical core to Platform Designer, and click on the component, view the block diagram, the rest of the cores are misssing, and there is nothing in the component editor to instantiate multiple cores. The reference design, although functional and works, I plan on using the extra cores to map to more extensive custom IP in the FPGA that I cannot otherwise map out on one core, or that I wish to impliment in parallel. 

This brings up a host of questions, if I do instantiate another HPS core in Platform Designer, how will I know which core maps to the Pthread command to control my custom IP (lets say the Apollo S10 which has 4 cores)?

 

I do not have permission from Terasic to publish there GHRD, but it is included on the CD available on the Terasic website. 

0 Kudos
1 Solution
Jeet14
Employee
580 Views

Hi,


HPS IP is used to configure entire peripherals within the HPS, Interrupts, HPS & FPGA interface bridges etc. It includes all core/cpu within the device e.g. Cyclone V one or 2 cpu's, agilex-7 dual or four cpu's.

So this HPS IP is used once in single design.


For running the multiple threads on individual core in linux you may need to create multiple thread using pthread_create() and set the cpu affinity.

For this you can get multiple reference open source.

e.g. https://stackoverflow.com/questions/7544847/how-to-run-different-threads-on-different-cores

https://stackoverflow.com/questions/47528043/compile-a-c-program-with-gcc-so-that-it-can-use-all-cpu-cores-in-linux


Regards

Tiwari


View solution in original post

0 Kudos
2 Replies
Jeet14
Employee
581 Views

Hi,


HPS IP is used to configure entire peripherals within the HPS, Interrupts, HPS & FPGA interface bridges etc. It includes all core/cpu within the device e.g. Cyclone V one or 2 cpu's, agilex-7 dual or four cpu's.

So this HPS IP is used once in single design.


For running the multiple threads on individual core in linux you may need to create multiple thread using pthread_create() and set the cpu affinity.

For this you can get multiple reference open source.

e.g. https://stackoverflow.com/questions/7544847/how-to-run-different-threads-on-different-cores

https://stackoverflow.com/questions/47528043/compile-a-c-program-with-gcc-so-that-it-can-use-all-cpu-cores-in-linux


Regards

Tiwari


0 Kudos
Jeet14
Employee
548 Views

Hi,


I believe your inquiry has been answered. With that now, I transition this thread to community support. 

Thank you.


Best regards,

Tiwari


p/s: If any answer from the community or Intel Support are helpful, please feel free to give best answer or rate 4/5 survey.


0 Kudos
Reply