如何在verilog或systemverilog中简化以下编程代码

时间:2018-03-24 21:36:33

标签: verilog system-verilog

我有以下代码需要简化。但这对我来说有点困难。有人可以在这里提供一些帮助吗?

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);

1 个答案:

答案 0 :(得分:-1)

您可以简单地编写生成所需输出的perl或python代码。 在Verilog或Systemverilog中,您可以编写宏。但是他们不支持MACROS with Variable number of arguments。这意味着您无法编写适用于2和4的宏。