4 Replies Latest reply on Feb 5, 2016 11:31 AM by dcox

    Interfacing a Custom Interface PCB with test fixture with double-sided nails


      Hello All,


      We are using PADS Layout 9.5 to design a custom interface PCB to interface with a UUT using a test fixture with double-sided nails. This means that the bed of nails will touch test points located on the bottom of the UUT on the top of the nail while also touching a test point located on the top of the interface board with the bottom of the nail. In other words, the UUT and Interface PCB make a sandwich with the nails in the middle.


      Our biggest challenge with this is that we need to layout the custom interface PCB so that the test points on the PCB matches exact coordinate locations of the test points on the UUT. We would prefer to have an automated way of doing this to not only save time, but also greatly reduce chance for human error (since we have 150 or so test points). The fixture house gave us a 1:1 DXF file that we can bring into PADS which has all of the test points present as simple 2D circles. The manual ways to do this would be to create test point components in the design and manually overlay the test point component onto the DXF test point circle, or manually type in coordinates for each test point. Any ideas for how to automate this, either with ASCII file or DXF manipulation or something else, would be greatly appreciated.




        • 1. Re: Interfacing a Custom Interface PCB with test fixture with double-sided nails

          Hi Gabe,


          I can't say I know how to do this off the top of my head, but I think Automation can handle this. You probably want to check the PADS Layout Command Reference Manual but I can see some code snippets suggesting this would be possible. The Pin.TestPoint page gives the following code snippet, which removes all test points from the design and then adds one top layer test point per net on an arbitrary pin:


          Sub Main


          ' Remove all test points

          For Each nextPin In ActiveDocument.Pins

          nextPin.TestPoint = ppcbTestPointNone

          Next nextPin


          ' Add one top layer test point per net

          For Each nextNet In ActiveDocument.Nets

          Set arbitPin = nextNet.Pins.Item(0)

          arbitPin.TestPoint = ppcbTestPointTopLayer

          Next nextNet

          End Sub


          There is also Report Generation Language (RGL) syntax described which can report the (X,Y) location of pin & via test points, whether a net has a test point assigned, the total number of test points, etc. See the file Test Points.BAS mentioned in the document. This may be handy to check the test point locations against your ASCII list if you do end up adding them manually.


          Perhaps you can add vias by (X,Y) coordinate and then set the via type to test point with the PPcbTestPointType command?

          1 of 1 people found this helpful
          • 2. Re: Interfacing a Custom Interface PCB with test fixture with double-sided nails

            Hi Rehan,


            Your idea of using the Layout Basic Script tool was intriguing to me, so I took a couple of days to get a script together, and I was able to successfully run a script to do exactly what I wanted. Thanks for your suggestion.



            • 3. Re: Interfacing a Custom Interface PCB with test fixture with double-sided nails

              Hi Gabe. I'm moving this thread to the PADS layout community where other people will be able to find it more easily. If you're willing to share your script with other PADS customers, please post it in our scripting community, Scripting . Thanks!

              • 4. Re: Interfacing a Custom Interface PCB with test fixture with double-sided nails

                Gabe, I know you solved your problem but I am curious how you added vias.

                I wanted a script to add test point vias similar to the test point option and had a devil of a time figuring out how to do it.  I searched for a net.via.add function but to no avail.

                This is the result which you may find useful for the addvia portion.  This simple script adds unrouted test point vias at 0,0 for nets that don't have any vias or pins designated as test points.  The only issue I would see as a hurdle is the fact that adding a via references a net in the current design and Pads requires a minimum of two points to assign a net.  If your second board uses the same netnames then you could just read the xy and netname from the first board, save the info to a file, load the second board and add the via to the second board using the saved XY and netname with a different script. 


                If you aren't sure if the netnames are used in the second board, what you could do is this:

                Option A- add one dummy part and a single pin tp part for each net, locate the tp part to the same location as the top board test point using the file and add a net from it to the dummy part or B: add two dummy parts, add a net from the list between the two and add a via at the XY.  It depends on what you ultimately want at your tp location, a single pin part or via.  In either case, I would think you want a pad or via tied to the same net at the same location.


                1-Read the test point locations from the top board and save the netnames and tp xy locations to a file.

                2- Create your second board outline and make sure the board 0,0 is in the same location as the top board.  You could import the ascii for the second board at this point, but park everything off board to remove clutter.

                3- create a dummy part with enough pins to accommodate every tp you need. Control the ref des ie:XTP1

                Option A- Going through the file, add a single pin part to the board, incrementing the ref des as you go.  XP1, XP2 etc.  Read the net from the list and add it to the test point part and the dummy part pin with the same number.  If the net exists in the parts you already ascii'd in, it will tie.  If not, the net will only run from the test point to the dummy part.  Later, when you delete the dummy part, Pads will flag any nets that are removed as a check and leave the test point part without a net, but hold the place on the second board so you don't route through it.

                Option B- Add two dummy parts and park both outside the board area. Control the ref des ie:XTP1and XTP2 and add two of them to the board, both outside the board outline. (will be deleted later)

                4- using the saved info, add the net to the same pin on both dummy parts and then add a test via to the same xy as the top board.  If the net is already used in the startup circuitry, it will tie to it.  If not, then both dummy parts give the minimum two pins to support the via. 


                If you choose the via option, the Add Free Via command isn't picky about the via name, but there must be at least one via available to each net.  If you change the xy of the added via make sure the line printed to the macro matches exactly the Complete Move  line


                Sub Main



                'Dim tpcount as integer


                Open "c:\temp\mymacro2.mcr" For Output As #1

                    Print #1, "Macro Macro1"


                    Set nets = ActiveDocument.Nets

                    If Sorted Then nets.Sort


                    For Each aNet In nets

                        tpcount = 0


                        Set pins = aNet.Pins

                        If Sorted Then pins.Sort

                        For Each aPin In pins

                            If aPin.TestPoint <> ppcbTestPointNone Then goto addok

                        Next aPin


                        Set vias = aNet.Vias

                        If Sorted Then vias.Sort

                        For Each aVia In vias

                            If aVia.TestPoint <> ppcbTestPointNone Then goto addok

                        Next aVia


                        GoTo AddVia


                    Next aNet



                        Close #1

                        RunMacro ("c:\temp\mymacro2.mcr","macro1")







                            Print #1, "Application.ExecuteCommand(""Find"")"

                            Print #1, "FindDlg.FindBy = ""Nets""

                            Print #1, "FindDlg.Value = " & Chr$(34) & aNet.Name & Chr$(34)

                            Print #1, "FindDlg.Ok.Click()

                            Print #1, "Application.ExecuteCommand(""Add Free Via"")

                            Print #1, "DlgYesNoCheckQuestion.Question(""Adding shielding or stitching vias with DRC not in Prevent mode may result in clearance violations.Do you want to continue?"").Answer(mbYes)"

                            Print #1, "Application.ExecuteCommand(""Complete Move"", 0mil,0mil)"

                            Print #1, "Application.ExecuteCommand(""Cancel"")"

                    GoTo addok


                End Sub



                Good luck. Let me know how it turns out