- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 systemverilog package 学习
uvm中package 两个功能:1)用于代码分发release,代码封装,提高了代码的重用性(reuseability)2)提供了对代码元素访问权限的控制机制(类似命令空间概念)package 提供在不同代码块中共享的生命空间,可以定义如下内容:typedef /struct/ import/ task/ function/ const/ parameter/localparameter/class等;并且可以通过import 被导入到module/interface/pro.
2022-06-28 22:13:55
413
原创 建立时间和保持时间理解
一、为什么要满足建立时间和保持时间的要求呢?要从触发器的结构来进行理解和说明:1)D锁存器结构如下: 特点:在clk为0时,R=S=0, 触发器输出为Q=0;在clk为1时,触发器输出为Q=D;总结:在clk=1时,数据被锁存到Q端;2)D触发器clk = 0 时,主锁存器打开,数据D传入主锁存器输入端;clk=0~1时,主锁存器关闭,从锁存器打开,并准备锁存数据;clk=1时,主锁存器关闭,从锁存器所存数据;clk=1~0时,从锁存器关闭,主锁存器打开开始锁数..
2022-03-31 21:04:32
1693
原创 Hyper RAM 工作原理理解
1、Hyper ram/sdram/ddr1的区别 hyperram 和ddr1一样都是DDR双边采样的,理论上速率可以达到sdram的2倍,例如对于工作在200Mhz的sdram,如果采用hyperram的话可以达到400MB/s; ddr和hyperram相比: 优点: hyperram由qspi 原理演变而来,管脚比较少,适用于低速率场景,要求低带宽; 缺点:ddr 管脚比较多,但是有phy,并且速率比较高,目前可以达到2400Mhz和320...
2021-11-26 11:41:08
6902
原创 DDR4 核心2133/2400/3200数据传输率理解
1、DDR4和DDR3 的一个差异是:DDR4之前的带宽提升依靠增加预取的bit数(ddr 2bit,ddr2 4bit ,ddr3 8bit 预取),而到了ddr4,只能通过bank group的方式来提高带宽了。 对于DDR4的控制器和DDR4颗粒,首先会提供一个tCK_freq的参数,这个参数值一般是533Mhz、600Mhz和800Mhz,分别对应数据传输率为2133Mbit、2400Mbit和3200Mbit。 在UVM环境中,有一个宏+define+DDR2133,此宏的生效的...
2021-11-25 11:33:53
10979
原创 uvm/sverilog中package的使用
1、测试代码 a.pkg 常见错误如下: 1)在package里include 一个interface.sv文件,出错如下,所以在package里不能include 一个interface;2)在package里看不到另外一个package,b_pkg is not a package。 所以在一个package里直接import一个package是找不到的,即使在前面已经include了这个package。3)package里include另外...
2021-08-29 14:21:56
6062
原创 AXI latency 理解
一、Latency 基础: AXI latency 是比较关键的部分,可以采用VIP的latency机制模拟硬件的latency 信息;其中latency机制的使用按照作用主体分为两块:一个是针对master VIP的,一个是针对Slave VIP的; 根据axi的握手机制: 写通道操作: master 负责操作:awvalid 、awaddr、wvalid 、 wdata 、 wlast 而slave 负责操作:awready 、wready ...
2021-03-15 13:20:42
3579
1
原创 uvm的随机以及约束
UVM的随机的方法很多,常见的有如下几种:1)$random 和$urandom urandom%5:值得范围在0-5内变化; int value=$random%5; 通过尝试,发现打印出来的值是:-4~4之间变化; bit [8:0] value =$random%5, ----->打印出来value的值在508~511和0-4之间变化。已知负数求补码:计算机中负数是以补码形式存在的,补码=原码取反加1; -4原码为10000100,(最高位符号位),补码为...
2021-01-26 22:50:23
14067
原创 AXI协议理解
1、AXI 协议定义了memory和外设slave的transaction 属性,通过ARCACHE和AWCACHE信号来指定。控制: 1)transaction progresses如何通过system? 2)system-level cache 如何处理transaction xact_type有:READ、WRITE、IDLE、COHERENT和DATA_STREAM几种,如果打开cache的情况下,xact_type要设为COHERENT,同时...
2020-12-22 16:14:14
3151
原创 DDR4 基本管脚和概念--第一章
本文是DDR4颗粒入门知识,在此基础上添加了一些自己的理解,希望对自己更深入地了解DDR有所帮助,同时也希望能够帮助到有需要的同学。1、 DDR4 基本管脚和概念1)基本管脚注:对于3D SDRAM,其还有C0-C1-C2管脚,来决定有多少logical rank组成;logical rank概念的引入是为了增加memory的容量。2)rank /bank 概念DDR4 最大可支持128个bank,其中通过C2:C0来区分成8个rank,然后每个logical ...
2020-12-03 22:46:52
7898
原创 UVM DDR 学习第二章--效率计算
1、首先对ddr4 model进行例化 2)ddr 效率的统计是根据ddr颗粒上的信号进行采样来进行统计的。原理是: 读效率=(数据读上升cnt + 数据读下降沿cnt)/total_clk_cnt*2 =tr.read_cnt/((end_time-start_time/ddr_cycle *2); 写效率=(数据写上升cnt + 数据写下降沿cnt)/total_clk_cnt*2 =tr.write_cnt/((end_tim...
2020-12-01 21:39:13
1968
原创 UVM中相关概念区分
1、uvm_analysis_fifo的peek和get区别: peek端口和get端口类似,数据流和控制流都一样,唯一区别是: 当get任务被调用时,fifo内部缓存中会少一个transaction,而peek被调用时,fifo会把transaction复制一份发出去,内部transaction数量不会减少。 普通的peek和get 端口差异是什么?fifo有两种类型,一种是uvm_tlm_analysis_fifo,一种是uvm_tlm_fifo,差别是:前者有一个analysis-...
2020-11-30 11:10:39
2745
原创 [BDTYP] Cannot create a component of type ‘***_test‘ because it is not registered with factory
[BDTYP] Cannot create a component of type 'noc_main_spi_debug_test' because it is not registered with the factory.定位了一天,发现在添加了testlib/pathway/目录后,在进行编译的时候,没有解析其目录下的testcase.svh,原因是在testbench的顶层tb.sv中`include “testlib.svh” ,但是在testlib/testlib.svh中没.
2020-11-17 21:22:49
4525
7
原创 UVM 环境 ddr4 写失败问题定位--FIFO_IS_ALMOST_FULL
每次遇到问题,要从上往下详细梳理,不然很容易忽略或者遗漏中间环节,并且最后你会发现,问题的原因会非常低级。先总结下出问题的原因:1) 底层rtl 接线修改(ddr phy和ddr4 model的连线对应关系)后,对应的uvm环境没有对应的修改。2)DDR工作模式修改后,没有确保连线完全正确。例如uvm中把mbist_mode接0后,并没有传给ddr module中去。现象: 我们用的ddr4采用的是synopsys的Umctl2 ddr控制器,一直在报一个error如下:...
2020-11-04 21:30:50
1142
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人