![](https://img-blog.csdnimg.cn/ab310b5fc49f4dceaf9aa82c897bd38c.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
SV
文章平均质量分 81
SV学习笔记
maopao_TT
这个作者很懒,什么都没留下…
展开
-
SV学习笔记(五)-接口
接口对于设计复用非常有利接口减少了模块之间错误连接的可能性如果要添加新的信号,只需要在接口中声明,而不必在模块中声明由于接口将有关的信号都集合在一起,因此在使用这些信号时需要添加一个层次(接口实例名)接口往往会将有关的信号集合在一起,这意味着对于拥有多组不想管信号的设计而言,他可能需要有多个接口实例才能完成其它模块的连接。原创 2023-08-17 15:48:52 · 130 阅读 · 1 评论 -
SV学习笔记(九)-类
以下这种方式表示p1和p12代表两个不同的对象,在创建p12时,将从p1拷贝其成员变量,这种拷贝方式称为浅拷贝(shallow copy)类在定义时,需要定义构建函数,如果未定义,则系统会自动帮助定义一个空的构建函数(没有形式参数,函数体亦为空)浅拷贝中,只拷贝了对象的值,如果对象某个变量变量另一个对象,那拷贝生成的对象那个变量也会指向相同的变量。父类的对象不能赋值给子类的句柄,编译会报错,因为可能会造成内存的非法访问。子类和父类有相同的变量时,各自类的方法会修改各自类中的变量。SV在类的定义时,只需要。原创 2023-08-17 15:57:54 · 108 阅读 · 1 评论 -
SV学习笔记(二)-芯片验证概述
证明设计功能正确,符合设计功能描述的流程确认产品功能、服务或系统是否符合规则、要求、规范和强制条件,通常是还没有面向客户的内部过程,看有没有“把事情做对”验证要占据前端设计70%左右的工作量对DUT(design under test)创建测试序列观察DUT的输入输出对DUT的输出数据与预期数据进行对比报告检查结果重大缺陷造成额外的成本损失时越靠后越巨大缺陷率增长曲线的曲率有事逐渐减小的快而全地提供缺陷率增长是理想目标。原创 2023-08-17 15:21:02 · 149 阅读 · 1 评论 -
SV学习笔记(一)-验证技术
目前SoC尺寸增加,市场比例增加的情况下,越来越多的IC设计公司都将Emulation/FPGA原型开发引入了验证流程中。最近的10年中,IC/ASIC市场经历了巨大的痛苦,已解决日益增加的验证复杂性,而这主要是采用SOC级设计所带来的。SoC尺寸增大的同时,也让原有的仿真方案速度降低,而对于一些复杂场景,性能测试,软件开发的要求无法满足。相比于20年前的定向激励和测试通过率,目前SOC的动态验证技术讲依赖更多的途径来量化验证进度。functional coverage:功能覆盖率。原创 2023-08-17 15:10:06 · 97 阅读 · 1 评论 -
SV学习笔记(三)-SV数据类型
SystemVerilog是IEEE 1364-2005 Verilog标准的拓展此拓展包含了用来实现可综合设计的设计语言特性,也包含了用来对大型设计做验证的验证语言特性SystemVerilog是用来建立一种新的硬件描述和验证语言SV旨在通过一种统一的语言来帮组工程师对大型复杂硬件系统进行建模,并且对其功能进行验证通过用户自定义类型,将通过更少的代码来表示更多的功能用户自定义类型使得代码自身的可读性更好通过typedef来创建用户自定义类型。原创 2023-08-17 15:37:32 · 266 阅读 · 1 评论 -
SV学习笔记(十)-包的使用
为了可以在多个模块(硬件)或者类(软件)之间共享用户定义的类型,SV添加了包(package)包的概念参考与VHDL,用户自定义的类型如:类、方法、变量、枚举类等都可以在包中定义。原创 2023-08-17 16:00:33 · 161 阅读 · 1 评论 -
SV学习笔记(八)-数组
由于处理器在访问存储时的访问时随机散乱的,这意味在整个测试中,处理器也许只会访问几百个存储地址,而剩下大多数地址都将被初始化为0,浪费了仿真时的存储空间。SV引入了关联数组,可以用来存放散列的数据成员,这一点于其它脚本语言Perl或python类似,散列的索引类型除了。SV页保留了Verilog索引非组合型数组或者数组片段的能力,这种方式为数组及数组片段的拷贝带来了方便。组合型数组会进一步规范数据的存储方式,而不需要关心编译或者操作系统的区别,数据是连续存放的。with查找满足条件的数据成员更方便。原创 2023-08-17 15:55:41 · 1064 阅读 · 1 评论 -
SV学习笔记(七)-任务和函数
类似于C语言,函数(function)和任务(task)可以提高代码的复用性和整洁度目的都是在于将大型的过程块切分成更小的片段,而便于阅读和代码维护函数和任务的区别function不会消耗仿真时间,task可能会消耗仿真时间function无法(不建议)调用task,task可以调用function一个可以返回数据的function只能返回一个单一数值,而task或者void function不会返回数值。原创 2023-08-17 15:53:04 · 904 阅读 · 1 评论 -
SV学习笔记(十一)-随机约束
时,如果有参数,那么只会随机化参数变量,而其余变量无论之前是否被声明为rand/randc,都不会参与到随机化中。如果用户在使用时,指定了外部约束对同一个变量做二次约束,或者用户定义了子类中对同一个变量做了二次约束,那么。有时候在表达式中无法简单的表述约束,例如要计算合并数组中的’1‘,可以在约束块中调用函数来描述约束。没有约束的随机变量会包含许多无效和非法的值,这会使得有效激励的产生变得低效。软约束相互冲突时,根据就近原则,哪里调用随机,哪里的软约束有效。操作符,它们表示每个值的权重时相同的。原创 2023-08-18 10:03:05 · 523 阅读 · 1 评论 -
SV学习笔记(十二)-线程控制
当信箱容量写满时,后续再写入的动作会被挂起,直到信箱中数据被读取,使得信箱有空间以后才可以继续写入。信箱mailbox可以使得进程之间的信息得以交换,数据可以由一个进程写入信箱,再由另一个进程获取。可以结合num()与get()或者put(),防止信箱为空或者为满的时候阻塞。将信息写入信箱,信箱满了会阻塞:put(data),将data写到信箱中。信箱数据快照,能拿到信箱内的数据,但信箱内的数据不会减少:peek()从信箱中取出数据:get(data),从信箱中取出数据赋值给data。原创 2023-08-18 10:05:21 · 336 阅读 · 1 评论 -
SV学习笔记(十三)-多态、类型转换
Verilog对整数和实数类型,或者不同位宽的向量之间进行转换。转换时指定目标类型,并在要转换的表达式前加上单引号。静态转换操作符不对转换值进行检查。原创 2023-08-18 10:06:53 · 110 阅读 · 0 评论 -
SV学习笔记(六)-验证环境结构
*测试平台(testbench)**是整个验证系统的总称它包括验证结构中的各个组件(component)组件之间的连接关系,测试平台的配置和控制从更系统的意义来讲,它还包括编译仿真的流程、结果分析报告和覆盖率检查等从狭义上讲,我们主要关注验证平台的结构和组件部分,他们可以产生设计所需的各种输入,也会在此基础上进行设计功能的检查。原创 2023-08-17 15:51:16 · 175 阅读 · 1 评论 -
SV学习笔记(四)-设计特性
仿真和综合可能会将case语句做不同的翻译,Verilog中定义case语句在执行时按照优先级,而综合编译器则会优化case语句中多余的逻辑,可能会出现编译后case逻辑于想要实现不符的情况。为了保持仿真与综合的一致性,SV提供了unique和priorty的声明,结合case,casex和casez来进一步实现case对应的硬件电路。unique case可以并行执行(即分支没有先后顺序,谁满足运行谁),并且case选项必须完备。unique case不能又重叠的选项,即多个满足条件的选项。原创 2023-08-17 15:41:08 · 302 阅读 · 1 评论 -
SV学习笔记(十四)-覆盖率
验证没有量化,那么就意味着没有尽头伴随着复杂的SoC系统的验证难度系数成倍增加,无论是定向测试还是随机测试,我们在验证的过程中终究要回答两个问题是否所有设计的功能在验证计划中都已经验证?代码中的某些部分是否从未执行过?覆盖率就是用来帮助我们在仿真中回答以上问题的指标覆盖率已经被广泛采用,作为衡量验证过程中的重要数据一旦通过覆盖率来量化验证,我们可以在更复杂的情况下捕捉一些功能特性是否被覆盖当我们在测试X特性时,Y特性是否也在同一时刻被使能和测试。原创 2023-08-18 10:08:55 · 863 阅读 · 0 评论