4 – Simulate

We just ran a check on your local machine to see if the FPGA-side code is compatible with our compiler. From this next step onwards you will be uploading code to our service, so our tooling requires that you work within a project - Note, you only need to create and set a project once for each program workspace. Projects are used to collate simulation, graph, build and deployment data for each program you’re working on.

Let’s define a project – call it histogram, and set that project to be active:

reco project create histogram
reco project set histogram

You can now simulate the program using the reco sim command. This is a really useful stage in our workflow as it allows you to see how the program will run on the FPGA before the more time-intensive build step.

Getting in the queue

Simulation should normally only take around 5 minutes but could be up to 30 minutes depending on what else is in the queue.

Run reco sim run test-histogram and you should see:

$ reco test run test-histogram
preparing simulation
done
archiving
done
uploading
done
running simulation
status: QUEUED
Waiting for Batch job to start
status: STARTED
...
INFO: [XOCC 60-629] Linking for hardware emulation target
INFO: [XOCC 60-895]    Target platform: /opt/Xilinx/SDx/2017.1.op/platforms/xilinx_aws-vu9p-f1_4ddr-xpr-2pr_4_0/xilinx_aws-vu9p-f1_4ddr-xpr-2pr_4_0.xpfm
INFO: [XOCC 60-423]   Target device: xilinx:aws-vu9p-f1:4ddr-xpr-2pr:4.0
INFO: [XOCC 60-251]   Hardware accelerator integration...
INFO: [XOCC 60-244] Generating system estimate report...
INFO: [XOCC 60-677] Generated system_estimate.xtxt
INFO: [XOCC 60-586] Created /mnt/.reco-work/sdaccel/dist/xclbin/kernel_test.hw_emu.xilinx_aws-vu9p-f1_4ddr-xpr-2pr_4_0.xclbin
INFO: [XOCC 60-791] Total elapsed time: 0h 1m 54s
INFO: [SDx-EM 01] Hardware emulation runs detailed simulation underneath. It may take long time for large data set. Please use a small dataset for faster execution. You can still get performance trend for your kernel with smaller dataset.
...
0: 0
128: 0
256: 0
384: 0
512: 0
640: 0
768: 0
896: 0
1024: 1
...
64256: 0
64384: 0
64512: 0
64640: 0
64768: 0
64896: 0
65024: 0
65152: 1
65280: 1
57216: 0

We’ve shortened the logs and output here as it’s pretty long, but you can see the histogram data generated at the end there, bins on the left and data counts of the right.