通过了解Xilinx综合报告减少延迟

时间:2011-10-28 09:51:47

标签: vhdl xilinx

我正在Xilinx中用VHDL编程8051指令集。在写完逻辑并生成综合报告后,我看到延迟为13.330ns(频率为75.020 MHz),逻辑电平= 10。

这个值相当少(频率),我需要加强它,但我无法理解使用综合报告的延迟是什么/在哪里。

这是报告中关于时间安排的部分:

=========================================================================
Timing constraint: Default period analysis for Clock 'clk_div1'
  Clock period: 13.330ns (frequency: 75.020MHz)
  Total number of paths / destination ports: 156134 / 3086
-------------------------------------------------------------------------
Delay:               13.330ns (Levels of Logic = 10)
  Source:            SEQ/alu_op_code_1 (FF)
  Destination:       SEQ/alu_src_2L_7 (FF)
  Source Clock:      clk_div1 rising
  Destination Clock: clk_div1 rising

  Data Path: SEQ/alu_op_code_1 to SEQ/alu_src_2L_7
                                Gate     Net
    Cell:in->out      fanout   Delay   Delay  Logical Name (Net Name)
    ----------------------------------------  ------------
     FDE:C->Q             40   0.591   1.345  SEQ/alu_op_code_1 (SEQ/alu_op_code_1)
     LUT4:I1->O            2   0.643   0.527  ALU1/ci32_SW0 (N2251)
     LUT4:I1->O            1   0.643   0.000  ALU1/adder_comp/C11_F (N1292)
     MUXF5:I0->O           3   0.276   0.531  ALU1/adder_comp/C11 (ALU1/adder_comp/C1)
     MUXF5:S->O           12   0.756   0.964  ALU1/adder_comp/C21 (ALU1/adder_comp/C2)
     LUT4:I3->O            8   0.648   0.760  ALU1/ans_L<5>104 (ALU1/ans_L<5>104)
     LUT4:I3->O           17   0.648   1.054  ALU1/ans_L<7>95_SW0 (N264)
     LUT4:I3->O            1   0.648   0.000  SEQ/alu_src_2H_and000055_SW3_F (N1304)
     MUXF5:I0->O           1   0.276   0.423  SEQ/alu_src_2H_and000055_SW3 (N599)
     LUT4_D:I3->O         15   0.648   1.049  SEQ/alu_src_2L_mux0005<7>121228 (N285)
     LUT4:I2->O            1   0.648   0.000  SEQ/alu_src_2H_mux0007<6> (SEQ/alu_src_2H_mux0007<6>)
     FDE:D                     0.252          SEQ/alu_src_2H_1
    ----------------------------------------
    Total                     13.330ns (6.677ns logic, 6.653ns route)
                                       (50.1% logic, 49.9% route)

有人可以解释发生了什么吗?

3 个答案:

答案 0 :(得分:3)

一些定义:

  • 门延迟:用于导致块输出发生变化的输入
  • 净延迟:信号到达下一个区块的时间

13.33ns由两部分组成。门延迟6.677ns,净延迟6.653ns

门延迟的主要因素是功能包含在逻辑锥内的复杂程度。净延迟的主要因素是信号驱动的事物数量。

报告中的每一行都在讨论一个逻辑块。因此第一行alu_op_code_1寄存器,以及从C引脚(Clk)到Q引脚(输出)所需的时间。扇出列表示Q引脚驱动的逻辑块数量。在这种情况下它是40,这就是净延迟相当高的原因。对于像ALU的操作码这样的常用寄存器而言,这是非常容易理解的。

我们也可以看一下整个路径,看看它是从SEQ中的操作码进入ALU。通过加法器,返回到SEQ块,最后进入另一个名为alu_src_2H_1的寄存器。那道路是什么,我不能告诉你。只有拥有源的人才能做到这一点,然后就是试图查看这两个寄存器之间的逻辑。

我有点困惑的是,这条路看起来像是达到了时间(13.33ns是目标),但你说你需要“加强”。为什么呢?

答案 1 :(得分:3)

查看报告中的名称并与源代码进行比较。

基本上,你只有在“SEQ”实例中从ALU操作码流向ALU输出信号“alu_src_2L”的组合逻辑:

来源:SEQ / alu_op_code_1(FF)   目的地:SEQ / alu_src_2L_7(FF)

查看详细信息,您可以看到在此特定路径中,大部分时间用于ALU“ALU1”,特别是加法器/比较逻辑“adder_comp”。如果您希望在此路径中延迟较少,则必须优化逻辑或使用其他寄存器切割路径(并使设计的其余部分仍然适用于该更改)。

答案 2 :(得分:1)

首先,在为FPGA编写HDL或调整HDL时,了解特定FPGA的功能和限制确实是值得的。 Xilinx在记录每个FPGA模型方面做得非常出色。查看LUT4和MUXF5模块,您的FPGA系列可能是Spartan 3?通过研究数据表,您可以看到哪些硬件结构非常有效,哪些需要更多资源。一般而言,硬件越接近芯片上的实际内容,它的执行速度越快,占用的面积就越小。

例如,Xilinx LUT也可以用作移位寄存器,这意味着您不必在片中使用触发器。如果确保移位寄存器映射到LUT,这会带来非常明显的改善。 XST尽力使用HDL来推断这些有效的映射,但通常会有一些阻止这些有效映射的愚蠢事情,例如在复位信号之前检查启用信号。确保您研究合成器的输出以及位置和路径,以发现可以改善FPGA映射的实例。 Xilinx文档提供了XST可用于推断更高效组件的示例VHDL和Verilog。有时,直接简单地实例化组件通常更容易。对于复杂的组件,有UNIMACRO和COREGEN向导,它们可以生成非常高效的硬件。

对于一个极端的例子,PicoBlaze microcontroller专门用于利用Xilinx FPGA架构。研究PicoBlaze源代码以查看这种有效映射的示例可能会有所帮助。

其次,如果组合逻辑路径太长,那么它将限制您的最大时钟频率。除了重写代码以更好地映射到FPGA,或重写以消除不必要的硬件资源之外,您还可以在组合逻辑链的中间位置插入触发器(寄存器)。在计算机体系结构中,这称为流水线操作,将使您增加每条指令的周期数。例如,PicoBlaze每个指令使用两个周期。英特尔奔腾4每条指令大约有17个周期。如果你聪明,那么你可以用一种方式编写HDL,开始处理一条指令,同时完成最后一条指令的处理。这意味着每条指令仍然需要2个时钟周期(延迟),但是每个周期(吞吐量)可以退出一条指令。大多数微控制器如8051和PicoBlaze都关注延迟,大多数微处理器(如x86架构)都关注吞吐量。