JTAG经典问题解析

描述

请问,JTAG有5个端口,为什么Trst是可选的复位端口?

请问,JTAG只保留4个端口,没有Trst,怎么复位?

答:第一个问题,很简单,因为Trst可以用Tms来替换。那么第二个问题呢?欢迎来知识星球讨论。

端口

请问,MCU芯片设计添加了mbist、scan chain之后,仿真失败怎么办?首先diff代码,看代码改动了什么,是否改正确,然后做2-3个formal/lec检查,保证DFT实现过程不改变function 功能。此外还要注意顶层的dft端口控制信号是否在testbench中正确例化等等,比如注意jtag端口可做cpu debug,可做mbist测试,注意tdo输出选择控制。

回到正题,DFT插入后,由于增加了大量的mux来完成时钟、复位可控,导致中端网标中的cell有工艺库文件指定的delay参数,默认是1ns,那么会造成clk delay,比如插入两级mux就会形成2ns延时,而我们的mcu运行时钟是250mhz,时钟周期4ns,sram时钟再取个反,刚好易造成sram timing问题,sram输出x态,cpu取指令失败。

端口

端口

如下,cs/we等sram控制信号刚好和sram的时钟对齐,造成sram model输出x态,cpu去取指令失败,mcu boot失败。

景芯SoC训练营得同学都知道,或熟悉DFT仿真得同学都知道,vcs这里仿真应该加一个option,不知道得赶紧找我!

端口

可以先强行force时钟,选一个可以采样cs/we等sram控制信号的时钟给sram,好巧不好,cpu执行了一部分指令,又停止了,继续定位。

查看risc-v汇编指令是否正确读写:

端口

发现程序末尾有x态哦,发现x态,同学们会问,指令为什么会有x态,肯定是bug或timing问题造成的吧,我们接着看:

端口

而上面x态是由于cpu有16位指令,并且程序有跳转,那么为什么cpu执行指令一部分后就停止了呢?是我把cpu取指令模块改错了?于是开始看cpu代码。。。

实际上x态后程序依然能正确执行,本质上是16位指令及程序调转的原因。接着debug。

端口

接着定位,发现是取指令握手卡住,解决办法?后仿真怎么确保时钟对齐的问题?答案参见全栈芯片工程师【知识星球】。

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

端口

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

端口

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

端口

端口

端口

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

端口

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 2201, 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训练营。

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分