当前位置: 首页 > news >正文

ETM vs. Abstract Model: Key Differences and Practical Applications in Hierarchical Design

1. ETM与Abstract Model基础概念解析

在芯片设计领域,随着设计规模越来越大,分层设计流程(hierarchy flow)已经成为主流方法。这种自底向上(bottom-up)的设计方式,先从模块级(block level)开始,再到系统级(sys level),最后完成顶层(top level)设计。在这个过程中,block model的质量直接影响整体设计效率。

ETM(Extracted Timing Model)和Abstract Model是两种最常用的block model。简单来说,ETM就像是一张只标注了出入口的地图,告诉你从A点到B点需要多少时间,但不会告诉你内部的具体路线。而Abstract Model则更像详细的导航地图,不仅告诉你出入口位置,还会标注内部的关键路径和交通规则。

具体来看两者的区别:

  • ETM仅包含input port、output port和clock port之间的约束关系,就像一个黑盒子,外部设计者只能看到输入输出的时间关系,无法了解内部具体实现。
  • Abstract Model则详细记录了与输入输出相关的interface logic信息,包括完整的时钟网络(从clock源到每个终点的路径)、input port到第一级寄存器的时序路径、寄存器到output port的时序路径,以及不同场景(scenario)下的这些信息。

生成这两种模型的命令也不同:

# 生成ETM extract_model -output block.etm # 生成Abstract Model create_abstract -output block.abs

2. 核心差异与技术实现细节

2.1 信息粒度的本质区别

ETM和Abstract Model最根本的区别在于信息粒度。想象一下装修房子,ETM就像只告诉你每个房间的门在哪里,而Abstract Model则会把每个房间的电路走线、水管布局都画出来。

在实际设计中,Abstract Model会记录以下ETM不具备的关键信息:

  1. 完整的时钟树结构:从clock源(A点)到每个终点(Y点)的完整路径,包括所有buffer和gate的详细信息。
  2. 接口时序路径:input port到第一级寄存器的组合逻辑延迟和clock skew,以及最后一级寄存器到output port的路径详情。
  3. 多场景支持:针对不同电压、温度等工作条件(scenario),分别记录上述信息。

2.2 生成流程的技术差异

生成这两种模型的过程也有显著不同。ETM的生成相对简单,主要是提取模块边界的时序信息。而Abstract Model的生成则需要更多步骤:

# Abstract Model生成典型流程 read_verilog block.v read_sdc block.sdc create_abstract -scenarios [list func_mode1 func_mode2] \ -power_domains [list PD1 PD2] \ -output block.abs

这个过程中,工具会分析模块内部与接口相关的所有关键路径,并提取出需要保留的详细信息。相比之下,ETM生成时不会进行这种深度分析。

3. 实际应用场景对比

3.1 何时选择ETM

ETM适用于以下场景:

  • 模块内部实现已经非常稳定,不太可能再做大的修改
  • 顶层设计主要关注模块间的接口时序,不需要了解模块内部细节
  • 设计规模很大,生成Abstract Model会消耗过多时间和资源
  • 早期设计阶段,模块内部还在频繁修改时,可以先使用ETM进行初步验证

3.2 何时选择Abstract Model

Abstract Model则在以下情况下更有优势:

  1. 时钟树综合(CTS):做全芯片时钟树设计时,需要知道每个模块内部的时钟结构,这是ETM无法提供的。
  2. 时序预算(Timing Budgeting):需要精确分配top和block之间的时序余量时,Abstract Model提供的详细路径信息至关重要。
  3. 电源完整性验证(VCLP):能早期发现电源域相关问题,如缺少isolation cell或level shifter。
  4. 接口时序收敛:处理top与block之间的复杂时序关系时,使用flat SDC比hierarchy SDC更方便。

4. Abstract Model的三大优势详解

4.1 提升接口时序收敛效率

在实际项目中,我多次遇到top和block之间时序难以收敛的问题。使用Abstract Model后,这些问题明显减少。因为它记录了capture register的详细时序信息,包括data path和clock path的延迟。

举个例子,假设有一条top到block的时序路径:

Top: FF1 -> Block: input port -> internal logic -> output port -> Top: FF2

使用Abstract Model时,可以准确知道从block的input port到内部第一级寄存器的延迟,以及clock到达时间,从而精确计算整个路径的时序。

4.2 优化时钟树设计

在做全芯片CTS时,Abstract Model提供的clock tree信息非常宝贵。它允许我们在顶层优化时:

  • 调整clock port的位置,使其更合理
  • 根据模块内部clock结构,优化顶层clock buffer的插入
  • 更准确地平衡不同模块之间的clock skew

4.3 早期电源完整性验证

Abstract Model中记录了连接到port的leaf cell的供电信息,这使得我们能够:

  • 更早发现缺少isolation cell或level shifter的问题
  • 从电源域角度确保buffer插入正确
  • 在顶层验证时发现block内部的电源问题

