数字后端培训实战项目六大典型后端实现案例
Q1:请教一个问题,cts.sdc和func.sdc在innovus用如何切换?在flow哪一步切换输入cts.sdc?哪一步切换到func.sdc,具体如何操作?
这个学员其实就是在问使用分段长clock tree时具体的flow流程是怎么样的?针对时钟结构比较复杂的设计,我们一般会编写一个用来长clock tree的sdc,避免工具默认的skew group之间出现乱做clock balance的情况。
比如下图所示的Clock Gen设计,这里面包含无毛刺时钟切换电路,分频电路(包含整数分频,小数分频电路),低速scan测试电路,高速时钟测试电路等。
数字SoC芯片复杂时钟结构设计时钟树综合典型案例(最复杂的时钟案例也不过如此!)

具体使用分段长clock tree技术的流程如下:
1)创建使用分段长clock tree 对应的constraint mode
create_constraint_mode -sdc_files /home_new/top_data/scripts/cts.tcl -name cts
2)创建做时钟树综合的analysis view(可以使用多个view做clock tree)
create_analysis_view -name view_cmax_cts -constraint_mode {cts} -delay_corner {corner_cmax}
set_analysis_view -setup {view_cmax_cts} -hold {view_cmax_cts}
3)设置长clock tree使用的corner或view
set_analysis_view -setup {view_cmax} -hold {view_cmax}
4)设置特殊sink type定义和insertion delay约束
#source …/input/floating.tcl
foreach pin_name $floating_pin_0 { set_ccopt_property sink_type -pin $pin_name ignore### set_ccopt_property insertion_delay 0.1 -pin $pin_name}
Q2:请问星主,从功耗角度来看,clock net上的总cap如果比较大有什么优化方法呢?
核心方法就是确保clock tree长度最短,确保高频时钟clock net总线长最短!
比如我们可以控制ICG的位置和ICG带的fanout reg位置。这里可以是手工摆放ICG和它对应的寄存器,还可以使用clock gating aware以及clock merge等技术来实现clock tree network的低功耗指标。

复杂时钟设计时钟树综合(clock tree synthesis)常见20个典型案例
Q3: 我想问一下模拟给了一个lef里头有pin的位置,boundary位置,innovus有没有lappend lef之后输个命令就直接把这些floorplan做好的操作,我现在是根据lef中的boundary位置信息,在innovus中输入命令,请问有没有更简单的方法?
这个问题在数模混合芯片中是肯定会涉及到的一个实现要点,特别是当芯片的顶层是模拟,数字设计是子模块的时候。如下图所示为某个以模拟为主的芯片,其中数字模块的出pin分成五大块。其实这个数字模块的切分和摆放pin是不是就是我们数字后端hierarchical flow中所讲的block partition和pin assignment。只不过我们PR工具做partition后是写出子模块block的floorplan def,而模拟不太会写这个文件,而是提供通用的GDS或LEF文件。
PS:如果模拟版图能提供数字模块的def文件,那后端做实现时可以直接defIn这个文件即可加载当前数字模块的形状和io port信息。

那有了模拟设计提供的GDS文件后,我们还是不能直接提供给PR工具来使用。
如果模拟那边提供的是GDS,我们可以通过GDS转LEF的golden脚本来生成对应的LEF文件。

那是不是有lef后,我们就可以开始做子模块block的后端实现了呢?
显然不可以。如果这个子模块block是我们数字顶层的一个子模块,那么我们直接读入它的LEF就可以实现调用,注意是调用。
而我们今天这个案例是要去做这个数字模块的后端实现,所以需要有这个数字模块的boundary和io pin信息。而这个信息的呈现形式不可能是LEF,因为PR工具initial boundary不支持读入设计本身的LEF文件。
所以,我们还需要进一步把LEF文件转换成Milkyway数据格式,最后再通过Milkyway database来输出对应的floorplan def或io file。

Q4: 星主你好,我用pt修完时序导出eco脚本,在innovus中导入时报错,请问是什么原因导致的?
1)报错信息如下: ecoChangeCell -inst U3775 -cell NOR2XB_X1M_A7TH_C50Ignoring all MSV checks during this manual ECO operation.
**ERROR: (IMPOPT-628): No equivalent cell found in the library for the substitution. Use “setEcoMode -LEQCheck false” to allow the swapping of cells if the two cells are of different functionality.
Type ‘man IMPOPT-628’ for more detail.
- innovus中U3775的cell是NOR2B_ΧOP5M_A7TH_C50,两个cell差别如下图。

