在 verilog 模块中使用 BRAM

Using BRAM in verilog module

我想将 BRAM 用于模型并将输出存储在该 BRAM 的另一个块中。但是在模拟的时候,出现如下错误:

[VRFC 10-3236] concurrent assignment to a non-net 'roundreg' is not permitted ["C:/Users/.../keccak_new2/keccak.v":58]

代码:

56    reg [23:0] roundreg [1599:0];
57
58    ROUNDFUNC  RF1(.clk(clk), .in(roundreg[0]), .out(roundreg[1]));

模块输出只能连接到 Verilog 中的网络类型,roundreg[1] 不是网络。如果可能,您可以将 roundreg 声明为 wire [23:0] roundreg [1599:0],尽管这可能会影响其余代码的工作方式。请注意,如果您可以使用 SystemVerilog,则可以避免这些复杂性,并改用 logic 类型。

您还可以查看此问题以了解如何为 FPGA 设计推断块 RAM: