Skip to content

Commit 0c8acea

Browse files
AWSaallurikristopk
authored andcommitted
Release candidate for V1.4.4 (#437)
* Release candidate for V1.4.4 Fixes Simulations when using 3rd party simulators * updating sh_ddr interface to shell V1.4 in cl_template file.
1 parent 9791342 commit 0c8acea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+605
-271
lines changed

Jenkinsfile

+14-19
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,7 @@ if(fdf_ddr_comb) {
9797
//=============================================================================
9898

9999
// Map that contains stages of tests
100-
101-
def initial_tests = [:]
102-
def secondary_tests = [:]
103-
def multi_stage_tests = [:]
100+
def all_tests = [:]
104101

105102
// Task to Label map
106103
task_label = [
@@ -199,7 +196,7 @@ if (env.CHANGE_ID) {
199196

200197

201198
if (test_markdown_links || test_src_headers) {
202-
initial_tests['Documentation Tests'] = {
199+
all_tests['Documentation Tests'] = {
203200
node(get_task_label(task: 'md_links', xilinx_version: default_xilinx_version)) {
204201
checkout scm
205202
commitChangeset = sh(returnStdout: true, script: 'git diff-tree --no-commit-id --name-status -r HEAD').trim()
@@ -253,7 +250,7 @@ if (test_markdown_links || test_src_headers) {
253250
//=============================================================================
254251

255252
if (test_hdk_scripts) {
256-
initial_tests['Test HDK Scripts'] = {
253+
all_tests['Test HDK Scripts'] = {
257254
stage('Test HDK Scripts') {
258255
String report_file = 'test_hdk_scripts.xml'
259256
node(get_task_label(task: 'source_scripts', xilinx_version: default_xilinx_version)) {
@@ -278,7 +275,7 @@ if (test_hdk_scripts) {
278275
}
279276

280277
if (test_fpga_tools) {
281-
secondary_tests['Test FPGA Tools 1 Slot'] = {
278+
all_tests['Test FPGA Tools 1 Slot'] = {
282279
stage('Test FPGA Tools 1 Slot') {
283280
String report_file_tools = 'test_fpga_tools.xml'
284281
String report_file_sdk = 'test_fpga_sdk.xml'
@@ -310,7 +307,7 @@ if (test_fpga_tools) {
310307
}
311308
}
312309
}
313-
secondary_tests['Test FPGA Tools All Slots'] = {
310+
all_tests['Test FPGA Tools All Slots'] = {
314311
stage('Test FPGA Tools All Slots') {
315312
String report_file_tools = 'test_fpga_tools_all_slots.xml'
316313
String report_file_sdk = 'test_fpga_sdk_all_slots.xml'
@@ -345,7 +342,7 @@ if (test_fpga_tools) {
345342
}
346343

347344
if (test_sims) {
348-
multi_stage_tests['Run Sims'] = {
345+
all_tests['Run Sims'] = {
349346
stage('Run Sims') {
350347
def cl_names = ['cl_uram_example', 'cl_dram_dma', 'cl_hello_world']
351348
def sim_nodes = [:]
@@ -387,7 +384,7 @@ if (test_sims) {
387384
}
388385

389386
if (test_edma) {
390-
secondary_tests['Test EDMA Driver'] = {
387+
all_tests['Test EDMA Driver'] = {
391388
stage('Test EDMA Driver') {
392389
node(get_task_label(task: 'runtime', xilinx_version: default_xilinx_version)) {
393390

@@ -424,7 +421,7 @@ if (test_edma) {
424421
}
425422

426423
if (test_xdma) {
427-
secondary_tests['Test XDMA Driver'] = {
424+
all_tests['Test XDMA Driver'] = {
428425
stage('Test XDMA Driver') {
429426
node(get_task_label(task: 'runtime', xilinx_version: default_xilinx_version)) {
430427

@@ -460,7 +457,7 @@ if(disable_runtime_tests) {
460457
}
461458
else {
462459
if (test_runtime_software) {
463-
multi_stage_tests['Test Runtime Software'] = {
460+
all_tests['Test Runtime Software'] = {
464461

465462
stage('Test Runtime Software') {
466463
def nodes = [:]
@@ -511,7 +508,7 @@ else {
511508

512509

513510
if (test_dcp_recipes) {
514-
multi_stage_tests['Test DCP Recipes'] = {
511+
all_tests['Test DCP Recipes'] = {
515512
stage('Test DCP Recipes') {
516513
def nodes = [:]
517514
for (version in xilinx_versions) {
@@ -560,7 +557,7 @@ if (test_dcp_recipes) {
560557
if (test_hdk_fdf) {
561558
// Top level stage for FDF
562559
// Each CL will have its own parallel FDF stage under this one.
563-
multi_stage_tests['HDK_FDF'] = {
560+
all_tests['HDK_FDF'] = {
564561
stage('HDK FDF') {
565562
def fdf_stages = [:]
566563
for (version in xilinx_versions) {
@@ -742,7 +739,7 @@ if (test_hdk_fdf) {
742739
//=============================================================================
743740

744741
if (test_sdaccel_scripts) {
745-
initial_tests['Test SDAccel Scripts'] = {
742+
all_tests['Test SDAccel Scripts'] = {
746743
stage('Test SDAccel Scripts') {
747744
def nodes = [:]
748745

@@ -777,7 +774,7 @@ if (test_sdaccel_scripts) {
777774
}
778775

779776
if (test_helloworld_sdaccel_example_fdf || test_all_sdaccel_examples_fdf) {
780-
multi_stage_tests['Run SDAccel Tests'] = {
777+
all_tests['Run SDAccel Tests'] = {
781778
String sdaccel_examples_list = 'sdaccel_examples_list.json'
782779

783780
def sdaccel_all_version_stages = [:]
@@ -1083,6 +1080,4 @@ if (test_helloworld_sdaccel_example_fdf || test_all_sdaccel_examples_fdf) {
10831080

10841081

10851082
// Run the tests here
1086-
parallel initial_tests
1087-
parallel secondary_tests
1088-
parallel multi_stage_tests
1083+
parallel all_tests

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ The AWS EC2 FPGA Development Kit is provided by AWS to support development and r
4646

4747
| Tool | Development/Runtime | Tool location | Description |
4848
| --------|---------|---------|---------|
49-
| SDx 2017.4 | Development | [FPGA developer AMI](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) | Used for [Software Defined Accelerator Development](SDAccel/README.md) |
50-
| Vivado 2017.4 | Development | [FPGA developer AMI](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) | Used for [Hardware Accelerator Development](hdk/README.md) |
49+
| SDx 2017.4 & 2018.2 | Development | [FPGA developer AMI](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) | Used for [Software Defined Accelerator Development](SDAccel/README.md) |
50+
| Vivado 2017.4 & 2018.2 | Development | [FPGA developer AMI](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) | Used for [Hardware Accelerator Development](hdk/README.md) |
5151
| FPGA AFI Management Tools | Runtime | [SDK - fpga\_mgmt\_tools](sdk/userspace/fpga_mgmt_tools) | Command-line tools used for FPGA management while running on the F1 instance |
5252
| Virtual JTAG | Development (Debug) | [FPGA developer AMI](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) | Runtime debug waveform |
5353
| wait\_for\_afi | Development | [wait\_for\_afi.py](shared/bin/scripts/wait_for_afi.py) | Helper script that notifies via email on AFI generation completion |

RELEASE_NOTES.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
* CL to SH 512-bit AXI4 interface
2626
* 1 DDR controller implemented in the SH (always available)
2727
* 3 DDR controllers implemented in the CL (configurable number of implemented controllers allowed)
28-
28+
29+
## Release 1.4.4 (See [ERRATA](./ERRATA.md) for unsupported features)
30+
* Fixed compile issues in Simulation while using 3rd pary simulators (synopsys VCS, Cadence IES and Menor Questasim).
31+
2932
## Release 1.4.3 (See [ERRATA](./ERRATA.md) for unsupported features)
3033
* [DRAM Data Retention](hdk/docs/data_retention.md) - With DRAM data retention, developers can simply load a new AFI and continue using the data that is persistently kept in the DRAM attached to the FPGA, eliminating unnecessary data movements and greatly improving the overall application performance.
3134
* [Virtual Ethernet](./sdk/apps/virtual-ethernet/README.md) - Provides a low latency network interface for EC2 F1, that enables high performance hardware acceleration to ethernet based applications on AWS like firewalls, routers and advanced security virtual appliances. With Virtual Ethernet, developers are able to create F1 accelerators that process ethernet packets directly from user-space on the FPGA with high throughput and low-latency.

SDAccel/docs/Debug_OpenCL_Kernel.md

+144
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
Hardware Debug of SDAccel OpenCL Kernel
2+
======================
3+
4+
This file contains the following sections:
5+
6+
1. Overview
7+
2. Enabling ChipScope Debug
8+
3. Host code changes to support debugging
9+
4. Building the executable, creating the AFI, and executing the host code
10+
5. Start debug servers
11+
12+
13+
## 1. Overview
14+
The sections below give you a brief explanation of the steps required to debug your SDAccel OpenCL kernel. They include enabling ChipScope debug, pausing the execution of the host code at the appropriate stage to ensure the setup of ILA triggers, building the running the host code and starting the debug servers to debug the design in hardware.
15+
16+
## 2. Enabling ChipScope Debug
17+
18+
Debug cores can be added to the AXI interfaces on the kernel itself to monitor AXI transaction level activity (part of the ChipScope Debug feature of SDAccel).
19+
20+
21+
22+
Adding debug cores to the AXI interfaces on the kernel can be done in a couple of ways:
23+
24+
- Using the SDAccel GUI and enabling "ChipScope Debug" on the hardware function in the Hardware Function Settings window.
25+
26+
- Note: If you are building on AWS and need information on how to enable the SDAccel GUI on AWS F1, see​  [README_GUI.md](./README_GUI.md). If you are building on premise, follow the directions in [On_Premises_Development_Steps.md](./On_Premises_Development_Steps.md).
27+
28+
- Using the XOCC --dk chipscope option with the compute unit name and optional interface name.
29+
30+
31+
32+
33+
To enable ChipScope debug using the GUI, perform the following steps:
34+
35+
1. In the assistant window, under System build configuration, right-click on the compute unit that you want to enable ChipScope debug on and click settings.
36+
37+
38+
39+
40+
41+
![](./figure/sda_chipscope_flow1.PNG)
42+
43+
2. When the hardware function settings dialog appears, check the box for "ChipScope Debug" in the debug and profiling settings table. By checking this box, the compute unit will now have a System ILA inserted onto it's AXI interface ports.
44+
![](./figure/sda_chipscope_flow2.PNG)
45+
46+
47+
48+
Alternatively, ChipScope debug can be enabled by adding an XOCC option to the CLFLAGS in the makefile. This method allows the ChipScope debug feature to be enabled without invoking the SDAccel GUI. The --dk option shown below shows the general usage:
49+
50+
```
51+
--dk chipscope:<compute_unit_name>:<interface_name>
52+
```
53+
54+
For example, to add ChipScope debugging to the helloworld_ocl OpenCL example , enabling chipscope debug can be accomplished by adding the following XOCC option to the CLFLAGS in the makefile:
55+
56+
```
57+
--dk chipscope:krnl_vadd_1
58+
```
59+
60+
For detailed usage and more examples, refer to the SDAccel Debugging Guide (UG1281 v2018.2).
61+
62+
63+
64+
## 3. Host code changes to support debugging
65+
66+
The application host code needs to be modified to ensure you can set up the ILA trigger conditions **prior** to running the kernel.
67+
68+
69+
70+
The host code shown below introduces the wait for the setup of ILA Trigger conditions and the arming of the ILA.
71+
72+
src/host.cpp
73+
74+
void wait_for_enter(const std::string& msg)
75+
{
76+
std::cout << msg << std::endl;
77+
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
78+
}
79+
80+
...
81+
82+
cl::Program::Binaries bins = xcl::import_binary_file(binaryFile);
83+
devices.resize(1);
84+
cl::Program program(context, devices, bins);
85+
cl::Kernel krnl_vadd(program,"krnl_vadd_rtl");
86+
87+
wait_for_enter("\nPress ENTER to continue after setting up ILA trigger...");
88+
89+
//Allocate Buffer in Global Memory
90+
91+
...
92+
93+
//Launch the Kernel
94+
q.enqueueTask(krnl_vadd);
95+
96+
97+
98+
## 4. Building the executable, creating the AFI and executing the host code
99+
100+
- **Build the executable** in your design directory (`your_design_directory`) by running the steps below:
101+
102+
```
103+
cd your_design_directory
104+
105+
make all DEVICES=$AWS_PLATFORM
106+
```
107+
108+
- **Creating and registering the AFI**
109+
110+
Please note, the angle bracket directories need to be replaced according to the user setup.
111+
112+
```
113+
$SDACCEL_DIR/tools/create_sdaccel_afi.sh -xclbin=your_design.hw.xilinx_aws-vu9p-f1-04261818_dynamic_5_0.xclbin -o=your_design.hw.xilinx_aws-vu9p-f1-04261818_dynamic_5_0.awsxclbin -s3_bucket=<bucket-s3_dcp_key=<f1-dcp-folder-s3_logs_key=<f1-logs>
114+
```
115+
116+
- **Setup and Execute**
117+
118+
```
119+
$ sudo sh
120+
# source /opt/Xilinx/SDx/2017.4.rte.dyn/setup.sh
121+
# ./host
122+
```
123+
This produces the following output:
124+
```
125+
Device/Slot[0] (/dev/xdma0, 0:0:1d.0)
126+
xclProbe found 1 FPGA slots with XDMA driver running
127+
platform Name: Xilinx
128+
Vendor Name : Xilinx
129+
Found Platform
130+
XCLBIN File Name: vadd
131+
INFO: Importing ./binary_container_1.awsxclbin
132+
Loading: './binary_container_1.awsxclbin'
133+
Successfully skipped reloading of local image.
134+
135+
Press ENTER to continue after setting up ILA trigger...
136+
```
137+
138+
139+
## 5. Start Debug Servers
140+
141+
#### Starting Debug Servers on Amazon F1 instance
142+
Instructions to start the debug servers on an Amazon F1 instance can be found [here](../../hdk/docs/Virtual_JTAG_XVC.md).
143+
Once you have setup your ILA triggers and armed the ILA core, you can now Press Enter on your host to continue execution of the application and RTL Kernel.
144+

0 commit comments

Comments
 (0)