芯片跨时钟域设计(二)

芯片培训(真实项目)介绍:

  • 低功耗景芯SoC前端、中端、后端全流程实战培训(火爆订购中)

  • DDR4/3项目实战培训

  • ARM Cortex-A72处理器12nm PR实战培训

  • ARM Cortex-A72处理器12nm DFT实战培训

  • ARM Cortex-A7处理器28nm PR实战培训(火爆价格战)

  • RISC-V MCU 40nm全芯片PR实战培训

  • 跨时钟域RTL设计与CDC实战

  • UPF设计与低功耗仿真实战

芯片Design Service设计服务介绍:

  • 提供SoC、MCU、ISP、CIS等芯片设计、验证、DFT设计服务

  • 提供DDR/PCIE/MIPI/CAN/USB/ETH/QSPI/UART/I2C等IP设计

  • 提供7nm、12nm、28nm、40nm、55nm、65nm、90nm等后端设计

  • 提供高校、企业定制化芯片设计服务、设计培训业务

景芯SoC芯片全流程设计训练营的宗旨:

【让每个学员都能设计一款SoC/MCU芯片】

【全网唯一】景芯SoC是一款用于【芯片全流程设计培训】的低功耗ISP图像处理SoC,采用低功耗RISC-V处理器,内置ITCM SRAM、DTCM SRAM,集成包括MIPI、ISP、USB、QSPI、UART、I2C、GPIO、以太网MAC控制器等IP,采用SMIC40工艺设计流片。

(一)SoC前端课程,您将学会

  • 高速接口的Verilog设计实现

  • 从图像算法到RTL设计实现

  • MIPI、ISP的Verilog实现与仿真

  • Lint、CDC检查及UVM验证

  • 后仿真

仅前端一门课程内容就抵得上其他培训机构的5-6门课程。

(二)SoC中端课程,您将学会

  • DFT设计(芯片级)

  • Synthesis逻辑综合(芯片级)

  • 低功耗UPF设计、CLP技术

  • formal验证等技术

仅中端一门课程内容就抵得上其他培训机构的4-5门课程。

(三)SoC后端课程,您将学会

  • 低功耗设计

  • 布局布线(低功耗FF flow)

  • StarRC/QRC

  • STA/Tempus

  • 功耗分析

  • DRC/LVS设计

仅后端一门课程内容就抵得上其他培训机构的3-4门课程。

加入知识星球,加入芯片设计知识宝库!

SoC培训营的知识星球

接着上文章芯片跨时钟域设计(一)继续聊。

下面接着介绍Gray码转换。格雷码的特点就是任意两个相邻码只有一比特不同。

我们接下来介绍二进制码、格雷码的转换原理、不同代码实现风格比较。

(一)二进制码 -> 格雷码

二进制码的最高位作为格雷码的最高位;二进制码的高位、次高位相异或得到次高位格雷码;格雷码其余位依此类推;

直接上图,简单明了:

编码风格1://code style 1:

integer i;always @(*)begin    gray[PTR-1]=bin[PTR-1];    for(i=0; i<PTR-1; i=i+1)        gray[i]=bin[i]^bin[i+1];end

编码风格2://code style 2:

assign gray = (bin >> 1) ^ bin;

两种RTL编码对比:代码推崇:大道至简!

编码风格1:

编码风格2:

资源对比:其实一样,都5个异或门;

时序对比:关键路径是多长?有意思的是,可以和下文格雷码转二进制码的关键路径PK下。

(二)格雷码 -> 二进制

格雷码最高位作为二进制码的最高位,二进制码的高位与格雷码次高位相异或,得到次高位的二进制码,其余位依此类推;

直接上图,简单明了:

编码风格1://code style 1:

integer i;always @(*)begin    bin[PTR-1]= gray[PTR-1];    for(i=PTR-2; i>=0; i=i-1)        bin[i]=bin[i+1]^gray[i];end

编码风格2://code style 2:

generate    genvar i0;    for(i0=0; i0<PTR; i0=i0+1)        assign bin[i0] = bin[i0+1] ^ gray[i0];endgenerate

代码我们尝试用generate来实现,效果和编码风格1本质是相同的,都是复制硬件电路;

