【问题标题】:Synthesis error in VerilogVerilog 中的综合错误
【发布时间】:2011-08-04 09:29:02
【问题描述】:

我正在尝试在 verilog 中实现 FatICA 算法。我已经编写了整个代码,直到模拟它没有显示错误,但是当我尝试合成代码时,它给出了一个错误,指出“”;“期待而不是”。””

我正在使用四个浮点模块进行算术计算,并且我已经生成了 1000 个 sum、sqrt ... 等实例,使用 for 循环进行中间计算。以下是生成代码

genvar s;

generate
    for(s=1;s<=4000;s=(s+1))

    begin:cov_mul_ins 
            Float32Mul cov_mul  (.CLK(clk),
                        .nRST(1'b1),
                        .leftArg(dummy_14),
                        .rightArg(dummy_15),
                        .loadArgs(1'b1)
                        );
    end
endgenerate

现在我正在使用点运算符访问各个实例

 for(d=1;d<=2;d=(d+1))

begin
   for(e=1;e<=2;e=(e+1))
    begin
       for(c=1;c<=1000;c=(c+1))
          begin
        if((d==1)&&(e==1))
            begin
            dummy_14=centered_data_copy[d][c];
            dummy_15=Parent.centered_data_float_trans[c][e];

        #10 ***cov_mul_ins[c].cov_mul***(.CLK(clk),
                             .nRST(1'b1),
                             .leftArg(dummy_14),
                             .rightArg(dummy_15),
                             .loadArgs(1'b1),
                             .product(cov_temp[c][1])
                             );

如果有人能指出我所犯的错误,我将不胜感激。谢谢!

【问题讨论】:

  • @osgx 我认为生成语句中没有错误,但我不确定我是否以正确的方式访问实例化模块。我尝试在网络上搜索它但没有找到任何东西.然后,在 samir palnitkar 的书中有一个例子,它有类似的数组实例化,所以我照做了。在模拟时它没有显示任何错误,但在合成时它给出了错误。

标签: verilog


【解决方案1】:

需要注意的几点:

  • 无法综合模块外引用。这意味着如果您希望代码是可合成的,您不能“窥视”实例化模块来查看网络或调用函数。不过,这对于测试平台来说非常棒。
  • 您尝试的函数调用有延迟,将被忽略,即#10 cov_mul_ins[c].cov_mul ( ... );

我可以看到你的想法是软件式的,让我们把所有东西都放在一个类和调用方法中。这对于测试平台来说是完美的,但正如您所见,综合会抱怨。说到硬件,你需要考虑硬件——问问自己需要构建哪些块来运行你的算法。例如,如果您的算法需要对每个输入样本进行 30 次乘法运算,那么您需要 30 个乘法器实例,或者需要一个乘法器并通过它对 30 次操作进行排序。或 15 个乘法器,每个采样周期执行 2 次乘法,或 10 个乘法器执行 3 次等...

【讨论】:

  • 感谢您的回复。我认为您的建议比我的更好。
  • 你有你要搭建的电路框图吗?如果没有,画一个通常是个好主意。如果它是一个巨大的数据路径,则不必绘制每个实例。粗略的框图还可以帮助您查看重复的块,并为您提供一些代码。
  • 另外,您需要在实例化乘法器时连接它们的输出。
【解决方案2】:

尝试删除“#10”,因为我认为它不可合成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多