在模拟 IC 设计流程中,IP 库的版本管理至关重要。当一个 IP 库开发完成并通过验证后,通常需要锁定版本以防止意外修改,确保设计的稳定性和可追溯性。Keysight SOS (Silicon on Software) 作为主流的设计数据管理 (PDM) 工具,提供了细粒度的文件访问权限控制功能。本文详细介绍如何使用 SOS GUI 对模拟 IP 库已有的 cell 进行版本锁定和解锁操作。

本文目录

背景与应用场景

为什么需要版本锁定?

在 IC 设计项目中,IP 库版本锁定是一项重要的配置管理措施:

  1. 设计稳定性:防止已验证的 IP 库被意外修改
  2. 版本控制:明确区分开发版本和发布版本
  3. 权限管理:限制修改权限到特定的 IP Owner
  4. 变更追踪:确保任何修改都经过正式的变更流程
  5. 多项目协作:允许多个项目安全地使用同一 IP 版本

典型应用场景

场景 操作 目的
IP 库完成验证并 tapeout 锁定 防止后续修改影响已流片设计
IP 库需要进行 bug 修复 解锁 → 修改 → 再锁定 受控的版本更新流程
IP 库移交给其他团队使用 锁定 保护 IP 完整性,仅 Owner 可修改
季度发布稳定版 IP 库 锁定 标记为正式发布版本

SOS 权限模型

SOS 基于 OwnerGroup 的权限模型:

  • Owner:IP 库的所有者(通常是 IP 负责人)
  • Group:IP 开发团队成员
  • World:所有其他用户

写权限级别

1
Owner > Group > World
  • Write Access: Owner — 仅 IP Owner 可修改(锁定状态)
  • Write Access: Group — 团队成员可修改(开发状态)
  • Write Access: World — 所有人可修改(通常不推荐)

锁定版本操作流程

完整操作步骤

步骤 1:打开 SOS GUI 并更新工作区

启动 SOS GUI:

1
sos &

在 GUI 中更新工作区到最新状态:

1
File → Update Workarea

提示

确保工作区是最新状态,避免操作基于过时的文件列表。

步骤 2:清空当前选择

在 SOS GUI 主窗口中:

1
Select → Unselect All

这一步确保清除之前的选择,避免误操作到其他文件。

步骤 3:选中需要锁定的 IP 库

在文件列表中:

  1. 使用鼠标左键点击需要锁定的 IP 库目录或 Cell
  2. 可以按住 Ctrl 键多选多个 IP 库
  3. 或者通过目录层级展开,选择具体的库

示例

1
2
3
4
📁 analog_lib_v1.0
  📁 opamp_1v8
  📁 bandgap_ref
  📁 ldo_regulator

如果需要锁定整个 analog_lib_v1.0,直接选中该目录。

步骤 4:高级选择 - 仅选中所有已管理文件

选择菜单:

1
Select → Advanced Select...

在弹出的对话框中进行如下配置:

  • ✅ 勾选 Files Only — 仅选择文件,忽略目录
  • ✅ 勾选 All Managed — 仅选择受 SOS 管理的文件

点击 OK 确认。

重要

这一步至关重要,确保仅对已纳入版本控制的文件进行权限修改,避免影响临时文件或未管理文件。

步骤 5:打开属性修改对话框

选择菜单:

1
Modify Attrs → Source File/Dir...

此时会打开文件/目录属性修改对话框。

步骤 6:设置 Owner 信息

在属性对话框中:

Owner 字段:填写 IP 库的 Owner 用户名

例如:

1
Owner: john_doe

说明

Owner 通常是 IP 负责人的用户名。确保该用户在 SOS 系统中有对应的账户。

步骤 7:设置写权限为 Owner Only

在属性对话框中:

Write Access 字段:选择 Owner

这意味着:

  • 只有 Owner 可以修改这些文件
  • Group 和 World 仅有读权限

步骤 8:应用修改到所有选中文件

点击对话框中的:

1
Update All

此时会弹出确认对话框,显示即将修改的属性。

步骤 9:确认修改项

