简单的介绍了 Synopsys 的 SystemVerilog 检 查库的使用,极其单元的语法和使用示例。
Synopsys SVA 检查库 应用指南
lu.hongbo
简单的介绍了 Synopsys 的 SystemVerilog 检 查库的使用,极其单元的语法和使用示例。
lu.hongbo
| 1 SystemVerilog断言(SVA)检查器库...................................................................................... 11 |
|---|
| 1.1 概览......................................................................................................................... 11 |
| 1.2 全局控制(Global Controls)............................................................................... 12 |
| 1.3 检查器触发条件..................................................................................................... 13 |
| 1.4 带有VMM报告性质的检查器............................................................................. 14 |
| 1.5 定制报告................................................................................................................. 14 |
| 1.6 共享语法................................................................................................................. 15 |
| 1.6.1 severity_level .................................................................................................. 15 |
| 1.6.2 options ............................................................................................................. 15 |
| 1.6.3 property_type .................................................................................................. 15 |
| 1.6.4 msg .................................................................................................................. 15 |
| 1.6.5 category ........................................................................................................... 15 |
| 1.6.6 coverage_level_i ............................................................................................. 16 |
| 1.6.7 inst_name ........................................................................................................ 16 |
| 1.6.8 clk .................................................................................................................... 17 |
| 1.6.9 reset_n ............................................................................................................. 17 |
| 1.7 使用覆盖率等级来报告检查器的结果................................................................. 17 |
| 1.7.1 生成报告......................................................................................................... 17 |
| 1.7.2 查看结果......................................................................................................... 18 |
| 1.7.2.1 指示盘............................................................................................. 18 |
| 1.7.2.2 查看覆盖等级Level 1和Level 3结果......................................... 19 |
| 1.7.2.3 查看Level 2覆盖率结果............................................................... 19 |
| 1.8 用于SVA CG检查器库的参数检查..................................................................... 20 |
| 1.8.1 使用模型......................................................................................................... 21 |
| 1.9 使用SystemVerilog中的模式............................................................................... 22 |
| 1.9.1 SystemVerilog的整体设计目标.................................................................... 22 |
| 1.9.2 一些被限制成Verilog2001的设计文件....................................................... 23 |
| 1.9.3 SVA确认其库使能VMM信息服务............................................................ 23 |
| 1.9.4 建议使用模式................................................................................................. 24 |
| 2 SVA基本检查器.................................................................................................................... 25 |
| 2.1 检查器列表............................................................................................................. 25 |
| 2.2 检查器描述............................................................................................................. 26 |
| 2.2.1 assert_always................................................................................................... 26 |
| 2.2.1.1 语法................................................................................................. 26 |
| 2.2.1.2 参数................................................................................................. 26 |
| 2.2.1.3 覆盖率模式..................................................................................... 27 |
| 2.2.1.4 例..................................................................................................... 27 |
| 2.2.1.5 基于名称的示例............................................................................. 28 |
| 2.2.2 assert_always_on_edge ................................................................................... 28 |
| 2.2.2.1 语法................................................................................................. 28 |
| 2.2.2.2 参数................................................................................................. 28 |
| 2.2.2.3 覆盖率模式..................................................................................... 29 |
| 2.2.2.4 | 例..................................................................................................... 29 |
|---|---|
| 2.2.2.5 | 基于名称的示例............................................................................. 30 |
| 2.2.3 assert |
_change .................................................................................................. 31 |
| 2.2.3.1 | 语法................................................................................................. 31 |
| 2.2.3.2 | 参数................................................................................................. 31 |
| 2.2.3.3 | 覆盖率模式..................................................................................... 32 |
| 2.2.3.4 | 例..................................................................................................... 33 |
| 2.2.3.5 | 基于名称的示例............................................................................. 34 |
| 2.2.4 assert |
_cycle_sequence ..................................................................................... 35 |
| 2.2.4.1 | 语法................................................................................................. 35 |
| 2.2.4.2 | 参数................................................................................................. 35 |
| 2.2.4.3 | 覆盖率模式..................................................................................... 36 |
| 2.2.4.4 | 例..................................................................................................... 36 |
| 2.2.4.5 | 基于名称的示例............................................................................. 38 |
| 2.2.5 assert |
_decrement ............................................................................................. 38 |
| 2.2.5.1 | 语法................................................................................................. 38 |
| 2.2.5.2 | 参数................................................................................................. 39 |
| 2.2.5.3 | 覆盖率模式..................................................................................... 39 |
| 2.2.5.4 | 例..................................................................................................... 39 |
| 2.2.5.5 | 基于名称的示例............................................................................. 40 |
| 2.2.6 assert |
_delta ...................................................................................................... 41 |
| 2.2.6.1 | 语法................................................................................................. 41 |
| 2.2.6.2 | 参数................................................................................................. 41 |
| 2.2.6.3 | 覆盖率模式..................................................................................... 42 |
| 2.2.6.4 | 例..................................................................................................... 42 |
| 2.2.6.5 | 基于名称的示例............................................................................. 43 |
| 2.2.7 assert |
_even_parity ........................................................................................... 44 |
| 2.2.7.1 | 语法................................................................................................. 44 |
| 2.2.7.2 | 参数................................................................................................. 44 |
| 2.2.7.3 | 覆盖率模式..................................................................................... 44 |
| 2.2.7.4 | 例..................................................................................................... 44 |
| 2.2.7.5 | 基于名称的示例............................................................................. 46 |
| 2.2.8 assert |
_fifo_index ............................................................................................. 46 |
| 2.2.8.1 | 语法................................................................................................. 46 |
| 2.2.8.2 | 参数................................................................................................. 46 |
| 2.2.8.3 | 覆盖率模式..................................................................................... 47 |
| 2.2.8.4 | 例..................................................................................................... 48 |
| 2.2.8.5 | 基于名称的示例............................................................................. 50 |
| 2.2.9 assert |
_frame .................................................................................................... 50 |
| 2.2.9.1 | 语法................................................................................................. 50 |
| 2.2.9.2 | 参数................................................................................................. 50 |
| 2.2.9.3 | 覆盖率模式..................................................................................... 51 |
| 2.2.9.4 | 例..................................................................................................... 52 |
| 2.2.9.5 | 基于名称的示例............................................................................. 53 |
| 2.2.10 assert_ |
handshake ............................................................................................. 54 |
|---|---|
| 2.2.10.1 | 语法................................................................................................. 54 |
| 2.2.10.2 | 参数................................................................................................. 54 |
| 2.2.10.3 | 覆盖率模式..................................................................................... 55 |
| 2.2.10.4 | 例..................................................................................................... 56 |
| 2.2.10.5 | 基于名称的示例............................................................................. 58 |
| 2.2.11 assert_ |
implication ........................................................................................... 58 |
| 2.2.11.1 | 语法................................................................................................. 58 |
| 2.2.11.2 | 参数................................................................................................. 58 |
| 2.2.11.3 | 覆盖率模式..................................................................................... 59 |
| 2.2.11.4 | 例..................................................................................................... 59 |
| 2.2.11.5 | 基于名称的示例............................................................................. 60 |
| 2.2.12 assert_ |
increment .............................................................................................. 61 |
| 2.2.12.1 | 语法................................................................................................. 61 |
| 2.2.12.2 | 参数................................................................................................. 61 |
| 2.2.12.3 | 覆盖率模式..................................................................................... 61 |
| 2.2.12.4 | 例..................................................................................................... 62 |
| 2.2.12.5 | 基于名称的示例............................................................................. 63 |
| 2.2.13 assert_ |
never ..................................................................................................... 63 |
| 2.2.13.1 | 语法................................................................................................. 63 |
| 2.2.13.2 | 参数................................................................................................. 64 |
| 2.2.13.3 | 例..................................................................................................... 64 |
| 2.2.13.4 | 基于名称的示例............................................................................. 65 |
| 2.2.14 assert_ |
next ....................................................................................................... 65 |
| 2.2.14.1 | 语法................................................................................................. 65 |
| 2.2.14.2 | 参数................................................................................................. 66 |
| 2.2.14.3 | 覆盖率模式..................................................................................... 66 |
| 2.2.14.4 | 例..................................................................................................... 67 |
| 2.2.14.5 | 基于名称的示例............................................................................. 68 |
| 2.2.15 assert_ |
no_overflow ......................................................................................... 68 |
| 2.2.15.1 | 语法................................................................................................. 69 |
| 2.2.15.2 | 参数................................................................................................. 69 |
| 2.2.15.3 | 覆盖率模式..................................................................................... 69 |
| 2.2.15.4 | 例..................................................................................................... 70 |
| 2.2.15.5 | 基于名称的示例............................................................................. 72 |
| 2.2.16 assert_ |
no_transition ......................................................................................... 72 |
| 2.2.16.1 | 语法................................................................................................. 72 |
| 2.2.16.2 | 参数................................................................................................. 72 |
| 2.2.16.3 | 覆盖率模型..................................................................................... 73 |
| 2.2.16.4 | 例..................................................................................................... 73 |
| 2.2.16.5 | 基于名称的示例............................................................................. 74 |
| 2.2.17 assert_ |
no_underflow ....................................................................................... 75 |
| 2.2.17.1 | 语法................................................................................................. 75 |
| 2.2.17.2 | 参数................................................................................................. 75 |
| 2.2.17.3 | 覆盖率式......................................................................................... 76 |
|---|---|
| 2.2.17.4 | 例..................................................................................................... 76 |
| 2.2.17.5 | 基于名称的示例............................................................................. 78 |
| 2.2.18 assert_ |
odd_parity ............................................................................................ 78 |
| 2.2.18.1 | 语法................................................................................................. 78 |
| 2.2.18.2 | 参数................................................................................................. 79 |
| 2.2.18.3 | 覆盖率模式..................................................................................... 79 |
| 2.2.18.4 | 例..................................................................................................... 79 |
| 2.2.18.5 | 基于名称的示例............................................................................. 80 |
| 2.2.19 assert_ |
one_cold ............................................................................................... 80 |
| 2.2.19.1 | 语法................................................................................................. 81 |
| 2.2.19.2 | 参数................................................................................................. 81 |
| 2.2.19.3 | 覆盖率模式..................................................................................... 81 |
| 2.2.19.4 | 例..................................................................................................... 82 |
| 2.2.19.5 | 基于名称的示例............................................................................. 83 |
| 2.2.20 assert_ |
one_hot ................................................................................................. 83 |
| 2.2.20.1 | 语法................................................................................................. 84 |
| 2.2.20.2 | 参数................................................................................................. 84 |
| 2.2.20.3 | 覆盖率模式..................................................................................... 84 |
| 2.2.20.4 | 例..................................................................................................... 84 |
| 2.2.20.5 | 基于名称的示例............................................................................. 85 |
| 2.2.21 assert_ |
proposition ........................................................................................... 86 |
| 2.2.21.1 | 语法................................................................................................. 86 |
| 2.2.21.2 | 参数................................................................................................. 86 |
| 2.2.21.3 | 例..................................................................................................... 86 |
| 2.2.21.4 | 基于名称的示例............................................................................. 87 |
| 2.2.22 assert_ |
quiescent_state ..................................................................................... 88 |
| 2.2.22.1 | 语法................................................................................................. 88 |
| 2.2.22.2 | 参数................................................................................................. 88 |
| 2.2.22.3 | 覆盖率模式..................................................................................... 89 |
| 2.2.22.4 | 例..................................................................................................... 89 |
| 2.2.22.5 | 基于名称的示例............................................................................. 90 |
| 2.2.23 assert_ |
range ..................................................................................................... 90 |
| 2.2.23.1 | 语法................................................................................................. 91 |
| 2.2.23.2 | 参数................................................................................................. 91 |
| 2.2.23.3 | 覆盖率模式..................................................................................... 91 |
| 2.2.23.4 | 例..................................................................................................... 92 |
| 2.2.23.5 | 基于名称的示例............................................................................. 93 |
| 2.2.24 assert_ |
time ...................................................................................................... 94 |
| 2.2.24.1 | 语法................................................................................................. 94 |
| 2.2.24.2 | 参数................................................................................................. 94 |
| 2.2.24.3 | 覆盖率模式..................................................................................... 95 |
| 2.2.24.4 | 例..................................................................................................... 95 |
| 2.2.24.5 | 基于名称的示例............................................................................. 97 |
| 2.2.25 assert_ |
transition............................................................................................... 97 |
|---|---|
| 2.2.25.1 | 语法................................................................................................. 97 |
| 2.2.25.2 | 参数................................................................................................. 97 |
| 2.2.25.3 | 覆盖率模式..................................................................................... 98 |
| 2.2.25.4 | 基于名称的示例............................................................................. 99 |
| 2.2.26 assert_ |
unchange ............................................................................................ 100 |
| 2.2.26.1 | 语法............................................................................................... 100 |
| 2.2.26.2 | 参数............................................................................................... 100 |
| 2.2.26.3 | 覆盖率模式................................................................................... 101 |
| 2.2.26.4 | 例................................................................................................... 101 |
| 2.2.26.5 | 基于名称的示例........................................................................... 103 |
| 2.2.27 assert_ |
width................................................................................................... 103 |
| 2.2.27.1 | 语法............................................................................................... 103 |
| 2.2.27.2 | 参数............................................................................................... 103 |
| 2.2.27.3 | 覆盖率模式................................................................................... 104 |
| 2.2.27.4 | 例................................................................................................... 104 |
| 2.2.27.5 | 基于名称的示例........................................................................... 106 |
| 2.2.28 assert_ |
win_change ........................................................................................ 106 |
| 2.2.28.1 | 语法............................................................................................... 106 |
| 2.2.28.2 | 参数............................................................................................... 106 |
| 2.2.28.3 | 覆盖率模式................................................................................... 107 |
| 2.2.28.4 | 例................................................................................................... 107 |
| 2.2.28.5 | 基于名称的示例:....................................................................... 109 |
| 2.2.29 assert_ |
win_unchange .................................................................................... 109 |
| 2.2.29.1 | 语法............................................................................................... 109 |
| 2.2.29.2 | 参数............................................................................................... 109 |
| 2.2.29.3 | 覆盖率模式................................................................................... 110 |
| 2.2.30 assert_ |
window ............................................................................................... 110 |
| 2.2.30.1 | 语法............................................................................................... 111 |
| 2.2.30.2 | 参数............................................................................................... 111 |
| 2.2.30.3 | 覆盖率模型................................................................................... 111 |
| 2.2.30.4 | 例................................................................................................... 112 |
| 2.2.30.5 | 基于名称的示例........................................................................... 113 |
| 2.2.31 assert_ |
zero_one_hot ...................................................................................... 114 |
| 2.2.31.1 | 语法............................................................................................... 114 |
| 2.2.31.2 | 参数............................................................................................... 114 |
| 2.2.31.3 | 覆盖率模式................................................................................... 114 |
| 2.2.31.4 | 例................................................................................................... 115 |
| 2.2.31.5 | 基于名称的示例........................................................................... 116 |
| 3 SVA高级检查器...... |
............................................................................................................ 117 |
| 3.1 检查器描述 |
........................................................................................................... 117 |
| 3.2 共享语法... |
............................................................................................................ 117 |
| 3.3 检查器列表 |
........................................................................................................... 117 |
| 3.3.1 assert_ |
arbiter ................................................................................................. 118 |
| 3.3.1.1 语法............................................................................................... 118 |
|---|
| 3.3.2 assert_bits ...................................................................................................... 119 |
| 3.3.2.1 语法............................................................................................... 119 |
| 3.3.3 assert_code_distance ..................................................................................... 119 |
| 3.3.3.1 语法............................................................................................... 119 |
| 3.3.4 assert_data_used ............................................................................................ 119 |
| 3.3.4.1 语法............................................................................................... 120 |
| 3.3.5 assert_driven ................................................................................................. 120 |
| 3.3.5.1 语法............................................................................................... 120 |
| 3.3.6 assert_dual_clk_fifo ...................................................................................... 120 |
| 3.3.6.1 语法............................................................................................... 120 |
| 3.3.7 assert_fifo ...................................................................................................... 121 |
| 3.3.7.1 语法............................................................................................... 121 |
| 3.3.8 assert_hold_value .......................................................................................... 121 |
| 3.3.8.1 语法............................................................................................... 121 |
| 3.3.9 assert_memory_async ................................................................................... 121 |
| 3.3.9.1 语法............................................................................................... 122 |
| 3.3.10 assert_memory_sync ..................................................................................... 122 |
| 3.3.10.1 语法............................................................................................... 122 |
| 3.3.11 assert_multiport_fifo ..................................................................................... 122 |
| 3.3.11.1 语法............................................................................................... 122 |
| 3.3.12 assert_mutex .................................................................................................. 123 |
| 3.3.12.1 语法............................................................................................... 123 |
| 3.3.13 assert_next_state ........................................................................................... 123 |
| 3.3.13.1 语法............................................................................................... 123 |
| 3.3.14 assert_no_contention ..................................................................................... 124 |
| 3.3.14.1 语法............................................................................................... 124 |
| 3.3.15 assert_packet_flow ........................................................................................ 124 |
| 3.3.15.1 语法............................................................................................... 124 |
| 3.3.16 assert_rate ...................................................................................................... 125 |
| 3.3.16.1 语法............................................................................................... 125 |
| 3.3.17 assert_reg_loaded .......................................................................................... 125 |
| 3.3.17.1 语法............................................................................................... 125 |
| 3.3.18 assert_req_ack_unique .................................................................................. 125 |
| 3.3.18.1 语法............................................................................................... 125 |
| 3.3.19 assert_req_requires ........................................................................................ 126 |
| 3.3.19.1 语法............................................................................................... 126 |
| 3.3.20 assert_stack ................................................................................................... 126 |
| 3.3.20.1 语法............................................................................................... 126 |
| 3.3.21 assert_valid_id............................................................................................... 127 |
| 3.3.21.1 语法............................................................................................... 127 |
| 3.3.22 assert_value ................................................................................................... 127 |
| 3.3.22.1 语法............................................................................................... 127 |
| 附录A ........................................................................................................................................... 128 |
| A.1什么是断言................................................................................................................... 128 |
|---|
| A.2为什么使用SystemVerilog断言(SVA) ...................................................................... 128 |
| A.3 SystemVerilog的调度................................................................................................... 130 |
| A.4 SVA术语....................................................................................................................... 131 |
| A.4.1并发断言............................................................................................................ 131 |
| A.4.2即时断言............................................................................................................ 132 |
| A.5建立SVA块................................................................................................................ 133 |
| A.6一个简单的序列................................................................................................... 134 |
| A.7边沿定义的序列........................................................................................................... 135 |
| A.8逻辑关系的序列........................................................................................................... 137 |
| A.9序列表达式................................................................................................................... 138 |
| A.10时序关系的序列......................................................................................................... 139 |
| A.11 SVA中的时钟定义..................................................................................................... 140 |
| A.12禁止属性..................................................................................................................... 142 |
| A.13一个简单的执行块..................................................................................................... 144 |
| A.14蕴含操作符................................................................................................................. 145 |
| A.14.1交叠蕴含.......................................................................................................... 145 |
| A.14.2非交叠蕴含...................................................................................................... 146 |
| A.14.3后续算子带固定延迟的蕴含.......................................................................... 148 |
| A.14.4使用序列作为先行算子的蕴含...................................................................... 149 |
| A.15 SVA检验器的时序窗口............................................................................................. 150 |
| A.15.1重叠的时序窗口.............................................................................................. 152 |
| A.15.2无限的时序窗口.............................................................................................. 153 |
| A.16 ―ended‖结构................................................................................................................. 155 |
| A.17使用参数的SVA检验器........................................................................................... 158 |
| A.18使用选择运算符的SVA检验器............................................................................... 159 |
| A.19使用true表达式的SVA检验器............................................................................... 161 |
| A.20 ―$past‖构造.................................................................................................................. 163 |
| A.21重复运算符................................................................................................................. 165 |
| A.21.1连续重复运算符[*] ......................................................................................... 167 |
| A.21.2用于序列的连续重复运算符[*] ..................................................................... 168 |
| A.21.3用于带延迟窗口的序列的连续重复运算符[*] ............................................. 169 |
| A.21.4连续运算符[*]和可能性运算符..................................................................... 171 |
| A.21.5跟随重复运算符[->] ........................................................................................ 172 |
| A.21.6非连续重复运算符[=] ..................................................................................... 174 |
| A.22 ―and‖构造.................................................................................................................... 175 |
| A.23 ―intersect‖构造............................................................................................................. 177 |
| A.24 ―or‖构造....................................................................................................................... 180 |
| A.25 ―first_match‖构造........................................................................................................ 182 |
| A.29 ―throughout‖构造......................................................................................................... 183 |
| A.27 ―within‖构造................................................................................................................ 185 |
| A.28内建的系统函数......................................................................................................... 187 |
| A.29 ―disable iff‖构造.......................................................................................................... 188 |
| A.30使用―intersect‖控制序列的长度................................................................................ 190 |
| A.31在属性中使用形参..................................................................................................... 192 |
|---|
| A.32嵌套的蕴含................................................................................................................. 194 |
| A.33在蕴含中使用if/else .................................................................................................. 195 |
| A.34 SVA中的多时钟定义................................................................................................. 197 |
| A.35 ―matched‖构造............................................................................................................. 199 |
| A.36 ―expect‖构造................................................................................................................ 201 |
| A.37使用局部变量的SVA ................................................................................................ 202 |
| A.38在序列匹配时调用子程序......................................................................................... 205 |
| A.39将SVA与设计连接................................................................................................... 207 |
| A.40 SVA与功能覆盖......................................................................................................... 209 |
修订记录
V1.0 ……………………………………………………………………….Initial
预览结束 · 共 212 页
下载完整版