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版)

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
原创粉丝点击