Skip to content

Commit 9a9deb5

Browse files
AWSaallurikristopk
authored andcommitted
Devkit 1.4.6. updates[do not use] (aws#448)
* Devkit 1.4.6. updates * updating permissions to be able to execute * fixing merge issues * RC_v1_4_6 delta updates & release notes * updating with table of supported simulator versions * Update RTL_Simulating_CL_Designs.md * Update FAQs.md * updating public afi for cl_dram_dma * Update RELEASE_NOTES.md
1 parent dc3aff2 commit 9a9deb5

Some content is hidden

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

66 files changed

+3337
-1494
lines changed

FAQs.md

+3-8
Original file line numberDiff line numberDiff line change
@@ -460,14 +460,9 @@ Parent process (pid 8160) has died. This helper process will now exit
460460

461461
You would need a valid [on premise license](./hdk/docs/on_premise_licensing_help.md) provided by Xilinx.
462462

463-
*For runs using the FPGA Developer AMI:*
464-
465-
**NOTE:**
466-
> * The license included on FPGA Developer AMI Versions 1.3.0_a and earlier expires on October 31 2017.
467-
> * If you see the above error, please update to FPGA Developer AMI Version 1.3.3 or later.
468-
> * All FPGA Developer AMI Versions 1.3.0_a and earlier will be deprecated once Version 1.3.3 is released.
469-
> * If you are using the FPGA Developer AMI Version 1.3.3 or later, please check if the environment variable `XILINXD_LICENSE_FILE` is set to `/opt/Xilinx/license/XilinxAWS.lic`
470-
> * If you still face the above error, please contact us on the forums and we'd be happy to help further.
463+
*For runs using the FPGA Developer AMI:* Please contact us through [AWS FPGA Developers forum](https://forums.aws.amazon.com/forum.jspa?forumID=243)
464+
465+
471466

472467
**Q: Why does Vivado in GUI mode show up blank ? or Why does Vivado in GUI mode show up as an empty window?**
473468

Jenkinsfile

+98-16
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ properties([parameters([
1111
booleanParam(name: 'test_hdk_scripts', defaultValue: true, description: 'Test the HDK setup scripts'),
1212
booleanParam(name: 'test_sims', defaultValue: true, description: 'Run all Simulations'),
1313
booleanParam(name: 'test_edma', defaultValue: true, description: 'Run EDMA unit and perf tests'),
14+
booleanParam(name: 'test_non_root_access', defaultValue: true, description: 'Test non-root access to FPGA tools'),
1415
booleanParam(name: 'test_xdma', defaultValue: true, description: 'Test XDMA driver'),
1516
booleanParam(name: 'test_runtime_software', defaultValue: true, description: 'Test precompiled AFIs'),
1617
booleanParam(name: 'test_dcp_recipes', defaultValue: false, description: 'Run DCP generation with all clock recipes and build strategies.'),
@@ -22,8 +23,8 @@ properties([parameters([
2223
booleanParam(name: 'debug_fdf_uram', defaultValue: false, description: 'Debug the FDF for cl_uram_example.'),
2324
booleanParam(name: 'fdf_ddr_comb', defaultValue: false, description: 'run FDF for cl_dram_dma ddr combinations.'),
2425
booleanParam(name: 'disable_runtime_tests', defaultValue: false, description: 'Option to disable runtime tests.'),
25-
booleanParam(name: 'use_test_ami', defaultValue: false, description: 'This option asks for the test AMI from Jenkins')
26-
26+
booleanParam(name: 'use_test_ami', defaultValue: false, description: 'This option asks for the test AMI from Jenkins'),
27+
booleanParam(name: 'internal_simulations', defaultValue: false, description: 'This option asks for default agent from Jenkins')
2728
])])
2829

2930
//=============================================================================
@@ -35,6 +36,7 @@ boolean test_hdk_scripts = params.get('test_hdk_scripts')
3536
boolean test_fpga_tools = params.get('test_fpga_tools')
3637
boolean test_sims = params.get('test_sims')
3738
boolean test_edma = params.get('test_edma')
39+
boolean test_non_root_access = params.get('test_non_root_access')
3840
boolean test_xdma = params.get('test_xdma')
3941
boolean test_runtime_software = params.get('test_runtime_software')
4042
boolean test_dcp_recipes = params.get('test_dcp_recipes')
@@ -102,14 +104,14 @@ def all_tests = [:]
102104
// Task to Label map
103105
task_label = [
104106
'create_afi': 't2.l_50',
105-
'simulation': 'c4.xl',
106-
'dcp_gen': 'c4.4xl',
107+
'simulation': 'z1d.l',
108+
'dcp_gen': 'z1d.2xl',
107109
'runtime': 'f1.2xl',
108110
'runtime_all_slots': 'f1.16xl',
109111
'source_scripts': 'c4.xl',
110112
'md_links': 'c4.xl',
111113
'find_tests': 't2.l_50',
112-
'sdaccel_builds': 'c4.4xl'
114+
'sdaccel_builds': 'z1d.2xl'
113115
]
114116

115117
def xilinx_versions = [ '2017.4', '2018.2' ]
@@ -133,6 +135,19 @@ def sdaccel_example_default_map = [ '2017.4' : [ 'Hello_World_1ddr': 'SDAccel/ex
133135
]
134136
]
135137

138+
def simulator_tool_default_map = [ '2017.4' : [ 'vivado': 'xilinx/SDx/2017.4_04112018',
139+
'vcs': 'vcs-mx/L-2016.06-1',
140+
'questa': 'questa/10.6b',
141+
'ies': 'incisive/15.20.063'
142+
],
143+
'2018.2' : [ 'vivado': 'xilinx/SDx/2018.2_06142018',
144+
'vcs': 'vcs-mx/N-2017.12-SP1-1',
145+
'questa': 'questa/10.6c_1',
146+
'ies': 'incisive/15.20.063'
147+
]
148+
]
149+
150+
136151
// Get serializable entry set
137152
@NonCPS def entrySet(m) {m.collect {k, v -> [key: k, value: v]}}
138153

@@ -150,6 +165,10 @@ def get_task_label(Map args=[ : ]) {
150165
echo "Test AMI Requested"
151166
task_label = task_label + '_test'
152167
}
168+
if (params.internal_simulations) {
169+
echo "internal simulation agent requested"
170+
task_label = 'f1'
171+
}
153172

154173
echo "Label Requested: $task_label"
155174
return task_label
@@ -341,27 +360,56 @@ if (test_fpga_tools) {
341360
}
342361
}
343362

363+
344364
if (test_sims) {
345365
all_tests['Run Sims'] = {
346366
stage('Run Sims') {
347367
def cl_names = ['cl_uram_example', 'cl_dram_dma', 'cl_hello_world']
368+
def simulators = ['vivado']
348369
def sim_nodes = [:]
370+
if(params.internal_simulations) {
371+
simulators = ['vcs', 'ies', 'questa', 'vivado']
372+
}
349373
for (x in cl_names) {
350374
for (y in xilinx_versions) {
351-
String xilinx_version = y
352-
String cl_name = x
353-
String node_name = "Sim ${cl_name} ${xilinx_version}"
354-
String key = "test_${cl_name}__"
355-
String report_file = "test_sims_${cl_name}_${xilinx_version}.xml"
356-
sim_nodes[node_name] = {
375+
for ( z in simulators) {
376+
String xilinx_version = y
377+
String cl_name = x
378+
String simulator = z
379+
String node_name = "Sim ${cl_name} ${xilinx_version}"
380+
String key = "test_${cl_name}__"
381+
String report_file = "test_sims_${cl_name}_${xilinx_version}.xml"
382+
def tool_module_map = simulator_tool_default_map.get(xilinx_version)
383+
String vcs_module = tool_module_map.get('vcs')
384+
String questa_module = tool_module_map.get('questa')
385+
String ies_module = tool_module_map.get('ies')
386+
String vivado_module = tool_module_map.get('vivado')
387+
if(params.internal_simulations) {
388+
report_file = "test_sims_${cl_name}_${xilinx_version}_${simulator}.xml"
389+
}
390+
sim_nodes[node_name] = {
357391
node(get_task_label(task: 'simulation', xilinx_version: xilinx_version)) {
358392
checkout scm
359393
try {
360-
sh """
361-
set -e
362-
source $WORKSPACE/shared/tests/bin/setup_test_hdk_env.sh
363-
python2.7 -m pytest -v $WORKSPACE/hdk/tests/simulation_tests/test_sims.py -k \"${key}\" --junit-xml $WORKSPACE/${report_file}
364-
"""
394+
if(params.internal_simulations) {
395+
sh """
396+
set -e
397+
module purge
398+
module load python/2.7.9
399+
module load ${vivado_module}
400+
module load ${vcs_module}
401+
module load ${questa_module}
402+
module load ${ies_module}
403+
source $WORKSPACE/hdk_setup.sh
404+
python2.7 -m pytest -v $WORKSPACE/hdk/tests/simulation_tests/test_sims.py -k \"${key}\" --junit-xml $WORKSPACE/${report_file} --Simulator ${simulator}
405+
"""
406+
} else {
407+
sh """
408+
set -e
409+
source $WORKSPACE/shared/tests/bin/setup_test_hdk_env.sh
410+
python2.7 -m pytest -v $WORKSPACE/hdk/tests/simulation_tests/test_sims.py -k \"${key}\" --junit-xml $WORKSPACE/${report_file} --Simulator ${simulator}
411+
"""
412+
}
365413
} catch (exc) {
366414
echo "${node_name} failed: archiving results"
367415
archiveArtifacts artifacts: "hdk/cl/examples/${cl_name}/verif/sim/**", fingerprint: true
@@ -377,6 +425,7 @@ if (test_sims) {
377425
}
378426
}
379427
}
428+
}
380429
}
381430
parallel sim_nodes
382431
}
@@ -420,6 +469,39 @@ if (test_edma) {
420469
}
421470
}
422471

472+
if (test_non_root_access) {
473+
all_tests['Test non-root access to FPGA tools'] = {
474+
stage('Test non-root access to FPGA tools') {
475+
node(get_task_label(task: 'runtime', xilinx_version: default_xilinx_version)) {
476+
477+
echo "Test non-root access to FPGA tools"
478+
checkout scm
479+
480+
String test = "sdk/tests/test_non_root_access.py"
481+
String report_file = "test_non_root_access.xml"
482+
483+
try {
484+
sh """
485+
export AWS_FPGA_ALLOW_NON_ROOT=y
486+
export AWS_FPGA_SDK_OVERRIDE_GROUP=y
487+
set -e
488+
source $WORKSPACE/shared/tests/bin/setup_test_sdk_env.sh
489+
newgrp fpgauser
490+
export SDK_DIR="${WORKSPACE}/sdk"
491+
source $WORKSPACE/shared/tests/bin/setup_test_env.sh
492+
python2.7 -m pytest -v $WORKSPACE/${test} --junit-xml $WORKSPACE/${report_file}
493+
"""
494+
} catch (exc) {
495+
input message: "Non-root access test failed. Click Proceed or Abort when you are done debugging on the instance."
496+
throw exc
497+
} finally {
498+
junit healthScaleFactor: 10.0, testResults: report_file
499+
}
500+
}
501+
}
502+
}
503+
}
504+
423505
if (test_xdma) {
424506
all_tests['Test XDMA Driver'] = {
425507
stage('Test XDMA Driver') {

README.md

-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,6 @@ The [SDK directory](./sdk/README.md) includes the runtime environment required t
141141
* Linux Kernel Drivers - The developer kit includes three drivers:
142142
* [XDMA Driver](sdk/linux_kernel_drivers/xdma/README.md) - DMA interface to/from HDK accelerators.
143143
* [XOCL Driver](sdk/linux_kernel_drivers/xocl) - DMA interface with software defined accelerators (also called hardware kernels).
144-
* [EDMA Driver](sdk/linux_kernel_drivers/edma/README.md) - Legacy DMA interface to/from HDK accelerators.
145144
* [FPGA Libraries](sdk/userspace/fpga_libs) - APIs used by C/C++ host applications.
146145
* [FPGA Management Tools](sdk/userspace/fpga_mgmt_tools/README.md) - AFI management APIs for runtime loading/clearing FPGA image, gathering metrics and debug interface on the F1 instance.
147146

RELEASE_NOTES.md

+32-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,37 @@
2626
* 1 DDR controller implemented in the SH (always available)
2727
* 3 DDR controllers implemented in the CL (configurable number of implemented controllers allowed)
2828

29+
## Release 1.4.6 (See [ERRATA](./ERRATA.md) for unsupported features)
30+
31+
* Fixes SDx 2018.2 [missing profile report items in SDAccel](https://forums.aws.amazon.com/thread.jspa?threadID=293541&tstart=0)
32+
* Requires [Xilinx 2018.2 Patch AR71715](hdk/docs/SDxPatch_AR71715_and_XRT_installation_instructions.md#installing-sdx-20182-tool-patch-ar71715)
33+
* Requires [Xilinx runtime release 2018.2_XDF.RC4](https://github.com/Xilinx/XRT/tree/2018.2_XDF.RC4)
34+
* Please see patching & XRT installation instructions [here](hdk/docs/SDxPatch_AR71715_and_XRT_installation_instructions.md)
35+
* Fixes SDx 2018.2 [multithreaded kernel driver scheduling](https://forums.aws.amazon.com/thread.jspa?threadID=293166&tstart=0)
36+
* Requires [Xilinx runtime release 2018.2_XDF.RC4](https://github.com/Xilinx/XRT/tree/2018.2_XDF.RC4)
37+
* Please see XRT installation instructions [here](hdk/docs/SDxPatch_AR71715_and_XRT_installation_instructions.md#installing-xilinx-runtime-xrt-20182_xdfrc4)
38+
* EDMA Driver is no longer supported.
39+
* AWS strongly recommends moving your applications to [XDMA](sdk/linux_kernel_drivers/xdma/README.md).
40+
* [EDMA Driver](sdk/linux_kernel_drivers/edma/README.md) will be fully removed from Developer kit 1.4.7+.
41+
* Fixed Issues
42+
* [NULL definition include in header file](https://github.com/aws/aws-fpga/pull/414)
43+
* [Improved messaging for AFI builder script](https://github.com/aws/aws-fpga/pull/407)
44+
* [Fixes address decoding to DDR slaves in cl_dram_dma example](hdk/cl/examples/cl_dram_dma/design)
45+
* Improvements
46+
* [Improves SDK FPGA managment tools error messaging](sdk/userspace/fpga_mgmt_tools/README.md)
47+
* [Enhanced DMA lib for general device number mapping](sdk/userspace/fpga_libs/fpga_dma/fpga_dma_utils.c)
48+
* [Improved guidelines for AFI power managment](hdk/docs/afi_power.md)
49+
* [Improved Streaming Data Engine IP Integration Documentation](sdk/apps/virtual-ethernet/doc/SDE_HW_Guide.md)
50+
51+
* Package versions used to validate SDAccel runtime
52+
53+
| Package | AMI 1.5.0 [SDx 2018.2] | AMI 1.4.0 [SDx 2017.4] |
54+
|---------|------------------------|------------------------|
55+
| kernel | 3.10.0-862.11.6.el7.x86_64 | 3.10.0-693.21.1.el7.x86_64 |
56+
| kernel-devel | 3.10.0-862.11.6.el7.x86_64 | 3.10.0-693.21.1.el7.x86_64 |
57+
| LIBSTDC++ | libstdc++-4.8.5-36.el7.x86_64 | libstdc++-4.8.5-16.el7_4.2.x86_64 |
58+
59+
2960
## Release 1.4.5 (See [ERRATA](./ERRATA.md) for unsupported features)
3061

3162
* [Documents SDAccel Runtime compatibility](SDAccel/docs/Create_Runtime_AMI.md#runtime-ami-compatability-table)
@@ -93,7 +124,7 @@ Look for the ./hdk/hdk_version.txt file.
93124

94125
**Q: How do I know what my Shell version is? **
95126

96-
The Shell version of an FPGA slot is available through the FPGA Image Management tools. See the description of `fpga-describe-local-image` for more details on retrieving the shell version from a slot.
127+
The Shell version of an FPGA slot is available through the FPGA Image Management tools after an AFI has been loaded. See the description of `fpga-describe-local-image` for more details on retrieving the shell version from a slot. Prior to loading an AFI, the state of the FPGA (including shell version) is undefined and non-deterministic.
97128

98129
**Q: How do I know what version of FPGA Image management tools are running on my instance? **
99130

SDAccel/README.md

+3-10
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ The instructions below describe how to build the Xilinx FPGA Binary and host app
125125
$ make TARGETS=hw DEVICES=$AWS_PLATFORM all
126126
```
127127

128+
NOTE: If you encounter an error with `No current synthesis run set`, you may have previously run the [HDK IPI examples](../hdk/docs/IPI_GUI_Vivado_Setup.md) and created a `Vivado_init.tcl` file in `~/.Xilinx/Vivado`. This will cause [problems](https://forums.aws.amazon.com/thread.jspa?threadID=268202&tstart=25) with the build process, thus it is recommended to remove it before starting a hardware system build.
129+
128130
Now that you have built your Xilinx FPGA binary, see [SDAccel Power Analysis Guide](./docs/SDAccel_Power_Analysis.md) for more details on how to analyze power for your binary.
129131

130132
<a name="createafi"></a>
@@ -209,20 +211,11 @@ Here are the steps:
209211
* Ensure the host application can find and load the \*.awsxclbin AWS FPGA binary file.
210212

211213
* Source the Runtime Environment & Execute your Host Application
212-
* Xilinx SDx 2017.4:
213-
```
214-
$ sudo sh
215-
# source /opt/Xilinx/SDx/2017.4.rte.dyn/setup.sh # Other runtime env settings needed by the host app should be setup after this step
216-
# ./helloworld
217-
```
218-
219-
* Xilinx SDx 2018.2:
220214
```
221215
$ sudo sh
222-
# source /opt/xilinx/xrt/setup.sh # Other runtime env settings needed by the host app should be setup after this step
216+
# source $AWS_FPGA_REPO_DIR/sdaccel_runtime_setup.sh # Other runtime env settings needed by the host app should be setup after this step
223217
# ./helloworld
224218
```
225-
226219

227220
<a name="read"></a>
228221
# Additional SDAccel Information (2017.4)

SDAccel/docs/Create_Runtime_AMI.md

+28-10
Original file line numberDiff line numberDiff line change
@@ -51,25 +51,43 @@
5151

5252
## 2. Copy required Xilinx SDAccel Runtime Libraries to the Instance and Reboot your Runtime Instance.
5353

54-
* Using an instance running [FPGA Developer AMI](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) or an on-premises machine with access to a Xilinx SDAccel Tools Installation, run the following:
54+
* Using an instance running [FPGA Developer AMI](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) or an on-premises machine with access to a Xilinx SDAccel Tools Installation, first source $AWS_FPGA_REPO_DIR/sdaccel_setup.sh and then run following commands:
55+
56+
* if using Ubuntu or debian distribution set GLIBPATH env variable to Ubuntu. If using any other OS distribution set GLIBPATH to default.
57+
58+
* set env variable 'XLNXRTE' to intended runtime install directory path.
59+
60+
### **For Vivado SDX 2017.4**
5561

5662
````
57-
$ mkdir -p xlnxrte/lib/lnx64.o
58-
$ mkdir -p xlnxrte/runtime/bin
59-
$ cp $XIILNX_SDX/lib/lnx64.o/libstdc++.so* xlnxrte/lib/lnx64.o/.
60-
$ cp $XIILNX_SDX/lib/lnx64.o/libxilinxopencl.so xlnxrte/lib/lnx64.o/.
61-
$ cp $XIILNX_SDX/runtime/bin/xclbinsplit xlnxrte/runtime/bin
62-
$ cp $XIILNX_SDX/runtime/bin/xclbincat xlnxrte/runtime/bin
63+
$ export GLIBPATH= <Ubuntu or default -- see note above>
64+
$ export XLNXRTE=<your runtime install directory path>
65+
$ mkdir -p $XLNXRTE/runtime/platforms/$(DSA)/driver
66+
$ mkdir -p $XLNXRTE/lib/lnx64.o
67+
$ mkdir -p $XLNXRTE/runtime/bin
68+
$ mkdir -p $XLNXRTE/runtime/lib/x86_64
69+
$ cp $SDACCEL_DIR/userspace/src2/libxrt-aws.so $XLNXRTE/runtime/platforms/xilinx_aws-vu9p-f1-04261818_dynamic_5_0/driver/
70+
$ cp $SDACCEL_DIR/tools/awssak2/xbsak $XLNXRTE/runtime/bin/
71+
$ cp $XIILNX_SDX/lib/lnx64.o/$GLIBPATH/libstdc++.so* xlnxrte/lib/x86_64/
72+
$ cp $XIILNX_SDX/runtime/bin/xclbinsplit xlnxrte/runtime/bin/
73+
$ cp $XIILNX_SDX/runtime/bin/xclbincat xlnxrte/runtime/bin/
74+
$ cp $SDACCEL_DIR/aws_platform/xilinx_aws-vu9p-f1-04261818_dynamic_5_0/sw/lib/x86_64/libxilinxopencl.so $XLNXRTE/runtime/lib/x86_64/
75+
$ cp /opt/Xilinx/SDx/2017.4.rte.dyn/setup.sh $XLNXRTE/
76+
$ cp /opt/Xilinx/SDx/2017.4.rte.dyn/setup.csh $XLNXRTE/
6377
````
78+
* You may need to update path in $XLNXRTE/setup.sh and $XLNXRTE/setup.csh script to match your runtime instance.
79+
* Copy $XLNXRTE directory created to $HOME on your Runtime Instance.
6480

65-
* Copy xlnxrte directory created to $HOME on your Runtime Instance.
66-
81+
### **For Vivado SDX 2018.2**
6782

83+
please refer to [Installing the Xilinx Runtime](https://www.xilinx.com/html_docs/xilinx2018_2_xdf/sdaccel_doc/ejy1538090924727.html) for instructions on how to install runtime on your AMI.
84+
85+
6886
## 3. Install Runtime Drivers and run your FPGA accelerated application on your Runtime Instance.
6987
* Log back on to the Runtime Instance:
7088

7189
```
72-
$ export XILINX_SDX=$HOME/xlnxrte
90+
$ export XILINX_SDX=$HOME/$XLNXRTE
7391
````
7492
* You should be able to [run your FPGA accelerated application as described here](https://github.com/aws/aws-fpga/tree/master/SDAccel#runonf1), without needing to launch a new F1 instance
7593

0 commit comments

Comments
 (0)