@@ -78,16 +78,16 @@ Later parts of the training involve running steps on the Icicle kit board. The f
78
78
- Either a FlashPro6 external programmer or a micro-USB cable for the embedded FlashPro6
79
79
- Ethernet cable for network connection to the board for SSH access
80
80
81
- This training will cover the following sections in the [ SmartHLS user guide] ( https://microchiptech.github.io/fpga-hls-docs/ ) : [ SoC
82
- Features] ( https://microchiptech.github.io/fpga-hls-docs/userguide .html#soc-features ) ,
81
+ This training will cover the following sections in the [ SmartHLS user guide] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-995D69CF-ACC7-4CB0-9635-4434A765470E.html ) : [ SoC
82
+ Features] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-7324A022-0DE8-45E9-9FF0-E06D6CC7AD40 .html ) ,
83
83
[ AXI4 Initiator
84
- Interface] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html#axi4-initiator-interface ) ,
84
+ Interface] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-93A05651-C06B-4805-94D3-0443DC0FED4E.html ) ,
85
85
[ AXI4Target
86
- Interface] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html#axi4-target-interface ) ,
86
+ Interface] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-16F30D96-8744-48F6-BD42-AC01ED5460ED.html ) ,
87
87
[ Driver Functions for AXI4
88
- Target] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html#driver-functions-for-axi4-target ) ,
88
+ Target] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-7BBF0DBC-AA2A-4593-9B3F-65EDD8520ACE.html ) ,
89
89
and [ User-defined
90
- SmartDesigns] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html#user-defined-smartdesigns ) .
90
+ SmartDesigns] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-8CD9C2D1-7FF3-4C70-8CB7-364597AFDAD7.html ) .
91
91
92
92
93
93
![ ] ( .//media/image3.png ) We will use this cursor symbol throughout this tutorial to indicate sections where you need to perform actions to follow along.
@@ -299,7 +299,7 @@ flow on the C++ (compile/run/debug). Then we apply HLS constraints using
299
299
SmartHLS C++ pragmas. These include HLS constraints covered in previous
300
300
trainings such as the target clock period, loop optimizations, and
301
301
memory configuration. For more details see our [ optimization
302
- guide] ( https://microchiptech.github.io/fpga-hls-docs/optimizationguide .html ) .
302
+ guide] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-8B9C18AF-E1F4-400A-A369-2668F3632CF5 .html ) .
303
303
304
304
There are new SmartHLS ** interface** pragmas used to specify the data
305
305
transfer method for each top-level function argument. These pragmas
@@ -308,7 +308,7 @@ of the SoC. Figure 6‑10 below contains a summary of the SmartHLS pragmas
308
308
used in the vector-add example. More details on the interfaces will be
309
309
covered in the [ SoC Data Transfer Methods] ( #soc-data-transfer-methods ) section. For a complete pragma reference, see our
310
310
[ pragma
311
- guide] ( https://microchiptech.github.io/fpga-hls-docs/pragmas .html ) .
311
+ guide] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-B3D89018-0850-487C-A242-A433094D720F .html ) .
312
312
313
313
In Figure 6‑9, after specifying the argument interfaces, we can compile
314
314
the software into a hardware IP core using SmartHLS, and review reports
@@ -432,7 +432,7 @@ accelerator will store the data in local memory blocks. The
432
432
` num_elements ` field specifies the length of the array that will be
433
433
transferred for each argument. For more information on the required
434
434
pragmas and tradeoffs, please see our [ pragma
435
- manual] ( https://microchiptech.github.io/fpga-hls-docs/pragmas.html#memory-interface-for-pointer-argument ) .
435
+ manual] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-37FB7C46-32B5-4CAF-8CA2-3B7F37B7E7B9.html ) .
436
436
437
437
In this example, we separated the core C++ algorithm into the
438
438
` vector_add_sw ` function. We can then call this function from multiple
@@ -529,7 +529,7 @@ by both the software testbench and hardware functions. I/O memories
529
529
become memory interfaces of the top-level module for the generated
530
530
hardware. For more information on interfaces, please refer to [ Top-Level
531
531
RTL
532
- Interface] ( https://microchiptech.github.io/fpga-hls-docs/userguide .html#rtl-interface ) .
532
+ Interface] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-E9EA34CC-B155-4F12-AFFC-B972E037469F .html ) .
533
533
534
534
The “I/O Memories” table is shown in Figure 6‑15 and has an entry for
535
535
each top-level function argument, which each have a data width of
@@ -755,7 +755,7 @@ file implements the driver functions. The driver functions are generated
755
755
for arguments and module control if they are configured to use AXI4
756
756
target interface. Figure 6‑22 summarizes the different categories of
757
757
driver functions. Please visit [ Driver Functions for AXI4
758
- Target] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html#driver-functions-for-axi4-target )
758
+ Target] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-7BBF0DBC-AA2A-4593-9B3F-65EDD8520ACE.html )
759
759
section of our user guide for a more detailed explanation.
760
760
761
761
<table >
@@ -1112,7 +1112,7 @@ data transfers between the DDR and the accelerator. Any additional
1112
1112
accelerators would be connected to the same AXI interconnect. For more
1113
1113
information on the architecture of the Reference SoC, please see our
1114
1114
[ user
1115
- guide] ( https://microchiptech.github.io/fpga-hls-docs/hwarchitecture.html#smarthls-reference-soc ) .
1115
+ guide] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-0B124EE7-BB34-4CF3-A591-9658F121B533.html ) .
1116
1116
1117
1117
We can simplify the SmartDesign visualization by clicking
1118
1118
![ ] ( .//media/image38.png ) Hide Nets, ![ ] ( .//media/image39.png ) Compress
@@ -1145,7 +1145,7 @@ to accelerator’s on-chip memory buffer, or the data can be accessed
1145
1145
directly in DDR by the accelerator. Any access to DDR, whether data is
1146
1146
copied or accessed directly, goes through the MSS data cache to maintain
1147
1147
cache coherency. See the [ SoC Data Transfer
1148
- Methods] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html#soc-data-transfer-methods )
1148
+ Methods] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-212067DF-C1B6-4C22-ADDD-3C306CE990E5.html )
1149
1149
user guide section for further reference.
1150
1150
1151
1151
#### CPU Copy: AXI Target
@@ -1267,7 +1267,7 @@ the data for argument "`a`" with the AXI initiator interface as shown in
1267
1267
Figure 6‑37. If the ` ptr_addr_interface ` is not specified, for example
1268
1268
for argument b, SmartHLS will use the default interface type defined on
1269
1269
line 123 (` axi_target ` ). See the [ AXI4 Initiator
1270
- Interface] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html#axi4-initiator-interface )
1270
+ Interface] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-93A05651-C06B-4805-94D3-0443DC0FED4E.html )
1271
1271
section of the user guide.
1272
1272
1273
1273
If users specify the ` ptr_addr_interface ` or any other interface type as
@@ -1357,7 +1357,7 @@ Figure 6‑42.
1357
1357
DMA Copy mode and Accelerator Direct Access require the memory to be
1358
1358
allocated using the ` hls_malloc ` function from the [ SmartHLS Memory
1359
1359
Allocation
1360
- Library] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html#memory-allocation-library )
1360
+ Library] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-8246D542-5D26-420C-9418-6D798FDFC215.html )
1361
1361
to keep data in physically contiguous memory for the DMA engine. Using
1362
1362
` hls_malloc ` prevents splitting data across different virtual memory
1363
1363
pages in physical memory. The accelerators and DMA engine do not perform
@@ -1388,7 +1388,7 @@ SoC reference project is generated.
1388
1388
1389
1389
![ ] ( .//media/image3.png ) To prepare your Icicle kit for use with
1390
1390
SmartHLS, follow the [ Icicle Setup
1391
- Instructions] ( https://microchiptech.github.io/fpga-hls-docs/icicle_setup .html )
1391
+ Instructions] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-1F9BA312-87A9-43F0-A66E-B83D805E3F02 .html )
1392
1392
and note down the IP of the board.
1393
1393
1394
1394
![ ] ( .//media/image3.png ) Create a new file named ` Makefile.user ` by right
@@ -1412,7 +1412,7 @@ SmartHLS reads in `Makefile.user` where users can define and modify
1412
1412
options such as compiler and linker flags. For example, users can modify
1413
1413
` USER_CXX_FLAG ` to append additional C++ compilation flags for their
1414
1414
project. Visit the [ Makefile
1415
- Variable] ( https://microchiptech.github.io/fpga-hls-docs/userguide .html#makefile-variables )
1415
+ Variable] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-398C5B20-F31F-4C97-AA81-DDDC0BE0F469 .html )
1416
1416
section of our user guide for a full list of predefined user flags and
1417
1417
their uses.
1418
1418
@@ -1622,7 +1622,7 @@ set_parameter SOC_CPU_MEM_SIZE 0x60000000
1622
1622
<p align =" center " >Figure 8‑3 Default Parameter Values for Integrating SmartHLS</p >
1623
1623
1624
1624
Users can change the default parameters by [ creating a
1625
- * custom\_ config.tcl* ] ( https://microchiptech.github.io/fpga-hls-docs/constraintsmanual.html?highlight=custom%20tcl#set-custom-config-file-1 )
1625
+ * custom\_ config.tcl* ] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-3636C6BE-3977-4267-A5DF-A514D1A46BE3.html )
1626
1626
file inside their HLS project. For example, if we wanted to change the
1627
1627
` SOC_FABRIC_BASE_ADDRESS ` to start at ` 0x70100000 ` , we would include the
1628
1628
following in our * custom\_ config.tcl* file:
@@ -1723,7 +1723,7 @@ As in the [Vector Add On-Board section](#running-vector-add-reference-soc-genera
1723
1723
a Linux image needs to be flashed to the eMMC memory in
1724
1724
the Icicle board. If users have already flashed the Linux image as
1725
1725
described in the [ Icicle Setup
1726
- Guide] ( https://microchiptech.github.io/fpga-hls-docs/icicle_setup .html ) ,
1726
+ Guide] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-1F9BA312-87A9-43F0-A66E-B83D805E3F02 .html ) ,
1727
1727
this section may be skipped, and users may move on to [ this section] ( #extract-the-icicle-kit-reference-design-files ) . A
1728
1728
similar procedure can be followed for the user’s own Linux image when
1729
1729
integrating SmartHLS design into their own existing system.
@@ -1736,7 +1736,7 @@ from [PolarFire SoC Yocto BSP
1736
1736
.
1737
1737
1738
1738
![ ] ( .//media/image3.png ) Follow the instructions on [ Icicle Setup
1739
- Guide] ( https://microchiptech.github.io/fpga-hls-docs/icicle_setup .html )
1739
+ Guide] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-1F9BA312-87A9-43F0-A66E-B83D805E3F02 .html )
1740
1740
for setting the Icicle kit. As explained in the guide, when flashing the
1741
1741
Icicle board (Step 5 in the Icicle Setup Guide), use
1742
1742
` core-image-minimal-dev-icicle-kit-es.wic.gz ` that you have downloaded in
@@ -2028,7 +2028,7 @@ the newly added Linux image.
2028
2028
2029
2029
![ ] ( .//media/image3.png ) After the board has successfully booted, you
2030
2030
can connect using a serial terminal. Connect in the same
2031
- [ manner] ( https://microchiptech.github.io/fpga-hls-docs/icicle_setup.html#step-7-accessing-linux-on-board-and-determining-the-ip-address )
2031
+ [ manner] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-88244281-BA99-4B1D-9E38-43EE07745978.html )
2032
2032
as the serial terminal used during the writing of the Linux image,
2033
2033
except this time using channel 1 (` /dev/ttyUSB1 ` on Linux,
2034
2034
and ` Interface 1 ` on Windows), you should see a login screen:
@@ -2204,7 +2204,7 @@ SoC, we already have [programmed our Custom SoC bitstream to the FPGA](#programm
2204
2204
` Makefile.user ` defines various options related to compiling and running
2205
2205
the compiled program. Figure 8‑26 is a snippet of ` Makefile.user `
2206
2206
containing the runtime settings. Visit the [ Makefile
2207
- Variable] ( https://microchiptech.github.io/fpga-hls-docs/userguide .html#makefile-variables )
2207
+ Variable] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-398C5B20-F31F-4C97-AA81-DDDC0BE0F469 .html )
2208
2208
section of our user guide for a full list of predefined user flags and
2209
2209
their uses. Important: Ensure that ` SRCS ` is set to
2210
2210
` main_variables/main.simple.cpp ` .
@@ -2397,7 +2397,7 @@ Running with hardware module, the CPU utilization is about 11%:
2397
2397
<p align =" center " >Figure 8‑33 CPU Usage when Running with Accelerators</p ></p >
2398
2398
2399
2399
SmartHLS has a TCL parameter called
2400
- [ SOC\_ POLL\_ DELAY] ( https://microchiptech.github.io/fpga-hls-docs/userguide.html?highlight=soc_poll_delay#user-defined-smartdesigns )
2400
+ [ SOC\_ POLL\_ DELAY] ( https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-8CD9C2D1-7FF3-4C70-8CB7-364597AFDAD7.html )
2401
2401
with a value specified in microseconds. This parameter is used for
2402
2402
controlling how often the hardware driver polls the module to check for
2403
2403
completion. Sometimes for long running tasks, the MSS only needs to
@@ -2449,7 +2449,7 @@ different call in main.non-blocking.cpp as shown in Figure 8‑34.
2449
2449
```
2450
2450
<p align="center">Figure 8‑34 Main Execution Loop of main.non-blocking.cpp</p>
2451
2451
2452
- [HAS\_ACCELERATOR](https://microchiptech.github.io/fpga-hls-docs/userguide .html?highlight=has_accelerator#has-accelerator-macro )
2452
+ [HAS\_ACCELERATOR](https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-6818975C-389F-427C-B913-65A667001A99 .html#GUID-6818975C-389F-427C-B913-65A667001A99__SECTION_YMS_QTJ_NYB )
2453
2453
is a SmartHLS defined macro that indicates whether the program is
2454
2454
compiled with accelerators or not. The `*_write_input_and_start()`
2455
2455
functions send the data to the hardware accelerator and start the
@@ -2546,7 +2546,7 @@ function is a classic example of the producer-consumer pattern. The in
2546
2546
data is received from the AXI target interface and passed to each stage
2547
2547
of the computation, namely `invert` and `threshold_to_zero`. We use a
2548
2548
thread
2549
- ([hls::thread](https://microchiptech.github.io/fpga-hls-docs/optimizationguide.html#inferring-streaming-hardware-via-producer-consumer-pattern-with-threads ))
2549
+ ([hls::thread](https://onlinedocs.microchip.com/oxy/GUID-AFCB5DCC-964F-4BE7-AA46-C756FA87ED7B-en-US-11/GUID-D3311A34-24FB-4A0D-8A49-A0A56F71410F.html ))
2550
2550
for each stage as each stage can be run independently as long as there
2551
2551
are data available. The two stages are connected via a fifo between
2552
2552
them.
0 commit comments