在确认对话框中,仔细检查勾选的修改项:

  • Owner: john_doe — 确认 Owner 设置正确
  • Write Access: Owner — 确认写权限限制到 Owner

确认无误后,点击 OKApply 应用修改。

步骤 10:验证权限修改结果

返回 SOS GUI 主窗口,查看文件列表中的属性列:

检查以下字段:

  • Owner 列:应显示设置的 Owner 用户名
  • Write Access 列�应显示 Owneru(表示仅 User/Owner 可写)

如果看到权限列显示类似 r--r--r-- 的形式:

1
2
3
rw- r-- r--
 ↑   ↑   ↑
Owner Group World

其中 Owner 为 rw-(可读可写),Group 和 World 为 r--(只读),说明锁定成功。

操作流程图

graph TD
    A[Update SOS Workarea] --> B[打开 SOS GUI]
    B --> C[Select → Unselect All]
    C --> D[鼠标左键选中需要锁定的 IP 库]
    D --> E[Select → Advanced Select...]
    E --> F["勾选: 'Files Only' + 'All Managed',点击 'OK'"]
    F --> G[Modify Attrs → Source File/Dir...]
    G --> H[Owner: 填写 IP Owner]
    H --> I[Write Access: Owner]
    I --> J[点击 Update All]
    J --> K{勾选修改项}
    K -->|勾选 Owner: IP Owner| L[应用修改]
    K -->|勾选 Write Access: Owner| L
    L --> M[验证:查看列表属性]
    M --> N[✅ 锁定完成]
    
    style N fill:#90EE90
    style K fill:#FFD700
    style L fill:#87CEEB

解锁版本操作流程

当需要对已锁定的 IP 库进行修改时(例如 bug 修复、功能增强),需要先解锁版本。

解锁操作步骤

解锁操作与锁定操作基本相同,仅有一处关键差异

步骤 1-7:与锁定流程完全相同

步骤 7(关键差异):设置写权限为 Group

在属性对话框中:

Write Access 字段:选择 Group

这意味着:

  • Owner 和 Group 成员都可以修改文件
  • World 仍然仅有读权限

步骤 8-10:与锁定流程相同

解锁流程图

graph TD
    A[Update SOS Workarea] --> B[打开 SOS GUI]
    B --> C[Select → Unselect All]
    C --> D[鼠标左键选中需要解锁的 IP 库]
    D --> E[Select → Advanced Select...]
    E --> F["勾选: 'Files Only' + 'All Managed',点击 'OK'"]
    F --> G[Modify Attrs → Source File/Dir...]
    G --> H[Owner: 保持原 IP Owner]
    H --> I[Write Access: Group]
    I --> J[点击 Update All]
    J --> K{勾选修改项}
    K -->|勾选 Write Access: Group| L[应用修改]
    L --> M[验证:查看列表属性]
    M --> N[✅ 解锁完成]
    
    style N fill:#90EE90
    style I fill:#FFA500
    style L fill:#87CEEB

锁定 vs 解锁对比

操作阶段 锁定版本 解锁版本
步骤 1-6 相同 相同
Write Access 设置 Owner Group
步骤 8-10 相同 相同
谁可以修改 仅 Owner Owner + Group 成员

关键概念说明

Files Only vs Directories

  • Files Only:仅选择文件,不包括目录本身
    • 用于修改文件级别的权限
    • 适用于版本锁定场景
  • 包含 Directories:同时选择目录
    • 用于修改目录级别的权限
    • 可能影响目录的创建/删除权限

推荐:版本锁定时使用 Files Only,仅限制文件修改权限,保持目录结构的灵活性。

All Managed vs Other Filters

  • All Managed:所有受 SOS 管理的文件
    • ci(check-in)的文件
    • 受版本控制的文件
  • Modified:本地修改但未提交的文件
  • Checked Out:当前已签出(checkout)的文件
  • Unmanaged:未纳入 SOS 管理的文件

推荐:版本锁定时使用 All Managed,确保覆盖所有已受控文件。

Owner 字段的作用

设置 Owner 不仅用于权限控制,还有以下作用:

  1. 责任归属:明确 IP 库的负责人
  2. 审计追踪:记录权限修改的责任人
  3. 权限管理:当 Write Access 设为 Owner 时,仅该用户可修改
  4. 通知机制:某些 SOS 配置可在文件被修改时通知 Owner

