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.

AWR2944EVM: Function of zero-insertion in HWA didn't work based on ES2.0

Part Number: AWR2944EVM

Hi 

    We tried ES2.0 in 2944, and found that there are some issues when trying to use zero-insertion function of HWA, in migration guide of ES2.0, we found that there are some updates about HWA, and we found two problems:

a. In this document, it says"Increase in the bits of zero insertion number from 8 to 11",but we found in SDK, the bit of number is still 8

b.we can't config zero insertion mask registers as what we want, only the first 11 of the 16 bits can be configured.

   we try to config a 0xffff into DSS HWA DEROT RAM, but we only read 0x3fff in this RAM

Thanks

  • PS: the sdk version is mmwave_mcuplus_sdk_04_03_00_01

  • Hi,

    Please give me some time to go over this and get back to you.

    Regards,

    Kaushik

  • Hi,

    Need some additional info here.

    • Have you tried directly writing the 11-bit number into the ZERO_INSERT_NUM register? This is a 32-bit register at 
      0x560624F8.
    • Did you write into the DSS_HWA_DEROT_RAM using the function HWA_configRam() or did you write it directly into the memory? If so, can you share that part of the code snippet? 
    • Were you able to achieve the intended zero insertion of 0x3FFF with ZERO_INSERT_ENABLE? 

    Regards,

    Kaushik

  • HI Kaushik

          Thanks for your reply,

    a. we tried directly writing the 11-bit number into the ZERO_INSERT_NUM register, and we can write 11bit into this register.

    b.Did you write into the DSS_HWA_DEROT_RAM using the function HWA_configRam() or did you write it directly into the memory? If so, can you share that part of the code snippet? 

    the code snippet is shown as below

    c Were you able to achieve the intended zero insertion of 0x3FFF with ZERO_INSERT_ENABLE? 

    We achieved the intended zero insertion of 0x3FFF as shown in the code snippet, but it failed to work, and It works when we tested the same configuration in ES1.0

    Regards,

    Patrick

  • Hi Kaushik,

    I don't have an ES2.0 EVM in my hand, but I quickly checked this problem on my ES1.0 EVM. The problem is the same as customer.

    The highest two bits for each half word are always zero no matter what value you set in DSS_HWA_DEROT_RAM. In HWA data sheet, I found below words.

    It said top-most two bits are not cared in DSS_HWA_DEROT_RAM, which matches current behavior. Could you check with design team which is correct definition of this RAM space?

    Best regards,
    Adam

  • Hi Patrick and Adam,

    I've been able to see 0x3FFF upon writing in both ES1.0 and ES2.0. Will get back with an update from the design team.

    Regards,

    Kaushik

  • Hi,

    I've discussed with the design team and this incorrect readback value from the DSS_HWA_DEROT_RAM is a known issue (will be updated in the upcoming errata). The RAM will be configured with whatever value is written by the user and the functionality is expected to be unaffected (has been verified by our validation team). Please try configuring the HWA according to your use case and let me know if there is any issue.

    Regards,

    Kaushik

  • Hi Kaushik

           We use the same zero insert configuration in both ES1.0 and ES2.0, but inES1.0, HWA can work. in ES2.0 HWA can't work, once we disable zero insert func, HWA can work as normal, so we guess there are still some issue in zero insert function

           The test code and configuration is shown as below

           

          

    Thanks

    Patrick

  • Hi Patrick,

    Can you confirm if the zero insert enable bit is disabled and that there is no conflict with CMULT mode 9? Also, please elaborate on what you mean by "HWA can't work".

    Regards,

    Kaushik

  • Hi Kaushik

        When we did the zero insert test, we hadn't used the CMULT MODE 9, but used the HWA_COMPLEX_MULTIPLY_MODE_VECTOR_MULT ram

        If we comment the configMask of  HWA_COMMONCONFIG_MASK_ZEROINSERT_NUM_MASK,and also config fftMode.preProcCfg.zeroInsertEnHWA_FEATURE_BIT_DISABLE; HWA can work and process

        If we use zero insert func, HWA will not able to complete current paramset and trigger EDMA

    Thanks

    Patrick

  • Hi Patrick,

    Can you perform the following experiments?

    • Enable the zero insertion and set the num mask as 0
    • Check the value of the MEM_ACCESS_ERR_STATUS
    • Try with different masks and mask_num
    • Use software trigger on a single paramset with the same zero insert config and see if the HWA paramset executes as intended.

    The zero-insertion feature adds stall cycles which could affect your param timings and could exceed chirp times.

    Regards,

    Kaushik

  • Hi Kaushik

         We perform the experiments what you said, the results is shown as below, and found some problem:

         a. Enable the zero insertion and set the num mask as 0, and found HWA didn't work

         b. Check the value of the MEM_ACCESS_ERR_STATUS:

              

      c.   Try with different masks and mask_num

             We configured different group of mask and mask_num:

              zero insert enable, num =4; mask =0x0fff;  srcAcnt = 12-1  ;   HWA didn't work

              zero insert enable, num =4; mask =0xfff0;  srcAcnt = 12-1  ;   HWA  work

              zero insert enable, num =8; mask =0xf0f0;  srcAcnt = 8-1  ;    HWA work

              zero insert enable, num =8; mask =0xff00;  srcAcnt = 8-1  ;    HWA work

              zero insert enable, num =8; mask =0x0f0f;  srcAcnt = 8-1  ;  HWA  didn't work

              zero insert enable, num =8; mask =0x00ff;  srcAcnt = 8-1  ;  HWA  didn't work

    Thanks

    Patrick

  • Hi Patrick,

    Thank you for your input. Please make sure you are following the points listed below when programming the zero-insert mask:

    • The MSB of the mask should always be set to 1
    • The mask number should always match the total number of bits set to 0 in the mask (within ACNT limits) else the operation can't be guaranteed.
    • The masking takes place from LSB to MSB for every sample streamed (LSB value corresponds to whether the zero is inserted as the first sample and so on).

    Hopefully this should solve your issue. Let me know if anything else is needed. 

    Regards,

    Kaushik

  • Hi Kaushik,

           Thans for your information, but I don't quite understand what you mean, could you please help answer some question

           for first point: “ The MSB of the mask should always be set to 1 " ,

            a.The MSB is referring to uint16_t's  MSB or uint32_t's MSB? 

            b. Is this point only for ES2.1? Because in ES2.0, we didn't set to 1 of the mask MSB, but it can run successfully. our mask is:0x08EF3710 ,others are zero.

            c. Does the MSB of mask will also occupy one input?

          for second point "The mask number should always match the total number of bits set to 0 in the mask (within ACNT limits) else the operation can't be guaranteed"

           In my understanding, the mask number is the number of zeros to be inserted, and the mask bit-field of '0' inserts a zero at location based on bit-field index. "1" means the input is passed through, so we only need to ensure the number of "1" in mask is same as acnt, Is this correct?

    Thanks,

    Patrick

  • Hi Patrick,

    Please find my replies as follows:

    1. The MSB I'm referring to is the absolute MSB of the entire bit mask starting at the address of the DSS_HWA_DEROT_RAM. This corresponds to the last same that would be passed out from the input formatter. Need to make sure that there are no zeroes preceding it.
    2. For both the versions of the devices it is recommended to set 1 for the last sample. (Also mentioned in the user guide).
    3. Yes. Referring to the very first bit MSB of the mask. It is better not to interpret this RAM as 16 bit or 32 bit words. Rather look at the memory bit by bit directly from its start address.

    Ideally your bit mask would have to be of the size (ACNT + Zero insert num) bits which will be the new number of samples after zero insertion. (This is also mentioned in the TRM)

    Please configure your use case with these steps and let me know if there are any issues.

    Regards,

    Kaushik