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

Innovus中快速获取timing path逻辑深度的golden脚本

在实际项目中我们经常会遇到一条timing path级数特别多,可能是一两页都翻不完。此时,我们大都需要手工去数这条path上到底有哪些是设计本身的逻辑,哪些是PR工具插入的buffer和inverter。

数字IC后端手把手培训教程 | Clock Gating相关clock tree案例解析

如果这样的timing path上大部分都是纯逻辑单元,比如与门,或门,异步等逻辑单元,而且每部分的delay都比较正常,此时如果timing 存在violation,我们需要反馈给前端进行逻辑的优化。

如果这样的timing path上存在较多的buffer和inverter,说明当前的timing violation主要原因并非设计本身的问题,而是后端PR阶段floorplan,placement做的不合理导致的,这时候需要我们后端工程师来进一步分析解决。

今天小编分享一个自动化脚本来获取具体timing path中的逻辑深度和buffer,inveter数量。这个proc又是一个非常好的脚本练习资源。

proc report_logic_depth {timing_path} { set total_logic_depth [get_property $timing_path num_cell_arcs] set bufinv 0 foreach_in_collection tp [get_property [get_property $timing_path timing_points] pin] { if { [get_property $tp object_type]“pin” && [sizeof_collection [filter_collection [get_cells -of_object $tp] "is_buffertrue||is_inverter==true"]]} { incr bufinv }} return [list $total_logic_depth [expr $bufinv/2]]}

Usage:
The procedure returns a list of two elements: the total logic depth and number of buffers/inverters in the path. You can use this to compute the logic depth without buffers and inverters.

Example:
set logic_depth [report_logic_depth [report_timing -from startpoint/CK -to endpoint/D -collection]]
puts “Total logic depth of path: [lindex $logic_depth 0]”
puts “Count of buf/inv in path: [lindex $logic_depth 1]”

Output:
Total logic depth of path: 35
Count of buf/inv in path: 8

这里我们拿咱们社区T12nm a55项目place的一条timing report来分析path的合理性。这是一条从reg到memory的timing path,layout路径如下图所示。

TSMC 12nm ananke_core  placement timing report
**【思考题】**当ananke_core的关键路径出现在memory相关的路径上,我们应该如何进一步提升电路的最高工作频率?

innovus 119> set x [report_logic_depth [report_timing -to u_vcpu/u_cpu/u_ananke_dcu/u_ananke_dcu_rams/u_ananke_l1d_tag_dirty_rams/u_dtag_bank/A[3] -collection ]]

14 4

说明这条timing path上buffer和inverter的数量是4级,并没有特别多。当然我们还可以把startpoint对应的reg摆放到更靠近memory的位置。

http://www.lryc.cn/news/542506.html

相关文章:

  • 百度AI图片助手,免费AI去水印、画质修复、画面延展以及局部替换
  • 【前端】Axios AJAX Fetch
  • 测试面试题:以一个登录窗口为例,设计一下登录界面测试的思路和方法
  • Android之图片保存相册及分享图片
  • EX_25/2/24
  • ElasticSearch公共方法封装
  • JVM之JVM的组成
  • 贪心算法
  • Linux下安装中文输入法总结
  • 人工智能(AI):科技新纪元的领航者
  • c3p0、Druid连接池+工具类 Apache-DbUtils (详解!!!)
  • 鸿蒙开发深入浅出03(封装通用LazyForEach实现懒加载)
  • AWS - Redshift - 外部表读取 Parquet 文件中 timestamp 类型的数据
  • Ubuntu20.04之VNC的安装使用与常见问题
  • vue3学习3-route
  • C++:dfs,bfs各两则
  • RK Android11 WiFi模组 AIC8800 驱动移植流程
  • 深度学习-6.用于计算机视觉的深度学习
  • 免费送源码:ava+springboot+MySQL 基于springboot 宠物医院管理系统的设计与实现 计算机毕业设计原创定制
  • 【电机控制器】ESP32-C3语言模型——DeepSeek
  • 小型字符级语言模型的改进方向和策略
  • 力扣-贪心-56 合并区间
  • vue 3D 翻页效果
  • 【系列专栏】银行信息系统研发外包风险管控-08
  • [ComfyUI] 【AI】如何获得一张人物图片的优质描述
  • 深度学习基础--ResNet网络的讲解,ResNet50的复现(pytorch)以及用复现的ResNet50做鸟类图像分类
  • stack,queue,priority_queue学习知识点
  • css特异性,继承性
  • 力扣hot100刷题——11~20
  • R语言Stan贝叶斯空间条件自回归CAR模型分析死亡率多维度数据可视化