注意事项与最佳实践

⚠️ 注意事项

  1. 确保 Owner 设置正确
    • Owner 用户名必须在 SOS 系统中存在
    • 拼写错误会导致权限设置失败
    • 建议使用复制粘贴,避免手工输入错误
  2. 仔细检查选中的文件范围
    • 使用 Advanced Select 确保仅选中目标文件
    • 避免误操作到其他 IP 库的文件
    • 操作前可以先查看选中文件的数量
  3. 锁定前确保代码已提交
    • 确保所有修改已 check-in
    • 锁定后,Group 成员将无法提交未提交的修改
    • 可能导致本地修改丢失的风险
  4. 团队沟通
    • 锁定版本前应通知团队成员
    • 避免有成员正在进行开发工作
    • 建立版本锁定的通知机制
  5. 验证权限修改结果
    • 操作完成后,务必验证权限设置
    • 可以让 Group 成员尝试修改文件,确认权限生效
    • 检查 SOS 日志,确认无错误信息

✅ 最佳实践

1. 建立版本锁定标准流程

graph LR
    A[IP 验证完成] --> B[团队 Review]
    B --> C[通知团队成员]
    C --> D[确认无人 Checkout]
    D --> E[执行锁定操作]
    E --> F[验证权限]
    F --> G[记录锁定版本号]
    G --> H[发布版本通知]
    
    style E fill:#87CEEB
    style G fill:#FFD700
    style H fill:#90EE90

2. 版本命名规范

锁定前,建议在 SOS 中为 IP 库打上明确的版本标签:

1
analog_lib_v1.0_LOCKED_2026-02-04

或者在 IP 库的 README 文件中记录:

1
2
3
4
5
## Version History
- v1.0 (2026-02-04): 锁定版本,Tapeout 使用
  - Owner: john_doe
  - Status: LOCKED
  - Write Access: Owner Only

3. 分层权限管理

对于大型 IP 库,可以采用分层权限管理:

顶层 IP 库

  • Write Access: Owner(锁定)
  • 用于稳定发布版本

开发分支

  • Write Access: Group(开发中)
  • 用于新功能开发

实验分支

  • Write Access: Group 或 World(探索性开发)

4. 定期审计权限设置

建立定期审计机制:

1
2
# 生成 IP 库权限报告
sos report -type permissions -library analog_lib > permissions_report.txt

检查项:

  • ✓ 已发布 IP 库是否正确锁定
  • ✓ Owner 设置是否为当前 IP 负责人
  • ✓ 是否有异常的权限设置

5. 解锁修改后及时重新锁定

graph LR
    A[发现 Bug] --> B[解锁版本]
    B --> C[Checkout 文件]
    C --> D[修复 Bug]
    D --> E[测试验证]
    E --> F[Check-in 文件]
    F --> G[重新锁定版本]
    G --> H[更新版本号]
    
    style B fill:#FFA500
    style G fill:#87CEEB
    style H fill:#90EE90

6. 使用 SOS 脚本自动化

对于频繁的锁定/解锁操作,可以编写 SOS 命令行脚本:

锁定脚本示例 (lock_ip.sh):略

使用方法

1
./lock_ip.sh analog_lib_v1.0 john_doe

解锁脚本示例 (unlock_ip.sh):略

提示

实际脚本命令可能因 SOS 版本而异,请参考您使用的 SOS 版本的命令行手册。

常见问题解答

Q1: 锁定后发现 Owner 设置错误,如何修改?

A: 需要使用具有管理员权限的账户,或者当前 Owner 账户,重新执行修改属性操作,更改 Owner 字段。

步骤:

  1. 以管理员或当前 Owner 身份登录 SOS
  2. 选中 IP 库文件
  3. Modify Attrs → Source File/Dir...
  4. 修改 Owner 为正确的用户名
  5. Update All 应用修改

Q2: 锁定后,Group 成员如何临时修改文件?

A: 有以下几种方式:

