在这篇文章中,我们将关注Verilog-A语言中的cross函数,其中包含建立两个向量之间的叉积,并输出一个标量。 首先,让我们来看看cross函数的基本语法: real cross(vector A, vector B); 这个函数需要两个向量作为输入。向量A和向量B都必须是三维的。输出将是一个实数标量。下面是cross函数的更详细描述: 1.这个函数...
④ ignore_bins:忽略一些没意义的值,最终他们不会计入覆盖率。 ⑤ 交叉覆盖率:我们经常去检测在某一个时刻多个变量之间的组合情况 —> cross ==>更合适的不是去排除,而是去指定感兴趣的状态。 如果没有排除,默认会有8x11=88种组合; 若没有bins misc =default这句话,即没有涵盖所有的组合,工具会帮忙补全,会...
这种需求就可以通过跨越事件实现。 跨越事件使用 cross 函数来进行描述,其基本结构是 @(cross(表达式, 电压值)),下面是一个使用该事件完成的采样 - 保持器的 Verilog-A 代码: module sh (in, out, smpl) ; output out ; input in, smpl ; electrical in, out, smpl ; real state ; analog begin @(cr...
+1)) SA=1.8; @(cross(V(B)-0.9,+1)) SB=1.8; if(SA==1.
如果像记录在某一时刻,多个变量之间值的组合情况,需要使用交叉(cross)覆盖率。 cross 语句只允许带coverpoint或者简单的变量名。class Transaction ; rand bit [3:0] kind; rand bit [2:0] port; endclass Transaction tr; covergroup CovPort; kind: coverpoint tr.kind; port: coverpoint tr.port; cross kin...
排除部分cross bin 通过使用ignore_bins,binsof和intersect分别指定coverpoint和值域,这样可以清楚很多不关心的cross bin covergroup CovPort; port: coverpoint tr.port {bins port[]= {[0:$]}; } kind: coverpoint tr.kind { bins zero= {0}; bins lo= {[1:3]}; ...
在cross函数中的第2个参数是用来表示方向的,只有从一个方向越过0才能触发事件,+1表示正方向,-1表示负方向,而0或不指定参数,则表示有两个方向。然而cross函数并不触发初始条件事件。因此,编写一个初始化块,先给Dout赋一个初始值,然后检测输入的模拟电压的上升或下降是否越过0,一旦越过,立即触发事件,根据越过0的...
排除部分cross bin 通过使用ignore_bins,binsof和intersect分别指定coverpoint和值域,这样可以清楚很多不关心的cross bin covergroup CovPort; port: coverpoint tr.port {bins port[] = {[0:$]}; } kind: coverpoint tr.kind { bins zero = {0};
在写Verilog TestBench,为了更方便更抽象地对底层模块内部的信号进行控制,经常会使用到跨模块调用的方式,这个就叫做Cross Module Reference,缩写为XMR。 本文就XMR的两种方式做介绍,涉及部分基础的Verilog 知识。 在TB当中,直接对DUT(Design under Test)的信号进行读写是很常见的操作。以一个简单的计数器例子为例: ...
例如,可以使用SystemVerilog中的coverpoint或cross函数来定义覆盖率采样点。 在仿真测试环境中,通过在适当的时机对覆盖率进行采样,以记录覆盖率信息。 在仿真完成之前的最后一个时间点(通常是测试的最后一个时钟周期),添加一个仿真控制语句,用于输出覆盖率bin值。 在该仿真控制语句中,使用覆盖率分析工具提供的API...