细品一下,就会发现我们省略了下面一行:

bin[PTR-1]= gray[PTR-1];

那么当编码风格2的i0=PTR-1时,不存bin[PTR],代码如何编译呢?

综合电路告诉了我们答案:

两种RTL编码对比:代码推崇:大道至简!不过,值得细品的东西来了。

编码风格1:

编码风格2:

资源对比:风格1有5个异或门,风格2有6个异或门;

时序对比:细品!两种电路critical path都是谁?几级combo path?只有心中有电路,RTL才最优,这就需要经验的积攒和反复打磨了。

今天先介绍到这里,然后SoC课程提供服务器供大家实践!带你从算法、前端、DFT到后端全流程参与SoC项目设计。请联系号主报名!联系微信:135-4139-0811

景芯SoC训练营图像处理的数据通路:

景芯SoC的CRG设计:

一键式完成C代码编译、仿真、综合、DFT插入、形式验证、布局布线、寄生参数抽取、STA分析、DRC/LVS、后仿真、形式验证、功耗分析等全流程。升级后的芯片设计工程V2.0 flow如下:

SoC一键式执行flow

MIPI DPHY+CSI2解码

数字电路中经典设计:多条通信数据Lane Merging设计实现

数字电路中经典设计:多条通信数据Lane Distribution实现

UPF低功耗设计

全芯片UPF低功耗设计(含DFT设计)

景芯SoC训练营培训项目,低功耗设计前,功耗为27.9mW。

低功耗设计后,功耗为0.285mW,功耗降低98.9%!

电压降检查:

低功耗检查:

芯片的版图设计V1.0

芯片的版图设计V2.0

低功耗设计的DRC/LVS,芯片顶层的LVS实践价值极高,具有挑战性!业界独一无二的经验分享。

ISP图像处理

  •    dpc - 坏点校正

  •    blc - 黑电平校正 

  •    bnr - 拜耳降噪

  •    dgain - 数字增益 

  •    demosaic - 去马赛克

  •    wb - 白平衡增益 

  •    ccm - 色彩校正矩阵 

  •    csc - 色彩空间转换 (基于整数优化的RGB2YUV转换公式)

  •    gamma - Gamma校正 (对亮度基于查表的Gamma校正)

  •    ee - 边缘增强

  •    stat_ae - 自动曝光统计 

  •    stat_awb - 自动白平衡统计

CNN图像识别

支持手写数字的AI识别:

仿真结果:仿真识别上图7、2、1、0、4、1、4、9

景芯微SoC团队业务

景芯微SoC团队业务介绍:

  • 提供全网最全流程的实际芯片项目培训

  • 提供SoC、MCU、ISP、CIS等芯片设计服务

  • 提供芯片设计、验证、DFT设计服务

  • 提供后端设计服务,工艺包括7nm、12nm、28nm、40nm、55nm、65nm、90nm、110nm、180nm等,提供投片渠道

  • 提供高校、企业定制化芯片设计培训及就业推荐与就业指导

丰富的教程文档

7天冲刺PR训练营有同学问如何给IO添加PAD?请思考景芯SoC的IO和PAD如何实现最佳?

加入知识星球,加入芯片设计知识宝库!

SoC培训营的知识星球

SoC训练营VIP学员问为何低功耗cell没有插入网表?

虽然提问题是值得鼓励的,但是我们在遇到问题时,还是先主动思考,主动解决问题,实在解决不了我们再求助,这样成长更快。

首先,小编拿到这问题,就打开log,查看log是一种IC设计美德!发现EDA工具吃进UPF文件后,报了warning如下,用到了很多ff库。

上图报错UPF指定电压是0.99V,而CELL是1.20V,电压不匹配,导致逻辑综合出来的网表没有插入MV CELL。注意,综合时,我们用的ss库,怎么会是ff库呢?打开约束脚本发现如下bug:

于是,更改约束,将ff换成ss即可。再次run一下,结果就出来了:

低功耗设计部分,设计里面我会留一点小bug在里面 非常简单,我不会公布答案,大家一定要多思考、多动手跑跑,这样才学的深刻。

培训学员请注意,景芯SoC用always on的power domain电压域的pwrdown_mux信号作为power switch cell的switch控制信号,但是设计里面有个小问题,不太算bug的bug,但对upf低功耗flow而言,毫无疑问就是bug!

