数字IC后端零基础入门基础理论(Day1)
数字IC后端设计导入需要用到的input数据如下图所示。

数字后端零基础入门系列 | Innovus零基础LAB学习Day9
Netlist:
设计的Gate level(门级)网表。下图所示为一个计数器设计综合后的门级netlist。

从这个netlist中我们看到这个设计顶层的名字叫counter,包含四个输入信号,一个输出信号。而且这个设计调用了8个标准单元的cell。
Netlist本质是一个电路原理图。上述Netlist对应的电路图如下图所示。

看这个电路时需要搞清楚如下几个概念:
1)Port 。像咱们这个counter的设计中的in[0],in[1] 都是属于io port。
2)Pin 。每个标准单元cell都有若干输入输出pin。比如U11这颗cell的A1,A2,B,C都是这个cell的四个输入pin,而Z pin是它的输出pin。每个pin都要和其他信号进行互连(逻辑连接)。
- Net。上图设计中的U12的输出Pin Z和out_reg_1这个寄存器的D pin互连的逻辑线就是Net,它的名字为N7。注意我们所说的net为逻辑net。后续绕线后对应的physical走线为physical net shape。
4)Timing Arc (时序弧)。标准单元的输入到输出这段就是一段Timing arc。比如U13这颗cell,它的timing arc有两条。每条timing arc在时序库lib中都会定义好。它是后续工具计算每个cell 延时的基础。


Tech File/Tech Lef : 精简版的物理设计规则,它是被用来指导工具按照design rule来完成布线。这个design rule是foundary代工厂加工制作的物理规则,比如metal间距要求,metal最小线宽等规则。
icc和icc2用tf,encounter/innovus用tech LEF,本质描述的信息是一样的,不过tech LEF里面会含有一些tf里面没有的信息,比如天线效应规则,cell spacing rule等。
Site:代表最基本的布局单元。site一般情况是最小standard cell的大小。类似cell的最小size。定义在 lef中, 如下图所示:

SITE tsm3site
SYMMETRY y ;
CLASS core ;
SIZE 0.660 BY 5.040 ;
END tsm3site
上面LEF字段定义了site的尺寸大小和方向, size是横向长度,BY是高度,接下来的standard cell会引用该site定义,所有stardard cell横向长度一定是site长度的整数倍,我们不允许非整数倍site长度的stardard cell。如下图size 1.32是基本site 0.66的2倍宽。
MACRO INVXL
CLASS CORE ;
FOREIGN INVXL 00 ;
ORIGIN 0 0 ;
SIZE 1.32 BY5.04 ;
SYMMETRY X Y ;
SITE tsm3site;
PIN Y
DIRECTION OUTPUT ;
PORT
LAYER Metal1 ;
RECT 1.03 2.38 1.18 3.225 ;
RECT 1.03 1.35 1.12 1.845 ;
END Y
END INVXL
Row: 和site有关的另一个概念是row,row是有N个site排列组成。

Routing Track: 它是指金属走线的通道。工艺库中会指定好每层金属的track,它有默认方向的走线方向,比如M2的优先走线为水平方向,那么工具在走M2 routing的时候就会优先走水平方向。因此,对于一个给定大小的设计,绕线资源是固定的,即每层金属的绕线track都是定好的。

Tluplus &QRC: Tluplus和QRC分别是foundary提供给Synopsys和Cadence PR工具使用的。工具用这个文件来估算设计中的R和C,从而计算互连线的delay。
这两个文件的内容本质上是等效的,而且它们都是以二进制的形式呈现出来,我们通过gvim打开会显示成乱码。
对于Tluplus和QRC,我们需要知道以下几方面内容:
1)每层metal单位长度的R和C
2)这个文件里面layer名字需要和tech lef,itf文件中的层次匹配
3)QRC的准确性要比captable文件好。如果没有QRC,也可以使用captable文件来替代
4)MMMC创建时需要加载对应的Tluplus和QRC文件,否则工具无法估算互连线延迟会报错,更谈不上优化时序了
Lib:liberty interchange format,描述工艺库中cell的时序和功耗信息的文件。
Lef:Library exchange format,描述std cell的物理信息,包括形状,尺寸,出pin的位置及金属层,不可布线区域OBS等。它是用来告诉工具当前std cell的形状,出pin位置以及std cell内部的走线(表现为OBS)。

DEF(Design Exchange Format): 设计交换格式DEF(Design Exchange Format)文件是有Cadence公司开发用于描述电路物理设计信息的一种文件格式,它不仅包含电路的连接关系而且还描述了电路布局布线后cell和互连线的具体物理信息。
一句话,DEF可以体现出设计的全貌。比如一个innovus routeopt后的database,我们可以通过写出设计的def,导入到Starrc中寄生参数的提取。
LEF/FRAM View/GDS VIEW: 下图左侧为NAND与非门的LEF或叫FRAM VIEW,这里的View理解成视图。右侧是NAND的GDS View,GDS是一个设计的全貌,它包含了组成这个逻辑单元的一切管子device器件。而我们知道任何一个管子都有它的Base layer和Metal layer。Base layer一般也叫FEOL Layer,Metal Layer也叫BEOL Layer。

