The DFE NLF Co-Sim Environment works by first instantiating the MATLAB model to the corresponding test case parameters entered in the set_test_case_params.m. The system creates test case directories for each test case. These directories contain the necessary files to run Vivado simulations. The following table shows the created test directory structure.
| Directory Name | Description | ||
|---|---|---|---|
| cosim_codebase/ | Co-sim codebase directory | ||
| cosim_testdir_1/ | Co-sim test directory | ||
| vivado_dir_1/ | Vivado directory (Vivado simulations run in this directory) | ||
| run_sim.tcl | tcl script to create project and run simulation | ||
| dfe_nlf_v1_1_tb.vhd | Test bench for simulation | ||
| data_in.txt | Input signal and input index file | ||
| data_out_ref.txt | Reference output data file | ||
| nlf_config.mat | mat file containing test case configuration | ||
| nlf_programming.txt | NLF IP programming files containing register programming. Also contains LUT programming, if LUT AXIS is disabled. | ||
| LUT_AXIS_Stream.txt | LUT programming file created only when LUT AXIS is enabled | ||
| Files related to Reference Design that are generated if refd is enabled | |||
| golden_refdata.txt | Reference output shell data | ||
| refd_nlf_programming.sh | NLF IP programming shell script | ||
| stimulus_programming.sh | MM2S_STIMULUS IP programming shell script | ||
| sink_programming.sh | S2MM_SINK IP programming shell script | ||
| run_refd_functest.sh | Shell script to run functional test | ||
| run_ref_perftest.sh | Shell script to run performance test | ||
The MATLAB script cosim_gen_tv.m is responsible for creating test case directories, generating Tcl files, test bench, input data file, data out reference file, NLF IP programming files for Vivado simulation based on the test case configuration (set in set_test_case_params.m). When you enable the reference design, it also generates files related to the reference design. It also plots term selection for each test case and prints the configuration of each test case on the MATLAB console.
In the context of DFE NLF IP, the first example demonstrates a configuration where all terms are linear. Use internal indexing within the NLF dedicated block if you require magnitude as an index. If you require indexing other than magnitude indexing, use external indexing.
In the second example, terms are random in position. However, the grids are diagonal. Internal indexing remains viable due to the alignment of grids.
In the third example, the grids are placed sideways, making internal
indexing challenging. In such cases, use external indexing by passing the index using
the s_axis_din_tuser interface. This indexing approach
ensures correct referencing and processing of terms in configurations where internal
indexing is impractical.
If you use internal indexing, it equally delays the magnitude and signal. This means that the second grid is always diagonal to the first grid. To place the second grid non-diagonally to the first grid, use external indexing.