Skip to content

Commit 758909f

Browse files
committed
Release 1.2.1
1 parent d84f722 commit 758909f

File tree

31 files changed

+1357
-93
lines changed

31 files changed

+1357
-93
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,9 @@ hdk/common/verif/models/.vivado_version
5252
vivado_pid*.str
5353
vivado*.jou
5454
vivado*.log
55+
56+
# Pycharm projects
57+
.idea/
58+
59+
# Python compiled code
60+
*.pyc

RELEASE_NOTES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@
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.2.1
30+
* Updated CL example build scripts with Prohibit URAM sites
31+
* EDMA Performance improvments
32+
* Expanded EC2 Instance type support
33+
* CL Examples @250Mhz (Clock recipe A1)
34+
* Option to exclude chipscope from building CL examples (DISABLE_CHIPSCOPE_DEBUG)
2935

3036
# Release 1.2.0
3137

hdk/cl/examples/README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,18 @@ If you like to start your own CL, check out the [How to create your own CL](../d
4646

4747
Executing the `aws_build_dcp_from_cl.sh` script will perform the entire implementation process converting the CL design into a completed Design Checkpoint that meets timing and placement constrains of the target FPGA.
4848
The output is a tarball file comprising the DCP file, and other log/manifest files, formatted as `YY_MM_DD-hhmm.Developer_CL.tar`.
49-
This file would be submitted to AWS to create an AFI.
49+
This file would be submitted to AWS to create an AFI. By default the build script will use Clock Group A Recipe A0 wich uses a main clock of 125 MHz.
5050

5151
$ cd $CL_DIR/build/scripts
5252
$ ./aws_build_dcp_from_cl.sh
5353

54+
In order to use a 250 MHz main clock the developer can specify the A1 Clock Group A Recipe as in the following example:
55+
56+
$ cd $CL_DIR/build/scripts
57+
$ ./aws_build_dcp_from_cl.sh -clock_recipe_a A1
58+
59+
Other clock recipes can be specified as well. More details on the [Clock Group Recipes Table](../../docs/clock_recipes.csv) and how to specify different recipes can be found in the following [README](../../common/shell_v04151701/new_cl_template/build/README.md).
60+
5461
**NOTE**: *The DCP generation can take up to several hours to complete, hence the `aws_build_dcp_from_cl.sh` will run the main build process (`vivado`) in within a `nohup` context: This will allow the build to continue running even if the SSH session is terminated half way through the run*
5562

5663
To be notified via e-mail when the build completes:

hdk/cl/examples/cl_dram_dma/build/constraints/cl_pnr_user.xdc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,17 @@ add_cells_to_pblock [get_pblocks pblock_CL_bot] [get_cells -quiet -hierarchical
3838
add_cells_to_pblock [get_pblocks pblock_CL_bot] [get_cells -quiet -hierarchical -filter {NAME =~ CL/SH_DDR/ddr_cores.DDR4_2*}]
3939
add_cells_to_pblock [get_pblocks pblock_CL_bot] [get_cells -quiet -hierarchical -filter {NAME =~ CL/SH_DDR/ddr_inst[2].*}]
4040
add_cells_to_pblock [get_pblocks pblock_CL_bot] [get_cells -quiet -hierarchical -filter {NAME =~ CL/SH_DDR/ddr_stat[2].*}]
41-
add_cells_to_pblock [get_pblocks pblock_CL_bot] [get_cells -quiet -hierarchical -filter {NAME =~ CL/CL_PCIM_MSTR/CL_TST_PCI}]
41+
#add_cells_to_pblock [get_pblocks pblock_CL_bot] [get_cells -quiet -hierarchical -filter {NAME =~ CL/CL_PCIM_MSTR/CL_TST_PCI}]
4242
add_cells_to_pblock [get_pblocks pblock_CL_bot] [get_cells [list CL/CL_DMA_PCIS_SLV/PCI_AXL_REG_SLC CL/CL_PCIM_MSTR/PCI_AXI4_REG_SLC CL/CL_OCL_SLV/AXIL_OCL_REG_SLC CL/CL_SDA_SLV/AXIL_SDA_REG_SLC]]
4343
add_cells_to_pblock [get_pblocks pblock_CL_bot] [get_cells -hierarchical -filter { NAME =~ "*CL/CL_OCL_SLV/slv_tst_wdata_reg[*][*]*" && PRIMITIVE_TYPE =~ REGISTER.*.* }]
4444
resize_pblock [get_pblocks pblock_CL_bot] -add {CLOCKREGION_X0Y0:CLOCKREGION_X3Y4}
4545
set_property PARENT pblock_CL [get_pblocks pblock_CL_bot]
4646

47-
set_clock_groups -name cl_main_a0_tck -asynchronous -group [get_clocks -of_objects [get_pins SH/kernel_clks_i/clkwiz_sys_clk/inst/CLK_CORE_DRP_I/clk_inst/mmcme3_adv_inst/CLKOUT0]] -group [get_clocks tck]
47+
#set_clock_groups -name cl_main_a0_tck -asynchronous -group [get_clocks -of_objects [get_pins SH/kernel_clks_i/clkwiz_sys_clk/inst/CLK_CORE_DRP_I/clk_inst/mmcme3_adv_inst/CLKOUT0]] -group [get_clocks tck]
4848

49+
set_clock_groups -name TIG_SRAI_1 -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks -of_objects [get_pins SH/kernel_clks_i/clkwiz_sys_clk/inst/CLK_CORE_DRP_I/clk_inst/mmcme3_adv_inst/CLKOUT0]]
50+
set_clock_groups -name TIG_SRAI_2 -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks drck]
51+
set_clock_groups -name TIG_SRAI_3 -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks -of_objects [get_pins static_sh/pcie_inst/inst/gt_top_i/diablo_gt.diablo_gt_phy_wrapper/phy_clk_i/bufg_gt_userclk/O]]
4952

