数字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…...

如何使用ERC404协议
ERC404 ERC404协议的性质 ERC404不是一个开发代码工具包,而是一种智能合约标准规范。它就像是一份蓝图或者规则手册,规定了在以太坊区块链上开发特定智能合约应该遵循的接口、函数和事件等规则。如何使用ERC404协议 定义合约接口 首先,在开发智能合约时,要根据ERC404标准定…...

240004基于Jamva+ssm+maven+mysql的房屋租赁系统的设计与实现
基于ssmmavenmysql的房屋租赁系统的设计与实现 1.项目描述2.运行环境3.项目截图4.源码获取 1.项目描述 该项目在原有的基础上进行了优化,包括新增了注册功能,房屋模糊查询功能,管理员和用户信息管理等功能,以及对网站界面进行了优…...

ORACLE RAC ADG备库报错ORA-04021: timeout occurred while waiting to lock object
问题:核心的灾备 RAC ADG 备库,这两天频繁重启,并且报如下错误,通过查看MOS,发现是个BUG ADG备库的ALERT错误日志如下: Errors in file /u01/app/oracle/diag/rdbms/hxxxsz/hxxxsz1/trace/hxxxsz1_lgwr_69…...

CAPL如何设置或修改CANoe TCP/IP协议栈的底层配置
在CANoe中创建网络节点作为以太网主机时,可以给其配置独立的TCP/IP Stack。 配置的协议栈有一些底层配置参数可以在界面上设置或修改,比如: MTU上图中MTU显示500只是图形界面显示错误,正确值是1500。 TCP延迟确认这些参数也可以通过CAPL动态配置,甚至CAPL还可以配置很多界…...

git使用教程(超详细)-透彻理解git
一.核心基础 核心概念有六个 首先请把与svn有关的一切概念暂时从你的脑海中移除掉,我们要重新认识本文所讲述的所有概念。 1.worktree worktree是一个目录,你在这里对文件进行增加、删除、修改。也就是我们常说的工作区。在git中worktree必须要与一个…...

【2024 Dec 超实时】编辑安装llama.cpp并运行llama
首先讲一下环境 这是2024 年12月,llama.cpp 的编译需要cmake 呜呜呜 网上教程都是make 跑的。反正我现在装的时候make已经不再适用了,因为工具的版本,捣鼓了很久。 ubuntu 18 conda env内置安装。 以下是可以完美编译llama.cpp的测试工具版…...

Docker介绍、安装、namespace、cgroup、镜像-Dya 01
0. 容器简介 从生活上来说,容器是一种工具,可以装东西的工具,如衣柜、背包、行李箱等等。 从IT技术方面来说,容器是一种全新的虚拟化技术,它提高了硬件资源利用率,结合k8s还可以让企业业务快速横向扩容、业…...

docker 搭建自动唤醒UpSnap工具
1、拉取阿里UpSnap镜像 docker pull crpi-k5k93ldwfc7o75ip.cn-hangzhou.personal.cr.aliyuncs.com/upsnap/upsnap:4 2、创建docker-compose.yml文件,进行配置: version: "3" services:upsnap:container_name: upsnapimage: crpi-k5k93ldwf…...

3D一览通在线协同设计,助力汽车钣金件设计与制造数字化升级
汽车行业已迎来智能化的汹涌浪潮,在此背景下,零部件制造商唯有积极应对,以智能制造为核心驱动力,方能跟上行业发展步调,在激烈的市场竞争中抢占先机。作为整车制造不可或缺的核心组件之一,汽车钣金件亦需紧…...

基于Matlab实现三维地球模型(源码)
利用MATLAB强大的图形处理能力和数学计算功能构建的可视化应用。这个模型允许用户在三维空间中观察地球,并且能够动态地旋转地球模型,同时还可以模拟卫星在其周围的运动轨迹,为学习地球科学、天文学以及航天工程等领域提供了一个直观的教学工…...