验证
文章平均质量分 78
geter_CS
你要把时间用在美好的事情上,不要总是在不值得的事情上浪费。停止自我否定,多去肯定自己;停止反复懊悔,学会坦然放下;停止急于求成,耐心等待自律带来的变化......
展开
-
汉明码奇偶校验矩阵理解
此代码的纠正原理是:e[0]表示d[0]所在属的三个校验位c[0],c[2],c[3]的校验结果s[0],s[2],s[3]的取&,如果为1表示三个校验位都出错,(按照上面图形解释思想)同时属于这三个校验位的只有d[0],那么就表示d[0]出错了。最后矫正时d[0]^e[0]就是,如果d[0]出错,出错后为0,那么0^1=1,如果出错后为1,那么1^1=0.这样就可以矫正。如果第5位(d2)和第11位(d7)以及第10位(d6)出错:0 0 1 0 1 0 1 1 1 0 1 0 0。原创 2023-05-15 19:41:36 · 4309 阅读 · 5 评论 -
(AHB VIP为例)Verdi UVM/interactive debug mode简单使用
AHB VIP为例,Verdi UVM/interactive debug mode简单使用原创 2022-11-09 22:56:15 · 4273 阅读 · 12 评论 -
riscv引导程序及仿真记录
l.jal _mymain表示跳转到_mymain处,可以看下面c代码的汇编,其中会根据mymain函数创建_mymain标签。注意:在实际的汇编程序编写中,跳转的目标往往使用汇编程序中的 label,汇编器 会自动根据 label 所在的地址计算出相对的偏移量赋予指令编码。.section .text表示下面的代码链接时放在.text段,.org设置当前代码的地址偏移(相对于链接时指定定.text段的起始地址)。_th0_main标签处,连续的l.addi 指令可以理解为对32个通用寄存器的清操作。原创 2022-11-05 17:00:45 · 963 阅读 · 0 评论 -
riscv-gcc工具编译firmware进行仿真问题总结
Q1 riscv裸机编程undefined reference to `_memcpy` :c代码中数组长度超过16,并在定义时做初始化,编译报错问题,Q2 全局变量初始化问题Q3 riscv裸机编程undefined reference to `_memcpy` :c代码中字符数组长度超过16,并在定义时做初始化,编译报错问题.Q4 字符串常量初始化问题。原创 2022-11-01 17:31:30 · 777 阅读 · 0 评论 -
systemverilog $isunknown的使用
比如logic,wire,reg。如下例所示,对二状态类型是没有用。注意在TB中如果使用$isunknown,$isunknown判断是否存在叉态。或者需要X和阻态传播,使用四值的类型。.只对具有4状态的类型有用。原创 2022-10-21 17:49:06 · 2614 阅读 · 0 评论 -
systemverilog disable在task中使用的坑
systemverilog disable在task中使用的坑原创 2022-10-21 16:11:58 · 886 阅读 · 1 评论 -
low power-upf-vcsnlp(六)
add_power_state,create_power_state_group原创 2022-09-10 17:29:50 · 1265 阅读 · 0 评论 -
low power-upf-vcsnlp(五)
set_isolation命令原创 2022-09-08 18:22:04 · 3005 阅读 · 0 评论 -
low power-upf-vcsnlp(四)
create_power_switch原创 2022-09-08 16:41:06 · 1103 阅读 · 0 评论 -
low power-upf-vcsnlp(一)
动态功耗:如图中,CMOS反向器输出在0,1之间转换时,对负载电容的重放电过程。原创 2022-09-07 16:47:06 · 3460 阅读 · 0 评论 -
low power-upf-vcsnlp(三)
举个例子定义两个power domain。test.upf内容如下。-update#PD0-update仿真结果,power map如下,注意上面upf中使用了set_scope,所以此时新定义的net VDD0 VSS0,port VDD0 VSS0都是在scope inst0下的:此时instance上显示出两个power domain:两个domain的power是可以不一样的,但是VSS可以是一样的,所以可以将两个domain的VSS连接起来,并且将PD0的power从外面接进去。原创 2022-09-07 16:44:18 · 1107 阅读 · 0 评论 -
low power-upf-vcsnlp(二)
二、upf+vcsnlp+verdi实例后文中使用的dut代码和testbench代码,使用的工具版本和参考文献在文末。原创 2022-09-07 16:42:52 · 1369 阅读 · 0 评论 -
systemverilog 结构体-简单使用
压缩结构体以向量形式将结构体的所有成员存储为连续位,存取顺序如下。压缩结构的成员变量不可以是实数或短实数变量、非压缩结构体、非压缩联合体体或非压缩的数组。1.upacked结构体,结构体每个成员变量,都是单独存放的。结构体不能整体赋值,但是可以整体复制给另一个同类型结构体。注意压缩结构体可以整体赋值15行,但是非压缩结构体不可以。结构体可以作为端口信号定义。2.pakced结构体。原创 2022-09-07 16:49:26 · 874 阅读 · 0 评论 -
systemverilog dpi简单使用
1.外部函数导入到SV中2.外部任务导入加了pure修饰的方法,表示该方法只能使用通过形参传入的数据,不能使用该函数外的其他数据或者方法,也不能进行文件操作。而context是可以的。另外pure不能修饰引入的task。[]表示可选的。原创 2022-09-07 16:48:36 · 1244 阅读 · 0 评论 -
怎样将例化的uvn test包含在verdi的instance中,并将其中变量加入到dump的波形中(方便verdi追test以及debug)
1.test class在module test中例化(verdi只显示module,class只有包含在module中才会被显示)。不可以写在module外面,写在外面是没法追代码的,代码都是灰白的。5.可能打开verdi也没有显示该test,可以在declaretion窗口找到该case(对应所在的module),双击,然后在instance中就会显示该case。(105和106行)定义了和test同名的module,test定义在了module中,并按照上面步骤在module中run的test。...原创 2022-08-03 16:28:43 · 1079 阅读 · 0 评论 -
验证中filelist以及package的使用
不使用pkg的filist1,使用pakage的filist,嵌套pakage原创 2022-07-09 13:39:32 · 4377 阅读 · 3 评论 -
vcs常用断言debug选项,以及断言的注意点
1.compile添加选项-assert enable_diag之后对应的下列run的选项才能使用:• -assert success (默认只打印assert fail的log,加上此选项后assert success的选项也会打印)• -assert maxsuccess=N(assert success的最大打印次数)2.compile添加选项-assert enable_hier之后对应的下列run的选项才能使用:• -assert hier (可以enable和disable原创 2022-05-29 16:45:46 · 6321 阅读 · 3 评论 -
地址读写hang住case中,怎样中断hang住的读写进程,继续测试后面地址(关于fork的应用)。
比如我们测试某个地址读写的task如上,此task目的是测试是否对地址addr的读写,并不关心读写结果。如果读写的时候某个地址hang住,那么整个验证环境都会hang在这儿,后续地址不能测试到。我们希望的是:在测试到某个地址到hang住时,就中断对此地址的读写进程,测试下一个地址。可以改成这样的fork进程控制:1.最外面这个fork可以不要2.a0进程是测试对addr地址读写,和a1进程时并行的,因为a0是join_none。(这里addr不用automatic接收,因为多个地址并不并..原创 2022-05-13 17:45:42 · 259 阅读 · 0 评论 -
fork join和for循环结合的实际应用
fork…join结构中,父进程会被阻塞直到所有的子进程结束;fork...join_any结构中,父进程会被阻塞直到其中任意一个子进程结束;fork....join_none父进程会立即与产生的所有进程并发执行。fork中每条语句并行执行,如果将多个语句封装在一个 begin…end块中会将整个块作为单个进程执行,其中每条语句顺序地执行。实际应用:实际应用中,我们通常会使用了for循环和fork join_none来并行启动多个进程(这样不用写哪些重复的代码)。fo原创 2022-03-15 15:52:22 · 7440 阅读 · 8 评论 -
verilog 不定态(X态)传播
verilog语法中if else 和case语句是不能传递x态的。if(1'bx)会默认为0即false,对于case(1'bx),如果有默认default的分支语句,则会匹配到default的语句,如果没有default语句则不会匹配到任何语句。如下代码和波形:module top_module(); reg sel; reg [1:0]out1; reg [1:0]out2; reg [1:0]out3; wire [2:0]out4; `p原创 2022-03-07 17:25:37 · 9787 阅读 · 0 评论 -
UVM 使用start_item和finish_item指定sequencer发送item,比uvm_do_on更灵活。
我们使用uvm_do_on(item,sqr)是可以指定那个sequencer发送此。而且uvm_do系列宏第一个参数即可以是sequence也可以是transaction,当是sequence时使用start任务来启动sequence,当是transaction时使用start_item和finish_item来发送transaction。1.uvm_do局限性:uvm_do系列宏封装的太好但是灵活性更差。比如场景:要发送的transaction很复杂(有很多signal),我们需要精细化制定原创 2022-03-02 13:34:51 · 8599 阅读 · 0 评论 -
AHB VIP Example 的tb_ahb_svt_uvm_basic_ral_sys中关于slave和master接口连接的问题
AHB的tb_ahb_svt_uvm_basic_ral_sys中关于slave和master接口连接的问题一、原始使用方法hdl_interconnect中文件的DUT的部分内容是:DUT外面还做了封装,封装成了ahb_svt_dut_sv_wrapper.sv,部分代码如下:此DUT的作用是接收来自master的数据(这部分数据是传给slave的),传送给AHB bus(AHB总线),再由AHBBUS传送给slave的(interface),接收自slave的数据,传..原创 2022-02-21 17:18:05 · 3040 阅读 · 6 评论 -
xHCI1.1-TRB Ring
4.9 TRB RingTRB(Transfer Request Block) Ring是一个TRB数据结构的环状队列,TRBRing用来在producer和consumer之间传送工作项(WorkItem)。和其相关的有两个指针,出队指针(Dequeue)和入队指针(Enqueue)。一个工作项由一个或多个TRB数据结构组成。一个工作项定义了一个将要被执行的操作或是一个已经执行的操作的结果。有三种基本TRBRings:Transfer,Event和Command。每种Ring都有其专用...原创 2021-08-18 17:01:26 · 5420 阅读 · 0 评论 -
xHCI1.1-DCBAAP(设备上下文及地址数组指针 寄存器)
一、DCBAAP(设备上下文及地址数组指针 寄存器):xhci里面的Operational寄存器组里面的设备上下文基地址数组指针寄存器(DeviceContextBaseAddressArrayPointerRegister,DCBAAP),用于保存设备上下文基地址数组(DCBAA)的指针(也就是这个数组的首地址)。P418二、DCBAA(设备上下文基地址数组,内存数据结构):DCBAA和xHCI的设备槽相关联(DeviceSlot),也就是一个Slot对应DCBAA里面的一...原创 2021-08-16 21:26:11 · 2075 阅读 · 0 评论 -
xHCI1.1-USB设备的初始化
USB设备的初始化这节描述检测和初始化连接到xHC根集线器端口上的USB设备无论连接的设备是Function还是集线器,设备的初始化进程都是一样的。一旦与一个外部集线器关联的管道被建立,集线器驱动将会通过标准集线器类命令序列来枚举连接在外部集线器上的设备。这节将重点描述当设备连接到跟集线器上时的初始化进程。芯片硬件复位,HCRST(Host Controller Reset),或命令进入PLS(Port Link State) = RxDetect state后,所有根集线器端口均应处于Di原创 2021-08-13 14:37:36 · 3194 阅读 · 0 评论 -
xHCI1.1-框架和数据结构
Chapter 3 Architecturaloverview各个部分为: Application software:应用软件使用一个或多个USB设备提供的服务。应用软件通过ClassDriver提供的标准接口连接到USB设备 ClassDriver software :这种软件运行在hostPC上,对应USB设备一个具体的“类”(MassStorage,Human interface,Audio,etc.).ClassDriver software通常是操作系统一部分...原创 2021-08-13 14:22:59 · 6084 阅读 · 0 评论 -
vcs+verdi,以及Makefile注意点
1.命令行之前是以Tab开头的不然会报错gvim里面强制输入tab,使用Ctr+v+i直接使用tab键可能输入不成功。原创 2021-05-23 16:25:14 · 4287 阅读 · 0 评论