5053

5154

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
# This contains the CL specific constraints for synthesis at the CL level
2+
set_property MAX_FANOUT 50 [get_nets -of_objects [get_pins CL/SH_DDR/ddr_cores.DDR4_0/inst/div_clk_rst_r1_reg/Q]]
3+
set_property MAX_FANOUT 50 [get_nets -of_objects [get_pins CL/CL_PCIM_MSTR/CL_TST_PCI/sync_rst_n_reg/Q]]
24

35

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
220
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
220

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

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ set subsystem_vendor_id [lindex $argv 7]
3232
set clock_recipe_a [lindex $argv 8]
3333
set clock_recipe_b [lindex $argv 9]
3434
set clock_recipe_c [lindex $argv 10]
35-
set run_aws_emulation [lindex $argv 11]
36-
set notify_via_sns [lindex $argv 12]
35+
set notify_via_sns [lindex $argv 11]
3736

3837
##################################################
3938
### Implementation step options
@@ -85,7 +84,6 @@ puts "PCI Subsystem Vendor ID $subsystem_vendor_id";
8584
puts "Clock Recipe A: $clock_recipe_a";
8685
puts "Clock Recipe B: $clock_recipe_b";
8786
puts "Clock Recipe C: $clock_recipe_c";
88-
puts "Run AWS Emulation: $run_aws_emulation";
8987
puts "Notify when done: $notify_via_sns";
9088

