The Vivado® IDE provides two methods to generate the code configuration parameters, either during IP core generation or through a Tcl interface. The latter is particularly useful when it is necessary to generate a wide range of codes, because it allows the parameter configuration to be analyzed, thereby establishing commonalities and minimizing the amount of parameter storage required. It can also be used to verify that any custom parameter generation method is generating the correct parameters for a particular code requirement.
IP Core Generation
The AXI4-Lite transactions required to configure the SD-FEC core at run-time are produced during IP generation. The options set in the Vivado IDE are imported by the standalone software driver and are also written to a command file for use with a programmable logic based controller; <ipinst>_trans.log. The IP Sources window displays all the generated output products for an IP core. The default output product directory for an IP core is in the project directory, <project_name>.srcs/sources_1/ip/<ipinst_name>. The command file is text and contains a list of address and data pairs in hexadecimal.
Tcl Interface
An additional Tcl script, <project_name>.srcs/sources_1/ip/<ipinst_name>/scripts/gen_ldpc_code_params.tcl
is output during IP core generation which contains a helper function, gen_ldpc_code_params
, which can be used to process the LDPC code
definition file independent of the Vivado IDE. To make
the function available in the Vivado Tcl shell, enter
the following command:
source <project_name>.srcs/sources_1/ip/<ipinst_name>/scripts/gen_ldpc_code_params.tcl
The function requires a single argument of a code definition file and returns
a Tcl dict
structure containing the configuration
parameters for the LDPC code parameters and the shared LDPC code parameters for each of the
LDPC codes defined in the file.
The Tcl dict
consists of a top-level key per code defined in the code
definition file below which all the corresponding parameters are defined. The
dict
structure can be queried to obtain the configuration parameters for
each code, for example:
set params [gen_ldpc_code_params <my_code_definition_file>]
set all_code_ids [dict keys $params]
set all_param_names [dict keys [dict get $params <my_code_id1>]]
set n [dict get $params <my_code_id1> n]
set k [dict get $params <my_code_id1> k]
set qc_table [dict get $params <my_code_id1> qc_table]