• 入职前学习SystemVerilog


    使用书籍:验证测试平台编写指南,克里斯版。
    主要第1.1-1.10,2,3,4.1-4.5&4.8,5,6,7.1-7.5,9,12.1-12.2章。
    第一章:验证导论
    HVL(硬件验证语言)特性:1、受约束的随机激励生成;2、功能覆盖率;3、更高层次的结构,尤其是面向对象的编程;4、多线程及线程间的通信;5、支持HDL数据类型,例如Verilog的四状态数值;6、集成了事件仿真器,便于对设计施加控制。
    基本测试平台的功能:1、产生激励;2、把激励施加到DUT上;3、捕捉响应;4、检验正确性;5、对照整个验证目标测算进展情况。
    本书使用如下原则:1、受约束的随机激励;2、功能覆盖率;3、使用事务处理器的分层测试平台;4、对所有测试通用的测试平台;5、独立于测试平台之外的个性化测试代码。
    除了考虑数据路径的漏洞,还需要考虑所有的设计输入:1、设备配置;2、环境配置;3、输入数据;4、协议异常;5、错误和违例;6、时延。
    第二章:数据类型
    SV引入的新的数据类型:1、双状态数据类型;2、队列、动态和关联数组;3、类和结构;4、联合和合并结构;5、字符串;6、枚举类型。
    logic数据类型是reg的改进,可以被连续赋值、门单元和模块所驱动;任何适用wire的地方都可以使用logic。
    logic类型只能有一个驱动。
    最简单的双状态数据类型是bit,是无符号的;另外四种带符号的双状态数据类型是byte,shortint,int和longint。
    定宽数组的声明和初始化。常量数组。数组操作:for和foreach循环。
    数组操作:聚合比较和复制。数组可同时使用位下标和数组下标。
    如果需要等待数组中的变化,必须使用合并数组。任何数组类型都可以合并,包括动态数组、队列和关联数组。
    动态数组。队列,不要对队列使用构造函数new[ ]。 关联数组。链表。
    数组的方法:数组缩减方法;数组定位方法;数组的排序。
    使用数组定位的方法建立记分板。
    选择存储类型:灵活性;存储器用量;速度;排序;选择最优的数据结构。
    使用typedef创建新的类型。
    创建用户自定义结构:使用struct创建新类型;对结构进行初始化;创建可容纳不同类型的联合;合并结构;在合并结构和非合并结构之间进行选择。
    类型转换:静态转换;动态转换;流操作符。
    枚举类型:定义枚举值;枚举类型的子程序;枚举类型的转换。
    常量。字符串。表达式的位宽。
    结束语:队列很适合用于创建记分板,你可以在上面频繁地增加或删除数据。动态数组允许你在程序运行时再指定数组宽度,为测试平台提供了极大的灵活性。关联数组可用于稀疏存储和一些只有单一索引的记分板。枚举类型通过创建具名常量列表而使得你的代码更便于读写。
    第三章:过程语句与子程序
    过程语句。
    任务、函数以及void函数;在verilog中,任务可以消耗时间,函数不可以,也不能调用任务;函数必须有返回值,且返回值必须被使用;
    SV允许函数调用任务,但只能在fork join_none语句生成的线程中调用。
    子程序参数:C语言风格的子程序参数;参数的方向(在声明子程序参数方面,缺省的类型和方向是logic输入);高级的参数类型(ref const);参数的缺省值;采用名字进行参数传递;常见的代码错误。
    子程序的返回:返回(return)语句;从函数中返回一个数组。
    局部数据存储:自动存储;变量的初始化。
    时间值:时间单位和精度;时间参数;时间和变量;$ time和$ realtime的对比。
    第四章:连接设计与测试平台,4.1-4.5,4.8
    验证一个设计的步骤:生成输入激励;捕获输出相应;决定对错和衡量进度。
    将测试平台和设计分开。
    接口:使用接口来简化连接;连接接口和端口;使用modport将接口中的信号分组;在总线设计中使用modport;创建接口监视模块;接口的优缺点。
    激励时序:使用时钟块控制同步信号的时序;接口中的logic和wire对比;verilog的时序问题;测试平台-设计间的竞争状态;程序块(program block)和时序区域(timing region)。
    接口的驱动和采样:接口同步;接口信号采样;接口信号驱动;通过时钟块驱动接口信号;接口中的双向信号;为什么在程序program中不允许使用always块;时钟发生器。
    将这些模块都连接起来:端口列表中的接口必须连接。
    SV断言:立即断言immediate assertion ;定制断言行为;并发断言。
    第五章:面向对象编程基础
    第六章:随机化;;;第七章:线程以及线程间的通信,7.1-7.5;;;第九章:功能覆盖率;;;第十二章:SystemVerilog与C语言的接口,12.1-12.2;;;

  • 相关阅读:
    AI 挣钱难,科大讯飞营收将突破200亿元
    .Net Core与存储过程(一)
    Flink(五)【DataStream 转换算子(上)】
    MindFusion JavaScript R2 套件 Crack
    基于energy score的out-of-distribution数据检测,LeCun都说好 | NerulPS 2020
    GitHub Pages 站点建设
    网络安全市场投资融资趋势报告
    STM32启动文件startup_stm32f407xx.s
    JsonUtility和LitJson的特点与区别
    scrapy爬虫之网站图片爬取
  • 原文地址:https://blog.csdn.net/tusiji5286/article/details/125205850