培训学员请登陆服务器追踪一下pwrdown信号,注意其负载情况,RTL代码如下:

结合PR输出的netlist, 我们做个clp低功耗检查,脚本参见服务器。可以发现,clp报错说power switch的switch控制信号找不到。

不得不说,clp检查对低功耗而言多么重要,对芯片设计而言多重要!景芯SoC的价值就在把芯片设计全流程的这些细小的知识点,全部串接起来!犹豫啥?抓紧报名加入吧!

在芯片设计中端流程时,景芯SoC会插入UPF约束中的isolation等cell,但是无法插入power switch等cell,因此,作为power switch cell的控制信号pwrdown_mux在没有负载的情况下,会被裁员掉(优化掉),因此需要设置上面MUX器件为dont_touch或者使pwrdown_mux成为module的port并禁止auto_ungroup(并设置no_boundary_optimization),这样这个信号才能保留给后端,供后端实现power switch控制。请学员完成代码修改,基于全套flow环境完成如下任务:

  1. lint检查、前端仿真,

  2. 完成中端、后端flow,

  3. 完成clp检查, 完成后仿真

7天冲刺PR训练营有同学问,同样的floorplan,有些同学很快跑完,有些同学则遇到大量DRC问题(EDA工具不停iteration)导致工具始终无法跑完,具体什么问题呢?

首先,小编发现该同学的stripe把TM2定义为了horizontal,而熟悉景芯工艺的同学知道,TM2的preference direction是VERTICAL。

查询景芯的lef库文件也可以确认:

用错方向有多大影响呢?大家上景芯SoC的后端flow实践一下吧,实践出真知。

7天冲刺PR训练营有同学问,为啥PR花了一天一夜24个小时完成布线还大量DRC错误?小编已经将设计规模尽可能减小以加速PR设计,实际上2小时就可以跑完routing,为何这么慢?原因就是低功耗单元的走线。具体原因及解决办法欢迎加入景芯训练营讨论。

其错误主要集中在M4上,请思考如何解决。

7天冲刺PR训练营有同学问,power switch cell的secondPG pin(VDDG)从M1接出的,而不是M2, 请思考有什么问题?如何解决?

7天冲刺PR训练营有同学问,景芯SoC培训营同学遇到Corner Pad LVS不过怎么处理?

完成景芯SoC培训的前端设计仿真、DFT后,我们来到后端flow,本教程教你一键式跑完数字后端flow。

生成脚本命令如下:

tclsh ./SCRIPTS/gen_flow.tcl -m flat all

生成flow脚本之前需要配置setup.tcl等相关参数,具体参见【全网唯一】【全栈芯片工程师】提供自研的景芯SoC前端工程、DFT工程、后端工程,带你从算法、前端、DFT到后端全流程参与SoC项目设计。

景芯SoC训练营的同学问,为何innovus读取做好的floorplan def文件报Error? 首先看log:

Reading floorplan file - ./data_in/DIGITAL_TOP.def (mem = 1595.0M).

#% Begin Load floorplan data ... (date=10/23 22:38:01, mem=1579.3M)

**ERROR: (IMPFP-710): File version unknown is too old.

以前EDI的时期,我们可以通过定义fp_file的方式来加载floorplan:

set vars(fp_file)        "./data_in/DIGITAL_TOP.def"

但是现在innovus升级并放弃了fp_file的加载方式,当然也可以用老版本的EDI9.1及以前版本来加入fp_file,然后转存为新版本,这方式明显没有必要。正如下log提示所说,检查log是非常好的工程师习惯。

Input floorplan file is too old and is not supported in EDI 10.1 and newer.

You can use EDI 9.1 and before to read it in, then save again to create new version.

小编的直觉告诉我,先去看看同学保存的def文件是哪个def版本?

同学保存方式如下:

那么请问如何解决?请大家加入景芯训练营实践。

景芯SoC用了很多异步FIFO,关注异步RTL实现的同学,可以抓取异步FIFO出来看一下版图连线:

查看下所有异步FIFO cell的面积;

dbget [dbget top.insts.pstatus unplaced -p].area

