首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >硬核实战:从晶圆图到可视化管控

硬核实战:从晶圆图到可视化管控

原创
作者头像
资源shanxueit.com
发布于 2026-09-22 13:50:28
发布于 2026-09-22 13:50:28
1150
举报

半导体制造中,晶圆图(Wafer Map)是良率分析、缺陷追溯的核心载体。C# + WPF 凭借矢量渲染、数据绑定和丰富的设备通讯生态,成为桌面端晶圆可视化系统的常见选择。少量代码,就能画出第一张可交互的晶圆图。

一、为什么是 C# + WPF

半导体工厂的桌面软件通常需要:

  • 高性能可视化:一张 300mm 晶圆可能有数万颗 Die,需要流畅缩放、平移、着色。
  • 设备通讯:通过 SECS/GEM、Modbus、TCP/IP 与机台交互,C# 有成熟库(如 secs4net)。
  • 数据绑定:WPF 的 MVVM 模式让 UI 与数据解耦,方便对接 MES、EAP、数据库。
  • 矢量渲染:WPF 基于 DirectX,绘制图形不糊,适合晶圆图的圆形边界和矩形 Die。

相比 WinForms,WPF 在复杂图形和动画上更从容;相比 Web 方案,桌面端更容易拿到本地硬件和产线网络权限。

二、少量代码:画一张晶圆图

核心思路:生成落在圆形区域内的 Die 坐标,用 ItemsControl + Canvas 绑定渲染。

Die 模型:

代码语言:javascript
复制
public class Die
{
    public double X { get; set; }
    public double Y { get; set; }
    public bool IsDefect { get; set; }
}

生成晶圆数据:

代码语言:javascript
复制
var dies = new List<Die>();
int radius = 50, size = 12;
for (int x = -radius; x <= radius; x++)
    for (int y = -radius; y <= radius; y++)
        if (x * x + y * y <= radius * radius)
            dies.Add(new Die {
                X = x * size + 300,
                Y = y * size + 300,
                IsDefect = rnd.Next(100) < 5
            });
DataContext = new { Dies = dies };

XAML 绑定:

代码语言:javascript
复制
<ItemsControl ItemsSource="{Binding Dies}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate><Canvas/></ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="Canvas.Left" Value="{Binding X}"/>
            <Setter Property="Canvas.Top" Value="{Binding Y}"/>
        </Style>
    </ItemsControl.ItemContainerStyle>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Rectangle Width="10" Height="10"
                       Fill="{Binding IsDefect, Converter={StaticResource DefectToBrush}}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

不到 20 行核心代码,就能得到一张带缺陷标记的晶圆图。红色代表缺陷 Die,绿色代表良品。

三、从静态图到动态管控

静态图只是起点。实际系统需要:

  1. 颜色映射:按 Bin 码、良率、缺陷类型着色,支持图例切换。
  2. 缩放与平移:用 ScaleTransform + TranslateTransform,或 MatrixTransform 实现鼠标滚轮缩放。
  3. 点击详情:点击 Die 弹出坐标、Bin 码、测试时间、关联工单。
  4. 实时更新:通过 INotifyPropertyChanged 或 ObservableCollection 接收机台数据,动态刷新。
  5. 叠加层:缺陷分布热力图、良率趋势曲线、设备状态指示。

四、工程化关键点

  • 性能:Canvas 直接放几万个 Rectangle 会卡。改用 DrawingVisual 或 WriteableBitmap 批量绘制,或对 Die 做虚拟化。
  • MVVM:View 只负责渲染,ViewModel 持有 Die 集合和命令,Model 对接数据源。
  • 设备集成:用 secs4net 实现 SECS/GEM,或封装 TCP 客户端接收机台事件。
  • 数据持久化:晶圆图、缺陷记录、良率历史存入 SQL Server 或时序数据库。
  • 可配置:不同产品、不同晶圆尺寸(200mm/300mm)通过配置驱动,不写死坐标。

五、结语

C# + WPF 让晶圆图从数据变成可交互的可视化界面。少量代码就能画出第一张图,但企业级系统的难点在于性能、设备集成和数据一致性。

先用十几行代码跑通“数据 → 渲染”,再逐步加上缩放、点击、实时更新和 MES 对接。 工具是画布,真正的价值在于把晶圆数据变成可决策的信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、为什么是 C# + WPF
  • 二、少量代码:画一张晶圆图
  • 三、从静态图到动态管控
  • 四、工程化关键点
  • 五、结语
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档