1

我有一段简单的 Verilog 代码,我在其中修复了两个数字。45 和 46。将它们相乘并显示输出。为此,我编写了一段简单的 Verilog 代码。

但是,当我生成综合后仿真模型时,综合报告不显示任何时序分析。但是,当变量是输入时,它会找到电路的逻辑和布线时间。

我对为固定输入创建的电路的这些指标感兴趣。

这是我的代码:

module SimpleMult(
    outProd
     );
    reg signed[7:0] mult1;
    reg signed[7:0] mult2;
   output reg signed[15:0]outProd;
    initial begin
     mult1 = 45;
     mult2 = 46;
    end

    always@(*) begin
    outProd = mult1 * mult2;
    end
endmodule

无论如何我可以让时序分析为此工作吗?

4

2 回答 2

4

您在这里面临的问题是常数的乘法是常数,因此没有时间。

测量时序的一种方法是用 2 个输入合成乘法器。然后执行包含 SDF 时序信息的门级 sim。将两个输入从 0 变为固定值。在波形编辑器中,您应该能够看到乘法器输出的纹波。测量从新输入到稳定输出的时间。

请记住,硅时间变化很大,您可能会获得快速或缓慢(或居中)的硅。温度也会影响时间。您将需要使用至少两个角 Max 和 Min 来运行 sim。导致从(0 输入到)固定输入转换到稳定结果的最大和最小时间。

还要意识到这个方法中使用的时序是从0开始的,不同的启动条件会有所不同。

您可以尝试使用两个 LUT(查找表)来保存输入值 0 和固定值,然后查看合成工具的功能。可能会优化为 0 和答案的 LUT。

于 2013-06-18T10:03:31.987 回答
2

需要有输入才能进行任何时间分析。

合成器知道mult1并且mult2是常数。由于outProd只依赖于常数,outProd将被优化为常数。常量没有时间信息。

于 2013-06-18T05:50:28.813 回答