【问题标题】:Does breaking large combinational logic into small logic really reduce the delay?将大组合逻辑分解成小逻辑真的可以减少延迟吗?
【发布时间】:2019-04-24 03:47:24
【问题描述】:

我正在尝试了解我朋友的 verilog 设计,他将大逻辑分解为小逻辑,他说这有助于他解决时序问题。但是我不明白为什么,因为综合之后,那些只是一堆 AND 和 OR 门,逻辑是一样的,这怎么能减少延迟? 这是原始代码:

    assign state0 = ({104{d0_xq}} & markerState0[519:416]) | 
                ({104{d1_xq}} & markerState1[519:416]) |
                ({104{d2_xq}} & markerState2[519:416]) |
                ({104{d3_xq}} & markerState3[519:416]);

assign state1 = ({104{d0_xq}} & markerState0[415:312]) |
                ({104{d1_xq}} & markerState1[415:312]) |
                ({104{d2_xq}} & markerState2[415:312]) |
                ({104{d3_xq}} & markerState3[415:312]);

assign state2 = ({104{d0_xq}} & markerState0[311:208]) |
                ({104{d1_xq}} & markerState1[311:208]) |
                ({104{d2_xq}} & markerState2[311:208]) |
                ({104{d3_xq}} & markerState3[311:208]);

assign state3 = ({104{d0_xq}} & markerState0[207:104]) |
                ({104{d1_xq}} & markerState1[207:104]) |
                ({104{d2_xq}} & markerState2[207:104]) |
                ({104{d3_xq}} & markerState3[207:104]);

assign state4 = ({104{d0_xq}} & markerState0[103:0]) |
                ({104{d1_xq}} & markerState1[103:0]) |
                ({104{d2_xq}} & markerState2[103:0]) |
                ({104{d3_xq}} & markerState3[103:0]);

always @(posedge clock) begin
    state_xq <= {state0, state1, state2, state3, state4};  
end

如果我使用有什么区别:

assign state = ({520{d0_xq}} & markerState0) |
                ({520{d1_xq}} & markerState1) |
                ({520{d2_xq}} & markerState2) |
                ({520{d3_xq}} & markerState3);
always @(posedge clock) begin
    state_xq <= state;  
end

【问题讨论】:

  • 如果您使用的是 Xilinx,我建议您查看两者的原理图输出并进行比较。除此之外,很难判断两者是否会导致不同的合成。我不知道你还能怎么知道。

标签: verilog


【解决方案1】:

如果它是某种 ASIC 技术,您可以深入研究生成的网表并检查是否由于某种原因使用了不同的原语,因此即使在逻辑上两种结构都给出相同的结果,也会实现不同的时序。无论哪种方式,这都很奇怪,我预计 STA 结果不会出现显着差异,但我不是综合引擎方面的专家。

另外,工具应该允许您生成 reg-2-reg 报告,显示路径的确切细分,这应该揭示工具在哪里应用不同的方法(例如,在哪个操作上)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    相关资源
    最近更新 更多