在 Vivado 仿真器中,添加了对于部分常用测试激励文件功能特性的支持,如下表所示:
主构造 | 辅构造 | LRM 部分 | 状态 |
---|---|---|---|
字符串数据类型 | 6.16 | 受支持 | |
字符串运算符(IEEE 1800-2012 的表 6-9) | 6.16 | 受支持 | |
Len() | 6.16.1 | 受支持 | |
Putc() | 6.16.2 | 受支持 | |
Getc() | 6.16.3 | 受支持 | |
Toupper() | 6.16.4 | 受支持 | |
Tolower() | 6.16.5 | 受支持 | |
Compare | 6.16.6 | 受支持 | |
Icompare() | 6.16.7 | 受支持 | |
Substr() | 6.16.8 | 受支持 | |
Atoi()、atohex()、atooct() 和 atobin() | 6.16.9 | 受支持 | |
Atoreal() | 6.16.10 | 受支持 | |
Itoa() | 6.16.11 | 受支持 | |
Hextoa() | 6.16.12 | 受支持 | |
Octtoa() | 6.16.13 | 受支持 | |
Bintoa() | 6.16.14 | 受支持 | |
Realtoa() | 6.16.15 | 受支持 | |
动态阵列 | 7.5 | 受支持 | |
动态阵列新增 | 7.5.1 | 受支持 | |
大小 | 7.5.2 | 受支持 | |
删除 | 7.5.3 | 受支持 | |
关联阵列 | 7.8 | 受支持 | |
通配符索引 | 7.8.1 | 受支持 | |
字符串索引 | 7.8.2 | 受支持 | |
类索引 | 7.8.3 | 受支持 | |
整型索引 | 7.8.4 | 受支持 | |
其他用户定义的类型 | 7.8.5 | 受支持 | |
访问无效的索引 | 7.8.6 | 受支持 | |
关联阵列方法 | 7.9 | 受支持 | |
Num() 和 Size() | 7.9.1 | 受支持 | |
Delete() | 7.9.2 | 受支持 | |
Exists() | 7.9.3 | 受支持 | |
First() | 7.9.4 | 受支持 | |
Last() | 7.9.5 | 受支持 | |
Next() | 7.9.6 | 受支持 | |
Prev() | 7.9.7 | 受支持 | |
遍历方法的实参 | 7.9.8 | 受支持 | |
关联阵列赋值 | 7.9.9 | 受支持 | |
关联阵列实参 | 7.9.10 | 受支持 | |
关联阵列字面值 | 7.9.11 | 受支持 | |
队列 | 7.10 | 受支持 | |
队列运算符 | 7.10.1 | 受支持 | |
队列方法 | 7.10.2 | 受支持 | |
Size() | 7.10.2.1 | 受支持 | |
Insert() | 7.10.2.2 | 受支持 | |
Delete() | 7.10.2.3 | 受支持 | |
Pop_front() | 7.10.2.4 | 受支持 | |
Pop_back() | 7.10.2.5 | 受支持 | |
Push_front() | 7.10.2.6 | 受支持 | |
Push_back() | 7.10.2.7 | 受支持 | |
队列元素的持久引用 | 7.10.3 | 受支持 | |
使用赋值和解包的阵列串联来更新队列 | 7.10.4 | 受支持 | |
受限队列 | 7.10.5 | 受支持 | |
类 | 8 | 受支持 | |
通用类 | 8.1 | 受支持 | |
概述 | 8.2 | 受支持 | |
语法 | 8.3 | 受支持 | |
对象(类实例) | 8.4 | 受支持 | |
对象属性和对象参数数据 | 8.5 | 受支持 | |
对象方法 | 8.6 | 受支持 | |
构造函数 | 8.7 | 受支持 | |
静态类属性 | 8.8 | 受支持 | |
静态方法 | 8.9 | 受支持 | |
this 关键字 | 8.10 | 受支持 | |
赋值、重命名和复制 | 8.11 | 受支持 | |
继承和子类 | 8.12 | 受支持 | |
被覆盖的成员 | 8.13 | 受支持 | |
super 关键字 | 8.14 | 受支持 | |
强制类型转换 | 8.15 | 受支持 | |
链式构造函数 | 8.16 | 受支持 | |
数据隐藏和封装 | 8.17 | 受支持 | |
常量类属性 | 8.18 | 受支持 | |
虚拟方法 | 8.19 | 受支持 | |
抽象类和纯虚拟方法 | 8.20 | 受支持 | |
多态性:动态方法查找 | 8.21 | 受支持 | |
类作用域解析运算符 :: | 8.22 | 受支持 | |
块外声明 | 8.23 | 受支持 | |
参数化的类 | 8.24 | 受支持 | |
参数化的类的类解析运算符 | 8.24.1 | 受支持 | |
Typedef 类 | 8.25 | 受支持 | |
接口类 | 8.26 | 受支持 | |
接口类的多重继承 | 8.26.6 | 受支持 | |
存储器管理 | 8.27 | 受支持 | |
类和结构 | 8.28 | 受支持 | |
进程 | 9 | 受支持 | |
并行进程 - Join_Any 分叉和 Join_None 分叉 | 9.3 | 受支持 | |
等待分叉 | 9.6.1 | 受支持 | |
禁用分叉 | 9.6.3 | 受支持 | |
高精度进程控制 | 9.7 | 受支持 | |
时钟设置块 | 14 | 受支持 | |
通用 | 14.1 | 受支持 | |
概述 | 14.2 | 受支持 | |
时钟设置块声明 | 14.3 | 受支持 | |
输入和输出偏差 | 14.4 | 受支持 | |
分层表达式 | 14.5 | 不支持 | |
多个时钟设置块内的信号 | 14.6 | 受支持 | |
时钟设置块作用域和生存期 | 14.7 | 受支持 | |
多个时钟设置块的示例 | 14.8 | 受支持 | |
接口和时钟设置块 | 14.9 | 受支持 | |
时钟设置块事件 | 14.10 | 受支持 | |
周期延迟 | 14.11 | 受支持 | |
默认时钟设置 | 14.12 | 受支持 | |
输入采样 | 14.13 | 受支持 | |
全局时钟设置 | 14.14 | 不支持 | |
同步事件 | 14.15 | 受支持 | |
同步驱动 | 14.16 | 受支持 | |
驱动和非阻塞赋值 | 14.16.1 | 受支持 | |
驱动时钟设置输出信号 | 14.16.2 | 受支持 | |
信号量 | 15.3 | 受支持 | |
信号量方法 new() | 15.3.1 | 受支持 | |
信号量方法 put() | 15.3.2 | 受支持 | |
信号量方法 get() | 15.3.3 | 受支持 | |
信号量方法 try_get() | 15.3.4 | 受支持 | |
邮箱 | 15.4 | 受支持 | |
邮箱方法 new() | 15.4.1 | 受支持 | |
邮箱方法 num() | 15.4.2 | 受支持 | |
邮箱方法 put() | 15.4.3 | 受支持 | |
邮箱方法 try_put() | 15.4.4 | 受支持 | |
邮箱方法 get() | 15.4.5 | 受支持 | |
邮箱方法 try_get() | 15.4.6 | 受支持 | |
邮箱方法 peek() | 15.4.7 | 受支持 | |
邮箱方法 try_peek() | 15.4.8 | 受支持 | |
参数化邮箱 | 15.4.9 | 受支持 | |
命名的事件 | 15.5 | 受支持 | |
触发事件 | 15.5.1 | 受支持 | |
等待事件 | 15.5.2 | 受支持 | |
持久触发 | 15.5.3 | 不支持 | |
事件序列 | 15.5.4 | 不支持 | |
对命名的事件变量执行的操作 | 15.5.5 | 受支持 | |
合并事件 | 15.5.5.1 | 受支持 | |
回收事件 | 15.5.5.2 | 受支持 | |
事件比较 | 15.5.5.3 | 受支持 | |
断言有效 | 16 | 受支持 | |
通用 | 16.1 | 受支持 | |
概述 | 16.2 | 受支持 | |
断言有效 | 16.2 | 受支持 | |
假定 | 16.2 | 受支持 | |
涵盖 | 16.2 | 不支持 | |
限制 | 16.2 | 不支持 | |
即时断言有效 | 16.3 | 受支持 | |
延迟断言有效 | 16.4 | 不支持 | |
并发断言有效概述 | 16.5 | 受支持 | |
采样 | 16.5.1 | 受支持 | |
断言有效时钟 | 16.5.2 | 受支持 | |
布尔表达式 | 16.6 | 受支持 | |
顺序 | 16.7 | 受支持 | |
声明顺序 | 16.8 | 受支持 | |
顺序声明中的有型形参 | 16.8.1 | 受支持 | |
顺序声明中的局部变量形参 | 16.8.2 | 受支持 | |
顺序操作 | 16.9 | 受支持 | |
运算符优先 | 16.9.1 | 受支持 | |
顺序重复 | 16.9.2 | 受支持 | |
采样值函数 | 16.9.3 | 受支持 | |
全局时钟设置过去和未来采样值函数 | 16.9.4 | 不支持 | |
AND 运算 | 16.9.5 | 受支持 | |
相交(含长度限制的 AND) | 16.9.6 | 受支持 | |
OR 运算 | 16.9.7 | 受支持 | |
First_match 运算 | 16.9.8 | 受支持 | |
顺序条件 | 16.9.9 | 受支持 | |
序列中包含的另一序列 | 16.9.10 | 受支持 | |
根据较简单的序列来构成序列 | 16.9.11 | 受支持 | |
局部变量 | 16.10 | 受支持 | |
在匹配的序列上调用子例程 | 16.11 | 受支持 | |
Declaring 属性 | 16.12 | 受支持 | |
Sequence 属性 | 16.12.1 | 受支持 | |
Negation 属性 | 16.12.2 | 受支持 | |
Disjunction 属性 | 16.12.3 | 受支持 | |
Conjunction 属性 | 16.12.4 | 受支持 | |
If-else 属性 | 16.12.5 | 受支持 | |
Implication | 16.12.6 | 受支持 | |
Implies 属性和 iff 属性 | 16.12.7 | 受支持 | |
属性例化 | 16.12.8 | 受支持 | |
Followed-by 属性 | 16.12.9 | 不支持 | |
Next time 属性 | 16.12.10 | 不支持 | |
Always 属性 | 16.12.11 | 不支持 | |
Until 属性 | 16.12.12 | 不支持 | |
Eventually 属性 | 16.12.13 | 不支持 | |
Abort 属性 | 16.12.14 | 不支持 | |
弱运算符和强运算符 | 16.12.15 | 不支持 | |
大小写 | 16.12.16 | 不支持 | |
递归属性 | 16.12.17 | 不支持 | |
属性声明中的有型形参 | 16.12.18 | 受支持 | |
属性声明中的局部变量形参 | 16.12.19 | 受支持 | |
属性示例 | 16.12.20 | 受支持 | |
有限长度与无限长度行为对比 | 16.12.21 | 受支持 | |
非简并 | 16.12.22 | 受支持 | |
多时钟支持 | 16.13 | 不支持 | |
并发断言有效 | 16.14 | 受支持 | |
断言有效声明 | 16.14.1 | 受支持 | |
假定声明 | 16.14.2 | 受支持 | |
涵盖声明 | 16.14.3 | 不支持 | |
限制声明 | 16.14.4 | 不支持 | |
在过程性代码外使用并发断言有效声明 | 16.14.5 | 受支持 | |
在过程性代码内嵌入并发断言有效 | 16.14.6 | 不支持 | |
推断值函数 | 16.14.7 | 不支持 | |
非空洞求值 | 16.14.8 | 不支持 | |
禁用 iff 解析 | 16.15 | 受支持 | |
时钟解析 | 16.16 | 受支持 | |
适用于多时钟序列和属性的语义前导时钟 | 16.16.1 | 受支持 | |
Expect 语句 | 16.17 | 不支持 | |
时钟设置块和并发断言有效 | 16.18 | 受支持 | |
随机约束 | 18 | 受支持 | |
概念和用法 | 18.3 | 受支持 | |
随机变量 | 18.4 | 受支持 | |
Rand 修饰符 | 18.4.1 | 受支持 | |
Randc 修饰符 | 18.4.2 | 受支持 | |
约束块 | 18.5 | 受支持 | |
外部约束块 | 18.5.1 | 受支持 | |
约束继承 | 18.5.2 | 受支持 | |
设置成员资格 | 18.5.3 | 受支持 | |
分布 | 18.5.4 | 受支持 | |
Implication | 18.5.6 | 受支持 | |
If-else 约束 | 18.5.7 | 受支持 | |
迭代约束 | 18.5.8 | 受支持 | |
foreach 迭代约束 | 18.5.8.1 | 受支持 | |
阵列缩减迭代约束 | 18.5.8.2 | 受支持 | |
全局约束 | 18.5.9 | 受支持 | |
可变排序 | 18.5.10 | 受支持 | |
静态约束块 | 18.5.11 | 受支持 | |
约束中的函数 | 18.5.12 | 受支持 | |
约束保护 | 18.5.13 | 受支持 | |
软核约束 | 18.5.14 | 受支持 | |
随机化方法 | 18.6.1 | 受支持 | |
Pre_randomize 和 post_randomize | 18.6.2 | 受支持 | |
随机化方法的行为 | 18.6.3 | 受支持 | |
内联约束 | 18.7 | 受支持 | |
局部作用域解析 | 18.7.1 | 受支持 | |
禁用含 rand_mode 的随机变量 | 18.8 | 受支持 | |
控制含 constraint_mode 的约束 | 18.9 | 受支持 | |
动态约束修改 | 18.10 | 受支持 | |
内联随机变量控制 | 18.11 | 受支持 | |
内联约束检查器 | 18.11.1 | 受支持 | |
作用域变量 std::randomize 的随机化 | 18.12 | 受支持 | |
项作用域变量 std::randomize 添加约束 | 18.12.1 | 受支持 | |
随机数字系统函数和方法 | 18.13 | 受支持 | |
$urandom | 18.13.1 | 受支持 | |
$urandom_range | 18.13.2 | 受支持 | |
srandom | 18.13.3 | 受支持 | |
Get_randstate | 18.13.4 | 受支持 | |
Set_randstate | 18.13.5 | 受支持 | |
随机稳定性 | 18.14 | 受支持 | |
手动植入随机化 | 18.15 | 受支持 | |
Randcase | 18.16 | 受支持 | |
Randsequence | 18.17 | 不支持 | |
编程 | 24 | 受支持 | |
编程构造 | 24.3 | 受支持 | |
调度编程构造内代码的语义 | 24.3.1 | 受支持 | |
编程端口连接 | 24.3.2 | 受支持 | |
消除测试激励文件竞赛 | 24.4 | 受支持 | |
周期/事件模式内的阻塞任务 | 24.5 | 受支持 | |
匿名程序 | 24.6 | 不支持 | |
程序控制任务 | 24.7 | 受支持 | |
功能覆盖 | 19 | 受支持 | |
通用 | 19.1 | 受支持 | |
概述 | 19.2 | 受支持 | |
定义覆盖模型:covergroup | 19.3 | 受支持 | |
在类中使用 covergroup | 19.4 | 受支持 | |
定义覆盖点 | 19.5 | 受支持 | |
指定值的分箱 | 19.5.1 | 受支持 | |
含 covergroup 表达式的覆盖点分箱 | 19.5.1.1 | 受支持 | |
设置 covergroup 表达式的覆盖点分箱 | 19.5.1.2 | 不支持 | |
指定转换的分箱 | 19.5.2 | 受支持 | |
对应覆盖点的自动分箱创建 | 19.5.3 | 受支持 | |
覆盖点分箱的通配符规范 | 19.5.4 | 受支持 | |
排除覆盖点值或转换 | 19.5.5 | 受支持 | |
指定违规的覆盖点值或转换 | 19.5.6 | 受支持 | |
值解析 | 19.5.7 | 受支持 | |
定义交叉覆盖 | 19.6 | 受支持 | |
定义交叉覆盖分箱 | 19.6.1 | 受支持 | |
用户定义的交叉覆盖和选择表达式示例 | 19.6.1.1 | 受支持 | |
含 covergroup 表达式的交叉分箱 | 19.6.1.2 | 受支持 | |
交叉分箱自动定义的类型 | 19.6.1.3 | 受支持 | |
交叉分箱设置表达式 | 19.6.1.4 | 受支持 | |
排除叉乘 | 19.6.2 | 受支持 | |
指定违规的叉乘 | 19.6.3 | 受支持 | |
指定覆盖选项 | 19.7 | 受支持 | |
Covergroup 类型选项 | 19.7.1 | 受支持 | |
预定义的 coverage 方法 | 19.8 | 受支持 | |
覆盖内置采样方法 | 19.8.1 | 受支持 | |
预定义的覆盖系统任务和系统函数 | 19.9 | 受支持 | |
选项和 type_option 成员的组织 | 19.10 | 受支持 |
注释: 不支持区分下列动态类型:队列、动态阵列、关联阵列和类等。因此,等待动态类型更新的块可能无法正常工作。例如:
module top();
int c[$];
event e1;
initial
begin
c[0] = 10;
for(int i = 0; i <= 10; i++)
begin
c = {i, c};
-> e1;
#5;
end
end
always@(*) $display($time, " trying to read sensitivity on dynamic type : %d", c[0]);
// this won't work as sensitivity on dynamic type is not supported
always @(e1) $display($time, " coming from event sensitivity : %d", c[0]); // this we
can do as WA
always_comb if(c.size() > 0) $display($time, " Coming from size sensitivity : %d",
c[0]); // sensitivity on size works