【发布时间】:2018-03-12 00:26:26
【问题描述】:
有两个 MxN 二维数组:
rand bit [M-1:0] src [N-1:0];
rand bit [M-1:0] dst [N-1:0];
它们都将被随机分开,因此它们的 P 数均为 1'b1,其余为 1'b0。
名为“map”的第三个 MxN 整数数组在两个数组“src”和“dst”之间建立一对一的映射。
rand int [M-1:0] map [N-1:0];
需要对“map”进行约束,以便在随机化之后,对于 src[i][j] 的每个元素,其中 src[i][j] == 1'b1,map[i][j] == M *k+l 当 dst[k][l] == 1 时。对于 map 的每个非零元素,k 和 l 必须是唯一的。
举个例子: 设 M = 3 和 N = 2。
设 src 为
[1 0 1
0 1 0]
让dst成为
[0 1 1
1 0 0]
那么“地图”的一种可能的随机化将是:
[3 0 1
0 2 0]
在上图中:
- 3 表示从 src[0,0] 指向 dst[1,0] (3 = 1*M+0)
- 1 表示从 src[0,2] 指向 dst[0,1] (1 = 0*M+1)
- 2表示从src[1,1]指向dst[0,2] (2 = 0*M+2)
【问题讨论】:
-
如果您提供一组 src、dst 和 map 的示例值会有所帮助
-
添加了一个例子。谢谢。
标签: mapping constraints system-verilog