Overview of Semi-ATE Packages

This document describes each python package from this Semi-ATE repository. Further it provides diagrams that are illustrating the link between these packages.

Which Packages are provided?

The following list of packages sums up all packages generated by the continuous delivery build (CD-build) of this repository that are deployed on PyPi and Conda-Forge.

  • semi-ate-common

  • semi-ate-project-database

  • semi-ate-sammy

  • semi-ate-plugins

  • semi-ate-testers

  • semi-ate-spyder

  • semi-ate-apps-common

  • semi-ate-control-app

  • semi-ate-master-app

  • semi-ate-test-app

semi-ate-common

This package contains helper functions required by some of the different packages from Semi-ATE. The package provides enum definitions and logger functionality.

semi-ate-project-database

Each semi-ate-test project is maintained by some database. The database is represented by a directory structure containing JSON files. The root folder is named definitions:

definitions/
├── device
│   └── device.json
├── die
│   └── die.json
├── group
│   └── group.json
├── hardware
│   └── hardware.json
├── masksets
│   └── masksets.json
├── package
│   └── package.json
├── product
│   └── product.json
├── program
│   └── program.json
├── qualification
├── sequence
│   └── sequencesemi_project_v1_HW0_PR_diev1_maintenance_test_prog_v1.json
├── settings
│   └── settings.json
├── test
│   └── test.json
├── testtarget
│   └── testtarget.json
└── version
    └── version.json

Each file contains different definitions ranging from hardware definitions from the tester to product definitions containing mask-sets, devices, packages etc. The database is used to migrate test programs in case of any changes and it i used to automatically generate python code representing the test program. The generation of the database and the python files is done by package semi-ate-sammy.

semi-ate-sammy

The semi-ate-sammy package provides some command-line-interface (cli) and a library api for maintaining, i.e. generating and migrating semi-ate test projects. This package can generate semi-ate test-program written in python. To do so this package relies Jinja2 to generate the test-programs written in python.

semi-ate-spyder

This package provides some plugin for the IDE Spyder IDE. The plugin provides the possibility to create and maintain semi ate test projects. Running sypder within a environment having this plugin installed will enable the generation of test programs in the context of semiconductor. The new project type is called Semi-ATE Project. This package extends the user interface of spyder by several dialogues and menu entries used for generating and maintaining test projects. From a different perspective this plugin can be seen as the frontend implementation of the packages semi-ate-sammy and semi-ate-project-database.

In the area of semiconductor test project is always associated to a specific tester, i.e. a test-hardware where the tests are executed. During test-program development the test-engineer needs to know the interface of the tester where the test-program will be executed in the future. In more detail the test-engineer needs to now the API for different measurement instruments like digital multi meter or source measurement units etc. To solve this issue the semi-ate-spyder plugin provides a plugin interface that is used to define a test-hardware. The package semi-ate-testers is an example package of such a tester plugin.

If you want to learn more about the plugin system that is implemented in spyder please refer to the Spyder Documentation.

semi-ate-testers

The semi-ate-testers package provides some example plugin implementation that can be used by package semi-ate-spyder. It specifies two testers a single-side and a multi-side tester, namely:

  • Semi-ATE Single Tester

  • Semi-ATE Parallel Tester

The purpose of this package is to illustrate how a tester, i.e. the API of a tester can be implemented as a plugin that is consumed by the IDE-spyder-plugin semi-ate-spyder. This package is a useful starting point in case that you are implementing the interface of your own tester. You have to implement all function specification from package semi-ate-plugins

semi-ate-plugins

This package provides the plugin specification, i.e. all the function that have to be implemented by a plugin that is consumed by the spyder plugin from package semit-ate-spyder.

Application packages

The following application packages are part of Semi-Ate:

  • semi-ate-apps-common

  • semi-ate-control-app

  • semi-ate-master-app

  • semi-ate-test-app

semi-ate-apps-common

This package provides shared functionality used by all apps, i.e. all other packages (semi-ate-control-app, semi-ate-master-app, semi-ate-test-app). The functionality ranges from mqtt connections over generating and aggregation of STDF data.

semi-ate-master-app

This package provide the so-called master application that controls a tester, single- or parallel tester. If you want to learn how to configure and start the master application please refer to README.md.

semi-ate-control-app

The control application is provided by this package. The control application subscribes to MQTT topics and reacts to messages received by the [master application}(#semi-ate-master-app).

Diagrams

Spyder Extension

The extension of spyder is achieved by the following packages:

  • semi-ate-common

  • semi-ate-project-database

  • semi-ate-sammy

  • semi-ate-plugins

  • semi-ate-spyder

  • semi-ate-testers

Next you can see the link between these packages in the context of extending spyder:

Single Tester

There are two possibilities how to setup a real tester. It depends whether the tester is used in a production or development context. The main difference is that in case of a development context the IDE spyder and the semi-ate-spyder packages need to be installed.

Parallel Tester

This section shows the situation when several test sites are connected to a so-called max controller: