This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Unaligned monolithic descriptors in FFTC test code



Hi,

While optimizing my C6670 application I came accross an issue in the way monolithic descriptors are used in the FFTC LLD.

To confirm this, I ran pdk_C6670_1_1_2_6's FFTC_MultiCore_testProject with a single modification: using the test function in test_mono_singlecore.c instead of the default one defined in test_multicore.c.

During the run, the buffers for FFTC submit and receive are not aligned to 16 bytes, even though the descriptors in the assigned memory region had been created that way. What I get in the run, then, is:

After calling Fftc_txGetRequestBuffer():

hRequestInfo == 0x108A39C0 (the monolithic descriptor)

pReqBuffer == 0x108A39E4 (pointer to descriptor's data buffer)

After calling Fftc_rxGetResult():

hResultInfo == 0x108A31C0 (mono desc)

pResultBuffer == 0x108A31CC (data buffer)

Trying to trace the 12-byte difference in the receive buffer I got as far as FFTC_CPPI_MONOLITHIC_DESC_SIZE == 12 in /pdk_C6670_1_1_2_6/packages/ti/drv/fftc/include/fftc_pvt.h, but changing that macro to 16 (and recompiling the FFTC LLD) introduced odd behaviors that I could not fully debug. However, the 36-byte difference in the submit descriptor remains a mistery.

My algorithm does element-wise complex vector multiplication and it benefits greatly from aligned data. Can anyone advise?

  • Hi,

    Descriptor Configuration:  The Tx/Rx buffer descriptors (Monolithic) configuration for the application, can find in ‘Fftc_DrvCfg’ data structure. And also you can find some more details at the section "Application Level Initialization" in the FFTC Driver Software Design Specification (SDS) document.

    If the application has requested the driver to manage its request buffers and descriptors (by setting ‘bManageReqBuffers’ to 1). Here you have to choose a descriptor type for the FFT requests in parameter ‘descType’. The application can specify ‘Cppi_DescType_MONOLITHIC’.

  • Pubesh,

    Thank you for answering. However, I do use a driver-managed configuration and I am specifying correctly that I want to use a monolithic configuration.

    My problem is this: even with the example code provided by TI, the data buffers of monolithic descriptors (i.e. the information that will be transformed by the FFTC) is not aligned to 16 bytes, despite the descriptors themselves being aligned. In the example I posted, the application presented 12-byte difference between the address of the descriptor and the address of the data buffer. In the other direction, this difference was 36 bytes (still not aligned).

    In other words, I am able to produce aligned *monolithic descriptors* by pointing to a correctly-created memory region, but I would like TI to inform me whether it is possible to have aligned *data buffers* inside those monolithic descriptors.

  • It seems nobody from TI is reading this.

  • Hi,


      For Monolithic type descriptors the data section will not be aligned to word or half-word boundary. You could use the host type descriptors for aligned buffers. Please refer to the 'Multi-core Navigator' users guide for details for more information on descriptors.