- 博客(63)
- 收藏
- 关注
原创 AXI-ACE中AxDOMAIN含义
AxDOMAIN是ACE协议在AXI基础上扩展的控制信号之一,存在于读/写地址通道(AR/AW通道)中。它通过2位编码(AxDOMAIN[1:0])标识事务所属的共享域类型,具体分类如下。
2025-03-20 10:51:48
204
原创 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
289
原创 GPU入门——3D图形渲染的算法实现
8: 增加透视投影 Perspective Projection。9: 增加纹理 Step 10: 模拟Shader。6: 增加(基于法线的)光照计算,产⽣明暗效果。7: 增加剔除Cull(引⼊z-buffer)5: ⽤随机颜⾊值 暂时代替 明暗效果。4: 对mesh进⾏三⻆形填充。3D图形渲染基本步骤。
2025-02-21 12:38:57
75
原创 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
257
原创 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
126
原创 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
319
原创 PCIE学习入门
所谓Non-posted,就是Requester发送了一个包含Request的包之后,必须要得到一个包含Completion的包的应答,这次传输才算结束,否则会进行等待。所谓Posted,就是Requester的请求并不需要Completer通过发送包含Completion的包进行应答,当然也就不需要进行等待了。很显然,Posted类型的操作对总线的利用率(效率)要远高于Non-Posted型。
2025-01-07 18:52:21
136
原创 关于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
79
原创 时序优化方法
当组合逻辑级数过深时,如果时序允许,可以通过插入时序逻辑来打断组合逻辑链。如果是由于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
317
原创 项目经验——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
128
原创 时钟抖动和偏斜对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
177
原创 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
92
原创 低功耗upf编写方法
需要注意的是,为了简单起见,今天要讲的multi-voltage主要指静态电压调节(static voltage scaling)技术,也包括一些之前介绍过的动态电压调节DVS。顾名思义,就是把下电模块的信号隔离。降低功耗的最有效的办法就是降低供电电压VDD.但是降低供电电压VDD会增加门单元的延时,降低门单元的性能。根据画出的电源区域划分图创建使用到的power cell,power cell的种类见2.3部分。虽然不同的UPF版本的语法不完全相同,但包含的主要部分是一样的,都有以下三个部分。
2024-12-12 10:34:05
321
原创 降低动态功耗(二)
(4)操作数隔离:原来:在某一段时间内,数据通路的时钟是无用的,则将它的输入置成某个固定值,这样数据通路部分没有翻转,功耗会降低。电路中b信号是翻转率比较大的信号,在排序前的电路中,b的每次翻转要驱动4个门,在排序后的电路中,b的每次翻转只需要驱动2个门,显然有效地降低了系统的动态功耗。这里的毛刺是指由于电路中信号的传输延迟引起的不必要的翻转,下图为两个消除毛刺前后的电路示意图。对于电路中的信号a,重新映射之前要驱动两级的与非门,在重新映射之后,只需要驱动一级优化的逻辑门AOI,显然降低了系统的动态功耗。
2024-12-10 12:26:48
106
原创 动态低功耗技术(一)
如果不同电压域之间的驱动信号与接受信号之间的距离很长,需要插入特殊的驱动单元(Repenter)来增强信号的驱动能力;在遇到不需要计算的指令的时候,译码逻辑单元就会使输出EN_B信号为0,时钟将会被关闭,寄存器的值保持不变,ALU不需要进行无用的计算,因而减少了系统的功耗。上图为门控时钟的可测性设计,在测试模式下,时钟的门控时钟单元将被旁路。对于多电压域设计,要在不同的电压域之间使用一些电平转换单元(Level Shifter),将输入电压范围转换成输出需要的不同电压范围。
2024-12-10 12:19:05
78
原创 低功耗设计简介
一 功耗类型式中,C为结点电容,Nsw为单时钟内翻转晶体管数目,f为系统工作时钟频率,VDD为供电电压,Qsc为翻转过程中的短路电量,Ileak为漏电流。1、动态功耗动态功耗是由翻转电流和短路电流引起的功耗,其中翻转电流引起的功耗称为翻转功耗,短路电流引起的功耗称为短路功耗,如下图所示。翻转功耗与传输的数据相关(是否有0到1或1到0的变化),翻转功耗在当前的设计电路中仍然占主要部分,短路功耗在动态功耗中所占比例较小。2、静态功耗在CMOS电路中静态功耗主要是由漏电流引起的功耗。
2024-12-10 12:09:02
153
原创 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
414
原创 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
973
原创 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
873
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
724
原创 几个常值问题导致formality失败debug方法
当dc在综合过程中存在推导处常值时,通常会用该语句记录在svf文件中。可以配置该命令让formality对单独点进行常值推导。在做fomality的时候,如果出现寄存器unmatch问题,通常是由于常值推导不一致,导致寄存器被优化。3.set_constant 该命令用于对顶层input信号进行常值约束,通常用于约束scan相关配置。此命令可查看ref中的寄存器是否是常值。
2024-10-17 15:56:48
820
原创 Formality基础设置
在做formality的时候,有个最基础的设置如果没有约束对,容易导致RTL和网表的比对失败。就是Disabling Scan Logic。插入时钟树后,ff3的时钟是clk3,而插入前是clk,会导致比对失败。需要set_constant将scan_en pin脚设置成0.在rtl代码测,测试点之间通常有大量组合逻辑。在插入DFT以后,多了一条scan链路。另外,是时钟树的插入容易导致比对失败。可以通过人工设置匹配,解决比对失败问题。
2024-10-16 15:49:48
511
原创 [formal]Unmatch point 导致formal失败
同时,使用verify r:wrok/top/xyz_reg[0] -constant0命令。在进行formal验证时,由于常值优化差异,导致网表和rtl代码比对失败。查看tcl脚本,去掉下面配置。可以验证常值推导的正确性。
2024-10-15 15:47:19
275
原创 SGDC复位约束找不到信号问题
在使用spyglass编写sgdc时,对一个内部复位信号约束的时候,报信号找不到。由于存在generate命令,导致生成的路径比较奇怪,甚至存在空格。直接在db中复制此信号的hierachey,也存在编译错误。上面写法是sdc的语法,需要配置sg支持sdc。但是明明get_pins 可以找到此信号。将此参数配置为yes,可解决此问题。
2024-10-09 14:19:38
319
原创 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
390
原创 data汇聚和时钟汇聚的sdc约束区别
当输入的数据端是两个时钟域的信号汇聚而成时,被同一个时钟采样时,约束如下。当输入的数据端被两个时钟mux后采样,约束如下。abstract_port对于port的约束。
2024-05-24 13:51:09
328
原创 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
543
原创 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
426
原创 深入理解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
1002
原创 深入理解CDC(三)CDC问题分类
2.reset_check:复位规则检查latches, tristate signals, or XOR/XNOR gates in a reset tree。1.data_glitch:数据跨时钟前存在组合逻辑,会导致数据glitch。4.Ac_cdc:跨时钟域数据丢失。快时钟域到慢时钟域采样数据丢失问题。2.clk_glitch:两个时钟直接进行组合逻辑。3.Clock_sync:跨时钟域数据汇聚问题。5.ac_conv:数据跨时钟域后再进行汇聚。1.Ac_unsync:跨时钟域未作处理。
2024-01-04 10:10:53
1256
原创 深入理解CDC(二)复位同步
N1为c2时钟域下的复位信号,当在c1时钟域下用作异步复位时,当RST1释放时,产生的复位信号N1属于C2时钟域,N1释放时,复位的recovery time可能不满足,会产生亚稳态问题。下图是一个典型的复位跨时钟域问题,会产生复位的亚稳态。同步器必须和src匹配,如果是来自其他clk时钟域的使能信号,不会倍看作一个有效的同步器。由于第一次同步后的复位信号存在亚稳态,如果目的端复位信号存在多个扇出,同步失败。以上为一个典型的异步复位同步释放电路,in信号通常接为固定的常值。3.典型异步复位同步失败电路。
2023-12-22 17:11:00
952
原创 同源的分数倍时钟是同步还是异步时钟?
前面介绍同步问题时有说明,当信号从快时钟域传递到慢时钟域时,只要慢时钟域能安全采集到从快时钟域传来的信号,就不存在异步问题。但如果信号在快时钟域翻转速率过快,慢时钟域可能不会安全的采集到从快时钟域传来的信号,这也可以认为是异步问题。此时两个时钟间相位差也可能会有多个,例如同源的 7MHz 时钟和 3MHz 时钟,他们之间也会出现多个相位差,时序也难以控制。此类情况下,一个时钟往往是另一个时钟的分频,即便存在相位差也是固定的。由两个不同的时钟源产生的两个时钟是异步的,这是最常见的异步时钟。
2023-12-22 13:58:59
397
原创 逻辑互斥和物理互斥的约束
比如在如下电路中,由于 C1 C2 在 F3 F4 之间是有交互的,而在 F1 F2 之间,只能是 C1-C1 或者 C2-C2,不可能出现 C1-C2 或 C2-C1。如果两个 clock 定义在同一个端口上,那么这两个 clock 在物理层面就是不可能同时存在的,此时就需要声明成 physical exclusive。这时就需要在 MUX 的输出端创建两个 generated clock,然后声明成 physical exclusive。仔细讨论下逻辑互斥和物理互斥的区别。
2023-12-22 09:53:01
624
原创 深入理解CDC系列(一)CDC处理方法
如果这个信号只在刚开始有变化,后面都是常值。如果把同步链的触发器数量配置为3,那么将F4 F5识别为后同步链,同样满足同步链。8.毛刺保护单元同步。同步链作为毛刺保护单元的en端输入。同步链作为使能端,跨时钟信号在数据端。7.and门同步方式。如果是或门加一个非门,也是可以的。以上为跨时钟域处理的方式,当然并不是所有方式都常见。这是最简单也是最常用的方式。5.2mux数据端的保持端为目标时钟域或者常值。同步链用于时钟门控的方案。3.使用同步单元进行同步。
2023-12-20 17:52:02
1145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人