125 lines
5.0 KiB
Markdown
125 lines
5.0 KiB
Markdown
# 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.
|
|
|
|
### 🔬 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
|
|
|
|
1. **Clone the repository to your local machine:**
|
|
```bash
|
|
git clone https://github.com/your-username/wafer-map-pro.git
|
|
cd wafer-map-pro
|
|
```
|
|
|
|
2. **Create and activate a virtual environment (recommended):**
|
|
```bash
|
|
# For Windows
|
|
python -m venv venv
|
|
.\venv\Scripts\activate
|
|
|
|
# For macOS/Linux
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
```
|
|
|
|
3. **Install the required Python packages:**
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
4. **Run the Flask application:**
|
|
```bash
|
|
python app.py
|
|
```
|
|
|
|
5. **Open your web browser** and navigate to the following addresses:
|
|
- **Editor**: [http://127.0.0.1:5000](http://127.0.0.1:5000)
|
|
- **Comparator**: [http://127.0.0.1:5000/compare](http://127.0.0.1:5000/compare)
|
|
|
|
---
|
|
|
|
## 📖 How to Use
|
|
|
|
### Wafer Map Editor
|
|
1. **Upload File**: Drag and drop a `.txt` file containing your wafer map data, or click to select a file.
|
|
2. **Define Bin Codes**: Assign a bin type (`Good`, `NG`, `Dummy`, or `Ignore`) to each unique character found in your file.
|
|
3. **Generate Map**: Click "Generate Map" to view the wafer.
|
|
4. **Interact and Edit**: Use the controls to Pan, Zoom, Select, Edit, Rotate, and Inset the map.
|
|
5. **Download**: Click "Download .txt" to save your changes.
|
|
|
|
### Wafer Map Comparator
|
|
1. **Navigate**: Go to the "Compare" page.
|
|
2. **Upload Files**: Select two or more `.txt` wafer map files.
|
|
3. **Define Bin Codes**: Assign bin types for all unique characters across all files.
|
|
4. **Set Reference Points**: For each map, click on a die to set it as the alignment reference. You can rotate individual maps if needed.
|
|
5. **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
|
|
``` |