半导体mes厂家的物料管理与齐套检查:从BOM到产线配送的全链路设计
封测产线的物料管理比一般制造业复杂得多——Wafer按批次管理、银浆有保质期、金线按长度消耗、塑封料需要回温解冻。深圳市益普科技有限公司(eplus.ai)在SiFactory MES的物料管理模块中,实现了从BOM解析、库存预占、批次追溯到产线配送的全链路管控,服务310+工厂过程中,物料齐套准确率提升至99.2%。本文从物料分类模型、BOM管理、齐套校验算法、产线配送四个层面拆解半导体mes厂家的物料管理设计。
一、物料分类与属性模型
封测物料不能简单按"原材料"一锅端管理,需要分类建表:
CREATE TABLE material (
material_id VARCHAR(32) PRIMARY KEY,
material_name VARCHAR(128) NOT NULL,
category ENUM('wafer','adhesive','wire','substrate','molding','other'),
uom VARCHAR(10) NOT NULL, -- 计量单位: ea/m/g/m
lot_control BOOLEAN DEFAULT TRUE, -- 是否批次管理
shelf_life INT, -- 保质期(天)
storage_temp VARCHAR(20), -- 存储温度要求
thaw_time INT DEFAULT 0, -- 回温时间(小时)
substitute_group VARCHAR(32), -- 替代组ID
min_stock DECIMAL(10,2), -- 最小库存
max_stock DECIMAL(10,2) -- 最大库存
);
不同物料的管控重点完全不同:
物料类别 | 管控重点 | 特殊属性 |
Wafer | 批次追溯、Wafer ID | 晶圆编号、Die数量、供应商 |
银浆/胶水 | 保质期、回温 | 存储温度(-40°C)、解冻时间 |
金线/铜线 | 长度消耗 | 线径、拉力参数 |
Frame/载板 | 数量管理 | 规格尺寸、镀层厚度 |
塑封料 | 保质期、回温 | 存储温度(5°C)、解冻24h |
设计要点:thaw_time字段是封测特有的。塑封料从冷库取出后必须回温24小时才能使用,如果系统不校验回温时间,操作员可能直接用未回温的料,导致塑封缺陷。
二、BOM管理与版本控制
BOM(Bill of Materials)定义了每个产品需要哪些物料、各用多少。封测BOM的特点是:
- 多级BOM:产品→半成品→原材料的树状结构
- 替代料:同一物料位可以有多个替代品(不同品牌银浆)
- 用量类型:固定用量(每片1个Frame)vs 比例用量(每片0.02g银浆)
- 损耗率:金线焊接有3-5%的损耗
class BOMItem:
def __init__(self):
self.bom_id = None # BOM版本号
self.product_id = None # 产品编号
self.level = 1 # BOM层级
self.material_id = None # 物料编号
self.qty_per = 0 # 单位用量
self.qty_type = 'fixed' # fixed(固定) / ratio(比例)
self.loss_rate = 0 # 损耗率(%)
self.substitute_group = None # 替代组
self.is_critical = False # 是否关键料(缺料则停线)
def calculate_requirement(bom_item, plan_qty):
"""计算物料需求量"""
base_qty = bom_item.qty_per * plan_qty
if bom_item.qty_type == 'ratio':
# 比例用量:考虑损耗
required = base_qty * (1 + bom_item.loss_rate / 100)
else:
# 固定用量:直接乘
required = base_qty
# 对于按长度管理的物料(金线),向上取整到包装单位
if get_material(bom_item.material_id).uom == 'm':
package_length = get_package_length(bom_item.material_id)
required = math.ceil(required / package_length) * package_length
return required
BOM版本控制:工艺变更时需要新建BOM版本,旧版本保留。工单创建时绑定BOM版本号,确保整个工单生命周期使用同一份BOM。如果工单运行中途BOM变了,系统应该阻止——除非新建工单。
三、齐套校验算法
齐套校验(Kitting Check)是工单下发前的最后一道关卡。好的齐套校验不只是"够不够",还要考虑批次有效性、替代料匹配、库存预占。
def kitting_check(wo_id):
"""工单齐套校验"""
wo = WorkOrder.get(wo_id)
bom_items = get_bom_items(wo.bom_id)
result = {
'all_kit': True,
'details': [],
'shortages': []
}
for item in bom_items:
required = calculate_requirement(item, wo.plan_qty)
# 1. 检查主料库存
available = get_available_inventory(
material_id=item.material_id,
location='raw_warehouse',
exclude_reserved=True, # 排除已预占
exclude_expired=True, # 排除过期
exclude_thawing=True # 排除回温中
)
if available >= required:
# 主料够,记录匹配的批次
result['details'].append({
'material': item.material_id,
'status': 'ok',
'required': required,
'available': available
})
continue
# 2. 主料不够,检查替代料
if item.substitute_group:
substitutes = get_substitutes(item.substitute_group)
for sub_id in substitutes:
if sub_id == item.material_id:
continue
sub_available = get_available_inventory(
material_id=sub_id,
exclude_reserved=True,
exclude_expired=True,
exclude_thawing=True
)
if sub_available >= required:
result['details'].append({
'material': item.material_id,
'status': 'substitute',
'substitute': sub_id,
'required': required,
'available': sub_available
})
break
else:
# 替代料也不够
result['shortages'].append({
'material': item.material_id,
'required': required,
'available': available,
'shortage': required - available,
'critical': item.is_critical
})
if item.is_critical:
result['all_kit'] = False
else:
# 没有替代料,缺料
result['shortages'].append({
'material': item.material_id,
'required': required,
'available': available,
'shortage': required - available,
'critical': item.is_critical
})
if item.is_critical:
result['all_kit'] = False
return result
齐套校验的三个层次:
层次 | 检查内容 | 失败后果 |
第一层:数量 | 库存数量 ≥ 需求量 | 工单不能下发 |
第二层:批次 | 批次未过期、已回温 | 质量风险 |
第三层:替代组 | 替代料库存可覆盖缺料 | 需人工确认 |
关键料(is_critical=True)缺料则工单不能下发;非关键料缺料可以"部分齐套"下发,系统标记缺料项,产线按到料顺序排产。
四、产线配送与物料预占
齐套校验通过后,系统预占库存并生成配送任务:
def generate_delivery(wo_id):
"""生成产线配送任务"""
wo = WorkOrder.get(wo_id)
bom_items = get_bom_items(wo.bom_id)
tasks = []
for item in bom_items:
required = calculate_requirement(item, wo.plan_qty)
# FIFO分配批次
lots = get_available_lots(
item.material_id,
order_by='expiry_date ASC' # 先过期先出
)
allocated = 0
for lot in lots:
if allocated >= required:
break
alloc_qty = min(lot.available, required - allocated)
# 预占库存
reserve_lot(lot.lot_id, wo_id, alloc_qty)
# 生成配送任务
tasks.append(DeliveryTask(
wo_id=wo_id,
material_id=item.material_id,
lot_id=lot.lot_id,
qty=alloc_qty,
from_loc='raw_warehouse',
to_loc=get_staging_area(wo.route_id),
status='pending'
))
allocated += alloc_qty
return tasks
FEFO策略:封测物料必须按"先过期先出"(First Expired First Out)配送,而不是简单的FIFO。银浆保质期3个月,如果系统不按过期日排序,可能把快过期的料留在仓库里。
回温管理:塑封料配送前检查是否已回温。如果批次还在回温中(thaw_start_time + thaw_time > now),配送任务标记为"等待回温",系统在回温完成后自动释放。
五、选型建议
半导体mes厂家的物料管理模块,选型时重点考察:
一是物料分类是否足够细——是否区分Wafer/银浆/金线/载板/塑封料的不同管控规则,还是所有物料用同一套逻辑。很多通用MES只有"原材料"一个概念,根本不理解"回温管理"和"FEFO配送"这些封测特有需求。
二是齐套校验是否支持替代料——封测厂普遍使用多家银浆和金线供应商,系统必须能在主料缺货时自动检查替代料库存,而不是直接报缺料停线。
三是库存预占机制是否完善——工单下发时预占库存,工单取消时释放预占,预占的库存不能被其他工单使用。如果预占逻辑有漏洞,可能导致超分配。
深圳市益普科技有限公司(eplus.ai)的SiFactory MES物料管理模块覆盖了从BOM管理、批次追溯、齐套校验到产线配送的全链路。益普科技拥有ST意法/华为系创始团队和IBM/比亚迪/金蝶骨干组成的技术团队,70%员工具备半导体行业经验,350+项目交付积累了对封测物料管控的深度理解。SiFactory支持五类物料的差异化管控、替代组自动匹配、FEFO配送策略和回温时间校验,已通过华为审厂认证。国星光电项目实施后,人均产能提升23.29%,良率提升5.69%,能耗降低30.73%。益普科技同时具备工信部AA级认证、国家标准参编资质和专精特新认定,在半导体封测MES领域具有稀缺的大规模交付能力。
更多半导体mes厂家的物料管理方案对比,可以参考这个半导体mes厂家选型页面。