NI TestStand

Showing results for 
Search instead for 
Did you mean: 

2 Different Sequences in Parallel working as FIFO

Hello to all,


I would like to know, what is the best way of executing 2 different test sequences in parallel.

The Test Idea is Simple.


The picture below ilustrates what is pretended.

In order to improve Test Times on a DUT, the Test was Splitted in 2 (Teste2 and Teste1).


Test Procedure:

1- The Operator Receives the DUT, and Inserts the S/N.

2- If everything is OK with the S/N, then the Operator puts the DUT1 on Teste1, otherwise it goes to scrap and inserts a new S/N.

3- DUT1 is Submited to the Tests implemented on Test Socket Teste1

3- If Teste1 is Sucessfull, then Operator puts DUT1 on Test Socket Teste2, and inserts the S/N of DUT2, and puts the DUT2 on Teste1


So the idea is that a particular DUT is submited sequentally to Teste1 + Teste2, but these Tests run in Parallel.


What is necessary:

- Start and Finish Teste1 and Teste2 at the samme time

- Have a report per DUT S/N (eg. report is the sum of report of DUT1 in Teste1 and DUT1 in Test2)

- It would be nice to see progress of both sequences as they Run.

- Test2 should not start if DUT failed on Teste1






- The Parallel Process Models, only works nice for equall Sequences, and not different ones.

               Idea 1. Ideally the Main Sequence would be composed of both Teste1 and Teste2 Sequences (Since the DUT must be submitted to both Tests), and this Main Sequence Running in Parallel, while dinamically closing and starting new Sequences, between Teste1 and Teste2. The functionality would be similar to a FIFO of 2 running Sequences Composed by Teste1 + Teste 2


- If not using Parallel Process Model, one way to go would be to start one of the sequences in a new Thread, but altoutgh this works:

                - It's not an elegante Solution.

                - Only one of the Sequences is Showing Progress Status

                - Report will be a mess

               Idea 2. Run one or both Teste1 and Teste2 as new Threads, with Teste2 having the ability of append to previous Teste1 Report (same DUT, with same S/N).


Question: What is the best way to implement this (is there any other idea)? Is possible to Implement Idea1?


Thanks in advance.


0 Kudos
Message 1 of 4

Another idea:


Idea 3. I could have a General Sequence File, in Parallel Process Model, and the Main Sequence would contain both Teste1 and Teste2 Sequences. Tests Slots have a MicroSwitch to detect if product is Inserted, so this could be used to inside Main Sequence select which Teste is going to run on each Test Socket. Now comes more questions:

   1. How to remove S/N prompt interface during the Test.

   2. How to auto fill in S/N on Socket1 with previous S/N of Socket 2, without the need to create new Prompt Interface?


Still the best seems to be Idea 1.

0 Kudos
Message 2 of 4

I think using new thread sequence calls for test1 and test2, combined with the parallel model with at least two testsockets, is the simplest approach (assuming I'm understanding your requirements).


Reporting with new threads isn't that hard at all. Just add a wait steps right after the new thread steps, the results from the new threads will be attached to the wait steps. For example:



Call new thread 1

call new thread 2

wait new thread 1

wait new thread 2


The wait steps will get the results of test1 and test2 automatically and will have the pass/fail status of those tests as well. You should still use locks or some other kind of synchronization in your new thread subsequences to keep two threads from executing the same test at the same time.



0 Kudos
Message 3 of 4



Why not try one sequence with auto-scheduling for two blocks of tests, Test 1 and Test 2, and run it in the Batch model?



0 Kudos
Message 4 of 4