首页 > 解决方案 > 在verilog模块中使用BRAM

问题描述

我想将 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

解决方案


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

您还可以查看此问题以了解如何为 FPGA 设计推断块 RAM: How to initialize contents of inferred Block RAM (BRAM) in Verilog


推荐阅读