Skip to content

Commit fa4336c

Browse files
authored
Release v1.3.6 (#386)
1 parent e6164cb commit fa4336c

File tree

28 files changed

+191
-130
lines changed

28 files changed

+191
-130
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,6 @@ vivado*.log
9595

9696
# pytest artifacts
9797
.cache/
98+
99+
# Patches
100+
patches/*

FAQs.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ The developer can create multiple AFIs at no extra cost, up to a defined limited
107107

108108
**Q: What regions are supported?**
109109

110-
AWS FPGA generation and EC2 F1 instances are supported in us-east-1 (N. Virginia), us-west-2 (Oregon) and eu-west-1 (Ireland).
110+
AWS FPGA generation and EC2 F1 instances are supported in us-east-1 (N. Virginia), us-west-2 (Oregon), eu-west-1 (Ireland) and us-gov-west-1 (GovCloud US).
111111

112112

113113

@@ -205,6 +205,10 @@ Yes. Developers are free to use any IP blocks within the Custom Logic region. Th
205205

206206

207207
## Getting Started
208+
**Q: What AWS knowledge do I need to learn before I can develop accelerators and run on AWS F1 instances?**
209+
210+
[AWS Getting Started Resource Center](https://aws.amazon.com/getting-started/) has lots of resources to help developers get started. For F1 development, launching linux virtual machines (EC2) and storing and retrieving files from S3 are required skills.
211+
208212
**Q: What do I need to get started on building accelerators for FPGA instances?**
209213

210214
Getting started requires downloading the latest HDK and SDK from the AWS FPGA GitHub repository. The HDK and SDK provide the needed code and information for building FPGA code. The HDK provides all the information needed for developing an FPGA image from source code, while the SDK provides all the runtime software for managing the Amazon FPGA Image (AFI) loaded into the F1 instance FPGA.

Jenkinsfile

+24-17
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,11 @@ if (debug_fdf_uram) {
8181
// Globals
8282
//=============================================================================
8383

84-
// Map that contains top level stages
85-
def top_parallel_stages = [:]
84+
// Map that contains stages of tests
85+
86+
def initial_tests = [:]
87+
def secondary_tests = [:]
88+
def multi_stage_tests = [:]
8689

8790
// Task to Label map
8891
def task_label = [
@@ -118,7 +121,7 @@ if (is_public_repo())
118121

119122

120123
if (test_markdown_links || test_src_headers) {
121-
top_parallel_stages['Short Tests'] = {
124+
initial_tests['Documentation Tests'] = {
122125
node(task_label.get('md_links')) {
123126
checkout scm
124127
if (test_markdown_links) {
@@ -169,7 +172,7 @@ if (test_markdown_links || test_src_headers) {
169172
//=============================================================================
170173

171174
if (test_hdk_scripts) {
172-
top_parallel_stages['Test HDK Scripts'] = {
175+
initial_tests['Test HDK Scripts'] = {
173176
stage('Test HDK Scripts') {
174177
String report_file = 'test_hdk_scripts.xml'
175178
node(task_label.get('source_scripts')) {
@@ -194,7 +197,7 @@ if (test_hdk_scripts) {
194197
}
195198

196199
if (test_fpga_tools) {
197-
top_parallel_stages['Test FPGA Tools 1 Slot'] = {
200+
initial_tests['Test FPGA Tools 1 Slot'] = {
198201
stage('Test FPGA Tools 1 Slot') {
199202
String report_file = 'test_fpga_tools.xml'
200203
node(task_label.get('runtime')) {
@@ -216,7 +219,7 @@ if (test_fpga_tools) {
216219
}
217220
}
218221
}
219-
top_parallel_stages['Test FPGA Tools All Slots'] = {
222+
initial_tests['Test FPGA Tools All Slots'] = {
220223
stage('Test FPGA Tools All Slots') {
221224
String report_file = 'test_fpga_tools_all_slots.xml'
222225
node(task_label.get('runtime-all-slots')) {
@@ -241,7 +244,7 @@ if (test_fpga_tools) {
241244
}
242245

243246
if (test_sims) {
244-
top_parallel_stages['Run Sims'] = {
247+
multi_stage_tests['Run Sims'] = {
245248
stage('Run Sims') {
246249
def cl_names = ['cl_dram_dma', 'cl_hello_world']
247250
def sim_nodes = [:]
@@ -280,7 +283,7 @@ if (test_sims) {
280283
}
281284

282285
if (test_edma) {
283-
top_parallel_stages['Test EDMA Driver'] = {
286+
secondary_tests['Test EDMA Driver'] = {
284287
stage('Test EDMA Driver') {
285288
node(task_label.get('runtime')) {
286289
echo "Test EDMA Driver"
@@ -301,7 +304,7 @@ if (test_edma) {
301304
} finally {
302305
if (fileExists(report_file)) {
303306
junit healthScaleFactor: 10.0, testResults: report_file
304-
archiveArtifacts artifacts: "sdk/tests/fio_dma_tools/scripts/*.csv", fingerprint: true
307+
// archiveArtifacts artifacts: "sdk/tests/fio_dma_tools/scripts/*.csv", fingerprint: true
305308
}
306309
else {
307310
echo "Pytest wasn't run for stage. Report file not generated: ${report_file}"
@@ -313,7 +316,7 @@ if (test_edma) {
313316
}
314317

315318
if (test_xdma) {
316-
top_parallel_stages['Test XDMA Driver'] = {
319+
secondary_tests['Test XDMA Driver'] = {
317320
stage('Test XDMA Driver') {
318321
node(task_label.get('runtime')) {
319322
echo "Test XDMA Driver"
@@ -333,15 +336,15 @@ if (test_xdma) {
333336
throw exc
334337
} finally {
335338
junit healthScaleFactor: 10.0, testResults: report_file
336-
archiveArtifacts artifacts: "sdk/tests/fio_dma_tools/scripts/*.csv", fingerprint: true
339+
//archiveArtifacts artifacts: "sdk/tests/fio_dma_tools/scripts/*.csv", fingerprint: true
337340
}
338341
}
339342
}
340343
}
341344
}
342345

343346
if (test_runtime_software) {
344-
top_parallel_stages['Test Runtime Software'] = {
347+
multi_stage_tests['Test Runtime Software'] = {
345348
stage('Test Runtime Software') {
346349
def nodes = [:]
347350
def node_types = ['runtime', 'runtime-all-slots']
@@ -389,7 +392,7 @@ if (test_runtime_software) {
389392
}
390393

391394
if (test_dcp_recipes) {
392-
top_parallel_stages['Test DCP Recipes'] = {
395+
multi_stage_tests['Test DCP Recipes'] = {
393396
stage('Test DCP Recipes') {
394397
def nodes = [:]
395398
for (cl in dcp_recipe_cl_names) {
@@ -433,7 +436,7 @@ if (test_dcp_recipes) {
433436
if (test_hdk_fdf) {
434437
// Top level stage for FDF
435438
// Each CL will have its own parallel FDF stage under this one.
436-
top_parallel_stages['HDK_FDF'] = {
439+
multi_stage_tests['HDK_FDF'] = {
437440
stage('HDK FDF') {
438441
def fdf_stages = [:]
439442
for (x in fdf_test_names) {
@@ -602,7 +605,7 @@ if (test_hdk_fdf) {
602605
//=============================================================================
603606

604607
if (test_sdaccel_scripts) {
605-
top_parallel_stages['Test SDAccel Scripts'] = {
608+
initial_tests['Test SDAccel Scripts'] = {
606609
stage('Test SDAccel Scripts') {
607610
String report_file = 'test_sdaccel_scripts.xml'
608611
node(task_label.get('source_scripts')) {
@@ -627,7 +630,7 @@ if (test_sdaccel_scripts) {
627630
}
628631

629632
if (test_helloworld_sdaccel_example_fdf || test_all_sdaccel_examples_fdf) {
630-
top_parallel_stages['Run SDAccel Tests'] = {
633+
multi_stage_tests['Run SDAccel Tests'] = {
631634
def sdaccel_build_stages = [:]
632635
String sdaccel_examples_list = 'sdaccel_examples_list.json'
633636

@@ -843,4 +846,8 @@ if (test_helloworld_sdaccel_example_fdf || test_all_sdaccel_examples_fdf) {
843846
// SDK Tests
844847
//=============================================================================
845848

846-
parallel top_parallel_stages
849+
850+
// Run the tests here
851+
parallel initial_tests
852+
parallel secondary_tests
853+
parallel multi_stage_tests

RELEASE_NOTES.md

+7
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@
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.3.6 (See [ERRATA](./ERRATA.md) for unsupported features)
30+
* Simulation model bug fix for transfer size of 64 bytes
31+
  *   Xilinx 2017.1 Patch AR70350 - fixes report_power hangs. Patch is automatically applied during setup scripts using MYVIVADO environment variable
32+
* Updated synthesis scripts with -sv option when calling read_verilog
33+
* Added documentation on us-gov-west-1 (GovCloud US)
34+
* Minor EDMA driver fixes and improvements
35+
2936
## Release 1.3.5 (See [ERRATA](./ERRATA.md) for unsupported features)
3037
* [Amazon FPGA Images (AFIs) Tagging](hdk/docs/describe_fpga_images.md) - To help with managing AFIs, you can optionally assign your own metadata to each AFI in the form of tags. Tags are managed using the AWS EC2 CLI commands create-tags, describe-tags and delete-tags. Tags are custom key/value pairs that can be used to identify or group EC2 resources, including AFIs. Tags can be used as filters in the describe-fpga-images API to search and filter the AFIs based on the tags you add.
3138
* [EDMA driver fixes and improvements](sdk/linux_kernel_drivers/edma/README.md), including polled DMA descriptor completion mode which improves performance on smaller IO (<1MB)

SDAccel/tools/create_sdaccel_afi.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ script=${BASH_SOURCE[0]}
2121
full_script=$(readlink -f $script)
2222
script_name=$(basename $full_script)
2323

24-
source $AWS_FPGA_REPO_DIR/shared/bin/message_functions.sh
24+
source $AWS_FPGA_REPO_DIR/shared/bin/set_common_functions.sh
2525

2626
debug=0
2727

hdk/cl/examples/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ To install the AWS CLI, please follow the instructions here: (http://docs.aws.am
2424

2525
$ aws configure # to set your credentials (found in your console.aws.amazon.com page) and default region
2626

27-
Use the aws-cli [region](http://docs.aws.amazon.com/cli/latest/userguide/cli-command-line.html) command line argument to override the profile default region. Supported regions include: us-east-1, us-west-2 and eu-west-1
27+
Use the aws-cli [region](http://docs.aws.amazon.com/cli/latest/userguide/cli-command-line.html) command line argument to override the profile default region. Supported regions include: us-east-1, us-west-2, eu-west-1 and us-gov-west-1.
2828

2929
### 1. Pick one of the examples and move to its directory
3030

@@ -183,7 +183,7 @@ The FPGA Management tools are required to load an AFI onto an FPGA. Depending o
183183
```
184184
To install the AWS CLI, please follow the instructions here: (http://docs.aws.amazon.com/cli/latest/userguide/installing.html).
185185
```
186-
$ aws configure # to set your credentials (found in your console.aws.amazon.com page) and instance region (us-east-1, us-west-2 or eu-west-1)
186+
$ aws configure # to set your credentials (found in your console.aws.amazon.com page) and instance region (us-east-1, us-west-2, eu-west-1 or us-gov-west-1)
187187
```
188188

189189
### 5. Load the AFI

hdk/cl/examples/cl_dram_dma/build/scripts/synth_cl_dram_dma.tcl

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ read_verilog -sv [glob $ENC_SRC_DIR/*.?v]
4848
puts "AWS FPGA: Reading AWS Shell design";
4949

5050
#Read AWS Design files
51-
read_verilog [ list \
51+
read_verilog -sv [ list \
5252
$HDK_SHELL_DESIGN_DIR/lib/lib_pipe.sv \
5353
$HDK_SHELL_DESIGN_DIR/lib/bram_2rw.sv \
5454
$HDK_SHELL_DESIGN_DIR/lib/flop_fifo.sv \

hdk/cl/examples/cl_dram_dma/verif/tests/test_dram_dma.sv

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ module test_dram_dma();
2222
int timeout_count;
2323
int fail;
2424
logic [3:0] status;
25-
int len0 = 128;
25+
int len0 = 64;
2626
int len1 = 128;
2727
int len2 = 6000;
2828
int len3 = 300;

hdk/cl/examples/cl_hello_world/build/scripts/synth_cl_hello_world.tcl

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ read_verilog -sv [glob $ENC_SRC_DIR/*.?v]
4848
puts "AWS FPGA: Reading AWS Shell design";
4949

5050
#Read AWS Design files
51-
read_verilog [ list \
51+
read_verilog -sv [ list \
5252
$HDK_SHELL_DESIGN_DIR/sh_ddr/synth/sync.v\
5353
$HDK_SHELL_DESIGN_DIR/sh_ddr/synth/flop_ccf.sv\
5454
$HDK_SHELL_DESIGN_DIR/sh_ddr/synth/ccf_ctl.v\

hdk/cl/examples/cl_hello_world_vhdl/build/scripts/synth_cl_hello_world.tcl

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ read_vhdl [ glob $ENC_SRC_DIR/*.vhd ]
5050
puts "AWS FPGA: Reading AWS Shell design";
5151

5252
#Read AWS Design files
53-
read_verilog [ list \
53+
read_verilog -sv [ list \
5454
$HDK_SHELL_DESIGN_DIR/lib/lib_pipe.sv \
5555
$HDK_SHELL_DESIGN_DIR/lib/bram_2rw.sv \
5656
$HDK_SHELL_DESIGN_DIR/lib/flop_fifo.sv \

hdk/cl/examples/cl_uram_example/build/scripts/synth_cl_uram_example.tcl

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ save_bd_design
7777
puts "AWS FPGA: Reading AWS Shell design";
7878

7979
#Read AWS Design files
80-
read_verilog [ list \
80+
read_verilog -sv [ list \
8181
$HDK_SHELL_DESIGN_DIR/sh_ddr/synth/sync.v\
8282
$HDK_SHELL_DESIGN_DIR/sh_ddr/synth/flop_ccf.sv\
8383
$HDK_SHELL_DESIGN_DIR/sh_ddr/synth/ccf_ctl.v\

hdk/common/verif/models/sh_bfm/sh_bfm.sv

+4-1
Original file line numberDiff line numberDiff line change
@@ -2273,10 +2273,13 @@ module sh_bfm #(
22732273
endfunction // start_dma_to_buffer
22742274

22752275
function bit is_dma_to_cl_done(input int chan); // 1 = done
2276+
//$display("In function is_dma_to_cl_done h2c_dma_done is %x \n", h2c_dma_done[chan]);
2277+
22762278
return h2c_dma_done[chan];
22772279
endfunction // is_dma_to_cl_done
22782280

22792281
function bit is_dma_to_buffer_done(input int chan); // 1 = done
2282+
//$display("In function is_dma_to_buffer_done c2h_dma_done is %x \n", c2h_dma_done[chan]);
22802283
return c2h_dma_done[chan];
22812284
endfunction // is_dma_to_buffer_done
22822285

@@ -2365,7 +2368,7 @@ module sh_bfm #(
23652368
num_bytes = last_beat ? (dop.len + dop.cl_addr[5:0])%64 : 64;
23662369
axi_data.last = (j == axi_cmd.len) ? 1 : 0;
23672370
if(num_of_data_beats == 1) begin
2368-
num_bytes = (dop.len)%64;
2371+
num_bytes = (dop.len == 64) ? 64 : (dop.len)%64;
23692372
for(int i=start_addr[5:0]; i < (num_bytes+start_addr[5:0]); i++) begin
23702373
axi_data.data = axi_data.data | tb.hm_get_byte(.addr(dop.buffer + byte_cnt)) << 8*i;
23712374
axi_data.strb = axi_data.strb | 1 << i;

hdk/hdk_version.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
HDK_VERSION=1.3.5
1+
HDK_VERSION=1.3.6

hdk/supported_vivado_versions.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
Vivado v2017.1_sdx (64-bit)
22
Vivado v2017.1_sdxop (64-bit)
3+
Vivado v2017.1_sdx_AR70350 (64-bit)

hdk_setup.sh

+5-3
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ script_name=$(basename $full_script)
2828
script_dir=$(dirname $full_script)
2929
current_dir=$(pwd)
3030

31-
source $script_dir/shared/bin/message_functions.sh
32-
3331
debug=0
3432

3533
# This function checks if an environment module exists
@@ -82,7 +80,7 @@ for (( i = 0; i < ${#args[@]}; i++ )); do
8280
esac
8381
done
8482

85-
source $script_dir/shared/bin/set_AWS_FPGA_REPO_DIR.sh
83+
source $script_dir/shared/bin/set_common_functions.sh
8684
source $script_dir/shared/bin/set_common_env_vars.sh
8785

8886
hdk_shell_version=$(readlink $HDK_COMMON_DIR/shell_stable)
@@ -238,4 +236,8 @@ else
238236
fi
239237

240238
cd $current_dir
239+
240+
# Install any patches as required
241+
setup_patches
242+
241243
info_msg "AWS HDK setup PASSED.";

sdaccel_setup.sh

+5-4
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ script_name=$(basename $full_script)
2727
script_dir=$(dirname $full_script)
2828
current_dir=$(pwd)
2929

30-
source $script_dir/shared/bin/message_functions.sh
31-
32-
source $script_dir/shared/bin/set_AWS_FPGA_REPO_DIR.sh
33-
30+
source $script_dir/shared/bin/set_common_functions.sh
3431
source $script_dir/shared/bin/set_common_env_vars.sh
3532

3633
# Source sdk_setup.sh
@@ -281,6 +278,10 @@ info_msg "The default AWS Platform has been set to: \"AWS_PLATFORM=\$AWS_PLATFOR
281278
info_msg "To change the platform for 1DDR: \"export AWS_PLATFORM=\$AWS_PLATFORM_1DDR\" "
282279
info_msg "To change the platform for 4DDR Debug: \"export AWS_PLATFORM=\$AWS_PLATFORM_4DDR_DEBUG\" "
283280

281+
# Install patches as required.
282+
283+
setup_patches
284+
284285
cd $current_dir
285286

286287
info_msg "SDAccel Setup PASSED"

sdk/linux_kernel_drivers/edma/Makefile

+13-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ edma-drv-objs := \
1919
KERNEL_VERSION ?= $(shell uname -r)
2020

2121
KBUILD_CPPFLAGS+=-I$(PWD)/
22-
KBUILD_CPPFLAGS+=-DDRV_MODULE_VERSION=\"alpha1\"
22+
KBUILD_CPPFLAGS+=-DDRV_MODULE_VERSION=\"1.0.0\"
23+
24+
INSTALLED_MOD_NAME=edma-drv
2325

2426
ifeq ($(BACKEND_MEMORY),1)
2527
KBUILD_CPPFLAGS+=-DBACKEND_MEMORY=1
@@ -37,3 +39,13 @@ unit-test:
3739
make -C ./unit-test all
3840
clean:
3941
make -C /lib/modules/$(KERNEL_VERSION)/build M=$(PWD) clean
42+
43+
install:
44+
echo $(INSTALLED_MOD_NAME) > /etc/modules-load.d/$(INSTALLED_MOD_NAME).conf
45+
cp edma-drv.ko /lib/modules/`uname -r`/$(INSTALLED_MOD_NAME).ko
46+
depmod
47+
48+
uninstall:
49+
rm -f /etc/modules-load.d/$(INSTALLED_MOD_NAME).conf
50+
rm -f /lib/modules/`uname -r`/$(INSTALLED_MOD_NAME).ko
51+
depmod

sdk/linux_kernel_drivers/edma/edma.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
#include "edma_dev.h"
3636
#include "edma_backend.h"
3737

38-
MODULE_AUTHOR("Alex Levin <levinale@amazon.com>");
39-
MODULE_DESCRIPTION("Amazon EDMA driver");
38+
MODULE_AUTHOR("Amazon.com, Inc. or its affiliates");
39+
MODULE_DESCRIPTION("Elastic Direct Memory Access");
4040
MODULE_LICENSE("GPL");
4141
MODULE_VERSION(DRV_MODULE_VERSION);
4242

sdk/linux_kernel_drivers/edma/edma_dev.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ MODULE_PARM_DESC(single_transaction_size, "The size of a single transaction over
8888

8989
unsigned int edma_queue_depth = 1024;
9090
module_param(edma_queue_depth, uint, 0);
91-
MODULE_PARM_DESC(ebcs_queue_depth, "EDMA queue depth. (default=1024)");
91+
MODULE_PARM_DESC(edma_queue_depth, "EDMA queue depth. (default=1024)");
9292

9393
static unsigned int fsync_timeout_sec = 9;
9494
module_param(fsync_timeout_sec, uint, 0);

0 commit comments

Comments
 (0)