SDC: 全称是Synopsys Design Constraints Format,是由Synopsys公司最早提出的一种约束文件格式。主要用于指定design内部的Timing关系,约束Power消耗和Area大小。但是在这当中,最为关键的便是指定design的时序。其语法结构是基于TCL语法实现的。主要应用于综合、PR、以及STA过程当中,当然在其他方面也会有很大用途,比如CDC check。现在的SDC可以看做是一项标准的指令系统,基本上所有的EDA工具都可以兼容性识别。
关于SDC更多具体的命令,可以查看下面这份教程。
https://alidocs.dingtalk.com/api/doc/transit?spaceId=5094368790&dentryId=69645565609&corpId=dingcd9df953ab4a15574ac5d6980864d335
Transition: 它是指信号转换时间,也被称为transition time。是指电压从10%VDD上升到90%VDD所需要的时间,或者是从90%VDD下降到10%VDD所需要的时间,当然也可以是20%VDD上升到80%VDD的时间,具体要看timing lib库里面的定义,如:
Falling edge thresholds:
slew_lower_threshold_pct_fall : 10.0;
slew_upper_threshold_pct_fall : 90.0;
Rising edge thresholds:
slew_lower_threshold_pct_rise : 10.0;
slew_upper_threshold_pct_rise : 90.0;

信号上升和下降的转换时间过长意味着该单元内部电路的速度很慢,延时就比较长。在sdc中,用以下命令来限制slew大小。
set_max_transition 0.1 -clock_path [all_clocks]
CELL Delay: 逻辑单元的传播延时。传播延时是指信号从逻辑门的输入端到其输出端所需要的时间。
这里引用一个英文的定义(很多时候用中文来描述专业术语,真的很别扭)
It is defined as the difference between the times when the transitioning input reaches 50% of its final value to the time when the output reaches 50% of the final value showing the effect of input change. 这里50%被定义为逻辑阈值,具体看下图就可以看明白。
以图1中的两输入与门为例。I1端是一个constant,value为1,I2端信号波形如图所示。O为两输入与门的输出。


传播延时取决于以下两大因素:
1.input transition
input transition越小(即fast slew),cell delay越小。在数字后端设计实现中,常常看到cell delay比较大的原因之一就是input transition比较大(transition比较差)导致的。
- output load
输出负载越大,需要给负载充电的时间就越长,因此cell delay也就越大。这里顺便提下,有的时候我们为了balance delay值,可以通过加dummy net来增加load,从而增大latency。
Net Delay: 互连线Inter-connected延时,它是指逻辑net对应的走线延时。走线越长,net delay越大。
Net delay的计算往往是将整个design中的net拆分成若干段来进行的,同时把每段net用某种RC模型来表征。数字后端实现过程中net delay也仅仅是基于特定的delay 模型来进行net delay的估算。PR工具布线后的database需要利用Start-RC 来进行RC 抽取,以SPEF格式的RC文件输出。最后在Timing signoff工具Primetime中读取这个RC spef文件来进行delay的计算。net delay和R*C成正比。


MMMC:Multi mode multi corner,多种工作模块多种工艺角组合下进行timing等check。

随着工艺节点越做越小,timingsignoff阶段需要signoff的corner越来越多。以本次训练营所使用的的TSMC28nm工艺为例,官方给出的timingsignoffcorner要求如下图所示,即setup 检查需要在不同的librarypvt和RCcorner下都能满足我们的spec。

如果我们的PRflow只带一个传统的cworst125和cbestm40去跑flow,布局布线后的timing 可能存在大量的setup和holdviolation(PrimeTime检查)。因此我们就希望工具在PR阶段就能看到其他corner下的timingviolation并对这些violation进行时序的优化。这就引入了MCMM的概念。引入它的好处是后续PT可能signoff会收敛的更快,坏处是PR阶段的runtime会更久。
每个View = Library Set (lib) + RC Corner (QRC) + Constraint Mode

