verilog - 警告:推断变量“w_addra_t”的锁存器(在带有 FOR 循环的 Verilog/SystemVerilog 中)
问题描述
当我设计一个简单的双端口 RAM 块时,我在综合后有一个推断的锁存器问题。由于代码量大,我刚刚嵌入了这个总是块代码,如下所示:
integer i;
always_latch
begin
for (i=0;i<NUM_RAMS;i=i+1) begin
if (ena_t == 1) begin
w_addra_t[i] = w_addra[i];
end
else begin
w_addra_t[bank_addra[i]] = w_addra[i];
end
end
end
我的 RAM 块包括NUM_RAMS个银行。各个输入数据的地址存储在w_addra中。
当ena_t = 0时,具有给定w_addra地址的数据根据各个bank_addra的值(取决于访问模式)被加扰到w_addra_t 。
我试图用if...else,switch...case替换for循环,generate但问题是一样的。在我的代码中使用不同的always块,左侧在if.else的ena_t中只有w_addra_t[i],没有错误。
如果您有任何想法,我想得到您的建议。我确实寻找了类似的问题,但没有得到任何结果。
非常感谢 :)
解决方案
我不知道它是否会通过更改为来解决您的问题
int i
always_comb
反而。当您使用像整数这样的四态变量时,该工具可能会变得难过?
推荐阅读
- node.js - return res.status(401).json({ msg: "Auth Failed" });
- python - 在 Python Dataframe 中,如何根据每个唯一 ID 的日期匹配第一个事件并捕获该特定事件?
- python-3.x - 烧瓶错误:从应用程序导入视图 ImportError:无法导入名称“视图”
- python - 如何将第一列定义为 pd.read_csv 中的名称
- django - 赋值前引用的错误局部变量“实例”是什么意思
- ios - 如何修复滚动时从 UICollectionViewCell 中消失的图像
- r - py_call_impl 中的 IndexError
- python - 从经过训练的模型中了解 LSTM 训练和验证图及其指标 (LSTM Keras)
- javascript - 如何在某些情况下显示隐藏的图像
- html - 如何仅在 CSS 中计算元素的距离?