几何尺寸与公差论坛

 找回密码
 注册
查看: 583|回复: 1

晶圆分布图的默认行和列如何计算?

[复制链接]
发表于 2023-2-23 13:20:58 | 显示全部楼层 |阅读模式
需要计算给定宽和高的die矩形在直径为300mm的晶圆中的最优放置方式(即行数和列数),矩形宽为 18.03mm,矩形高为 17.94mm,die矩形的行数和列数的乘积可以超过最大容纳数,求最佳默认行数和列数
 楼主| 发表于 2023-2-23 13:21:17 | 显示全部楼层
   public (uint, uint) CalculateRowCol(double _width, double _height, double gap, double waferDiameter)
        {
            double diameter = waferDiameter;
            double radius = diameter / 2.0; // 圆的半径,单位为mm
            double area = Math.PI * radius * radius; // 圆的面积,单位为平方mm

            double width = _width; // 18.03; // 矩形宽,单位为mm
            double height = _height; // 17.94; // 矩形高,单位为mm
            double rectangleArea = width * height; // 矩形面积,单位为平方mm
            uint maxRowCount = (uint)Math.Floor((diameter - height) / (height + gap)) + 1; // 最大行数
            uint maxColCount = (uint)Math.Floor((diameter - width) / (width + gap)) + 1; // 最大列数

            uint maxDieCount = (uint)Math.Floor(area / rectangleArea); // 圆形区域内最多容纳的矩形数量
            //uint rowCount = (uint)Math.Floor(diameter / height); // 每一行矩形的数量
            //uint columnCount = (uint)Math.Floor(diameter / width); // 每一列矩形的数量
            uint defaultRowCount = (uint)Math.Sqrt(maxDieCount); // 默认行数
            uint defaultColCount = (uint)Math.Floor((double)maxDieCount / defaultRowCount); // 默认列数

            double maxDensity = 0;
            uint bestRowCount = 0;
            uint bestColCount = 0;
            double halfWidth = width / 2;
            double halfHeight = height / 2;
            for (uint rowCount = maxRowCount - 1; rowCount <= maxRowCount; rowCount++)
            {
                for (uint colCount = maxColCount - 1; colCount <= maxColCount; colCount++)
                {
                    uint dieCount = rowCount * colCount;
                    double totalDieWidth = colCount * dieWidth + (colCount - 1) * gap; // 总宽度
                    double totalDieHeight = rowCount * dieHeight + (rowCount - 1) * gap; // 总高度

                    double xMargin = (waferDiameter - totalDieWidth) / 2;
                    double yMargin = (waferDiameter - totalDieHeight) / 2;
                    double density = dieCount * dieWidth * dieHeight / (Math.PI * Math.Pow(waferDiameter / 2, 2)); // 密度

                    if (dieCount > maxDieCount)
                    {
                        if (xMargin > width || yMargin > height)
                        {
                            continue;
                        }
                        else
                        {
                            //if (density > maxDensity)
                            {
                                //maxDensity = density;
                                return (rowCount, colCount);
                            }
                        }
                    }

                    if (density > maxDensity)
                    {
                        maxDensity = density;
                        bestRowCount = rowCount;
                        bestColCount = colCount;
                    }
                }
            }
            // 微调
            //if (rowCount * columnCount > maxCount)
            //{
            //    if (width > height)
            //    {
            //        columnCount -= 1;
            //        // 如果超出了最大容纳数,尝试将行数减少一行
            //        uint newRowCount = (uint)Math.Floor((double)maxCount / columnCount);
            //        if (newRowCount < rowCount)
            //        {
            //            rowCount -= 1;
            //        }
            //    }
            //    else
            //    {
            //        // 如果超出了最大容纳数,尝试将行数减少一列
            //        rowCount -= 1;
            //        uint newCount = (uint)Math.Floor((double)maxCount / rowCount);
            //        if (newCount < columnCount)
            //        {
            //            columnCount -= 1;
            //        }
            //    }
            //}
            return (bestRowCount, bestColCount);
        }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-5 06:35 , Processed in 0.036763 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表