- 尝试关闭LEQCheck检查后替换,又报pin names不匹配。
**ERROR: (IMPOPT-340): Cannot determine how to connect NAND2XB_X3M_A7TR_C50. There is a mismatch in pin names between the cells being swapped. Use ecoChangeCell -pinMap to specify pin mapping when swapping cells with different pin names。
咱们社区钉钉知识库目前支持自动化回复EDA工具使用过程中遇到的问题。比如这个案例对应的错误代码,我们可以直接拿来问“AI助理”。AI助理会在10s内回答你的问题,而且会使用中文来回答。

由于这个星友问题是非常典型的项目问题,小编今天特地拎出来编写了一份专用教程。具体可以通过关键词搜索或访问钉钉上的知识星球目录查看。

比如我们问时钟树综合包含的步骤,看看AI助理是如何回答的。


Q5: 星主,tessent里面的tck和ssn clock同时经过一个MUX,需要case analysis让一路pass吗,如果需要的话是让tck过还是让ssn clock过呢?tck频率更低。
这个其实就是典型OCC电路的长clock tree策略问题。小编已经使用三个不同颜色来标出三条clock tree的长tree情况。
1)高速时钟fast clock直接穿过Mux一路长到所有sink点(精细化的做法还需要在mux的输出端添加一个guide buffer并创建时钟)
2)slock clock穿过下方第一个mux长到第二个Mux的I1 Pin即可
3)ijtag_tck时钟长到Mux的I1 Pin即可

Q6: 关于TOP IO Ring的设计问题。主要考查IO Cell类型的选型,ESD和Noise相关方案。


每个IO Domain的组成部分和ESD结构图如下图所示。

