调试探针条件可在双向或三向分支条件语句中使用。每个调试探针条件都占用调试探针连接到的 ILA 的 PROBE 端口上的 1 个触发器比较器。
重要: 每个 PROBE 端口都可包含 1 到 16 个触发器比较器(在编译时配置)。这意味着根据 PROBE 端口上配置的比较器数量,在整个触发器状态机程序中,您只能使用调试探针条件中的特定调试探针,且次数仅限 1 到 16 次。
调试探针条件由 1 个比较运算符和 1 个值组成。有效的调试探针条件比较运算符包括:
- ==(等于)
- !=(不等于)
- >(大于)
- <(小于)
- >=(大于或等于)
- <=(小于或等于)
有效值格式如下:
<bit_width>'<radix><value>
其中:
- <bit width> 表示探针的宽度(以位数为单位)
-
<radix> 为以下值之一
- b(二进制)
- h(十六进制)
- u(无符号十进制)
-
<value>
为以下值之一-
0
(逻辑 0) -
1
(逻辑 1) -
X
(忽略) -
R
(0 到 1 转换)- 仅对 1 位探针有效 -
F
(1 到 0 转换)- 仅对 1 位探针有效 -
B
(双向转换)- 仅对 1 位探针有效 -
N
(无转换)- 仅对 1 位探针有效
有效的调试探针条件值示例如下:
-
- 1 位二进制值 0
1'b0
- 12 位十六进制值 7A
12'h07A
- 9 位整数值 123
9'u123
调试探针条件语句示例如下:
- 单一位调试探针 abc 等于 0
if (abc == 1'b0) then
- 23 位调试探针 xyz 等于 456
if (xyz >= 23'u456) then
- 23 位调试探针 klm 不等于十六进制值 A5
if (klm != 23'h0000A5) then
多重调试探针条件语句示例如下:
- 2 个调试探针比较,使用“OR”函数组合:
if ((xyz >= 23'u456) || (abc == 1'b0)) then
- 2 个调试探针比较,使用“AND”函数组合:
if ((xyz >= 23'u456) && (abc == 1'b0)) then
- 3 个调试探针比较,使用“OR”函数组合:
if ((xyz >= 23'u456) || (abc == 1'b0) || (klm != 23'h0000A5)) then
- 3 个调试探针比较,使用“AND”函数组合:
if ((xyz >= 23'u456) && (abc == 1'b0) && (klm != 23'h0000A5)) then