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.

Regarding Medical Imaging Demo application starter (MIDAS)

Other Parts Discussed in Thread: MIDAS, S2MEDDUS


Could anyone please tell if there is any upper range limit defined for the number of scanlines / samples of input Bmode data / Doppler Data supported by MIDAS2.0?

The MIDAS wiki only says a guideline like "Number of Bscanlines/Dscanlines should be a multiple of 16 and Number of Bsamples/Dsamples should be a multiple of 32 as per section


Honey S


  • Hi Honey,

    The limitation is dictated by the total amount of internal and external memory available and the total amount of memory required by the modules. Note that most of the modules utilize the DMA to bring in chunks of data into internal memory before processing. Some of the look-up tables are also stored in internal memory. 

    One way to assess the memory requirements of the algorithm is to look at the file bpuXdais.c, dpuXdais.c and scuXdais.c, and specifically at functions BPU_TI_alloc, DPU_TI_alloc and SCU_TI_alloc respectively. (these source files for the modules can be found in STK-MED The specific values passed to these functions, are from the UsProcess_alloc function call on the ARM side, which assigns appropriate values to IBPU_ALLOC_PARAMS, IDPU_ALLOC_PARAMS and ISCU_ALLOC_PARAMS and calls the Universal_create function for each module, which in turn calls the appropriate BPU_TI_alloc, DPU_TI_alloc, and SCU_TI_alloc functions on the DSP side. Through these values you can calculate the internal/external memory requirements for the parameters (# scanlines, samples/scanline, etc.) you choose. 

    To illustrate this, I've done an example analysis with SCU where I consider 3 different output resolution and use the above-mentioned files to calculate the corresponding internal and external memory requirements:

    We start with looking at scuXdais.c. For example, the output buffer allocation in SCU_TI_alloc is as:


    /* Request memory for B-mode output buffer located in internal memory */
    memTab[BINTERBUF].size = 2 /* double buf */ * x_sizeB * sizeof(uint_least16_t);
    memTab[BINTERBUF].alignment = SCU_GET_MEM_ALIGNMENT;
    memTab[BINTERBUF].space = IALG_DARAM0;
    memTab[BINTERBUF].attrs = IALG_SCRATCH;  

    I've populated the following excel sheet with all the internal/external memory requirements for SCU for all 3 output resolutions of interest, as an example analysis
    File: 3580.SCU Memory Requirements.xlsx

    Once you have the the total internal/external memory requirements of all modules (BPU, DPU and SCU) for the parameters you are looking at, you can compare it to the total available internal and external memory available for the platform. The server.tcf and server.cfg files located in miDAS/ultrasound/demo3/backend/servers/server0, will help in this regard. 



    As detailed in the wiki, the total amount of CMEM memory required will also have to be analyzed, and the memory map modified as desired to accomodate larger CMEM pool sizes, as possible.

    You might also find additional module-specific limitations mentioned in STK-MED.

    -- Uday


  • Ok Uday. Thanks for the reply. I will check it with my custom datasets.