自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lbt_dvshare的博客

个人见解,欢迎讨论~~~

  • 博客(145)
  • 收藏
  • 关注

原创 【MISC】芯片验证常见问题解答

1.

2020-03-21 14:40:00 1480

原创 【shell】Cshell

csh -vx用来显示输入的原样和变量替换后的脚本,用来帮助调试。变量通过set来定义局部变量x,通过$x(或${x})来使用变量x的值; $%x表示变量的值的长度; $?x 来判断变量x是否设置,如设置则为1,否则为0;set x = 5 echo ${x} # ​echo ${x}, echo $%x 全局变量(也叫系統變量)的定义setenv v v...

2019-06-29 16:44:19 1935 1

原创 【vim】技巧總結

一直在用gvim,但說實在的,掌握的技巧太少,需要慢慢積累,這個貼子就持續更新吧~~~快捷鍵:在.vimrc 文件中加入以下快捷鍵:map cc :s/^/\/\//<enter> :map qq :q<enter>:map bb :w!<enter>:map dl i`uvm_info(get_type_name(),$sfor...

2018-12-07 16:50:16 289

原创 [SV]systemverilog 读取文件内容实例

之前文章有讲过读取文件的方法,本文将给出一些实例~~

2023-08-05 14:29:24 604

原创 [SV] 文件操作

