Visible to Intel only — GUID: shq1523052005504
Ixiasoft
Visible to Intel only — GUID: shq1523052005504
Ixiasoft
5.3.2.1.7. Specify AFU User Clock Timing
- uClk_usr
- uClk_usrDiv2
afu-image:clock-frequency-high:[<float-value>|”auto”|”auto-<float-value>”]
afu-image:clock-frequency-low:[<float-value>|”auto”|”auto-<float-value>”]
The above key:value pairs drive timing closure on the user clocks during AF compilation and are used to bound the frequency value configured in the PLL circuits of the target hardware platform that provides the user clocks through the clocks interface. The chosen frequency may vary in each compilation.
Setting the value field to a float number (e.g., 200.0 to specify 200 MHz) drives the AF generation process to close timing within the bounds set by the low and high keys and set in the AF’s JSON metadata to specify the user clock PLL circuit frequency values.
{
"version": 1,
"afu-image": {
"power": 0,
"clock-frequency-high": "300",
"clock-frequency-low": "200",
"afu-top-interface":
{
"class": "ccip_std_afu"
"module-ports" :
[
{
"class": "cci-p",
"params":
{
"clock": "uClk_usr"
}
}
]
},
"accelerator-clusters":
[
{
"name": "a_afu",
"total-contexts": 1,
"accelerator-type-uuid": "64e38106-4910-4488-ae90-94bfe46abfb3"
}
]
}
}
{
"version": 1,
"afu-image": {
"power": 0,
"clock-frequency-high": "auto-300",
"clock-frequency-low": "auto-150",
"afu-top-interface":
{
"class": "ccip_std_afu_avalon_mm"
"module-ports" :
[
{
"class": "cci-p",
"params":
{
"clock": "pClk"
}
},
{
"class": "local-memory",
"params":
{
"clock": "uClk_usr"
}
}
]
},
"accelerator-clusters":
[
{
"name": "b_afu",
"total-contexts": 1,
"accelerator-type-uuid": "233254b9-7db4-42a2-91db-1f1c53d12a76"
}
]
}
}
AFUs that use uClk or uClk_div2 may not have accurate timing analysis results shown in the Intel® Quartus® Prime timing summary. This is a result of PLL tuning post compilation that occurs to determine if your AFU meets timing. You must either load the compiled design in Timing Analyzer or view the results of the /build/output _files/timing_report directory. Each of these methods accounts for the uClk and uClk_div2 frequencies being adjusted. To determine if there are any failing paths in your design, you can inspect the file /build/output_files/timing_report/clocks.sta.fail.summary. If this file is empty then there are no timing failures in the design.
The "auto" setting enables the auto-timing closure mode during AF generation. The AF generation build process automatically converge on a maximum frequency of operation on the user clocks and generate AF JSON metadata to specify the auto-timing closure frequency achieved to OPAE tools.
You can combine the "auto" mode with an upper bound specification using the "auto-<float-value>" format (e.g., "auto-300" to specify auto-timing closure bounded to 300MHz).
For example, the hello_mem_afu sample AFU synchronizes all interfaces to uClk_usr and uses auto-timing closure mode:
$OPAE_PLATFORM_ROOT/hw/samples/hello_mem_afu/hw/rtl/hello_mem_afu.json