查下所有异步FIFO的cell的名字:

dbget [dbget top.insts.pstatus unplaced -p].name

那么怎么抓出异步路径来观察版图走线呢?如何让report_timing呢?更多内容参见知识星球和SoC训练营。

前端设计目录

中端设计目录

后端设计目录

欢迎加入【全栈芯片工程师】知识星球交流技术,从算法、前端、DFT到后端的全流程设计交流。点击下方图片,加入知识星球!

欢迎加入SoC MCU全流程设计交流群,先加我微信,验证岗位后进群!

SoC MCU全流程设计交流群4

SoC MCU全流程设计交流群3

SoC MCU全流程设计交流群2

SoC MCU全流程设计交流群1

欢迎加入CMOS图像传感器+ISP交流群,先加我微信,验证岗位后进群!

CMOS图像传感器+ISP交流群2

CMOS图像传感器+ISP交流群1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/248872.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抽象类(Java)、模板方法设计模式

一、概念 在Java中有abstract关键字&#xff0c;就是抽象的意思&#xff0c;可用来修饰类和成员方法。 用abstract来修饰类&#xff0c;那这个类就是抽象类&#xff1b;修饰方法&#xff0c;那这个方法就是抽象方法。 修饰符 abstract class 类名{修饰符 abstract 返回值类型…

走进水稻种植教学基地可视化:科技与农业知识的完美结合

随着科技的不断发展&#xff0c;农业领域也在不断创新和进步。水稻种植教学基地可视化系统是一种基于现代信息技术手段的教学方式&#xff0c;通过虚拟现实、3D建模等技术&#xff0c;将水稻种植的全过程进行模拟和展示。这种教学方式打破了传统农业教学的局限性&#xff0c;使…

Springboot+vue的健身房管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的健身房管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的健身房管理系统&#xff0c;采用M&#xff08;model&#xf…

知识点积累系列(一)golang语言篇【持续更新】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 知识点积累 系列文章的第一篇&#xff0c;记录golang语言相关的知识点 1.结构体的mapstructure是什么 mapstructure:"default" mapstructure是一个Go语言的库&#xff0c;用于将一个map中的值映射到…

STM32读取MPU6050数据并通过角度值控制舵机运动(STM32、GY-521 MPU6050、SG90舵机、MG946舵机)

通过STM32F103C8T6读取MPU6050数据控制舵机运动&#xff08;STM32、GY-521 MPU6050、SG90舵机、MG946舵机&#xff09; 最终现象一、MPU6050数据读取二、舵机控制原理①什么是PWM&#xff1f;②STM32F103C8T6如何生成PWM&#xff1f;③控制舵机需要什么样的PWM波&#xff1f; 三…

【Go】Channel底层实现 ②

文章目录 channel底层实现channel发送、接收数据有缓冲 channelchannel 先写再读channel 先读再写(when the receiver comes first) 无缓冲channelchannel存在3种状态&#xff1a; channel底层实现 // channel 类型定义 type hchan struct {// channel 中的元素数量, lenqcoun…

【排序算法】C语言实现随机快排,巨详细讲解

文章目录 &#x1f680;前言&#x1f680;快排的核心过程partition&#xff08;划分过程&#xff09;&#x1f680;快排1.0&#x1f680;随机快速排序&#x1f680;稳定性 &#x1f680;前言 铁子们好啊&#xff01;继续我们排序算法今天要讲的是快排&#xff0c;通常大家所说…

房产信息网源码,房产系统,二手房小程序源码,租房小程序系统楼盘系统房产经纪人系统

房产门户系统、多城市房产网、房产小程序 房产网系统、地方房产门户信息网 带im即时通讯聊天 二手房 租房 楼盘 置业顾问 经纪人 腾房云房产网 分为单城市版本 和多城市版本 多城市 自动定位当前城市 每个分站对应独立管理员分站管理 thinkphpuniapp 独立开源

微信开发者工具 git 拉取 failed invalid authentication scheme

微信开发者工具 git 拉取 failed invalid authentication scheme 拉取代码时报错,无效身份认证 解决方案: 1.检查git地址是否正常 2.检查git用户名密码是否正确

uniapp多格式文件选择(APP,H5)

