我有以下代码需要简化。但这对我来说有点困难。有人可以在这里提供一些帮助吗?
u0,u1,...的数量由功能决定。 与a0,a1 ......
的数量相同如果功能是2或4,它就像现在一样容易处理。但是如果功能是一个非常大的数字,我们必须在这里编写更多的代码。所以我想将这些代码更改为deperl以简化。
assign result_u0_a0 = start_u0_a0
& (start_u0_a1) | (id_u0_a1 == id_u0_a0)
& (start_u1_a0) | (id_u1_a0 == id_u0_a0)
& (start_u1_a1) | (id_u1_a1 == id_u0_a0);
assign result_u0_a1 = start_u0_a1
& (start_u0_a0) | (id_u0_a0 == id_u0_a1)
& (start_u1_a0) | (id_u1_a0 == id_u0_a1)
& (start_u1_a1) | (id_u1_a1 == id_u0_a1);
assign result_u1_a0 = start_u1_a0
& (start_u0_a0) | (id_u0_a0 == id_u1_a0)
& (start_u0_a1) | (id_u0_a1 == id_u1_a0)
& (start_u1_a1) | (id_u1_a1 == id_u1_a0);
assign result_u1_a1 = start_u1_a1
& (start_u0_a0) | (id_u0_a0 == id_u1_a1)
& (start_u0_a1) | (id_u0_a1 == id_u1_a1)
& (start_u1_a0) | (id_u1_a0 == id_u1_a1);
答案 0 :(得分:-1)
您可以简单地编写生成所需输出的perl或python代码。 在Verilog或Systemverilog中,您可以编写宏。但是他们不支持MACROS with Variable number of arguments。这意味着您无法编写适用于2和4的宏。