自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 时序优化方法

a.修改ram类型将hsra(大容量)改为hsrf(register file 小容量,速度快)b.将深度较大或者位宽过宽的ram,拆成多个小ram进行拼接。例如深度2058改为4个512。c.手动摆放ram的位置,让ram位置更合理。1.1ram的时序优化。a.调整时钟skew。

2026-03-19 15:25:58 46

原创 效率提升工具

1.在rtl中添加assertion的脚本,对信号进行断言,提高问题定位效率。

2026-03-17 10:44:38 31

原创 rush current和IR drop

芯片内部大量晶体管在极短时间内同步开关,产生的瞬态、峰值极高的电流脉冲,峰值可达稳态平均电流的 5~20 倍,持续时间通常在 ns 级,是芯片瞬态电流的极端工况。Power Gating(PG)电源域唤醒:集中式 PG 开关并行开启时,整个电源域的寄生电容、去耦电容瞬间充电,是芯片内最大的 Rush Current 来源;电源 / 地网络中,电流流过金属线、过孔的固有阻抗,根据欧姆定律扩展式。

2026-03-06 17:01:07 95

原创 001项目总结

最后通过比对不同rtlib版本中代码,发现新版本中注释掉了一行(posedge CLK => (Q : 1'b1)) = (0, 0);分析是sdc中对所有双端口ram添加了约束,CKA->CKB不检查时序,外面功能保证了不会访问同一地址。我们将某个单端口ram替换成了双端口ram,导致这个约束对此双端口ram生效,但是外面逻辑没有保证。导致先后读写同一地址,由于放松了时序约束,仿真发生读写冲突。2sdf反标被覆盖,导致hold violation,发生数据覆盖,数据采沿失败。

2026-02-14 11:41:58 65

原创 UPF VCLP典型warning

此告警的原因除了在跨电源域路径上未定义策略,还有个更常见的原因是同一个信号同时去到多个电源域,工具会插入ISO失败。例如通常当debug模块和原信号电源域不一致时,可以将debug模块分成多个电源域。一个常见方法时插入buf,以解决同个信号去到多个电源域的问题。

2025-10-29 15:36:34 175

原创 AXI-ACE_AXSNOOP用法

通过AxSNOOP与。

2025-03-20 10:54:05 845

原创 AXI-ACE中AxDOMAIN含义

AxDOMAIN是ACE协议在AXI基础上扩展的控制信号之一,存在于读/写地址通道(AR/AW通道)中。它通过2位编码(AxDOMAIN[1:0])标识事务所属的共享域类型,具体分类如下。

2025-03-20 10:51:48 608

原创 Imagination GPU 3D Graphics Wrokload

将3D物体投影到2D屏幕。越远的物体看起来越小。决定是否渲染该片段。3.Geometry Shading 几何着色。给像素着色器提供图元并且确定如何调用着色器。6.Early Primitive culling 早期图元删除。2.Vertex Shading 顶点着色。1. Fetch Tiled Display List 获取块显示列表。2.Fetch Geometry Data 获取几何数据。本次分享Imagination GPU 的3D 图像处理负载流程。8.Pixel shading 像素着色。

2025-02-26 15:55:26 400

原创 GPU入门——3D图形渲染的算法实现

8: 增加透视投影 Perspective Projection。9: 增加纹理 Step 10: 模拟Shader。6: 增加(基于法线的)光照计算,产⽣明暗效果。7: 增加剔除Cull(引⼊z-buffer)5: ⽤随机颜⾊值 暂时代替 明暗效果。4: 对mesh进⾏三⻆形填充。3D图形渲染基本步骤。

2025-02-21 12:38:57 166

原创 pcie回片测试

1.先看时钟复位是否正常2.进行controller级和phy级的loopback测试3.phy的ATE lbert误码率测试。4.然后进行控制器+phy的串行loopback(local+remote)。5.最后进行连接RC的link up测试。

2025-01-15 17:34:34 564

原创 RDC总结

常见RDC问题:

2025-01-13 11:09:15 329

原创 AXI和AHB差异

1.axi分为5个通道读地址通道(Read Address Channel) 写地址通道(Write Address Channel) 读数据通道(Read Data Channel) 写数据通道(Write Data Channel) 写响应通道(Write Response Channel)AHB总线分为3个通道:数据和地址一一对应写数据通道读数据通道地址总线为什么axi传输效率高于AHB?1.AHB的outstanding为1、AXI支持更多的outstand

2025-01-10 11:37:38 426

原创 AXI4相关问题

1.跨4k问题4K边界对齐的最大原因就是系统中定义一个page大小为4K bytes,为了更好的设定每个slave访问atttribute,就给一个slave划分4K空间。AXI协议不能跨越4K空间是为了避免一笔传输访问两个slave,因为每一个slave都是4K对齐,如果一次burst传输访问大于4K,就有可能造成slave1的地址增加到了slave2上,但是每次对接的时候仲裁器只会让一个slave接入,使得slave2虽然有地址,但是没有控制指令,就不会发生响应,导致传输无法进行。

2025-01-08 10:42:16 556

原创 PCIE学习入门

所谓Non-posted,就是Requester发送了一个包含Request的包之后,必须要得到一个包含Completion的包的应答,这次传输才算结束,否则会进行等待。所谓Posted,就是Requester的请求并不需要Completer通过发送包含Completion的包进行应答,当然也就不需要进行等待了。很显然,Posted类型的操作对总线的利用率(效率)要远高于Non-Posted型。

2025-01-07 18:52:21 287

原创 关于CRG

外部晶振输入clock_ref,通过PLL产生400M时钟。CPU和sram工作于400M,APIF,DPU,DMA等工作于200M,GPIO,CRG,PMU等工作于100M。clock内部主要完成clock_gating,分频,clock_mux等功能。reset主要完成异步复位同步释放,注意复位顺序,一般先外设,后核心。

2025-01-03 15:52:42 207

原创 时序优化方法

当组合逻辑级数过深时,如果时序允许,可以通过插入时序逻辑来打断组合逻辑链。如果是由于fanout过大,可以通过寄存器复制,来减小扇出。尽量使用不带优先级的选择器,用case替代if/else语句。2.2 部分底层模块进行ungroup设置,方便工具综合优化。如果if中组合逻辑复杂,可以提前一排生成使能信号。2.1 ip级时钟过约束,给soc级时钟留余量。3.2利用时钟偏斜,解决setup问题。3.1对关键路径替换为lvt器件。1.1避免组合逻辑级数过深。1.3逻辑展平,消除优先级。1.4提前生成使能信号。

2025-01-03 10:18:31 567

原创 项目经验——RRU芯片

下行:光口->二次解帧->Ramp成型(1.08M)->SRC(4/3滤波器)(1.28M)->跨时钟域(153.64->368.64)->fir1(3倍插值)(3.84M)-->dhb1->fir2(3倍插值)->hb2->hb3->mix_sum(92.16M)-->cfr->hb4->hb5->dpd(368.64M)->pa_protect->DAC。

2024-12-27 16:11:17 304

原创 时钟抖动和偏斜对setup和hold影响

根据 STA 基础知识得知,setup 的检查是 launch clock edge 在 edge 1,capture clock edge 在 edge 3。现在我们假设 edge 1 到达时刻为 20 ns,则 edge 3 可以在时间区间(20 ns + CLOCK_PERIOD + 抖动)和(20 ns + CLOCK_PERIOD - 抖动)到达。换句话说就是,同一个时钟信号到达两个不同寄存器之间的时间差值,时钟偏斜永远存在,到一定程度就会严重影响电路的时序。Clock jitter 的影响。

2024-12-27 15:43:47 609

原创 FIFO深度计算问题

每100个cycle可以写入80个数据,我们考虑最坏的情况,背靠背模式,空20个时钟,剩下80个时钟写80个数据,再用80个时钟写80个数据,空20个时钟,这样的结果就是连着写了160个数据,共用了200个时钟,突发数据个数是160。答:可以看出,B的时钟要大于A的时钟,如果B为读时钟,那么A为写时钟,那就是读时钟大于写时钟,读的比写的快,那么不会溢出了,所以B应该是写时钟,A为读时钟。对于同步fifo,每100个cycle可以写入80个数据,每10个cycle可以读出8个数据,fifo的深度至少为?

2024-12-26 19:01:48 235

原创 低功耗upf编写方法

需要注意的是,为了简单起见,今天要讲的multi-voltage主要指静态电压调节(static voltage scaling)技术,也包括一些之前介绍过的动态电压调节DVS。顾名思义,就是把下电模块的信号隔离。降低功耗的最有效的办法就是降低供电电压VDD.但是降低供电电压VDD会增加门单元的延时,降低门单元的性能。根据画出的电源区域划分图创建使用到的power cell,power cell的种类见2.3部分。虽然不同的UPF版本的语法不完全相同,但包含的主要部分是一样的,都有以下三个部分。

2024-12-12 10:34:05 1300

原创 降低动态功耗(二)

(4)操作数隔离:原来:在某一段时间内,数据通路的时钟是无用的,则将它的输入置成某个固定值,这样数据通路部分没有翻转,功耗会降低。电路中b信号是翻转率比较大的信号,在排序前的电路中,b的每次翻转要驱动4个门,在排序后的电路中,b的每次翻转只需要驱动2个门,显然有效地降低了系统的动态功耗。这里的毛刺是指由于电路中信号的传输延迟引起的不必要的翻转,下图为两个消除毛刺前后的电路示意图。对于电路中的信号a,重新映射之前要驱动两级的与非门,在重新映射之后,只需要驱动一级优化的逻辑门AOI,显然降低了系统的动态功耗。

2024-12-10 12:26:48 262

原创 动态低功耗技术(一)

如果不同电压域之间的驱动信号与接受信号之间的距离很长,需要插入特殊的驱动单元(Repenter)来增强信号的驱动能力;在遇到不需要计算的指令的时候,译码逻辑单元就会使输出EN_B信号为0,时钟将会被关闭,寄存器的值保持不变,ALU不需要进行无用的计算,因而减少了系统的功耗。上图为门控时钟的可测性设计,在测试模式下,时钟的门控时钟单元将被旁路。对于多电压域设计,要在不同的电压域之间使用一些电平转换单元(Level Shifter),将输入电压范围转换成输出需要的不同电压范围。

2024-12-10 12:19:05 161

原创 静态低功耗技术

1、静态低功耗技术。

2024-12-10 12:14:03 290

原创 低功耗设计简介

一 功耗类型式中,C为结点电容,Nsw为单时钟内翻转晶体管数目,f为系统工作时钟频率,VDD为供电电压,Qsc为翻转过程中的短路电量,Ileak为漏电流。1、动态功耗动态功耗是由翻转电流和短路电流引起的功耗,其中翻转电流引起的功耗称为翻转功耗,短路电流引起的功耗称为短路功耗,如下图所示。翻转功耗与传输的数据相关(是否有0到1或1到0的变化),翻转功耗在当前的设计电路中仍然占主要部分,短路功耗在动态功耗中所占比例较小。2、静态功耗在CMOS电路中静态功耗主要是由漏电流引起的功耗。

2024-12-10 12:09:02 516

原创 set_false_path和set_clock_groups在CDC中区别

对于异步时钟,当我们书写SDC时,可以使用set_false_path语句来指定由于异步时钟导致的timing exceptions。如果需要指定双向的timing exceptions,则需要。因此建议尽量使用set_clock_group 命令进行异步时钟分组,不要使用set_false_path命名。很多文章都分析了,在STA阶段set_false_path和set_clock_groups的区别。Spuglass:将双向设置set_false_path的时钟识别为异步时钟,进行cdc分析。

2024-11-22 10:21:00 823

原创 Formalifty 脚本模板

######################################################################## # Formality Verification Script generated by: # fm_mk_script -output setup.fms "default.svf" # Formality (R) Version E-2010.12 -- Oct 19, 2010 # Copyright (C) 2007-2010 Synopsys, Inc.

2024-10-30 15:14:31 1079

原创 spygalss cdc 检测的bug(二)

假设当qualifier为0时,(0&&src)||(1&&src1)=src1,src and门同步成功,src1不能gate住。假设当qualifier为1时,(1&&src)||(0&&src1)=src,src1 and门同步成功,src不能gate住。假设当qualifier为1时,1&&src||src1=src||src1,src和src1都无法被gate。假设当qualifier为0时,0&&src||src1=src1,src1无法被gate。汇聚,sg是报unsync的。

2024-10-25 23:15:24 1332 1

原创 spyglass关于cdc检测的一处bug

构造如下电路,当qualifier和destination信号汇聚时,如果des信号完全将qualifier gate住,sg仍然会报ac_sync。上面电路,sig0 = q02 || des ||!sg却报了同步,个人认为时不合理的,是一处隐患。最近在使用22版spyglass的cdc检测功能,发现struct_check的cdc检测实际时存在一些bug的。其中q02为同步后的qualifier,des为desnation时钟域信号,src为源时钟域clk0的信号。

2024-10-25 21:23:34 881

原创 formality 中的unread ponit处理

但是此参数容易造成一些常值比对失败,谨慎设置为true。

2024-10-24 17:34:22 657

原创 几个常值问题导致formality失败debug方法

当dc在综合过程中存在推导处常值时,通常会用该语句记录在svf文件中。可以配置该命令让formality对单独点进行常值推导。在做fomality的时候,如果出现寄存器unmatch问题,通常是由于常值推导不一致,导致寄存器被优化。3.set_constant 该命令用于对顶层input信号进行常值约束,通常用于约束scan相关配置。此命令可查看ref中的寄存器是否是常值。

2024-10-17 15:56:48 1515

原创 Formality基础设置

在做formality的时候,有个最基础的设置如果没有约束对,容易导致RTL和网表的比对失败。就是Disabling Scan Logic。插入时钟树后,ff3的时钟是clk3,而插入前是clk,会导致比对失败。需要set_constant将scan_en pin脚设置成0.在rtl代码测,测试点之间通常有大量组合逻辑。在插入DFT以后,多了一条scan链路。另外,是时钟树的插入容易导致比对失败。可以通过人工设置匹配,解决比对失败问题。

2024-10-16 15:49:48 860

原创 Fomality基础知识

三:Compare Points。

2024-10-15 18:01:15 677

原创 [formal]Unmatch point 导致formal失败

同时,使用verify r:wrok/top/xyz_reg[0] -constant0命令。在进行formal验证时,由于常值优化差异,导致网表和rtl代码比对失败。查看tcl脚本,去掉下面配置。可以验证常值推导的正确性。

2024-10-15 15:47:19 539

原创 SGDC复位约束找不到信号问题

在使用spyglass编写sgdc时,对一个内部复位信号约束的时候,报信号找不到。由于存在generate命令,导致生成的路径比较奇怪,甚至存在空格。直接在db中复制此信号的hierachey,也存在编译错误。上面写法是sdc的语法,需要配置sg支持sdc。但是明明get_pins 可以找到此信号。将此参数配置为yes,可解决此问题。

2024-10-09 14:19:38 621 1

原创 CDC rule ac_conv01和ac_conv02的区别

关于这两个rule的区别,网上搜了下,有的说是 ac_conv01要报是因为可能不同bus穿过的时序单元数量不一致。ac_conv01结果不受格雷码检测影响,不管前面格雷码检测是否成功,只要是穿过时序逻辑发生了汇聚,都会报违例。1.conv02报同步后的信号穿过时序逻辑之前存在汇聚,并且格雷码检测失败,则报此rule违例。ac_conv02结果受格雷码检测影响,如果没穿过时序逻辑发生汇聚但是格雷码检测成功,不报违例。2.conv01报同步后的信号穿过时序逻辑之后存在汇聚,并不关心格雷码的检测。

2024-09-29 16:31:36 1069

原创 data汇聚和时钟汇聚的sdc约束区别

当输入的数据端是两个时钟域的信号汇聚而成时,被同一个时钟采样时,约束如下。当输入的数据端被两个时钟mux后采样,约束如下。abstract_port对于port的约束。

2024-05-24 13:51:09 460

原创 sgdc中sync_cell 通配符问题

因此约束语句sync_cell -name test1 -to_clk "clk[*]"和sync_cell -name test2 -to_clk "clk[*]"其实都是只对clk[2]生效。相当于sync_cell -name test1 -to_clk "clk[2]" 和sync_cell -name test2 -to_clk "clk[2]1.只保留test1作为sync_cell,同时存在clk[1]和clk[2]的cdc路径,结果clk[1]同步失败,clk[2]同步成功。

2024-05-24 13:14:57 846

原创 absrtrac约束到非clk的port上带来的问题

因此sgdc认为di_2没有时钟。2.由于port di_vld未约束时钟,打开了参数use_inferred_abstract_port,工具会给该port上推断一个时钟。1.4port不约时钟,被两个异步时钟采样,打开use_inferred_abstract_port,会在此port上同时i推断出两个采样时钟,报两个unsync。1.2给port约到存在的port上,打开use_inferred_abstract_port,认为port没有时钟,不报ac_unsync。通过实验,得到sg的逻辑如下。

2024-05-24 11:16:39 630

原创 深入理解CDC(五)一文讲透CDC

此文为本人在公司内部作为培训的ppt改编。

2024-01-25 10:18:00 814

原创 深入理解CDC(四)难点理解

可以这么理解,当en为0时,D端输入为0,Q端输出为1。在en拉后的,clk为上升沿时,q输出为0,在很短时间后set端为1,q输出为1,因此会输出一个很短时间的0,所以形成毛刺。如果enbale高有效,当rst释放后en入口为0,en无效,in信号无法通过。enable未做约束时,the Ar_syncrst_setupcheck01 rule reports a warning (如果enbale低有效,当rst释放后en入口为1。当clk和复位/置位信号用同一个en进行gate时,会有潜在的竞争。

2024-01-22 13:46:13 1441

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除