SYNOPSYS DDR VIP use note
来源:互联网 发布:python基础班2016 编辑:程序博客网 时间:2024/05/13 02:56
Based on version-2016.03/2016.06
(DDR2 looks like not stable & flexiable.。 2016.03 DDR2 VIP发现了很多bug,特别是一些AC timing和protocol的ERROR误报,所以项目进行到一半还好出了2016.06版)
.../include/sverilog/svt_source_defines.svi
.../include/sverilog/svt_ddr3_catalog.svi svt_ddr2_catalog.svi
catalog名字的意义:(ex:jedec_ddr3_512M_x16_800D_3_04)
ddr type: ddr3
ddr size: 512Mb
ddr ORG(DQ bits): 16bit
speed bin: 800D
tCH(avg):3040ps
对于第1类,上层是无法控制的,错了就直接报UVM_ERROR,memory也会访问失败。第2类是可以 通过svt_ddr_configuration::enable_checks去控制,default是1。
针对ac timming check 的error, 可以分别去控制每一个check的开关。
(DDR2 looks like not stable & flexiable.。 2016.03 DDR2 VIP发现了很多bug,特别是一些AC timing和protocol的ERROR误报,所以项目进行到一半还好出了2016.06版)
1.vip路径问题
每一次generate vip,新产生的DDR_VIP的file里面其实有根据当前时刻产生VIP的根路径。如果安装VIP的根路径的变了,要么重新产生VIP,要么简单一点的方法就是去改产生的VIP里某些问题对根路径的指定。主要是改以下两个file:.../include/sverilog/svt_source_defines.svi
.../include/sverilog/svt_ddr3_catalog.svi svt_ddr2_catalog.svi
2.timescle
timescale设定不会影响到DDR3的,但是DDR2必须要把timescale设定成1ps/1fs, 不然很多timming完全不对。如我原本验ddr3的时候timescale就是1ns/1ps,DDR3都能正常工作;但到DDR2时,在read时,DQS每次toggle的时间都是预期时间的1000倍,感觉他是用绝对时间去tigger dqs,而不是以clk edge。
(v2016.06在他的env pkg里面加了timescale,但是dqs/dq的问题还存在)
3.interface
- DDR2的if和DDR3的if不太一样,而且有点问题,我自己有做修改: 1.CK_n在intf里面自己接了~CK,所以不用连DDR_PHY的CKn
- DDR2内部的DM_O,DQS_O,DQSn_O default value没有给“z”态,我自己手动把他赋初态“z”,否则,不管是DDR还是PHY,后期去trigger的时候就一直是“x”。(果然在v2016.06进行了修正)
- DDR2在burst write的时候,似乎必须要去认dqs从z变0的preamble,所以DQS如果在没有txn的时候是0,DDR2 VIP就没办法认到write的起始,所以DQS在没有valid的时候必须要一直为“z”,但DDR3没有这个问题(v2016.06没有再去看DDR2的这个问题有没有修掉)
4.catalog
目前DDR2的catalog比较少DDR2-1066不支持。catalog里面配置了所有的AC timing parameter,所以对testbench来讲,应该做脚本把不同的catalog中的ac timing抽取出来去constraint SDCTRL和PHY的配置。catalog名字的意义:(ex:jedec_ddr3_512M_x16_800D_3_04)
ddr type: ddr3
ddr size: 512Mb
ddr ORG(DQ bits): 16bit
speed bin: 800D
tCH(avg):3040ps
5.checkers
vip的check分了两类:1类是和spec强相关的,必须要遵守的比较属于interface protocol的check;1类是比较属于ac timming之类的check。对于第1类,上层是无法控制的,错了就直接报UVM_ERROR,memory也会访问失败。第2类是可以 通过svt_ddr_configuration::enable_checks去控制,default是1。
针对ac timming check 的error, 可以分别去控制每一个check的开关。
比如jedec_ddr3_512M_x16_800D_3_04的tCH(avg)=3040ps,但实际PHY产生的可能是2500ps,这时就会报tch_abs_timings_check error。其实这并不是一个真正的错误,只不过是PHY产生的clock和catalog定的不一样而已,实际是在合理范围内的。解决方法是env.memory_agent.monitor.checks.tch_abs_timings_check.set_is_enabled(0)去关掉他
(DDR2 checker还有问题,2016.03有很多protocl明明正确却被误报ERROR的情况; 在2016.06很多已经修正,但write_recovery的decoding好像有点问题)
0 0
- SYNOPSYS DDR VIP use note
- SYNOPSYS AXI VIP using note
- synopsys
- How to use AXI VIP
- DDR
- DDR
- DDR
- DDR
- vip
- VIP
- synopsys DC
- Can I use ALTMEMPHY to create a Mobile DDR SDRAM PHY in Cyclone III Devices?
- note : make a class, use wininet api upload http file
- Dual DDR 双通道DDR
- EDA Tools of Synopsys
- Synopsys工具介绍
- Synopsys系列软件查询
- synopsys 工具简介
- table与form的区别
- Oracle删除后,重装方案有哪些?删除后重装出错?多次安装后出错?如何完全删除Oracle?
- 多文件目录Makefile的写法
- C++ STL
- DDMS files not found:hprof-conv.exe的解决办法
- SYNOPSYS DDR VIP use note
- mysql导入excel数据。 需要选项对应数据库
- 1043. 输出PATest(20)
- CentOS7下PostgreSQL安装
- 文本比较工具可以用哪些快捷键
- emoji 表情 插入mysq后 变成问号
- Java数组操作方法
- 8. String to Integer (atoi)
- 基于时间序列的用户预测模型