Skip to content

Commit ed564e7

Browse files
AWSaallurideeppat
authored andcommitted
RELEASE V1.4.9
* New functionality: * Improved AFI load times for pipelined accelerator designs. For more details please see [Amazon FPGA image (AFI) pre-fetch and caching features](./hdk/docs/load_times.md). * Ease of Use features: * [Improved SDK Error messaging](./sdk/userspace/fpga_libs/fpga_mgmt/fpga_mgmt.c) * [Improved documentation](./hdk/docs/IPI_GUI_Vivado_Setup.md#switching-between-hdk-and-hlx-flows) to help with transition from [HLX to HDK command line flows](https://forums.aws.amazon.com/thread.jspa?threadID=302718&tstart=0) and vice versa * Incorporates feedback from [aws-fpga Issue 458](#458) by making the ```init_ddr``` function, used in design simulations to initialize DDR, more generic by moving out ATG deselection logic to a new ```deselect_atg_hw``` task * Bug Fixes: * Fixed Shell simulation model (sh_bfm) issue on PCIM AXI read data channel back pressure which was described in HDK 1.4.8 Errata. * Fixed HDK simulation example which [demonstrates DMA and PCIM traffic in parallel](./hdk/cl/examples/cl_dram_dma/verif/tests/test_dma_pcim_concurrent.sv).
1 parent eca10db commit ed564e7

Some content is hidden

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

43 files changed

+1201
-468
lines changed

ERRATA.md

+10-1
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,20 @@
88
* Multiple SDE instances per CL is not supported in this release. Support planned for future release.
99
* DRAM Data retention is not supported for CL designs with less than 4 DDRs enabled
1010
* Combinatorial loops in CL designs are not supported.
11-
* Shell Model (sh_bfm) provided with testbench for design simulations, continues to drive read data on PCIM AXI rdata channel even when rready is de-asserted. Will be fixed in future release.
11+
* [Automatic Traffic Generator (ATG)](./hdk/cl/examples/cl_dram_dma/design/cl_tst.sv) in SYNC mode does not wait for write response transaction before issuing read transactions. The fix for this issue is planned in a future release.
1212

1313
## SDK
1414

1515
## SDAccel (For additional restrictions see [SDAccel ERRATA](./SDAccel/ERRATA.md))
1616
* Virtual Ethernet is not supported when using SDAccel
1717
* DRAM Data retention is not supported for kernels that provision less than 4 DDRs
1818
* Combinatorial loops in CL designs are not supported.
19+
* When using [Xilinx runtime(XRT) version 2018.3.3.1](https://github.com/Xilinx/XRT/releases/tag/2018.3.3.1) or [AWS FPGA Developer AMI Version 1.6.0](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) your host application could fail with following error:
20+
21+
```
22+
: symbol lookup error: /opt/xilinx/xrt/lib/libxrt_aws.so: undefined symbol: uuid_parse!
23+
24+
```
25+
The SDAccel examples included in the developer kit use a SDAccel configuration file [sdaccel.ini]. To workaround this error please copy the SDAccel configuration file [sdaccel.ini](SDAccel/examples/aws/helloworld_ocl_runtime/sdaccel.ini) to your executable directory and try executing your application again.
26+
AWS is working with Xilinx to release a XRT patch to fix this issue.
27+

Jenkinsfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ if (test_sims) {
505505
String xilinx_version = y
506506
String cl_name = x
507507
String simulator = z
508-
String node_name = "Sim ${cl_name} ${xilinx_version}"
508+
String node_name = "Sim ${cl_name} ${xilinx_version} ${simulator}"
509509
String key = "test_${cl_name}__"
510510
String report_file = "test_sims_${cl_name}_${xilinx_version}.xml"
511511
def tool_module_map = simulator_tool_default_map.get(xilinx_version)

RELEASE_NOTES.md

+23-4
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,30 @@
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.9 (See [ERRATA](./ERRATA.md) for unsupported features)
30+
* New functionality:
31+
* Improved AFI load times for pipelined accelerator designs. For more details please see [Amazon FPGA image (AFI) pre-fetch and caching features](./hdk/docs/load_times.md).
32+
33+
* Ease of Use features:
34+
* [Improved SDK Error messaging](./sdk/userspace/fpga_libs/fpga_mgmt/fpga_mgmt.c)
35+
* [Improved documentation](./hdk/docs/IPI_GUI_Vivado_Setup.md#switching-between-hdk-and-hlx-flows) to help with transition from [HLX to HDK command line flows](https://forums.aws.amazon.com/thread.jspa?threadID=302718&tstart=0) and vice versa
36+
* Incorporates feedback from [aws-fpga Issue 458](https://github.com/aws/aws-fpga/issues/458) by making the ```init_ddr``` function, used in design simulations to initialize DDR, more generic by moving out ATG deselection logic to a new ```deselect_atg_hw``` task
37+
38+
* Bug Fixes:
39+
* Fixed Shell simulation model (sh_bfm) issue on PCIM AXI read data channel back pressure which was described in HDK 1.4.8 Errata.
40+
* Fixed HDK simulation example which [demonstrates DMA and PCIM traffic in parallel](./hdk/cl/examples/cl_dram_dma/verif/tests/test_dma_pcim_concurrent.sv).
41+
42+
* Package versions used for validation
43+
44+
| Package | AMI 1.6.0 [2018.3] |AMI 1.5.0 [2018.2] | AMI 1.4.0 [2017.4] |
45+
|---------|------------------------|------------------------|-----------------------|
46+
| OS | Centos 7.6 | Centos 7.5, 7.6 | Centos 7.4 |
47+
| kernel | 3.10.0-957.5.1.el7.x86_64 | 3.10.0-862.11.6.el7.x86_64, 3.10.0-957.1.3.el7.x86_64 | 3.10.0-693.21.1.el7.x86_64 |
48+
| kernel-devel | 3.10.0-957.5.1.el7.x86_64 | 3.10.0-862.11.6.el7.x86_64, 3.10.0-957.1.3.el7.x86_64 | 3.10.0-693.21.1.el7.x86_64 |
49+
| LIBSTDC++ | libstdc++-4.8.5-36.el7.x86_64 | libstdc++-4.8.5-36.el7.x86_64 | libstdc++-4.8.5-16.el7_4.2.x86_64 |
50+
2951
## Release 1.4.8 (See [ERRATA](./ERRATA.md) for unsupported features)
30-
* FPGA developer kit supports Xilinx SDx/Vivado 2018.3
52+
* FPGA developer kit supports Xilinx SDx/Vivado 2018.3
3153
* We recommend developers upgrade to v1.4.8 to benefit from the new features, bug fixes, and optimizations. To upgrade, use [Developer AMI v1.6.0](https://aws.amazon.com/marketplace/pp/B06VVYBLZZ) on AWS Marketplace. The Developer Kit scripts (hdk_setup.sh or sdaccel_setup.sh) will detect the tool version and update the environment based on requirements needed for Xilinx 2018.3 tools.
3254
* Ease of Use features:
3355
* Support for importing results into SDx GUI - By importing results from a script-based flow into SDx IDE, developers can leverage the tools for debug/profiling while keeping flexibility of the script-based flow
@@ -58,9 +80,6 @@
5880
| LIBSTDC++ | libstdc++-4.8.5-36.el7.x86_64 | libstdc++-4.8.5-36.el7.x86_64 | libstdc++-4.8.5-16.el7_4.2.x86_64 |
5981

6082

61-
62-
63-
6483
## Release 1.4.7 (See [ERRATA](./ERRATA.md) for unsupported features)
6584

6685
* Adds [Xilinx Runtime (XRT)](https://github.com/Xilinx/XRT/releases/tag/2018.2_XDF.RC5) Support for Linux kernel 3.10.0-957.1.3.el7.x86_64 & Centos 7.6

hdk/cl/CHECKLIST_BEFORE_BUILDING_CL.md

+2
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ This checklist includes important items that the developer should check before c
1111
5. Update the timing and placement constraints under `$CL_DIR/build/constraints` for your design specific changes.
1212

1313
6. Update `$CL_DIR/build/scripts/create_dcp_from_cl.tcl` for your design specific changes, specifically around IP sources and xdc files, and your specific design xdc files.
14+
15+
7. If you ran the HLx flow before, make sure you [follow the steps to switch between HLx and HDK flows](../docs/IPI_GUI_Vivado_Setup.md#hlxhdk_switch)

hdk/cl/examples/cl_dram_dma/software/runtime/test_dram_dma_hwsw_cosim.c

+1
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ int dma_example_hwsw_cosim(int slot_id, size_t buffer_size)
167167
setup_send_rdbuf_to_c(read_buffer, buffer_size);
168168
printf("Starting DDR init...\n");
169169
init_ddr();
170+
deselect_atg_hw();
170171
printf("Done DDR init...\n");
171172
#endif
172173
printf("filling buffer with random data...\n") ;

hdk/cl/examples/cl_dram_dma/verif/scripts/Makefile.questa

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ compile: $(COMPLIB_DIR)
2626
mkdir -p $(SIM_DIR)
2727
cd ${SIM_DIR} && ln -s -f ../questa_complib/modelsim.ini
2828
cd $(SIM_DIR) && vlog $(C_FILES) -ccflags "-I$(C_SDK_USR_INC_DIR)" -ccflags "-I$(C_SDK_USR_UTILS_DIR)" -ccflags "-I$(C_COMMON_DIR)/include" -ccflags "-I$(C_COMMON_DIR)/src" -ccflags "-DSV_TEST" -ccflags "-DSCOPE" -ccflags "-DQUESTA_SIM" -ccflags "-DINT_MAIN" -ccflags "-I$(C_INC_DIR)"
29-
cd $(SIM_DIR) && vlog -suppress 2732 +define+DMA_TEST $(DEFAULT_DEFINES) -mfcu -sv -64 -timescale 1ps/1ps -93 -L $(COMPLIB_DIR)/unisims_ver -L $(COMPLIB_DIR)/unimacro_ver -L $(COMPLIB_DIR)/secureip -f $(SCRIPTS_DIR)/top.$(SIMULATOR).f
29+
cd $(SIM_DIR) && vlog +define+DMA_TEST $(DEFAULT_DEFINES) -mfcu -sv -64 -timescale 1ps/1ps -93 -L $(COMPLIB_DIR)/unisims_ver -L $(COMPLIB_DIR)/unimacro_ver -L $(COMPLIB_DIR)/secureip -f $(SCRIPTS_DIR)/top.$(SIMULATOR).f
3030

3131
run:
3232
ifeq ($(VIVADO_TOOL_VERSION), v2017.4)

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

+27-9
Original file line numberDiff line numberDiff line change
@@ -213,21 +213,39 @@ module test_dma_pcim_concurrent();
213213

214214
// Number of instructions, zero based ([31:16] for read, [15:0] for write)
215215
tb.poke_ocl(.addr(`NUM_INST), .data(32'h0000_0000));
216-
216+
217217
// Start writes and reads
218-
tb.poke_ocl(.addr(`CNTL_REG), .data(`WR_START_BIT | `RD_START_BIT));
219-
220-
$display("[%t] : Waiting for PCIe write and read activity to complete", $realtime);
218+
tb.poke_ocl(.addr(`CNTL_REG), .data(`WR_START_BIT));
219+
//Even in SYNC mode ATG doesn't wait for write response before issuing read transactions.
220+
// adding 500ns wait to account for random back pressure from sh_bfm on write address & write data channels.
221+
$display("[%t] : Waiting for PCIe write activity to complete", $realtime);
221222
#500ns;
223+
timeout_count = 0;
222224

225+
do begin
226+
tb.peek_ocl(.addr(`CNTL_REG), .data(read_data));
227+
timeout_count++;
228+
end while ((read_data[2:0] !== 3'b000) && (timeout_count < 100));
229+
230+
if ((timeout_count == 100) && (read_data[2:0] !== 3'b000)) begin
231+
$error("[%t] : *** ERROR *** Timeout waiting for writes to complete.", $realtime);
232+
error_count++;
233+
end
234+
235+
tb.poke_ocl(.addr(`CNTL_REG), .data(`RD_START_BIT));
236+
// adding 500ns wait to account for random back pressure from sh_bfm on read request channel.
237+
238+
$display("[%t] : Waiting for PCIe read activity to complete", $realtime);
239+
#500ns;
240+
223241
timeout_count = 0;
224242
do begin
225243
tb.peek_ocl(.addr(`CNTL_REG), .data(read_data));
226244
timeout_count++;
227245
end while ((read_data[2:0] !== 3'b000) && (timeout_count < 100));
228246

229247
if ((timeout_count == 100) && (read_data[2:0] !== 3'b000)) begin
230-
$display("[%t] : *** ERROR *** Timeout waiting for writes and reads to complete.", $realtime);
248+
$error("[%t] : *** ERROR *** Timeout waiting for reads to complete.", $realtime);
231249
error_count++;
232250
end else begin
233251
// Stop reads and writes ([1] for reads, [0] for writes)
@@ -242,7 +260,7 @@ module test_dma_pcim_concurrent();
242260
tb.peek_ocl(.addr(`WR_CYCLE_CNT_HIGH), .data(read_data));
243261
cycle_count[63:32] = read_data;
244262
if (cycle_count == 64'h0) begin
245-
$display("[%t] : *** ERROR *** Write Timer value was 0x0 at end of test.", $realtime);
263+
$error("[%t] : *** ERROR *** Write Timer value was 0x0 at end of test.", $realtime);
246264
error_count++;
247265
end
248266

@@ -253,7 +271,7 @@ module test_dma_pcim_concurrent();
253271
tb.peek_ocl(.addr(`RD_CYCLE_CNT_HIGH), .data(read_data));
254272
cycle_count[63:32] = read_data;
255273
if (cycle_count == 64'h0) begin
256-
$display("[%t] : *** ERROR *** Read Timer value was 0x0 at end of test.", $realtime);
274+
$error("[%t] : *** ERROR *** Read Timer value was 0x0 at end of test.", $realtime);
257275
error_count++;
258276
end
259277

@@ -268,7 +286,7 @@ module test_dma_pcim_concurrent();
268286
error_addr[63:32] = read_data;
269287
tb.peek_ocl(.addr(`RD_ERR_INDEX), .data(read_data));
270288
error_index = read_data[3:0];
271-
$display("[%t] : *** ERROR *** Read compare error from address 0x%016x, index 0x%1x", $realtime, error_addr, error_index);
289+
$error("[%t] : *** ERROR *** Read compare error from address 0x%016x, index 0x%1x", $realtime, error_addr, error_index);
272290
error_count++;
273291
end
274292
end // else: !if((timeout_count == 100) && (read_data[2:0] !== 3'b000))
@@ -288,7 +306,7 @@ module test_dma_pcim_concurrent();
288306
$display("[%t] : Detected %3d errors during this test", $realtime, error_count);
289307

290308
if (fail || (tb.chk_prot_err_stat())) begin
291-
$display("[%t] : *** TEST FAILED ***", $realtime);
309+
$error("[%t] : *** TEST FAILED ***", $realtime);
292310
end else begin
293311
$display("[%t] : *** TEST PASSED ***", $realtime);
294312
end

0 commit comments

Comments
 (0)