方式一(推荐):由 Owner 执行解锁操作

  • Owner 临时解锁版本(Write Access: Group)
  • Group 成员 checkout 并修改
  • 修改完成后 check-in
  • Owner 重新锁定版本

方式二:Owner 代为修改

  • Group 成员将修改需求告知 Owner
  • Owner checkout、修改、check-in
  • 保持锁定状态

方式三:临时转移 Ownership(需管理员权限)

  • 管理员将特定文件的 Owner 临时改为需要修改的用户
  • 用户修改完成后
  • 管理员将 Owner 改回原 IP Owner

Q3: 如何批量锁定多个 IP 库?

A: 使用 SOS GUI 的多选功能或命令行脚本。

GUI 方式

  1. 在文件列表中按住 Ctrl 键,逐个选中多个 IP 库
  2. 或者使用通配符选择:Select → By Pattern...,输入 analog_lib*
  3. 使用 Advanced Select 选择所有已管理文件
  4. 统一设置 Owner 和 Write Access
  5. Update All 批量应用

命令行方式

1
2
3
4
# 批量锁定脚本
for lib in analog_lib_v1.0 digital_lib_v2.0 io_lib_v1.5; do
    ./lock_ip.sh "$lib" john_doe
done

Q4: 锁定状态下,如何查看文件内容?

A: 锁定仅限制写权限,不影响读权限

所有用户(Owner, Group, World)仍然可以:

  • ✅ 查看文件内容
  • ✅ 复制文件
  • ✅ 在设计中引用该 IP 库
  • ❌ 修改文件内容(仅 Owner 可以)

Q5: 锁定后发现需要紧急修改,但 Owner 不在,怎么办?

A: 有以下应急方案:

方案一:联系 SOS 管理员

  • SOS 管理员具有超级权限
  • 可以临时修改 Owner 或 Write Access
  • 修改完成后恢复原设置

方案二:使用备用 Owner 账户

  • 建议在 IP 库中设置主 Owner备用 Owner
  • 在主 Owner 不可用时,备用 Owner 可以执行操作

方案三:临时创建开发分支

  • 在 SOS 中创建该 IP 库的开发分支
  • 在分支中进行紧急修改
  • 修改验证后,由 Owner 合并到主版本

总结

核心要点

  1. 版本锁定的本质:通过将 Write Access 限制为 Owner,实现 IP 库的版本保护
  2. 关键操作步骤
    • 选择目标 IP 库
    • 使用 Advanced Select 精确选择已管理文件
    • 设置 Owner 和 Write Access 属性
    • 验证权限修改结果
  3. 锁定 vs 解锁:仅在 Write Access 设置上有区别
    • 锁定:Write Access = Owner
    • 解锁:Write Access = Group
  4. 最佳实践
    • 建立标准流程和通知机制
    • 使用版本标签和文档记录
    • 定期审计权限设置
    • 考虑使用脚本自动化

操作对照表

操作目标 Owner 设置 Write Access 设置 适用场景
锁定版本 IP Owner Owner IP 验证完成、Tapeout、正式发布
解锁版本 保持原 Owner Group Bug 修复、功能增强、开发阶段
开放开发 Team Leader Group 团队协作开发
完全开放 - World 公开库、教学用途(不推荐)

快速参考流程

graph LR
    A{需要做什么?} --> B[锁定版本]
    A --> C[解锁版本]
    
    B --> D[设置 Write Access = Owner]
    C --> E[设置 Write Access = Group]
    
    D --> F[仅 IP Owner 可修改]
    E --> G[团队成员可修改]
    
    style D fill:#87CEEB
    style E fill:#FFA500
    style F fill:#90EE90
    style G fill:#FFD700

通过掌握 SOS 的版本锁定和解锁操作,团队可以更好地管理 IP 库的生命周期,确保设计的稳定性和可控性,同时保持必要的开发灵活性。


参考资源

  • Keysight SOS User Guide: File and Directory Attributes
  • Keysight SOS Administration Guide: Access Control
  • SOS Command Line Reference Manual

关键词:Keysight SOS, IP 库管理, 版本锁定, 访问权限控制, Write Access, Owner, 设计数据管理, PDM, 模拟 IC 设计