9189
#checking if CL_DIR env variable exists
@@ -438,6 +436,11 @@ foreach uramSite $uramSites {
438436
########################
439437
puts "AWS FPGA: Place design stage";
440438

439+
# Constraints for TCK<->Main Clock
440+
set_clock_groups -name tck_clk_main_a0 -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks -of_objects [get_pins SH/kernel_clks_i/clkwiz_sys_clk/inst/CLK_CORE_DRP_I/clk_inst/mmcme3_adv_inst/CLKOUT0]]
441+
set_clock_groups -name tck_drck -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks drck]
442+
set_clock_groups -name tck_userclk -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks -of_objects [get_pins static_sh/pcie_inst/inst/gt_top_i/diablo_gt.diablo_gt_phy_wrapper/phy_clk_i/bufg_gt_userclk/O]]
443+
441444
switch $strategy {
442445
"BASIC" {
443446
puts "BASIC strategy."
@@ -580,17 +583,6 @@ puts "AWS FPGA: ([clock format [clock seconds] -format %T]) writing final DCP to
580583
write_checkpoint -force $CL_DIR/build/checkpoints/to_aws/${timestamp}.SH_CL_routed.dcp
581584
close_project
582585

583-
# ################################################
584-
# Emulate AWS Bitstream Generation
585-
# ################################################
586-
587-
# Only run AWS emulation step if explicitly specified.
588-
589-
if {[string compare $run_aws_emulation "1"] == 0} {
590-
puts "AWS FPGA: ([clock format [clock seconds] -format %T]) Calling aws_dcp_verify.tcl to emulate AWS bitstream generation for checking the DCP.";
591-
source $HDK_SHELL_DIR/build/scripts/aws_dcp_verify.tcl
592-
}
593-
594586
# ################################################
595587
# Create Manifest and Tarball for delivery
596588
# ################################################

hdk/cl/examples/cl_dram_dma/design/cl_dram_dma_defines.vh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,8 @@
2727
//uncomment below to make SH and CL async
2828
`define SH_CL_ASYNC
2929

30+
// Uncomment to disable Chipscope
31+
//`define DISABLE_CHIPSCOPE_DEBUG
32+
3033
`endif
3134

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ int main(int argc, char **argv) {
6363
fail_on(rc, out, "Interrupt example failed");
6464

6565
out:
66-
return 1;
66+
return rc;
6767
}
6868

6969
static int

hdk/cl/examples/cl_hello_world/build/constraints/cl_pnr_user.xdc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,8 @@
33
# False path between vled on CL clock and Shell asynchronous clock
44
set_false_path -from [get_cells CL/vled_q_reg*]
55

6+
# False paths between main clock and tck
7+
set_clock_groups -name TIG_SRAI_1 -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks -of_objects [get_pins SH/kernel_clks_i/clkwiz_sys_clk/inst/CLK_CORE_DRP_I/clk_inst/mmcme3_adv_inst/CLKOUT0]]
8+
set_clock_groups -name TIG_SRAI_2 -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks drck]
9+
set_clock_groups -name TIG_SRAI_3 -asynchronous -group [get_clocks -of_objects [get_pins static_sh/SH_DEBUG_BRIDGE/inst/bsip/inst/USE_SOFTBSCAN.U_TAP_TCKBUFG/O]] -group [get_clocks -of_objects [get_pins static_sh/pcie_inst/inst/gt_top_i/diablo_gt.diablo_gt_phy_wrapper/phy_clk_i/bufg_gt_userclk/O]]
10+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

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

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ set subsystem_vendor_id [lindex $argv 7]
3131
set clock_recipe_a [lindex $argv 8]
3232
set clock_recipe_b [lindex $argv 9]
3333
set clock_recipe_c [lindex $argv 10]
34-
set run_aws_emulation [lindex $argv 11]
35-
set notify_via_sns [lindex $argv 12]
34+
set notify_via_sns [lindex $argv 11]
3635

3736
#################################################
3837
## Generate CL_routed.dcp (Done by User)
@@ -50,7 +49,6 @@ puts "PCI Subsystem Vendor ID $subsystem_vendor_id";
5049
puts "Clock Recipe A: $clock_recipe_a";
5150
puts "Clock Recipe B: $clock_recipe_b";
5251
puts "Clock Recipe C: $clock_recipe_c";
53-
puts "Run AWS Emulation: $run_aws_emulation";
5452
puts "Notify when done: $notify_via_sns";
5553

5654
#checking if CL_DIR env variable exists
@@ -480,17 +478,6 @@ puts "AWS FPGA: ([clock format [clock seconds] -format %T]) writing final DCP to
480478
write_checkpoint -force $CL_DIR/build/checkpoints/to_aws/${timestamp}.SH_CL_routed.dcp
481479
close_project
482480

483-
# ################################################
484-
# Emulate AWS Bitstream Generation
485-
# ################################################
486-
487-
# Only run AWS emulation step if explicitly specified.
488-
489-
if {[string compare $run_aws_emulation "1"] == 0} {
490-
puts "AWS FPGA: ([clock format [clock seconds] -format %T]) Calling aws_dcp_verify.tcl to emulate AWS bitstream generation for checking the DCP.";
491-
source $HDK_SHELL_DIR/build/scripts/aws_dcp_verify.tcl
492-
}
493-
494481
# ################################################
495482
# Create Manifest and Tarball for delivery
496483
# ################################################

hdk/cl/examples/cl_hello_world/design/cl_hello_world_defines.vh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,7 @@
2323
// FPGA flop init capability). This will help with routing resources.
2424
`define FPGA_LESS_RST
2525

26+
// Uncomment to disable Chipscope
27+
//`define DISABLE_CHIPSCOPE_DEBUG
28+
2629
`endif

hdk/common/shell_v04151701/build/scripts/aws_build_dcp_from_cl.sh

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# Usage help
1919
function usage
2020
{
21-
echo "usage: aws_build_dcp_from_cl.sh [ [-script <vivado_script>] | [-strategy BASIC | DEFAULT | EXPLORE | TIMING | CONGESTION] [-clock_recipe_a A0 | A1 | A2] [-clock_recipe_b B0 | B1] [-clock_recipe_c C0 | C1] [-run_aws_emulation] [-foreground] [-notify] | [-h] | [-H] | [-help] | ]"
21+
echo "usage: aws_build_dcp_from_cl.sh [ [-script <vivado_script>] | [-strategy BASIC | DEFAULT | EXPLORE | TIMING | CONGESTION] [-clock_recipe_a A0 | A1 | A2] [-clock_recipe_b B0 | B1] [-clock_recipe_c C0 | C1] [-foreground] [-notify] | [-h] | [-H] | [-help] | ]"
2222
echo " "
2323
echo "By default the build is run in the background using nohup so that the"
2424
echo "process will not be terminated if the terminal window is closed."
@@ -40,7 +40,6 @@ clock_recipe_b=B0
4040
clock_recipe_c=C0
4141
vivado_script="create_dcp_from_cl.tcl"
4242
foreground=0
43-
run_aws_emulation=0
4443
notify=0
4544
ignore_memory_requirement=0
4645
expected_memory_usage=30000000
@@ -87,8 +86,6 @@ while [ "$1" != "" ]; do
8786
-clock_recipe_c ) shift
8887
clock_recipe_c=$1
8988
;;
90-
-run_aws_emulation ) run_aws_emulation=1
91-
;;
9289
-foreground ) foreground=1
9390
;;
9491
-notify ) notify=1
@@ -192,8 +189,9 @@ then
192189
fi
193190

194191
# Use timestamp for logs and output files
195-
timestamp=$(date +"%y_%m_%d-%H%M%S")
192+
timestamp=$(date +"%y_%m_%d-%H%M%S")
196193
logname=$timestamp.vivado.log
194+
ln -s -f $logname last_log
197195

198196
info_msg "Environment variables and directories are present. Checking for Vivado installation."
199197

@@ -217,7 +215,7 @@ subsystem_id="0x${id1_version:0:4}";
217215
subsystem_vendor_id="0x${id1_version:4:4}";
218216

219217
# Run vivado
220-
cmd="vivado -mode batch -nojournal -log $logname -source $vivado_script -tclargs $timestamp $strategy $hdk_version $shell_version $device_id $vendor_id $subsystem_id $subsystem_vendor_id $clock_recipe_a $clock_recipe_b $clock_recipe_c $run_aws_emulation $notify"
218+
cmd="vivado -mode batch -nojournal -log $logname -source $vivado_script -tclargs $timestamp $strategy $hdk_version $shell_version $device_id $vendor_id $subsystem_id $subsystem_vendor_id $clock_recipe_a $clock_recipe_b $clock_recipe_c $notify"
221219
if [[ "$foreground" == "0" ]]; then
222220
nohup $cmd > $timestamp.nohup.out 2>&1 &
223221

hdk/common/shell_v04151701/new_cl_template/build/README.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
2. [Build procedure step by step](#stepbystep)
77
3. [Build strategies and parallel builds](#strategies)
88
4. [About Encrption during build process](#buildencryption)
9-
5. [Advanced Notes](#buildadvanced notes)
9+
5. [Advanced Notes](#buildadvanced_notes)
1010
6. [Build Frequently Asked Questions](#buildfaq)
1111

1212

@@ -23,7 +23,7 @@ AWS also provides an out-of-the-box generic script called `aws_build_dcp_from_cl
2323

2424
AWS provides multiple options to generate a DCP that meets placement and timing constraints. The `aws_build_dcp_from_cl.sh` provides multiple choices for implementation strategies, invoked by the `-strategy` option. For more details refer to [Build Strategies](#strategies) below or call `aws_build_dcp_from_cl.sh -help` for the list of supported capabilities.
2525

26-
Advanced developers can use different scripts, tools, and techniques (e.g., regioning), with the condition that they submit both the `manifest.txt` and "encrypted placed-and-routed design checkpoint (DCP)" in a single tar file that passes final checks. In order to reduce build time the AWS emulation step that performs these checks is disabled during the build process. In order to enable the check, a developer can set the `run_aws_emulation` argument when calling `aws_build_dcp_from_cl.sh`.
26+
Advanced developers can use different scripts, tools, and techniques (e.g., regioning), with the condition that they submit both the `manifest.txt` and "encrypted placed-and-routed design checkpoint (DCP)" in a single tar file that passes final checks.
2727

2828
<a name="stepbystep"></a>
2929
## Build Procedure
@@ -65,7 +65,7 @@ In order to help developers close timing goals and successfully build their desi
6565

6666
Build script usage:
6767

68-
$ ./aws_build_dcp_from_cl.sh [-h | -H | -help] [-script <vivado_script>] [-strategy <BASIC | DEFAULT | EXPLORE | TIMING | CONGESTION>] [-clock_recipe_a A0 | A1 | A2] [-clock_recipe_b B0 | B1] [-clock_recipe_c C0 | C1] [-run_aws_emulation] [-foreground] [-notify]
68+
$ ./aws_build_dcp_from_cl.sh [-h | -H | -help] [-script <vivado_script>] [-strategy <BASIC | DEFAULT | EXPLORE | TIMING | CONGESTION>] [-clock_recipe_a A0 | A1 | A2] [-clock_recipe_b B0 | B1] [-clock_recipe_c C0 | C1] [-foreground] [-notify]
6969

7070
Options:
7171

@@ -87,9 +87,6 @@ Options:
8787
* -clock_recipe_c \<C0 ... Cn>
8888
* Use the Clock Group C clock frequencies defined for the specified Clock Group C recipe. This is an optional argument and the default value will be C0. Refer to the [Clock Group Recipes Table](./../../../../docs/clock_recipes.csv).
8989

90-
* -run_aws_emulation
91-
* Run the AWS emulation step to verify your generated DCP. The step emulates what AWS will do to generate a bitstream from the developer DCP.
92-
9390
* -foreground
9491
* Run the build in the foreground such that all output will go to the terminal and the build may be terminated if the terminal is closed. This option is useful if you want to wait for the build to complete. This option is safe if the terminal is running on the AWS instance, for example on a GUI desktop on the instance.
9592

@@ -155,7 +152,7 @@ If you are running on one of the EC2 compute instances with 31GiB DRAM or more,
155152

156153
Developer RTL is encrypted using IEEE 1735 V2 encryption. This level of encryption protects both the raw source files and the implemented design.
157154

158-
<a name="buildadvanced notes"></a>
155+
<a name="buildadvanced_notes"></a>
159156
## Advanced Notes
160157

161158
* The included implementation flow is a baseline flow. It is possible to add advanced commands/constraints (e.g, rejoining) to the flow.
@@ -168,9 +165,6 @@ Developer RTL is encrypted using IEEE 1735 V2 encryption. This level of encrypt
168165
**Q: What are the different files that a developer needs to provide to AWS?**
169166
The developer should submit a tar file that contains the placed-and-routed DCP along with the required manifest.txt file.
170167

171-
**Q: How do I ensure that the DCP I create will generate a good bistream at AWS?**
172-
The developer can enable the AWS emulation step by setting the `run_aws_emulation` argument when calling `aws_build_dcp_from_cl.sh`.
173-
174168
**Q: What should I do my design is not meeting timing?**
175169
The developer should evaluate the timing path to identify a solution that may include design changes or additional constraints. Additionally, the developer can try using one of the different build strategies that may help resolve the timing violations.
176170

0 commit comments

Comments
 (0)