我有一段简单的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
无论如何,我可以让时间分析为此工作吗?
答案 0 :(得分:4)
你在这里遇到的问题是常数的乘法是一个常数,因此没有时间。
测量时序的方法是将乘法器与2个输入进行合成。然后执行包括SDF定时信息的门级SIM。将两个输入从0到固定值。在波形编辑器中,您应该能够在乘法器的输出上看到纹波。测量从新输入到稳定输出的时间。
记住硅时序变化很大,你可能会快速或慢速(或集中)硅。温度也会影响时间。你需要运行至少有两个角Max和Min的sim。导致从(0输入到)固定输入转换到稳定结果的最大和最小时间。
同时也意识到此方法中使用的时序为0,不同的起始条件会有所不同。
您可以尝试使用两个LUT(查找表)保存输入值0和固定值,然后查看合成工具的功能。可能会优化到LUT为0和答案。
答案 1 :(得分:2)
需要输入才能进行任何时间分析。
合成器知道mult1
和mult2
是常量。由于outProd
仅取决于常量,因此outProd
将优化为常量。常数没有时间信息。