Wafer Map Pro
Wafer Map Pro is a modern, web-based tool designed for the visualization, interactive editing, and comparison of semiconductor wafer maps. Built with a Python Flask backend and a dynamic HTML5 Canvas frontend, it provides a fluid and intuitive user experience for engineers and technicians working with wafer data.
✨ Features
🗺️ Wafer Map Editor
- Interactive Canvas Renderer: The wafer map is rendered on an HTML5 Canvas, allowing for smooth and efficient handling of large datasets.
- Dynamic Pan & Zoom: Effortlessly navigate the wafer map by clicking and dragging to pan, and using the mouse wheel to zoom in on areas of interest.
- Advanced Selection Tools:
- Single Die: Click to select a single die.
- Multi-Select: Hold
Ctrl
while clicking to select multiple, non-contiguous dies. - Region/Box Select: Hold
Shift
and drag the mouse to select a rectangular area of dies.
- Bin Code Editing: Instantly change the bin code (
Good
,NG
,Dummy
,Ignore
) of any selected die or region. - Map Transformation:
- Rotate: Rotate the entire wafer map 90 degrees clockwise with a single click.
- Inset: Automatically change the bin code of the outer N layers of dies.
- History Control:
- Undo/Redo: Step backward and forward through your edits.
- Reset: Revert the map to its original state.
- Real-Time Data Analysis: A persistent display shows the live count of each bin code, updating automatically after every edit.
- File Handling:
- Upload wafer maps from simple
.txt
files. - Download the edited wafer map, preserving its structure.
- Upload wafer maps from simple
🔬 Wafer Map Comparator
- Multi-Map Upload: Upload two or more wafer maps for side-by-side comparison.
- Reference Point Alignment: Set a reference die on each map to ensure accurate alignment.
- Visual Comparison: The tool generates a color-coded result map highlighting matches, mismatches, and areas where data is missing or partial.
- Detailed Inspection: Hover over any die on the result map to see a detailed tooltip showing the bin status from each of the source maps.
- Independent Map Rotation: Rotate individual maps within the comparison view to align them correctly before running the comparison.
🛠️ Tech Stack
- Backend:
- Python 3
- Flask: A lightweight web framework for serving the application and handling API requests.
- NumPy: Used for efficient numerical operations and array manipulations (e.g., map rotation, inset, and comparison logic).
- Frontend:
- HTML5
- CSS3: For modern styling, animations, and the dark theme.
- JavaScript (Vanilla): Powers all the client-side interactivity, including the canvas rendering engine, event handling, and API communication.
🚀 Getting Started
Follow these instructions to get a copy of the project up and running on your local machine.
Prerequisites
- Python 3.6 or higher
- pip (Python package installer)
Installation
-
Clone the repository to your local machine:
git clone https://github.com/your-username/wafer-map-pro.git cd wafer-map-pro
-
Create and activate a virtual environment (recommended):
# For Windows python -m venv venv .\venv\Scripts\activate # For macOS/Linux python3 -m venv venv source venv/bin/activate
-
Install the required Python packages:
pip install -r requirements.txt
-
Run the Flask application:
python app.py
-
Open your web browser and navigate to the following addresses:
- Editor: http://127.0.0.1:5000
- Comparator: http://127.0.0.1:5000/compare
📖 How to Use
Wafer Map Editor
- Upload File: Drag and drop a
.txt
file containing your wafer map data, or click to select a file. - Define Bin Codes: Assign a bin type (
Good
,NG
,Dummy
, orIgnore
) to each unique character found in your file. - Generate Map: Click "Generate Map" to view the wafer.
- Interact and Edit: Use the controls to Pan, Zoom, Select, Edit, Rotate, and Inset the map.
- Download: Click "Download .txt" to save your changes.
Wafer Map Comparator
- Navigate: Go to the "Compare" page.
- Upload Files: Select two or more
.txt
wafer map files. - Define Bin Codes: Assign bin types for all unique characters across all files.
- Set Reference Points: For each map, click on a die to set it as the alignment reference. You can rotate individual maps if needed.
- Run Comparison: Click "Run Comparison" to see the result map. Hover over dies for detailed information.
Expected .txt
File Format
The application expects a simple text file where each character represents a die. Spacing is used to separate dies. The parser is designed to handle non-uniform rows and columns gracefully.
Example:
1111
112211
11222211
11222211
112211
1111