相关文章:
数字IC后端零基础入门基础理论(Day1)
数字IC后端设计导入需要用到的input数据如下图所示。 数字后端零基础入门系列 | Innovus零基础LAB学习Day9 Netlist: 设计的Gate level(门级)网表。下图所示为一个计数器设计综合后的门级netlist。 从这个netlist中我们看到这个设计顶层的名字叫counte…...
【LC】240. 搜索二维矩阵 II
题目描述: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,…...
Redis应用—4.在库存里的应用
大纲 1.库存模块设计 2.库存缓存分片和渐进式同步方案 3.基于缓存分片的下单库存扣减方案 4.商品库存设置流程与异步落库的实现 6.库存入库时"缓存分片写入 渐进式写入 写入失败进行MQ补偿"的实现 7.库存扣减时"基于库存分片依次扣减 合并扣减 扣不了…...
selenium获取请求头
【原创】Selenium获取请求头、响应头-腾讯云开发者社区-腾讯云 selenium 4.0.0 selenium-wire 5.1.0 python 3.10 from seleniumwire import webdriver import time from selenium.webdriver.common.by import By import re def get_request_headers(driver):"""…...
Rust中自定义Debug调试输出
在 Rust 中,通过为类型实现 fmt::Debug,可以自定义该类型的调试输出。fmt::Debug 是标准库中的一个格式化 trait,用于实现 {:?} 格式的打印。这个 trait 通常通过自动派生(#[derive(Debug)])来实现,但你也…...
docker离线安装、linux 安装docker
之前写过一篇docker的离线安装,现在从头再看繁琐了,服务器换了,既然要重搭一遍就要改进一下了。下面步入正题: 1.下载离线软件包 https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz 2.下载安装工具包…...
卓易通:鸿蒙Next系统的蜜糖还是毒药?
哈喽,我是老刘 最近很多人都在问鸿蒙next系统新上线的卓易通和出境易两款应用。 老刘分析了一下这个软件的一些细节,觉得还是蛮有意思的,我觉得可以从使用体验、底层原理和对鸿蒙生态的影响这三个角度来分析一下。 使用体验 性能 看到了一些测…...
AI大模型学习笔记|神经网络与注意力机制(逐行解读)
来源分享链接:通过网盘分享的文件:详解神经网络是如何训练的 链接: https://pan.baidu.com/s/12EF7y0vJfH5x6X-0QEVezg 提取码: k924 内容摘要:本文深入探讨了神经网络与注意力机制的基础,以及神经网络参数训练的过程。以鸢尾花数…...
Linux 操作系统中的管道与共享内存
目录 一、匿名管道 (一)基本概念 (二)关键现象 (三)管道特性 二、命名管道 (一)基本概念 (二)关键特性 三、共享内存 (一)基…...
恢复删除的文件:6个免费Windows电脑数据恢复软件
数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式,如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究,我分析了 25 最佳免费数据…...
linux网络编程 | c | select实现多路IO转接服务器
select实现多路IO转接服务器 基于该视频完成 15-select实现多路IO转接设计思路_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 文章目录 select实现多路IO转接服务器1.思路&功能2.代码实现warp.hwarp.cmulti_select_sever.c运行图 3.代码解释(细节…...
基于前后端分离的食堂采购系统源码:从设计到开发的全流程详解
本篇文章,笔者将从系统设计到开发的全过程进行详解,帮助开发者和企业了解如何高效构建一套完善的食堂采购系统。 一、系统需求分析 在开发一套基于前后端分离的食堂采购系统前,必须对业务需求和功能模块进行详细分析,确保系统设…...
小程序自定义tab-bar,踩坑记录
从官方下载代码 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 1、把custom-tab-bar 文件放置 pages同级 修改下 custom-tab-bar 下的 JS文件 Component({data: {selected: 0,color: "#7A7E83",selectedColor: "#3…...
游戏引擎学习第52天
仓库 : https://gitee.com/mrxiao_com/2d_game 这节的内容相当多 回顾 在游戏中,实体被分为不同的类别:接近玩家的“高频实体”、距离较远并正在模拟的“低频实体”和不进行更新的“休眠实体”。这些实体会根据它们与玩家的距离进行处理,接…...
【热力学与工程流体力学】流体静力学实验,雷诺实验,沿程阻力实验,丘里流量计流量系数测定,局部阻力系数的测定,稳态平板法测定材料的导热系数λ
关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...
【HTML】根据不同域名设置不同的网站图标(替换 link 中 href 地址)
文章目录 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta http-equiv"x-ua-compatible" content"ieedge,chrome1" /><meta name"viewport" content"widthdevice-width&q…...
使用Navicat从SQL Server导入表数据到MySQL
在表上右键选择导入向导 选择ODBC 1.内输入ip即可,不需要端口号 一定要勾选允许保存密码 选择需要的表,下一步 根据需求,可修改表名、是否新建表 根据需求修改不同表的字段类型和长度 按需选择导入方式...
私有云dbPaaS为何被Gartner技术成熟度曲线标记为“废弃”?
当云计算席卷而来,基于云基础设施的数据库部署也改变了数据库。在传统的私有化部署(On-premises)和公有云部署(Public Cloud)之间,不断融合的混合IT(Mixed IT)形式成为最常见的企业级…...
牛客网 SQL1查询所有列
SQL1查询所有列 select id,device_id,gender,age,university,province from user_profile 每日问题 C 中面向对象编程如何实现数据隐藏? 在C中,面向对象编程(OOP)通过封装(Encapsulation)实现数据隐藏。…...
【经验分享】OpenHarmony5.0.0-release编译RK3568不过问题(已解决)
问题描述 根据操作手册正常拉取代码,然后编译OpenHarmony5.0.0版本rk3568项目 编译命令 ./build.sh --product-name rk3568 --ccache出现如下报错 然后真正开始出错的位置是下面这句log FAILED: ../kernel/src_tmp/linux-5.10/boot_linux ../kernel/checkpoint/c…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
