A timeout occurs when syncing 100 user libraries (Marathon-VCL-X)

  • I have a timeout problem on Marathon-VCL-X.

    When adding user library's operators (increasing LiteROI_Fifo from 70 to 100), the timeout occur.


    Please see Acq_Test02_VCLx.png. No timeout will occur in Acq_Test02_VCLx.va, But

    Acq_Test01_VCLx.va will result in timeout. (Acq_Test01_VCLx.png)


    forum.silicon.software/index.php?attachment/318/

    forum.silicon.software/index.php?attachment/319/



    Why Test01 will result in timeout ?

    Every 'LiteROI_Fifo' have a Fifo, and the FillLevel of the FIFO was 0 until a timeout occurred.


    Please check attatched va.


    [BAD Case]

    - Acq_Test01_VCLx.va

    - synchronizing 100

    Acq_Test01_VCLx.va


    [GOOD Case]

    - Acq_Test02_VCLx.va

    - synchronizing 70

    Acq_Test02_VCLx.va


    [Environment]

    - VA 3.1.1

    - RT 5.6.1

    - Marathon-VCL-X

  • Dear Ryuji,


    Please send or attach a valid image for simulation.

    Instead of using a MultiInput-Sync you can serialize all the data and investigate the stream instead.

    That would require much less ressources and will not cause a dead-lock in case of un-expected data.

    After the Sync you are using an ADD on the synchronized inputs, it is possible to use a FrameSum, RowSum or Count operator instead. I would recommend the FrameSum.

    Björn RuddeMicroSiSo.png
    Senior Technical Sales and
    Field Application Engineer

    please:thumbup:

  • Dear Ryuji Narita,


    My first idea would be to use the VA design below (VA design, download Acq_Test02_VCLx_BRudde_QuickFix.va ) :

    pasted-from-clipboard.png

    This is only a quick guess, but it may be a solution.

    From my point of view, two small FIFOs were missing in order to avoid a dead-lock condition.

    These FIFOs have the name MiniBuffer_A/B.

    Please tell me if this is a valid fix, because I could not find the time to investigate in runtime.


    My recommendation would be to modify the processing behind the Blob Analysis in a serial way, on the basis of the mentioned operators in the previous post.

    Björn RuddeMicroSiSo.png
    Senior Technical Sales and
    Field Application Engineer

    please:thumbup:

  • Thank you for your supporting.


    I tried adding MiniBuffer_A/B for Acq_Test01_VCLx.va.

    But it was not improved.

    So I want to try replace the parallel way (Sync+ADD) to a serial way (FrameSum).



    Question:

    How do I make input data for FrameSum?


    LiteTOI_FiFo have a output of 1bit image.

    100 output images must be combined into one image,


    If I use InsertPixel, 100 modules will placing at MultiROI,

    and 100 FIFOs is placed each I1 link of InsertPixel.


    The FIFO size gradually increases toward the lower link.


    Is this same as your recommend design ?

  • Thank you for your supporting.


    Functionary and intention:

    - Multi ROI setting (100 LiteROI_FiFo is OK, Up to 300 ).

    - Count the number of 'TRUE' output from LiteROI_FiFo.

    - I will make some Group of ROIs, and set thresholds for each.


    Currently there are 100 modules in a group, counting 'TRUE' output.(Acq_Test01_VCLx.va)

  • Dear Ryuyi Narita,

    thank your for the explanation .

    1. So the values of parameters X0, X1, Y0,Y1 CenterX and CenterY in each module LiteROI_Fifo will be different to the X0, X1, ... parameters in the other 'LiteROI_Fifo" modules in the final implememation?


    Summary of design:In the current implemnetation the output of each box "LiteROI_Fifo" is a 1 bit pixel value which gives information, whether at least one detected object has parameters (x0, x1, center of gravity ,...) in a specific range (defined with parameters X0,X1,...). In the end you sum the output of the multiple "LiteROI_Fifo" boxes up to get information in how many specified ranges at least one object exists? Finally you set Threshold "outputCondition" which gives you information whether at least one object is detected in more than a specific number of defined ranges.


    Suggestion: Instead of using "Register, ,IsLastPixel and Remove Pixel, use "FrameMax" or "Row Max" in each module "LiteROI_Fifo" , "then you can add the output of the 100 modules "LiteROI_Fifo" up without using SYNC operator. After that you can select only the last pixel.



    Remark:2. If the parameters X0, y 1 ,y0 in each module 'LiteROI_FIFo" will be the same simply use only one module "LiteROI_FiFo" in your design and replace the content after operator "And" in the module with operator "Framesum". This will give you the number of objects, which are found in one specific range defined by X0,x1,....


    3. May I introduce the operator "imageBufferMultiROIDyn" to you? It may ´be helpful for you in the context of Blob analysis

  • Thank you for your supporting.


    1. 'LiteROI_Fifo" is same as final implementation. we set 100 area for check and count.


    I have a question about the way of "without using SYNC operator."


    'use "FrameMax" or "Row Max" in each module "LiteROI_Fifo" ' is OK.

    The output replaces one pixel with N (number of blobs found) pixels.. So we can get True/False by select the last pixel.

    But I do not know how to combine 100 2D images (width = N height = 1) into one 2D image.


    Could you tell me?