Verilog 提供了很多对文件进行操作的系统任务。$fopen$fclose$ferror$fdisplay$fwrite$fstrobe$fmonitor$sformat$swrite$fgetc$fgets$fscanf$fread$fseek$ftell$feof$frewind$readmemh$readmemb使用文件操作任务(尤其注意 ​$sforamt​, ​$gets​, ​$sscanf。

2023-07-30 21:40:31 1942

原创 [Verfication]如何在env中实现task/function 形参类型可变

最近在项目中遇到需要改变task/function 形参类型,寻求了一种实现方法,记录一下~~

2023-06-24 13:58:56 225

原创 [SV]如何在class/module/interface共用同一个枚举变量

在UVM ENV中经常会用到枚举变量,往往会在多处使用同一个枚举变量,那怎么实现呢,上干货~~

2022-10-23 09:46:24 443 1

原创 【DV】常用读写register通用 task

1. 读写memoryvirtual task ral_access_read(input uvm_reg_block ral_blk,output uvm_state_e status,input bit[31:0] addr , output bit[31:0] data); uvm_sequence_base seq; uvm_sequence_item bus_req; uvm_sequencer_base sequencer; int unsigned b.

2022-04-03 09:42:12 603

原创 [SV] cross bin 的一种用法

如果定义两个coverpoint a,b,如果cross a和b,假定a中有2个bin,b中有2个bin,cross之后一定只有4个bin吗?不一定。如果a中的bin没有将所有可能的值涵盖完,那么系统会分配默认的bin,那么交叉出来就不止4个bin。1.为什么要设置权重为0?先将需要交叉的两个coverpoint (addr和cmd )中添加“type_option.weight = 0; ”这段代码,表示覆盖率收集时不关心这两个coverpoint的bin。当addr和cmd中设置权重为0时,cr

2021-08-06 22:05:59 2600 1

原创 【UVM】uvm_info 如何开关打印行号和文件名

 uvm_report机制,例如uvm_info、uvm_warning、uvm_error、uvm_fatal,打印出的信息包含有文件名和行号,那么uvm是如何获取文件名和行号的呢?  在uvm源代码中可以看到,调用了uvm_file和uvm_line这两个宏,这两个宏又分别指向了__FILE__和__LINE__这两个宏。关于__FILE__和__LINE__`__FILE__和`__LINE__作为编译指令,在编译阶段被替换掉:`__FILE__被替换为当前文件的文件名,以字符串的

2021-07-14 16:30:52 1949

原创 [SV] ignore_bins 用法

1. 和bins overlapcoverpoint p { bins exp[] = {[1:100]}; ignore_bins ign = {23,45,67};}2. 使用withcovergroup cover_me; x_cp : coverpoint x; y_cp : coverpoint y; x_y_cross: cross x_cp, y_cp { ignore_bins ignore_x_values_higher_than_...

2021-07-12 14:54:32 2768

原创 关于SRAM验证的一些思考

最近遇到非标准的sram:两个sram拼在一起,每个SRAM 数据位宽是128bit,对于写端:每次可能写入128bit或256bit;

2021-06-20 21:25:37 1569

原创 [VCS] merge coverage

部分merge到整体采用 mapfile option

2021-06-08 20:04:40 1642

原创 [DV] clk extend function 实现

最近有用到clock extend 功能,具体就是在clock gating功能中,在要关clock时晚几个clock关,具体晚几个clk是通过寄存器配置的。如何实现其功能呢?always(@posedge clk or negedge rst_n)begin if(~rst_b) ck_dly_cnt <= 0; else if(ck_en) ck_dly_cnt <= reg_ck_dly_cnt; else if(|ck_dly_cnt) ck_d

2021-03-29 13:02:40 260

原创 [Questa] SolveArrayResizeMax error

Description** Error: (vsim-7020) ...: Illegal attempt to resize random dynamic array 'XXX' to 156416 elements. (SolveArrayResizeMax=10000)vsim -vlog Message # 7020:A call to randomizer() resulted in an attempt to resize a randomdynamic array to a val

2021-03-29 11:32:16 421 3

原创 【SV】枚举类型

1.1. 用户自定义类型(typedef)局部typedef定义:只用于设计的特定部分时,typedef的定义可在module或interface中共享typedef定义:当在多个模型中使用时,typedef的定义可在包中进行,module,interface,program block可以通过导入packet子项来使用typedef定义例如:package chip_types; `ifdef TWO_STATE typedef bit dtype_t; //当宏定义TWO_STATE时

2020-12-20 15:43:48 6738 2

原创 [UVM] run_phase 和 main_phase

对于这两个phase两者是并行执行,对于run_phase有两个选择可以使其代码执行:1. main_phase 有raise objection,运行时间受main_phase中objection控制;2. run_phase raise objection;Tips: ENV中主动方通常用main_phase,被动方通常用run_phase; driver/monitor -> main_phase scoreboard ->...

2020-09-19 15:51:46 4916 2

原创 [SV] 内嵌约束中local::的用法

在使用内嵌约束randomize()with {CONSTRAINT}时,约束体中的变量名的查找顺序默认是从被随机化对象开始查找,但如果调用randomize()函数局部域中也有同名变量,那就需要使用local::来显式声明该变量来源于外部函数,而非被随机化的对象(在约束中也可用this/super来索引这些变量)local::只表示“域”,并不指代某个句柄,所以也可以用local::this 表示调用randomize()函数的对象句柄。...

2020-07-11 10:15:06 4987

原创 [CS]通信科普相关博文分享

最近在学习通信相关基础知识,看到有相关不错的文章,分享下~~无线通信TX的流程:L2 -> CRC -> turbo -> interleave -> scramble -> QPSK -> OFDM -> Preamble -> upsample -> RC filter -> up sample ->LPF ->IQ mod ->DAC ->MIXER ->PA无线通信RX的流程:LNA .....

2020-06-25 10:55:26 546

原创 [SV] module中如何把delay time作为参数

在testbench中我们经常需要加不同的delay来搭建direct pattern,可以通过plusargs来传递参数。如何实现呢?`timescale 1ns/1fsmodule top ; task automatic delay_fs(longint val); longint idx = 0; while(idx < val)begin #1fs; idx++ end endtask initial begin.

2020-06-17 13:30:42 1051

原创 [SystemVerilog] cover group在module中的应用

cover group在class中的应用之前文章说过,cover group在class中的应用;在module中如何用呢?module dma_test_top(); covergroup idle_chk_cvg(logic i) @(posedge clk); idle_trans : coverpoint idle_vector[i] { bins idle = (1 => 0 => 1); } endgroup : idl

2020-05-29 22:20:28 1192

原创 [TOOLS] 解决Verdi 无法打开部分波形

使用Verdi dump waveform经常会遇到部分信号无法打开,可尝试一下办法:1. 查看filelist中是否加入-v ,如果加入-v 则把他删除;2. 如果去掉-v 后仍然无法打开信号,编译选项加入 -debug_access,-debug_region=cell+lib; 也可以把-debug_access+all换成-debug_all试试,两者的区别如下: 查看是否存在+nocelldefinepli+,如果有则删除; +nocelld...

2020-05-29 21:59:22 14652 1

原创 【DV】验证环境集成

模块级环境需要集成到系统级的环境中(主要复用checker(scoreboard & reference model)),需要做哪些改动呢?dut 的hierarchy和激励来源发生变化,涉及到的改动如下: 通过uvm_config_db set interface的部分发生变化,需要修改hierarchy; 激励由agnet变为上层module,故需要额外driveDUT 相关的interface(reference model 和scoreboard需要得到上层module的输出...

2020-05-24 15:52:00 1426

原创 [Shell] exit 的用法

exit [<n>]可以指定退出状态n,n的取值范围是0-255,一般情况下,0表示正常退出,非零表示异常退出。如果状态码是0-255之外的数值,则会被强制转换为uint8_t类型的数值,比如-1会被转换为255,256会发生类型宽度截断,被转换为0。状态码n可以不指定,默认是上一条命令的退出状态码。关于状态码值的定义尚未有统一的标准,但是结束程序时随意的指定一个状态码是一个...

2020-05-01 14:31:49 883

原创 【SV】$cast的用法

在systemVerilog中经常见到$cast,让我们了解一下。 含义 父类站的高,子类在底下。 从父类向子类的转换称为向下类型转换 (即 child_handle = father_handle,直接这样复制是不行的) 反之则称为向上类型转换(即 father_handle = handle_handle) ...

2020-03-28 09:54:26 13817

转载 [UVM] TLM (3)

今天聊聊analysis port 和analysis imp 是怎么连接的。下面的连接模式是典型的monior - agent - subscriber:在Agent中将jelly-beanmonitor(jb_mon)中的analysis port (jb_ap)和jelly-bean agent (jb_agent)中的analysis port (jb_ap)连接。jb_...

2020-03-22 14:06:09 412

转载 [Python] jieba 库介绍

jieba 库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式,下面是三种模式的特点。精确模式:试图将语句最精确的切分,不存在冗余数据,适合做文本分析全模式:将语句中所有可能是词的词语都切分出来,速度很快,但是存在冗余数据搜索引擎模式:在精确模式的基础上,对长词再次进行切分jieba 库介绍...

2020-01-06 14:40:55 986

转载 [CS] MIMO 科普

全面解析基站和天线​​​​​​​天线科普MIMO科普

2019-12-28 10:40:41 217

转载 [python] 字符串格式化

1、按照默认顺序,不指定位置print("{} {}".format("hello","world") )hello world2、设置指定位置,可以多次使用print("{0} {1} {0}".format("hello","or"))hello or hello3、使用列表格式化person = {"name":"opcai","age":20}p...

2019-12-07 10:14:29 147

转载 [Shell]比較兩個文件內容

comm-3file1file2功能:逐行比较两个排好序的文件,默认输出有三列:只在file1中有的行、只在file2中有的行、在file1和file2中共有的行。有参数-1, -2, -3,分别来抑制输出对应的列。例如,实用-3参数,不输出file1和file2中共有的部分。即能达到我们本文的目的。但是注意到,comm比较排好序的两个文件,comm在处理文件的时候,首先要查看文件是否...

2019-12-07 09:18:43 295

原创 [Tools] P4 应用

来点PERFORCE 应用实例。function : 把当前workspace中的所有文件(local file & P4 file)打成labelcmd: p4 labelsync , p4 shelve, p4 unshelve, p4 revert , p4 change , p4 info, p4 changes, p4 label#!/usr...

2019-12-04 21:50:01 557

原创 [SVA]跟随重复操作符和非连续重复操作符

property goto_repetition_p; @(posedge clk) $rose(a) |-> b[->3] ##1 c;endproperty跟随重复操作符(->)指定表达式匹配指定的次数,而不必匹配连续的时钟周期。 表达式的最后一个匹配项应在整个序列匹配结束之前的时钟周期内发生。 对于上面的例子,信号b的最后一次重复必须跟随序列b...

2019-11-29 11:22:21 1804

原创 [SV]动态数组特性

动态数组的特性:bit[7:0] d_array[];d_array = new[4];d_array ={0,1,2,3};d_array = new[10];//原来的四个元素被清空d_array = new[10](d_array);//原来的四个元素还存在function void funcs(); int pos[$] ; // ...

2019-11-24 14:53:57 2813

原创 【Perl】" "\w" is unrecognized escape " in grep issue

在用Perl 调用 grep时遇到如下提示“"\w" is unrecognized escape”,$build_num = `find ./ -type d -maxdepth | grep -E "Linux/\w+" | wc -l `;Solution : 反斜线前面需要再加一个反斜线。$build_num = `find ./ -type d -maxdepth...

2019-10-29 16:40:07 421

原创 [SV] local const protected

local:只允许类本身访问,需经过类本身的成员进行访问;protected:允许类本身和它的扩展类访问;const:分为两种:全局性、instance性的其中,全局性const:在声明时即赋值,之后不可修改;instace性const:只使用const进行声明,赋值发生在new()中...

2019-10-26 09:47:34 1755

原创 【SVA】assertion局部变量的应用

创建计数器 property check_counter; int L_cnt; @(posedge clk) ( ($rose(start),L_cnt = 0)##1 (1,L_cnt = L_cnt+1)[*0:$] ##1 (L_cnt == 30) |-> (irq ==1) );endproperty 可变的时钟延迟...

2019-10-25 15:12:04 1005

转载 【DV】arbiter 的验证思路

这篇文章是写arbiter 验证思路,可以借鉴。。。对于arbiter 验证,目前有了解到几种状况:1. 可以完全用reference model 来预期golden value;2. 由于HW比较复杂,需要借助HW internal signal 来判断,比如arbiter 和SRAM 空满强相关,此时就需要借助HW signal.3. check 时不care各个req...

2019-10-25 14:51:47 1513

原创 [DV] register中*_mask_clr and *_mask_set 的验证思路

在验证IP中时,总会遇到 irq register ,对于有些irq 如果SW 不想看可以mask,所以与irq相关的register就会包括 irq status,irq status mask ,而mask register会分为两种:mask_set, mask_clr. 对于这两种register 的验证思路有哪些呢?mask_set = 1 check status 是否被mask;...

2019-10-25 14:02:07 293

原创 [VCS]利用ucli 控制dump waveform

可以通过编写control file(ulci.do) 来控制dump waveform#file ucli.do#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++run 1ms//每fsdb每满500M就切一个file,最多生成100个call {$fsdbAutoSwitchDumpfil...

2019-10-18 16:24:42 7284

原创 [SV]动态数组的大小

如何获取动态数组的大小呢?bit[7:0] b_array[];b_array = new[2];$size(b_array,1) 代表数组中元素的个数,此时为2b_array.size()代表数组中元素的个数$size(b_array,2) 代表数组元素的位宽,此时为8动态数组分配空间有以下两种方式bit[7:0] b_array[];b_array[0] = ...

2019-10-15 19:32:35 5416

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除