相关文章:
数字后端培训实战项目六大典型后端实现案例
Q1:请教一个问题,cts.sdc和func.sdc在innovus用如何切换?在flow哪一步切换输入cts.sdc?哪一步切换到func.sdc,具体如何操作? 这个学员其实就是在问使用分段长clock tree时具体的flow流程是怎么样的?针对时…...
安卓免费多功能工具:一站式解决 PDF 阅读、编辑、转换等需求
软件介绍 今天要给大家介绍一款功能强大的PDF处理软件——PDFgear Android版。它是专为安卓设备打造的,完全免费,无需破解和激活就能使用。 此前,我们分享过它的桌面端,收获了大家的一致好评。今天要着重介绍的手机APP版本&…...
diffuser库使用本地模型生成图像
实验目的 使用diffuser库生成图像的文章是很多的,使用方法也并不复杂,安装库后调用现成的模型和接口即可,但是因为网络原因,模型下载总会遇到问题,对于使用服务器的研究者来说,挂梯子并不可行,…...
递归—基础算法
#基线条件和递归条件 #每个递归函数都有两部分:基线条件和递归条件。递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。 #栈:栈是一种数据结构,它是一种线性数据结构,…...
全面复习回顾——C++语法篇2
23、字符串相加 string s3;s3s1s2;cout<<s3; 24、结构体基本操作 struct student {// write your code here......string name;int age;double height0.0; };int main() {// write your code here......student s;cin>>s.name;cin>>s.age;cin>>s.hei…...
探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比
文章目录 三、算法在现代通信系统中的应用3.1 5G 通信中的应用3.1.1 信道编码与调制解调3.1.2 大规模 MIMO 技术3.1.3 案例分析:5G 基站与终端实现 3.2 卫星通信中的应用3.2.1 抗干扰与纠错编码3.2.2 信号处理与调制解调3.2.3 案例分析:卫星通信系统实例…...
Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴
注:本文为 “ Vim 中鼠标右键粘贴、跨系统复制粘贴问题解决方案” 相关文章合辑。 未整理去重。 Linux 入门:vim 鼠标不能右键粘贴、跨系统复制粘贴 foryouslgme 发布时间 2016 - 09 - 28 10:24:16 Vim 基础 命令模式(command - mode&…...
无人机遥控器扩频技术解析!
一、扩频技术基本原理 扩频技术(Spread Spectrum, SS)通过将信号的频谱扩展至远大于原始带宽进行传输,提升抗干扰性、隐蔽性和多用户能力。其核心原理包括: 直接序列扩频(DSSS) 利用高速伪随机码&#x…...
Spring Boot API 项目中 HAProxy 与 Nginx 的选择与实践
在开发 Spring Boot 构建的 RESTful API 项目时,负载均衡和反向代理是提升性能与可用性的关键环节。HAProxy 和 Nginx 作为两种流行的工具,经常被用于流量分发,但它们各有侧重。究竟哪一个更适合你的 Spring Boot API 项目?本文将…...
OpenBMC:BmcWeb构造connect对象
OpenBMC:BmcWeb server.run-CSDN博客 server在接收了tcp连接请求后,会构造一个ConnectionType对象,然后通过post调度,运行该对象的start函数 1.ConnectionType类型 其实也就是using ConnectionType = Connection<Adaptor, Handler>;类型 由于ConnectionType实例化于…...
ORB-SLAM2源码学习(六):相机跟踪(局部地图跟踪和关键帧创建)
目录 1.局部地图跟踪 1.1 更新局部关键帧UpdateLocalKeyFrames 1.2 更新局部地图点(来自局部关键帧)UpdateLocalPoints() 1.3 投影匹配 2. 对比四种跟踪方式以及使用的投影匹配 3.关键帧创建 3.1 判断是否需要创建新关键帧: NeedNewKeyFrame() 3…...
WordPress使用(3)
前面文章讲述了如何利用docker进行wordpress系统的安装及相关设置,本文将介绍如何进行站点数据和数据库数据的备份。 1. 备份数据库 # 进入mysql容器内部 docker exec -it mysqlwp bash# 使用mysqldump 命令导出数据库 mysqldump -u root -p wordpress > wordp…...
Docker基础篇——什么是Docker与Docker的仓库、镜像、容器三大概念
大家好我是木木,在当今快速发展的云计算与云原生时代,容器化技术蓬勃兴起,Docker 作为实现容器化的主流工具之一,为开发者和运维人员带来了极大的便捷 。下面我们一起了解下什么是Docker与与Docker的仓库、镜像、容器三大概念。 …...
Gitlab配置personal access token
1.点击左上角个人账号 -> Preferences 2. 点击左边栏 Access Tokens 3. 点击Add new token ,输入token名称,勾选权限(注意截至日期 “Expiration date” 可不填) 4. 创建成功后,显示token信息,复制到本地…...
使用STM32CubeMX实现LED灯每秒闪烁一次(STM32G070CBT6单片机)
1.打开STM32CubeMX,点击File->New Project,新建一个新工程。 2.搜索芯片型号,选择正确的芯片封装规格,准备对芯片的引脚进行配置。 进行上面的操作后,跳转到如下的页面。 3.选择要配置的引脚进行配置。此处我的LED是…...
django中路由配置规则的详细说明
在 Django 中,路由配置是将 URL 映射到视图函数或类视图的关键步骤,它决定了用户请求的 URL 会触发哪个视图进行处理。以下将详细介绍 Django 中路由配置的规则、高级使用方法以及多个应用配置的规则。 基本路由配置规则 1. 项目级路由配置 在 Django 项目中,根路由配置文…...
游戏引擎学习第138天
仓库:https://gitee.com/mrxiao_com/2d_game_3 资产:game_hero_test_assets_003.zip 发布 我们的目标是展示游戏运行时的完整过程,从像素渲染到不使用GPU的方式,我们自己编写了渲染器并完成了所有的工作。今天我们开始了一些新的内容&#…...
测试理论快速入门
软件测试的目的是什么 查出缺陷 查找程序的错误:测试功能是否可用,添加的功能是否成功添加实现 发现性能问题:查看响应速度是否在可接受范围内 找出兼容性问题:这个功能是否在多端都能成功使用,例如pc端和mo端 确保交…...
【PostgreSQL】如何免密使用PostgreSQL数据库内置工具
如何免密使用PostgreSQL数据库内置工具 方法 1:使用 .pgpass 文件自动输入密码步骤: 方法 2:使用环境变量 PGPASSWORD步骤: 我们在PostgreSQL数据库自带的各种工具时,每次使用都要输入数据库密码。比如在使用pg_dump 备…...
模块15.常用API
文章目录 模块15.常用API第一章.Math类1.Math类介绍2.Math类方法 第二章.BigInteger1.BigInteger介绍2.BigInteger使用 第三章.BigDecimal类1.BigDecimal介绍2.BigDecimal使用3.BigDecimal除法过时方法解决 第四章.Date日期类1.Date类的介绍2.Date类的使用3.Date类的常用方法 第…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
