摘要:验证平台的编写: interface 不用管DUT的功能是什么,只需要知道接口是什么,方向,以及这些接口的规格; 开头interface <接口名>(<这里一般将时钟信号单独声明>); 将所有的端口变量声明为logic型,位也一起声明; clocking cb @(<敏感边沿,一般为posedge>
阅读全文
摘要:引言:在verilog中已有的系统函数: $display $monitor $finish $readmemh 以及 $readmemb :都是从文件中读取数据,二进制和十六进制的区别 $random ... SV增添的: array system tasks variables system t
阅读全文
摘要:引言: 传统的验证质量是借助代码覆盖工具来度量的。代码覆盖率反映了HDL代码的执行程度。代码覆盖工具通常通过插件来跟踪代码执行。代码覆盖工具提供的特性集通常包括行/块覆盖、状态机覆盖、表达式覆盖、事件覆盖和翻转覆盖。 传统覆盖对于下面的方面有局限性: 验证non-implemented 特性(Ove
阅读全文
摘要:摘要:SV最后的特性之一就是interface,interface将端口进行绑定并作为一个单个项目保存,并允许在设计中被实例化,极大地提高了可维护性。 1 Interface 接口还包含任务和函数。为了方便主从支持(一个的输入是另一个的输出),接口包含了modport。 1 //++++++++++
阅读全文
摘要:摘要:Verilog中除全局的系统任务和函数外,所有的数据、函数和任务都在模块中。Verilog模块也可以包含其他模块的实例,并且任何未实例化的模块都位于顶层,另外模块的层次结构通常是任意的,在维护端口列表上无疑会花费大量的精力。 SV对verilog的一个重要增强是可以通过模块端口(包括网络)来传
阅读全文
摘要:摘要:断言验证是指使用断言语言来指定设计中的预期行为,以及相对于验证中的设计来评估断言的工具。 ABV:基于断言的验证运行设计工程师在设计过程中获取验证信息,还支持内部状态、数据路径和错误先决条件覆盖分析; 一个 简单例子就是FIFO的判断空满; HDL可以编写断言,但其形式是很复杂的; 1. 断言
阅读全文
摘要:摘要:verilog中的module用于描述 硬件,它可以始终包含initial和assign语句。SV引入了program,其中包含了完整的测试平台 。 1。 program与module program 的目的: 为testbench提供接入点; 创建了一个域来封装program的数据、任务和函
阅读全文
摘要:摘要:SV添加了一个时钟块,用于识别时钟信号,实现计时和同步需求 。 输入采样 同步事件 同步驱动 1. input and output skew 通常在基于周期的代码设计和验证中,输入在时钟边沿采样,输出在时钟边沿驱动; 如果指定了skew,则输入在时钟skew时间之前采样,输出在时钟skew之
阅读全文
摘要:摘要:高级且易于使用的同步和通信机制对于控制用于为复杂系统或高度反应性的测试台架建模的动态流程之间发生的交互类型至关重要。 verilog提供了-> 和 @ ,但仅局限于静态对象,无法处理动态对象; SV提供了以下三种方式用于进程键通信: semapgore mailbox events 1 Sem
阅读全文
摘要:摘要:约束驱动的测试生产允许用户为功能验证自动生成测试,随机测试比传统的、直接的测试方法更有效,随机测试可以找到直接测试难以覆盖的内容。SV允许用户声明随机约束,由求解器处理约束,生产满足约束的随机值。 verilog使用$random产生随机整数,默认32位; SV添加了rand变量、randc变
阅读全文
摘要:摘要:SV引入了面向对象的类数据;类允许通过对象句柄动态地创建、删除、赋值和访问对象,类提供了继承和抽象类建模,从而为对象带来了多态性。 Objects Object members Constructors Static class members Assignments Inheritance
阅读全文
摘要:摘要:本节主要讲述任务和函数以及参数传递的内容。 1.任务和函数 任务和函数与verilog中相同,但SV增加了在静态任务和函数中声明自动变量以及在自动任务和函数中声明静态变量的能力 1.1 task 端口默认为输入,除非声明为其他类型; 数据类型默认为logic,除非声明为其他类型; 可以存在多个
阅读全文
摘要:摘要:在一个组合逻辑建模的always块中,忘记一个其他块会导致意外的锁存。为了避免这种错误,SV添加了专门的always_comb和always_latch块来表明设计意图,还增加了一个always_iff块来指示顺序逻辑。 静态进程:always,initial, fork...join; 动态
阅读全文
摘要:摘要:本章主要介绍过程控制语句与控制流的一下方法 Procedural statement: initial:在仿真的一开始使用,只执行一次; final:在仿真结束前执行,SV新增的内容; always:always_comb, always_latch, always_ff, SV新增的内容;
阅读全文
摘要:摘要:SV的操作符是verilog和c语言的集合; 1. Assignment operators(赋值操作符) = += -= *= /= %= &= |= ^= <<= >>= <<<= >>>= 赋值操作符在语义上等同于阻塞赋值,任何操作符左边的表达式只计算一次; 例子: 1 module a
阅读全文
摘要:1. Array 数组是所有相同类型变量的集合,并用名称加索引进行访问; 在数组名之前声明的为数组宽度,数组名之后的为数组维度; 1.1 Packed and unpacked array 在SV里packed array指只有在数组名之前做了声明,带有数组宽度的数组, unpacked array
阅读全文
摘要:摘要:System Verilog 增加了新的数据类型,也对已有的数据类型进行了优化,以提高模拟器运行时的内存使用率; shortint and longint data types; shortreal (real was already defined in verilog) data type
阅读全文
摘要:摘要:本章节主要介绍System verilog 中的 literal value time value array value structure value improvement to string literals 1. integer and logic literals 可用如下方法进行
阅读全文
摘要:1. verilog 的一般设计流程: 1. specification(specs) 2. high level design 3. low level (micro) design 4. RTL coding 5. verification 2. 以一个arbiter为例 Specs Two a
阅读全文
摘要:相比于verilog和VHDL,SV扩展的内容 1. 增加了一些类似于C语言的数据类型: int,typedef,struct,union,enum 2. 增加了一些动态数据类型: struct,classes,dynamic queues,dynamic arrys 3. 加强了对flow的控制:
阅读全文