# 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 ```