- 博客(43)
- 问答 (1)
- 收藏
- 关注
原创 DDR2仿真01
首先,DDR3 的device 的仿真模型,有RESET pin, 当其它信号有X, RESET_ctlr=0(assert), 所以不会报错。release 的时间在 X 消失之后,所以X 没有传播到平台器件接口, 图中红线指示的信号,所以 vIP 也不报错,同样都在 DDR_CKE 有 X ,为啥下面这个DDR3 的仿真不报ERROR, 上面那个DDR2 的有ERROR,去看对应的信号,不要在 DUT 接口或者 DUT 内部乱看信号。,DDR2 的device 的仿真模型,****没。
2025-09-12 11:23:42
344
原创 DFI学习02
在POD 中,接收器信号终结(terminated )到VDD 的高电平,而不是像前代一样终结到一半的 VDD 电压。在低电平状态下,SSTL 和POD 都有电流消耗,实际上,POD会消耗更高的电流,因为信号终结到VDD 的高电平,而 SSTL 信号终结到VDD 的一半。显然,发送方进行极性翻转后,需要通知接收方此次传输的数据已经翻转,.DDR4 为每个数据通道(8或16bit )引入一个 DBI 引脚,当发送方将数据翻转后, DBI 引脚拉低指示数据已经翻转。首先以DDR3* 为例,在DDR2中,。
2025-07-18 15:28:48
675
原创 关于sequence的start
在UVM中, pure 关键字用于定义“纯虚函数” (pure virtual function).2) 使用pure 声明的函数必须被派生类重载实现,否则该派生类也成为抽象类,不能实例化对象。在这个 base test 中并没有定义 start_test 具体做什么,只是声明了它,1) pure virtual function 是一种抽象函数,即只声明不实现的函数;3) 通过pure 函数,可以定义接口规范,强制子类实现某些功能。而在别的具体的 pmu_xxx_test 里,实现了它,
2025-07-16 17:07:05
182
原创 学习jinja
上图中 line1369 gen_file 的定义在line1213, 可以看出 cc_pinmux_conn.jinja.tcl 作为 tempate_name ,传递给 gen_file()的第3个参数,那么这个 cc_pinmux_conn.jinja.tcl就是作为一个 template/模板, gen_file()的输出结果会产生 cc_pinmux_conn.tcl;它说的意思是,jinja template没有固定的后缀名的定义。template我知道是模板,但jinja 又是啥呢?
2025-07-02 18:22:15
242
原创 vc formal学习01
项目20,pinmux验证,debounce_gpio[15:0], 在功能的仿真场景中,可以作为 chip wakeup source ,但是chip sleep+wakeup的仿真时间很长,(20ms),要实现这种场景覆盖16个 deb_gpio的验证,费时费力,效率很低,项目的验证策略是:direct test 覆盖1个deb_gpio 做为wakeup source的场景,vc formal 覆盖所有的16个 deb_gpio 作为 wakeup source的场景;导致覆盖率分析时无法体现价值。
2025-06-19 11:41:15
588
原创 平台避免用force
(仿真可控),主芯片后上电,遇到的问题是,efuse PHY 模型(又是模拟IP的模型带来的问题)输出有x, 这个x 作为bondoption 又传递到别的模块(,ISP,NPU), X propagation 导致仿真无法继续,仿真中确实看到 efuse PHY 模型 report error, 模型要求 0 时刻就上电;那会接触模拟IP 模型少,而且没遇到过质量如此差的模拟IP 模型,而且以前的问题都可以用 force解决,项目管理中对 force 的使用也没有强制的要求,最后采用暴力解决方案,
2025-06-18 14:33:12
177
原创 axi slice学习
在以上通路插入register slice,将长的路径切分成多个短的时序路径,每个路径满足时钟周期的timing 需求;内存时序通常表示为几个数字的组合,如”CL16-18-18-36“,这组数字代表内存执行不同操作所需的时钟周期数。,我仿佛第一次听到这样的说法,感觉他说的很有道理)。第一次对 ”频率“和”时序“之前的关系有了比较清楚的认识。在timing比较紧张的时候,选择适当的模式可以提高bus 的。(这可能就是我前面纠结的 频率和 latency的关系的答案)时序越低,内存的响应速度越快,延迟越低。
2025-06-04 09:57:21
463
原创 uvm中config,v_sqr 浅析
之前一直觉得config是很麻烦的,不喜欢用,也不会用,当下的项目里,逐渐体会到cfg的好处,便也爱上了cfg.思路如下,在 cfg里例化interface,把cfg set 给各个agent(slave,master), 然后就可以在 sequence里很方便地用 interface, 以及在sequence里调用 interface 做 reset,这里有个例子,然后通过调用cfg.xxx , interface里可以有task,细节记不清了,当时的vob 后面也不让访问了。
2025-05-28 15:42:02
898
原创 UPF学习
vcs upf 仿真, 编译选项加上这个,应该能解决上午会议上说的, upf 中描述的iso 值和rtl 中instance 的iso 值不一致的问题。PD就是共用一个电源(包括VDD和VSS)的一堆电路,而且这堆电路的边界往往是根据RTL Hierarchy的boundary来定义的。MVRC用于检查多电压设计的规则是否正确实现,包括电源连接关系,电源结构,电源一致性等等,也适用于流程中的各个步骤;奇怪,之前写的带波形的upf仿真竟然丢了,
2025-05-21 17:15:45
287
原创 automatic task
奇怪的是,仿真正常结束,没有timeout,但是看波形,TX(channel 6)的数据确实传输完了,对应的channel done 中断也拉高了,RX(channel 7) 的传输并没有完,对应的channel done 中断也没拉高,通过设断点,发现是仿真 wait_channel_7 done结束的时候,读的是channel 6 对应的channel done 中断寄存器,在工作的环境里,看到很多 task automatic 的用法,好像懂,但其实又不懂,今天仿真遇到一个问题,
2025-04-17 11:19:20
216
原创 uvm平台引起仿真非常慢
在项目中,BT 的平台被ST reuse时,严重拉低ST仿真速度,大师提供如下方法,来trace 并定位平台中哪个模块严重耗时,如果需要定位那个模块占内存最大,就使用 -simprofile mem。
2024-11-06 11:07:45
293
原创 一些verilog 处理文件的方法
最近的项目,就是和文件打交道,学到了一些处理文件的方法,这个uvm_re_match()很新,没见过,路径是 /aaa/bbb/c.txt。例如有一个这样的文件,
2024-11-06 10:45:48
216
原创 UVM refmdl-浅浅的图像经历
为了解决这一问题,我在 refmdl里添加自己的get FIFO UVC monitor TR 的task, 然后对get 到的TR 的数据做变换,然后问题是,由于某些不可控制的原因,我添加的get FIFO UVC monitor TR,总是被 ToM 原有的内容干扰,即我get 到的TR 是他get 到后做过数据转换的东西,这样我就无法工作,在一个BT环境里做UT的验证,如图,我的模块的输入来自前级别人(Tom)的模块,箭头的数据通路是FIFO接口,导致我get 到的tr 是Tom 修改后的内容,
2024-09-18 15:20:48
453
原创 out-of-order导致仿真错误
是response channel乱序,wdata 的顺序没有乱,data channel没有乱序,这个一开始我就忽略了,看波形,发现写数据就是按照输入端FIFO接口发出来的顺序,可是出口端AXI的TR的队列,就是会报数据比对的错误,原因是axi vip 是按照返回的写response 的顺序收集的数据,)导致monitor 抓到的数据顺序和发的顺序不一致,然后比对出错。对于读是:read_data_reordering_depth=1,对于写:将图中 xxx_depth=1,过程很曲折,结论很简单,
2024-09-13 13:56:26
320
原创 UVM SCB学习001
DUT 是一个寄存器为AXI 接口的UART 模块,模式是DTE(数据终端设备),验证环境挂了个AXI master vip, 又挂了个 DCE(数据通讯设备) 模式的UART VIP, 可以举这样一个例子,DCE 向 DTE发送数据,AXI maste 读 DTE DATA 寄存器来取得数据,这部分scb 可以这样设计,在SCB里实现 write_initiated() 函数,取得AXI master 的TR,同时实现 write_response()函数,取得DCE 的 TR,
2023-05-06 14:15:45
504
原创 lowpower仿真01
start point 在 tb_top.dut.u0_digital_top.u0_common_sys.u_pmu.u_slp_msm.u_periph_slp_ctrl.pd_rst_ctrl_reg (24m clk )endpoint 是 tb_top.dut.u0_digital_top.u0_periph_sys.u0_i2s_wrap.u_i2s_m.U_I2S_regmap.rx_dma_ps_reg_1_0_, 他的CLK 是。那问题就是,下电后,CLK 没有关闭,看了波形,
2023-04-28 11:13:09
681
原创 eMMC GLS TUNING
但是,我尝试了设置所有可能的值,0-3,都不能解决问题,而且,根据个人的分析,需要设置成5 才可能工作,但是这个寄存器域只有2 bits, 就不可能设置成5,我将这个问题反馈给了 SNPS, 然后在等待他们的答复…在50项目环境下,这个命令可以将 vpd 格式转成 fsdb 格式,然后就可以用 verdi 打开了。因 idlx_dc[6:0]的变化,导致odlx_out 上有几十ps 的glitch,唉, 这不是根本原因,太菜了,听听专业的江哥的解释吧,经过和SNPS沟通,他们给出了这样的答复,
2023-04-18 15:40:09
276
原创 唉outstanding
如果URID=1,那么axi master 在发读操作时,比如发了arid=0的读,那么接下来又发arid=1的读,此时,axi master会将RREADY拉低,等到arid=0的读操作完成后,再处理arid=1的读操作,这是个隐蔽的知识点,非常细节,out-of-order 是以 id 来划分,发出读 命令是 arid=1, arid=1的顺序,读 DATA 返回的顺序是 rid=1(所有数据), -> rid=0(所有数据),这样是 out-of-order,关于这个概念,总是温故知新的感受。
2023-04-18 14:44:45
747
原创 SD GLS-SD TUNING 之一
SD TUNING GLS failed due to timing violaiton,I found it’s due to in tuning process,Once dl2_dc[6:0] is update,The dl2_out/cclk_rx had some very small pulse=50ps show in figure below:但是很奇怪,这个现象在EMMC TUNING并没有发生。继续TRACE, 发现 glitch 发生在1 SW TUNING 过程中,2
2022-07-04 14:07:33
394
原创 emmc gls
在EMMC_DAT4/7上有glitch产生,根据设计的说法,这个glitch 会被PAD $WIDTH 约束过滤掉。实在是我们的PHY没有SDF,看不到过滤掉这一现象。......
2022-06-27 15:43:33
635
1
原创 makefile心得
Makefile 有点搞不定,不会控制 regression 的CASE LIST百度了一下,下面是一个例子:##################define TestFun$(1): gcc -o test $(2)endef$(call TestFun,test.o,test.c)##################我的理解,展开后就是:test.o: gcc -o test test.c看懂了之后, 就基本理解了Makefile里的操作了。以下在队列 list1 里随机选择一个数,SE
2022-06-23 18:36:16
326
原创 emmc card identify
在 emmc boot 仿真中,出现了这样的信息:说的是EMMC_SENDING_DATA_STATE , card clk 频率是400k, 不是 1m-26mhz,看了下波形,此时是 host 发 CMD8, CARD send its EXT_CSD register.从 EMMC协议里看到,也就是说,CARD IDENTITY的过程包含,CMD1->CMD2-CMD3,那么,CMD8 其实是不需要在 400KHZ频率下进行的。如果有机会,可以在下个项目改进,以缩短BOOT 时间
2022-06-06 21:57:13
383
原创 programing emmc布特及波形分析
首先,如何切换delay line,如下图所示,是需要关CARD CLK;第二,如何发CMD1, 带什么样的argument, argument需要区分1.8v 和3.3v 吗?50的CODE是做了区分的,但协议中有说区分电压是Not valid,如下,存疑;...
2022-05-13 09:55:40
1583
原创 emmc验证环境+partcomp+小汤哥
EMMC有2套验证环境,Core tool GEN 出来的,缺点是针对 sd, sdio, 没有ddr mode case,优点是有tuning case,emmc svt, 优点是有ddr mode,(我没有用过),缺点是没有tuning case
2022-04-21 21:20:28
1455
1
原创 emmc和SPI共舞
接到一个活,SPI用 emmc phy,EMMC 用PHY0, SPI 用PHY1, 并行工作,遇到的问题是, 给SPI VIP写了数,读的时候,读到的都是0xffff,这是往 VIP 里写数的波形,读数的波形:
2022-04-07 13:41:01
1165
1
原创 再见xprop
如何确认xprop工作如何确认xprop工作?simv -report=xprop如何setup xprop环境二、仿真选项如果不定义-xprop,则vcs 为vmerge mode,为典型的verilog behavior。-xprop=tmerge,则vcs为tmerge mode,更接近实际的电路行为,也是使用比较多的。如果定义-xprop,则default 为tmerge mode。此模式下x态会传播一段路径后终结。-xprop=xmerge,则vcs为xmerge mode,更悲.
2022-03-25 22:48:23
1868
原创 如何保证正确的时序-规避delay line 输出端的glitch造成错误的结果
仿真中发现,SOC仿真中,1 DL2(delay line) 输出端 odl2_out 有25ps glitch;2 原因是 idl2_bypassen 从1 变03 cresetn_rx 在有glitch 的时候 release;PHY1 DL2 作用是RX CLK,所以,这里的时序有问题,应该在idl2_bypassen 切换完,等一段时间,再release creset_rx, 这样 RX CLK 作用的逻辑就不会被 glitch 影响。如IP 波形所示,.
2022-03-22 22:41:04
473
原创 git的奇怪问题1
需要切到新的release,我切完后看到的是这样的,而正确切完后是下面这样,跟踪的是远程branch, 而不是上面那样,上面那样是不知为何本地建了branch,解决的命令是:cd $PROJ_DIR/…/firewall/git checkout mastergit branch -D dv_branch_220312 --删除本地分支git fetch --allgit checkout dv_branch_220312git status...
2022-03-17 17:50:01
309
原创 VCS仿真选项
-force_list验证环境中构造用例时可能会通过force内部的信号,达到测试的目的.为了方便后续环境检视,可以通过设置编译选项和运行选项的方式,获取force的信号.1.-force_list编译选项中添加-force_list.vcs <debug_option> filename.v -force_list <other_vcs_options>用PLI force,debug_option选择-debug;language force选择-debug_pp2.
2022-03-17 16:56:57
3103
原创 uvm reg model 在IP环境与SOC环境的不同
在emmc IP TB中,使用了uvm register model做寄存器读写,DUT中使用AHB slave接口配置register, 通过如下方式实现 adapter 与 rgm.map及sqr的关联,在SOC环境,uvm register model的驱动不是IP环境中的AHB master VIP,而被替换成了cpu_bfm,在SOC环境,挖空CPU,实现一套soc_app_env_ral_env, env 里例化了agent 和 adaptor ,主要是为了结合 IP环境的UVM RE
2022-02-22 18:48:07
1556
原创 emmc tuning case data crc error-2
研究了下IP级的仿真环境,及tuning的原理,对于以下情况以上理论成立的前提是,tuning的data pattern 是固定的,周期性重复的
2022-02-05 17:05:59
797
原创 emmc tuning case data crc error
test_cust_tuning;had data crc error while not execute tuning,log is :mshc_host_driver [:interrupt_handler .unnamedKaTeX parse error: Expected group after '_' at position 1: _̲__] DUT generat…___] DUT generated spurious DATA_CRC_ERR intrmshc_host_driver
2022-01-28 19:50:09
1861
空空如也
关于 verilog primitive 描述的 dff 行为的疑问
2021-12-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