IC Beginner
这个作者很懒,什么都没留下…
展开
-
【SystemVerilog】generate block
generate block有点类似for循环,可以减少重复代码。比for高级的地方在于,for只能用在普通的不同index信号的赋值,而generate还可以用于多个module、always、function、task、assign、case、if等等更复杂语句的创建。语法格式不难,看下面的例子:效果等同于...原创 2022-05-07 02:24:37 · 1174 阅读 · 0 评论 -
【SystemVerilog】类的重载class override
应用场景:有时候为了添加一些新特性,定义新的类A extends 类B,在后续的使用中,想要在所有用到类B的地方,直接替换成类A。这时候就可以使用类的重载class override使用方法:假设现在class c_dig_qspi_reg_block_ext extends c_dig_qspi_reg_block,要把reg_block直接替换成reg_block_ext,可以在base test的build_phase里用set_type_override_by_type方法对该方法的各参数原创 2022-05-07 02:12:41 · 1086 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之Virtual Sequencer
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。一 Vseqr的基本结构介绍Vseqr一般包括以下几个部分:config db get cfg class声明各种需要用到的seqr在调用seq时,可以直接用vseqr来start,也可以指定vseqr中的某一个seqr来start.原创 2022-05-07 02:03:21 · 660 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之UVM MEM
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。一 UVM MEM的基本结构介绍二 模板化的代码例程...原创 2022-05-07 01:54:07 · 1527 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之Functional Coverage
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。一 Functional Coverage的基本组成收集Functional Coverage的步骤如下:定义functional coverage,包含covergroups,coverpoint。covergroup的输入变量是信号(.原创 2022-05-03 20:17:00 · 828 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之Scoreboard
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。一 scoreboard的基本结构介绍Scoreboard是比较复杂的,但基本由以下几部分组成:TLM exports的端口声明定义,以及对应的write函数。在write函数中处理一些数据,transaction,比如txn中的重要信息.原创 2022-05-03 01:08:59 · 930 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之Monitor
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。...原创 2022-05-01 20:42:02 · 484 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之env
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。...原创 2022-05-01 19:54:56 · 476 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之Sequences
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。...原创 2022-05-01 01:00:40 · 373 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之testcase
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。...原创 2022-05-01 00:20:39 · 1089 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之config class
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。...原创 2022-04-29 20:30:16 · 411 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之package
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。一 package的基本结构介绍package可以用来定义一些params,defines,enums等。 内部结构不难,但要记得在其他module, class, interface中使用时先import这个package(如import .原创 2022-04-29 16:55:08 · 384 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之Harness Interface与内部的Interfaces
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。...原创 2022-04-29 16:48:04 · 1074 阅读 · 0 评论 -
数字IC验证:Hands-on Coding之tb.sv
写在前面:之前的博客都是纯理论,虽然基础理论也很重要,但是最近几个月的实习,让我越来越感受到把理论(包括对SV语法的掌握,以及UVM体系的理解)转化成Coding不是一蹴而就的。所以决定把近期所学整理成一个“Hands-on Coding”系列,便于学习与进步。...原创 2022-04-29 15:37:06 · 949 阅读 · 0 评论 -
【SystemVerilog】语法细节(不定期更新)
这篇文章用来记录SV的一些语法细节,对于初学者而言,有时候很多bug都是因为这样的小细节产生的。logic类型的缺省值是x,不是0if(value == 'd1||'d2 )并不是表示value等于1 或者value等于2,如果要表示后述情况,应该用if(value == 'd1 || value == 'd2),或者if(value inside {'d1, 'd2})...原创 2022-03-11 00:00:53 · 460 阅读 · 0 评论 -
【SystemVerilog】并行线程的几种实现(从@语句中break的问题延伸)
文章目录一、从@语句中break的问题二、并行线程的几种实现一、从@语句中break的问题最近遇到一个情形,已经进入@语句等待敏感事件A,但是中途若出现另一个事件B,要求立即从@语句中break出来,且不执行后续语句。写了个简化逻辑如下:task wait_a; @(A); // 阻塞等待 execute_function(); // 事件A触发后,才会执行execute_functionendtask不同于设置进入@语句的条件,可以通过 iff 或 -> 来约束,对于已经进入阻塞等待原创 2022-03-04 14:12:39 · 1145 阅读 · 0 评论 -
Linux:一文掌握vim/gvim最常用的24个快捷键
文章目录光标定位、翻页撤销、删除复制、剪切、粘贴、选中其他写在前面:本文尽量简洁,持续筛选并更新。若文中有任何错误,请务必在评论区指出,感谢!光标定位、翻页0 将光标定位在行首$ 定位到行尾w 向后跳一个单词,相当于ctrl+→b 向前跳一个单词,相当于ctrl+←20G 定位到第20行G 定位到最后一行gg 定位到第一行ctrl+f front,向前翻一页ctrl+b back,向后翻一页撤销、删除u原创 2021-07-21 18:50:31 · 4772 阅读 · 1 评论 -
SV、UVM与验证思想
文章目录1 SV基础1.2 sequence和property的比较1.3 SV数据类型1.4 fork线程1.5 任务和函数1.6 接口interface2 UVM基础2.1 UVM的优势和劣势、方法学的演变2.0 UVM树形结构2.1 UVM组件Components2.1 Components和Objects的联系与区别2.2 sequence机制2.3 interface接口和virtual interface2.4 phase机制2.5 factory工厂机制2.6 config_db机制2.7 f原创 2021-09-01 02:15:47 · 8977 阅读 · 4 评论 -
数字IC验证:电路基础知识(数字IC、SOC等)
文章目录0 SOC结构1 数字IC设计的流程1.1 逻辑综合的流程2 电路基础3 Verilog基础4 时序分析4.1 亚稳态4.2 建立时间与保持时间4.3 复位4.4 跨时钟域5 计算机体系架构/SOC5.1 CPU的基本结构5.2 Cache的作用5.3 AMBA总线协议5.4 通信协议6 FIFO7 SV基础8 UVM基础9 验证通识/思想10 低功耗写在前面:本文主要为笔者准备数字IC秋招时学习的一些技术问题。主要意向岗位是数字IC验证。希望对大家有帮助,共同进步。也希望自己能拿到一个满意的原创 2021-08-12 01:54:31 · 6874 阅读 · 1 评论 -
数字IC验证:《UVM实战》笔记 - Ch2 一个简单的UVM验证平台(下) - sequence,建造测试用例
文章目录2.4 UVM的终极大作:sequence2.4.1 在验证平台中加入sequencer2.4.2 sequence机制2.4.3 default_sequence的使用2.5 建造测试用例2.5.1 加入base_test2.5.2 UVM中测试用例的启动写在前面:本系列为张强《UVM实战》白皮书的阅读笔记,书写得很好,很有意思,也适合入门。本文目录序号均为书中章节编号,便于对应。此外,本系列中的代码注释为本人补充,之后会上传到我的优快云资源中。2.4 UVM的终极大作:seq原创 2021-08-05 18:08:49 · 1571 阅读 · 0 评论 -
数字IC验证:《UVM实战》笔记 - Ch2 一个简单的UVM验证平台(中) - 为验证平台加入各个组件
文章目录2.3 为验证平台加入各个组件2.3.1 加入transaction2.3.2 加入env2.3.3 加入monitor2.3.4 封装成agent2.3.5 加入reference model2.3.6 加入scoreboard2.3.7 加入field_automation机制写在前面:本系列为张强《UVM实战》白皮书的阅读笔记,书写得很好,很有意思,也适合入门。本文目录序号均为书中章节编号,便于对应。此外,本系列中的代码注释为本人补充,之后会上传到我的优快云资源中。2.3原创 2021-08-05 01:46:52 · 1246 阅读 · 0 评论 -
数字IC验证:《UVM实战》笔记 - Ch2 一个简单的UVM验证平台(上) - 验证平台的组成,只有driver的验证平台
文章目录2.1 验证平台的组成2.2 只有driver的验证平台2.21 最简单的验证平台2.2.2 加入factory机制2.2.3 加入objection机制2.2.4 加入virtual interface2.3 为验证平台加入各个组件2.3.1 加入transaction2.3.2 加入env2.3.3 加入monitor2.3.4 封装成agent2.3.5 加入reference model2.3.6 加入scoreboard2.3.7 加入field_automation机制2.4 UVM的终原创 2021-08-04 15:05:01 · 1412 阅读 · 0 评论 -
数字IC验证:System Verilog - 代码规范Coding Guidelines
文章目录1 Genral Coding Style2 Class Names and Members3 Files and Directories4 SystemVerilog Language Guidelines写在前面:本文为代码规范的整理精炼,内容来源:Verification Academy - SV/Guidelines。1 Genral Coding Style1.1 Indent your code with spaces1.2 Only one declaration or转载 2021-07-29 21:13:57 · 1364 阅读 · 0 评论 -
数字IC验证:System Verilog -接口Interfaces
文章目录1 引言Introduction2 接口中的端口Ports in Interface3 Modports4 例程:mem_if.sv写在前面:最近实习期间自学System Verilog,找到一个英文教程Asic-world/system verilog,写得挺好的,主要通过代码示例进行学习。因此翻译下来作为巩固与分享,其中也额外增加了补充内容。英文原文入口:Asic-World (Task And Functions)。Copyright: Deepak Kumar Tala。文中的所有例程翻译 2021-07-28 23:01:28 · 834 阅读 · 0 评论 -
数字IC验证:System Verilog - 任务task与函数function
文章目录1 引言Introduction2 任务Tasks2.1 例程:task_intro.sv3 函数Functions4 任务与函数的参数传递5 导入与导出函数写在前面:最近实习期间自学System Verilog,找到一个英文教程Asic-world/system verilog,写得挺好的,主要通过代码示例进行学习。因此翻译下来作为巩固与分享,其中也额外增加了补充内容。英文原文入口:Asic-World (Task And Functions)。Copyright: Deepak Kumar翻译 2021-07-28 21:33:39 · 2829 阅读 · 3 评论 -
数字IC验证:Perl快速入门
写在前面:最近实习需要学习perl的基础知识,由于目前只需要了解perl基本语法,看懂即可,不做深入学习,因此写下本文,用于Perl快速入门。内容主要来源:优快云@David_Berkdong 《Perl与Python之间的一些异同》文章目录1 Perl的基本数据类型2 Perl流程控制语句2.1 if 判断语句2.2 unless判断语句2.3 for 循环语句2.4 while 循环语句2.5 循环控制符3 Perl的函数4 Perl的包与模块5 Perl的OOP6 Perl正则表达式1 .转载 2021-07-28 00:40:49 · 1993 阅读 · 0 评论 -
数字IC验证:ARM协议之AMBA低功耗接口Q-channel
写在前面:最近实习项目里用到Q-channel,因此简单整理一下,内容大多来自ARM官方文档与网络上的,我主要做一个整合,加上自己的理解补充,内容来源都会分别标出。如有侵权请指出,立刻删帖。官方文档入口:Qchannel文章目录1 什么是Q-channel?2 Q-channel的接口信号3 Q-channel接口的握手状态4 Q-channel的2种握手时序图-接收&拒绝4.1 设备接收控制器的power请求4.2 设备拒绝控制器的power请求1 什么是Q-channel?内容来.原创 2021-07-27 17:35:14 · 2551 阅读 · 0 评论 -
数字IC验证:ARM总线协议AMBA中AHB、APB的简介、区别与联系
写在前面:最近实习项目里用到这三个协议,因此简单整理一下,内容大多来自ARM官方文档与网络上的,我只是做一个整合,来源都会分别标出。如有侵权请指出,立刻删帖。官方文档入口:AMBA(包括AHB, ASB, APB);Qchannel文章目录1 AMBA总线2 AHB2.1 一个典型的基于AHB的微控制器2.2 AHB总线互联结构:中心选择器连接master与slave2.3 AHB的特性3 APB4 AHB和APB的区别与联系4 Q-channel1 AMBA总线内容来源:维基百科词条-Ad.原创 2021-07-27 14:34:54 · 7986 阅读 · 2 评论 -
数字IC验证:System Verilog学习 - 过程语句与控制流
文章目录1 引言Introduction2 选择语句Selection Statements2.1 if 语句2.2 case语句2.3 case inside语句2.4 例程unique_priority.sv3 循环语句Loop Statement3.1 例程:do_while_loop.sv3.2 例程:for_loop.sv3.3 例程:foreach_loop.sv4 跳转语句Jump Statement4.1 例程:break_loop.sv4.2 例程:continue_loop.sv4.3翻译 2021-07-22 17:17:29 · 2546 阅读 · 0 评论 -
数字IC验证:几大功能验证(Functional Verification)技术有哪些?
文章目录功能验证的目的五大验证技术1 静态验证 (Static Verification)2 功能仿真 (Functional Simulation)3 FPGA原型验证 (FPGA Prototyping)4 硬件仿真 (Emulation)5 UVM通用验证方法学 (Universal Verification Methodology)总结写在前面:最近在实习中学习数字验证,每天学习的内容会整理记录下来。首先是对功能验证的理解。本文参考资料为维基百科-Functional Verification词原创 2021-07-21 15:58:10 · 7949 阅读 · 0 评论