- 博客(18)
- 收藏
- 关注
原创 UVM命令行参数解析工具:uvm_cmdline_processor
前言:uvm_cmdline_processor扩展自uvm_report_object,是一个对仿真命令进行处理的处理器类。uvm_cmd_line_verb类是一个独立的类,主要对仿真的编译路径,事件等进行记录。
2023-02-13 15:08:34
809
原创 IC验证简单介绍
代码覆盖率的最大价值在我看来就在于它能够指出我们没覆盖到的那些点,这些点是肯定没测试到的或测试不到的(比如冗余代码),然后我们再补充测试将那些没测试到的点覆盖,将确定测试不到的点过滤掉。在这里我需要强调的一点是场景类、性能类、异常类测试点一定要尽早思考和分解,SE也要多参与进来提供支持,比如各种随机配置、异常配置、动态配置、power反复开关,开关过程中各种操作等等,不要总是关注于常用的功能,不能总停留在舒适区,只有经得起反复考验的代码才是好代码,受得起各种蹂躏的芯片才是好芯片。
2023-02-09 23:14:42
2476
1
原创 【验证-SVA】怎样通过断言测试“直到仿真结束,一个条件被满足过“这种场景(关于s_eventually, [0:$])
一个信号在仿真结束前应该至少拉高过一次或者只拉高一次,比如一个简单的握手协议要求ready每拉高一次就要收到一个acknowledge信号。但是##[1:$]这样的写法会影响仿真效率,为什么呢?因为这样写法可以分解为无数个并行check的进程, 以如下sequence为例。那么##[1:$]就意味着断言触发后的每个cycle都要做这个check, 会极大的影响仿真效率。2.用s_eventually 和$assertoff结合。将上面的property写法。assertoff中止。
2023-02-09 15:14:11
852
原创 如何自动生成UVM环境
参考github上的uvm_auto项目,项目地址:https://github.com/mingzhang952/uvm_auto。
2023-02-06 15:12:44
585
原创 系统级验证读入bin文件
integer file;reg[31:0] data[1023:0];initial begin file = $fopen("bootloader.bin","rb"); if(file == 0) begin $display("error: no boot file open!"); end $fread(data, file); $fclose(file);end
2021-11-30 08:06:12
266
原创 UVM1.2 和UVM1.1
新功能和更改功能变量uvm_sequence_base::starting_phase已弃用,并由两个新方法set_starting_phase和get_starting_phase取代,这些方法阻止在phase中间修改starting_phase。此更改与UVM 1.1不向后兼容,但变量starting_phase虽然已弃用,但尚未从基类库中删除。新方法uvm_sequence_base::set_automatic_phase_objection将在在sequence执行前后自动调用raise_.
2021-11-12 14:33:07
2688
原创 Makefile 中:= ?= += =的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VREVRE = “Hello World!”elseendififeq ($(OPT),define)VRE ?= “Hello World! First!”endififeq ($(OPT),add)VRE += “Kelly!”endififeq ($(OPT),recover)VRE := “Hello
2021-10-19 09:35:25
95
原创 Systemverilog 打印格式
system_verilog display format简介$display 和 $write的区别:$display系的系统函数:会在输出的末尾自动添加换行符(newline character);$write系的系统函数:光标会停留在输出的末尾,不会自动换行。$display 和 write相同之处:按照参数列表的顺序输出参数;参数可以是引号内的字符串(quotedstringliteral),表达式(expression)和数值(value);未指定输出格式的string和未压缩的byt
2021-09-27 15:56:28
1895
原创 timescale冲突解决
即使在run脚本中定义了timescale,也要在tb顶层显示定义timescale。verilog推荐每个模块开头定义timescale,模块结尾resetall可在irun脚本中增加-override_timescale,强制更改所有timescale(不推荐)UVM和dut模块产生timescale冲突,可以尝试更改filelist读取顺序,先读取tb再读取dut...
2021-09-27 15:01:22
2233
1
原创 vim查看二进制文件
可分如下几步进行:(1) 首先以二进制方式编辑这个文件: vim -b datafile(2) 现在用 xxd 把这个文件转换成十六进制: :%!xxd
2021-09-07 20:03:22
786
原创 Cache知识整理-Read-Allocate/Write-Allocate
1.CPU读Cache时:●若hit,则CPU直接从Cache中读取数据即可。●若miss,有两种处理方式:Read through,即直接从内存中读取数据;Read allocate,先把数据读取到Cache中,再从Cache中读数据。2.CPU写Cache时:●若hit,有两种处理方式:>Write through:把数据同时写到Cache和内存中;>Write back:先把数据写到Cache中,再通过flush方式写入到内存中。●若miss,有两种处理方式:
2021-08-18 10:20:34
9523
2
原创 Design Compiler知识整理
Design Compiler知识整理1 基本操作2 常用命令1 基本操作在dc_shell下也可以使用unix命令诸如: pwd、 cd 、ls、history、alias等。重复最后一条命令dc_shell> !!执行第七条命令dc_shell> !7执行最后一条report命令dc_shell> !rep执行任何shell命令dc_shell> sh < UNIX_command >得到unix变量值dc_shell> get_unix_var
2021-07-26 14:49:14
1600
原创 Verilog编码风格(未完待续)
Verilog编码风格1 书写格式1.1 模块端口声明1 书写格式团队要统一书写格式,统一缩进要求。统一编辑器,比如vim/gvim。1.1 模块端口声明要尽量使用Verilog-2001标准,这样可以减少代码行,而且便于修改和删除。例如:// module sram_ctrl( //Interface with ATPG input test_mode, //Interface with AHB input hreset_n, input hclk, input h
2021-07-25 11:49:24
192
原创 Verilog标准
Verilog标准Verilog-2001Verilog-2005Verilog一共发型了三个标准:Verilog-1995、Verilog-2001和Verilog-2005。Verilog-2001Verilog-2001,相比Verilog-1995,加入了很多有用的特性,这些特性可以提高设计的生产效率,提高综合能力,提高验证的效率。下面是一些有用的新特性。增加generate语句,简化模块多次实例化或者选择实例化。增强对多维数组的支持。增强文件I/O的操作。增加对task和funct
2021-07-25 11:21:55
1487
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人