uniapp多格式文件选择&#xff08;APP&#xff0c;H5&#xff09; 背景实现代码实现运行结果注意事项 尾巴 背景 从手机选择文件进行上传是移动端很常见的需求&#xff0c;在原生开发时由于平台专一性很容易实现。但是用uniapp开发官方提供的API在APP平台只能选择图片和视频&a…

使用visual studio写一个简单的c语言程序

官网下载visual studio&#xff0c;社区版免费的 https://visualstudio.microsoft.com/zh-hans/ 下载好以后选择自己的需求进行安装&#xff0c;我选择了两个&#xff0c;剩下的是默认。 创建文件&#xff1a;

K8s 安装部署-Master和Minion(Node)

K8s 安装部署-Master和Minion(Node) 操作系统版本&#xff1a;CentOS 7.4 Master &#xff1a;172.20.26.167 Minion-1&#xff1a;172.20.26.198 Minion-2&#xff1a;172.20.26.210&#xff08;后增加节点&#xff09; ETCD&#xff1a;172.20.27.218 先安装部署ETCD y…

第16章_网络编程(网络通信要素,TCP与UDP协议,网络编程API,TCP网络编程,UDP网络编程,URL编程)

文章目录 第16章_网络编程本章专题与脉络1. 网络编程概述1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一&#xff1a;IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二&#xff1a;端口号2.4 通信要素三&#xff1a;网络通信协议…

计算机网络_1.2因特网概述

1.2因特网概述 一、网络、互联网与因特网的区别与联系1、网络2、互联网3、因特网4、 互联网与因特网辨析 二、因特网介绍1、因特网发展的三个阶段2、因特网简介&#xff08;1&#xff09;因特网服务提供者&#xff08;ISP&#xff09;&#xff08;2&#xff09;因特网已经发展成…

大数据学习之Redis,十大数据类型的具体应用(一)

目录 3. 数据类型命令及落地应用 3.1 备注 3.2 Redis字符串&#xff08;String&#xff09; 单值单value 多值操作 获取指定区间范围内的值 数值增减 获取字符串长度和内容追加 分布式锁 getset(先get后set) 3.3 Redis列表&#xff08;List&#xff09; 简单说明 …

使用企业微信一年要花费多少钱?

从今天开始&#xff0c;大力将为大家呈现一个新的话题——“企微问答”&#xff0c;大家有什么问题可以回复我们的公众号&#xff0c;如果你是严肃认真的提问&#xff0c;我们会严肃认真的给你一个答案。今日问题 &#xff1a;用企业微信一年要花多少钱 使用企业微信要花多少钱…

BL808学习日志-3-DPI-RGB屏幕使用-LVGL D0

一、DPI-RGB驱动 BL808的手册上显示是支持RGB565屏幕显示输出的&#xff0c;但是一直没找到网上的使用例程。且官方的SDK显示也是能够使用的&#xff0c;只是缺少了驱动。这一部分驱动在SIPEED的SDK中已经内置了&#xff0c;今天就是简单的点亮一个800*480 RGB565的屏幕。 二、…

Elasticsearch Windows版安装配置

Elasticsearch简介 Elasticsearch是一个开源的搜索文献的引擎&#xff0c;大概含义就是你通过Rest请求告诉它关键字&#xff0c;他给你返回对应的内容&#xff0c;就这么简单。 Elasticsearch封装了Lucene&#xff0c;Lucene是apache软件基金会一个开放源代码的全文检索引擎工…

git push后,如何撤销git log上的错误注释

修改了本地的代码&#xff0c;执行了下面的操作&#xff0c;提交之后&#xff0c;怎么样修改 git add ********(文件名)//git add 添加修改文件名之后 git commit //git commit 在当前分支提交&#xff0c;编写提交注释 git push //git push 提交修…

Ubuntu 22.04安装Nginx负载均衡

君衍. 一、编译安装Nginx二、轮询算法实现负载均衡三、加权轮询算法实现负载均衡四、ip_hash实现负载均衡 一、编译安装Nginx 这里我们先将环境准备好&#xff0c;我使用的是Ubuntu22.04操作系统&#xff1a; 这个是我刚安装好的&#xff0c;所以首先我们进行保存快照防止安装…