Giter Club home page Giter Club logo

uia-wafermap's Introduction

uia-wafermap

Description

The project is in progress. The core design is based on STDF V4 format.

  • Use maxX, maxY, minX, minY to setup the die size in canvas.
  • No need to has the result of all (x,y).

How to build

  1. Install rollup.js package.
npm install -g rollup
  1. Change to the project directory and install dependencies modules.
npm install
  1. Test the project.
npm run test
  1. Build the project and output the result to dist/uia-wafermap.js.
npm run build

Develop

How to Draw the Map

  • graphics coordination from TopLeft(0,0) to BottomRight(row,col) (NOT die coordination)
  • layers

map_color_model

Examples

Example1

// create a shotmap
var shotmap = uia.shotmap('wafer2')         // element id
    .size(600, 10)                          // size of canvas
    .notch("down")                          // notch direction
    .wheel(true)                            // use the wheel to control zoom in & out 
    .drag(true)                             // drag and drop the map
    .diePalette(function(value) {           // color palette, the value passed from result function.
      switch(value) {
        case 0:                             // pass
          return 0x00ff00;                  // green
        case 1:                             // fail
          return 0xff0000;                  // red
        case 2:                             // good to bad
          return 0xff0000;                  // red
        default:                            // unknown
          return 0xffffff;                  // white
      }
    })

// bind data to the shotmap
var data = shotmap.data(101, 98, 1, 1)      // maxRow, maxCol, minRow, minCol, origin="leftdown", pickMode="testing"
    .layer("1", 0, layerData)               // layer #1, all good, dataset
    .layer("2", 1, layerData)               // layer #2, all bad, dataset
    .layer("3", layer3result, layerData);   // layer #3, random result, dataset

data.layer("2").enabled(false);             // disable layer #2

shotmap.create(true);                       // create a map with boundary checking. 

function layer3result() {                   // random result of layer 3
  return Math.random() > 0.2 ? 0 : 1;       
}  

function layerData(row, col) {              // information of a die
  return "" + row  + "," + col;
}  

The output:

example1

Example3

Use blue to identify good to bad test results.

var shotmap = uia.shotmap('wafer2')
    .size(600, 10)
    .notch("down")
    .wheel(false)
    .drag(false)
    .diePalette(function(value) { 
      switch(value) {
        case 0:
          return 0x00ff00;
        case 1:
          return 0xff0000;
        case 2:
          return 0x0000ff;  // from good to bad
        default:
          return 0xffffff;
      }
    })
    .attachClick(function(oEvent) {         // click event of the die
      alert(oEvent.pick()[0]);
    })

The output:

example3

Example5

Use some features of OpenCV.js to identify failed area.

var shotmap = uia.shotmap('wafer2')
    .size(600, 10)
    .notch("down")
    .wheel(false)
    .drag(false)
    .dieRect(false)                                 // turn off the grid line
    .diePalette(function(value) {
        switch (value) {
            case 1:
                return 0xff0000;
            case 2:
                return 0xff0000;
            default:
                return 0xffffff;                    // white background
        }
    });

shotmap.data(101, 98, 1, 1, "leftdown", "counting")
    .layer("1", layerResult1, layerData)
    .layer("2", layerResult2, layerData);

shotmap.create(true);
// try to find out failed areas.
var result = shotmap.blocking(
  7,                                                // blur argument
  0xffffff);                                        // ignore white color (background)


var canvas = document.getElementById("canvasOutput");
result.draw(canvas);

The output:

example5-1

example5-2

Documentation

ShotMap

  • attachClick (function clickHandler)

    pickerFunc = function({
      source: Die,
      data: WaferData,
      pick: function()
    }) {
    
    }
  • blocking (int blur = 9, int bg = null)

    • The blur argument of OpenCV.js.
    • The background color, ex: 0x00ff00.
  • create (boolean checkBounding)

  • data (int maxX, int maxY, int minX = 1, int maxY = 1, string origin = "leftdown", string pickMode = "testing"): WaferData

    The origin is one of leftdown, leftup, rightdown and rightup.

    The pickMode is one of testing and counting.

    • testing - check if a die is pass or not.
    • counting - count the failure of number.
  • dieRect (boolean enabled)

  • diePalette (function pickerFunc)

    pickerFunc = function(int value) {
      return color;
    }
  • drag (boolean enabled)

  • draw (boolean enabled))

  • extract (string type)

    • canvas - output canvas object.
    • image - output HTML image object.
  • notch (string direction)

  • reset ()

  • size (int diameter, int margin = 10)

  • wheel (boolean enabled)

  • zoomIn (int offsetX, int offsetY)

  • zoomOut (int offsetX, int offsetY)

WaferData

  • layer (string id, function resultTester, function dataPicker): Layer

    resultTester = function(int rowOffset, int colOffset) {
      return 0; // 0:pass, 1: failed
    }
    
    dataPicker = function(int rowOffset, int colOffset) {
      return any;
    }
  • mode (string mode) mode is one of counting and testing.

Layer

  • enabled (boolean enabled)

Known Issues

  1. notch (x, y) offset.
  2. confusing coordination.

Copyright and License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

uia-wafermap's People

Contributors

gazer2kanlin avatar spectrejie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

uia-wafermap's Issues

Color assigning issue

I am trying to assigning specific color on specific bin on the map. It work on other bin number except for bin 3 which is always have blue color. even I debug and assign all to white color, bin 3 still have blue color.
image

build a preview url

Hi,this is a nice project,I want to konw is there exist build a preview url?

I'm just try running on codespace ,there exist error:
image

Terminal print "ReferenceError: self is not defined "

Hello technical guru , I am a programming enthusiast from China , what’s more , I think the project is so goods,but I want to know how to resolve the problem that the Terminal print "ReferenceError: self is not defined " when I run the command "npm run test" , my English is not very well , I want someone to help me with this promble , Thanks
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.