5. 时序预算与约束分割的最佳实践

5.1 基于Abstract Model的时序预算流程

时序预算是分层设计中的关键步骤。使用Abstract Model的典型流程如下:

  1. 准备chip level的SDC和UPF文件
  2. 将其分割为top level和block level的约束
  3. top level时序分析使用top SDC和block的Abstract Model
  4. block level时序分析使用block SDC
# 时序预算示例 read_sdc top.sdc read_abstract block.abs budget_timing -top top.sdc -blocks [list block.abs] \ -output block_budget.sdc

5.2 约束分割的工程经验

在多个项目中实践后,我总结了以下约束分割的经验:

  • top level SDC应包含三部分:top level UPF、top level时序约束、top-to-block边界时序
  • block level SDC则专注于模块内部约束
  • 使用Abstract Model可以避免约束重复或遗漏的问题
  • 边界时序要明确指定是使用Abstract Model中的哪部分信息

6. 工程实践中的选择建议

在实际项目中,我通常会根据设计阶段选择不同的模型:

  • 初期:模块还在频繁修改时,使用ETM快速迭代
  • 中期:当模块基本稳定后,改用Abstract Model进行更精确的验证
  • 后期:如果资源允许,对所有关键模块都使用Abstract Model

对于特别复杂的模块,即使资源消耗大,也建议使用Abstract Model。曾经有个项目为了节省时间使用了ETM,结果在顶层集成时发现了大量接口时序问题,反而耽误了更多时间。

在工具使用方面,Abstract Model生成时间通常是ETM的3-5倍,但带来的验证质量提升是值得的。建议在服务器负载较低的时段批量生成Abstract Model,比如晚上或周末。

http://www.jsqmd.com/news/635018/

相关文章:

  • 精细化网站导航:巧用CSS和JavaScript
  • 从Anthropic到阿里云:手把手教你配置主流MCP平台(Smithery/百炼/PulseMCP)
  • 收藏备用!腾讯面试官高频追问:你为什么能做好AI Agent产品经理?(小白/程序员必看)
  • 实地验证精准可查|2026年4月浪琴官方售后网点全面核验报告 - 速递信息
  • GLM-4v-9b惊艳效果:1120×1120输入下Excel截图表格识别演示
  • OpenBMC Web界面背后的秘密:拆解Redfish与Web-Vue如何协同工作
  • 树莓派5内存太小跑不动onnxruntime?先别急着换硬件,试试这几招虚拟内存和依赖优化
  • MangoHud深度解析:7个专业技巧让你在Linux游戏中实现精准性能监控与优化
  • 3步轻松解决C盘爆红问题:Windows Cleaner开源工具完整指南
  • **SRE实战进阶:基于Go语言的自动化故障自愈系统设计与落地实践**在现代云原生架构中,**
  • Phi-4-mini-reasoning模型在数据库课程设计中的应用:智能ER图设计与查询优化建议
  • 重生之我是接水管大师:网络流算法详解(EK、Dinic、费用流、上下界、模拟费用流)
  • 2026年4月市面上进口真空泵维修供应商,进口真空泵维修提升性能 - 品牌推荐师
  • 从axidmatest到axi-proxy:拆解Xilinx官方DMA驱动,哪种映射方式更适合你的项目?
  • C语言入门——篇一
  • CSS高级选择器与使用技巧
  • 粒度粒形分析仪行业迎黄金期!在线粒度仪推荐厂家新帕泰克,矿浆实时监测成采矿企业降本关键 - 品牌推荐大师1
  • 加拿大留学申请成功率低?2026这五家留学服务机构值得关注 - 品牌2025
  • Phi-4-mini-reasoning基础教程:理解‘不输出<think>’设计背后的工程取舍
  • 3分钟解锁网易云音乐NCM加密文件:ncmdumpGUI让音乐重获自由
  • 从LLM到World Model的跃迁密码:一位首席架构师封存5年的建模checklist(含ROS2+MuJoCo联调实录)
  • 如何用AntiMicroX解决PC游戏手柄支持难题:终极手柄映射工具完整指南
  • 【Python爬虫逆向】某团H5的Mtgsig1.1补环境实战解析
  • 5分钟搞定微信QQ防撤回!RevokeMsgPatcher深度解析与实战指南
  • 分享一个我用了2年的深度研究Prompt,半小时帮你搞懂任何陌生领域。
  • 小白也能懂!用RAG让大模型精准回答业务问题(收藏版)
  • 2026年4月浪琴官方售后网点亲历实测|横评对比+踩坑实录+迁址/新开全记录(附无滤镜实地考察・多方验证报告) - 亨得利官方服务中心
  • 如何快速释放系统内存:Mem Reduct轻量级内存管理工具完整指南
  • 告别YOLO依赖?手把手教你用RT-DETRv2在T4 GPU上跑出217FPS(附TensorRT部署避坑指南)
  • 3小时从零到大师:用lilToon打造专业级卡通角色渲染效果