我试图通过使用generate语句来减少一些代码,但是我只能通过嵌套来弄清楚该怎么做,但是我不认为这是允许的。
我所拥有的基本上是一些for循环(需要生成),在其中,我想根据代码生成时设置的值运行代码的三个部分之一(然后需要第二个生成) 。有没有办法做到这一点并使工具满意?
这是我正在尝试的简单照片:
//TAPS_PER_CHAN is a value defined when the code is built
genvar srcNode, dstNode, tapIdx;
generate
for (dstNode=0; dstNode<NODES; dstNode=dstNode+1)
begin: dstForLoop
generate
if(TAPS_PER_CHAN <= 4)
begin
call module one
end
else if (TAPS_PER_CHAN <= 8)
begin
call module two
end
else if (TAPS_PER_CHAN <= 16)
begin
call module three
end
endgenerate
end
endgenerate
Run Code Online (Sandbox Code Playgroud)
是的,只需删除然后嵌套的generate
/endgenerate
关键字即可。
请参阅IEEE Std 1800-2012 § 27生成构造。
//TAPS_PER_CHAN is a value defined when the code is built
genvar srcNode, dstNode, tapIdx;
generate
for (dstNode=0; dstNode<NODES; dstNode=dstNode+1)
begin: dstForLoop
// generate <-- remove this
if(TAPS_PER_CHAN <= 4)
begin
call module one
end
else if (TAPS_PER_CHAN <= 8)
begin
call module two
end
else if (TAPS_PER_CHAN <= 16)
begin
call module three
end
// endgenerate <-- remove this
end
endgenerate
Run Code Online (Sandbox Code Playgroud)
例子在这里