同步电路要求数据在一个时钟周期内从源寄存器传到目的寄存器。对于合成工具,是延迟块,你添加到你的Simulink金宝app®模型以时钟速率运行。这些工具需要数据在一个时钟周期内在块之间传输。如果该工具无法在一个时钟周期内在模型中的一个或多个信号路径的寄存器之间传播数据,则会发生计时故障。
工具报告a松弛每个信号路径的信息,对应于所需时间和到达时间之间的差值。所需时间是信号必须到达目的寄存器的预期时间。到达时间是信号到达那个点所经过的时间。正松弛表示信号到达比所需时间快得多,路径通过了计时要求。负松弛表示信号路径比所需时间慢,且路径无法满足时序要求。为了确保你的设计符合时序要求,加速所有有负松弛的信号路径。
要确定您的设计是否满足计时要求,以及如何解决计时故障,请执行以下步骤。
当你运行IP核心代
工作流或金宝appSimulink实时FPGA I/O
工作流程Vivado®如果您的Simulink模型不满足时序要求,H金宝appDL Coder™将在构建FPGA比特流工作流的步骤。看到的:
瞄准Xilinx Zynq平台有关如何运行IP核心代
工作流。
基于Speedgoat simulink可编程I/O模块的FPGA编程与配置金宝app有关如何运行金宝appSimulink实时FPGA I/O
工作流。当您运行此工作流时,请使用支持Xilinx的Speedgoat板金宝app®Vivado作为合成工具。
当你运行构建FPGA比特流任务,如果你离开在外部运行构建流程复选框,无论是否存在计时故障,HDL Coder将结果显示为通过了并提供警告信息。在外部控制台中查看构建日志,以确定是否存在潜在的计时故障。
在外部控制台中,如果出现计时故障,您将看到最糟糕的松弛和此消息:不满足时间限制!
当你清除在外部运行构建流程复选框,然后运行构建FPGA比特流任务,如果发生计时失败,则任务失败,您将在结果subpane。
在这两种情况下,当出现计时故障时,代码生成器将用具有相同名称和后缀的位流替换前面的位流_timingfailure.bit
或_timingfailure.sof
这取决于您是使用Vivado还是Quartus创建项目®.例如,如果调用了先前生成的位流system_top_wrapper.bit
,如果出现计时故障,HDL Coder将此位流重命名为system_top_wrapper_timingfailure.bit
.
如果你运行项目目标设备任务,任务失败。
如果您已经实现了用于解决计时失败的自定义逻辑,那么您可以指定将计时失败报告为警告而不是错误。然后可以继续工作流程并生成FPGA位流。在对目标SoC设备进行编程之前,建议您已经解决了定时故障。
解决了定时故障后,要验证故障已经解决,可以使用HDL Coder软件。将计时失败更改为报告错误,然后重新运行IP核心代
工作流程以确保构建FPGA比特流任务通过。如果构建FPGA比特流任务仍然失败,请执行前面几节中的步骤来识别和解决计时失败。
要指定将计时失败报告为警告:
在你运行构建FPGA比特流任务,将HDL Workflow Advisor导出到脚本。在脚本中,要将计时失败报告为警告,请使用ReportTimingFailure
财产的hdlcoder。WorkflowConfig
类。然后,您可以运行脚本或将脚本导入到HDL Workflow Advisor,然后运行工作流。
中国。ReportTimingFailure = hdlcoder.ReportTiming.Warning;
如果您的目标是已经为板定义的自定义参考设计,要将计时失败报告为警告,请使用ReportTimingFailure
财产的hdlcoder。ReferenceDesign
类。
hRD。ReportTimingFailure = hdlcoder.ReportTiming.Warning;
要了解如何识别关键路径并解决计时故障,请执行前面部分中的步骤。
关键路径是在输入和输出之间具有最大延迟的组合路径。这条路径对应的是负松弛最严重的信号路径。通过识别和优化关键路径,您可以解决计时故障并改进设计的计时。您可以使用这些策略中的任何一种来确定设计中的关键路径。
在结果子窗格中,要打开合成工具生成的计时报告,请选择timing_report链接。您可以使用报告来确定设计中的关键路径。在报告中,如果你搜索糟糕的松弛
,你可以找出最糟糕的设置漏洞。然后,使用源
和目的地
点来识别关键路径。例如,此报告为LED闪烁模型hdlcoder_led_blinking
说明了关键路径在高密度脂蛋白计数器块。
----------------------------------------------------------------------------------------- 从时钟:clk_out1_system_top_clk_wiz_0_0时钟:clk_out1_system_top_clk_wiz_0_0设置:1193没有端点,严重松弛-2.478 ns,总违反-1226.784 ns持有:0没有端点,严重松弛0.034 ns,总违反0.000 ns PW:2没有端点,严重松弛-0.576 ns,总共违反-0.731 ns ----------------------------------------------------------------------------------------- 最大延迟路径 ----------------------------------------------------------------------------------------- 松(违反):-2.478 ns(需要时间-到达时间)来源:system_top_i/led_count_ip_0/U0/u_led_count_ip_dut_inst/ u_led_count_ip_src_led_counter/HDL_Counter1_out1_reg[0]/C (rising edge-triggered cell fre clockby clk_out1_system_top_clk_wiz_0_0 {rise@0.000ns fall@1.000ns period=2.000ns})目的:system_top_i / led_count_ip_0 /情况/ u_led_count_ip_dut_inst / u_led_count_ip_src_led_counter HDL_Counter1_out1_reg [20] / R(上升边沿触发细胞FDRE过clk_out1_system_top_clk_wiz_0_0 {rise@0.000ns fall@1.000ns期= 2.000 ns})路径组:clk_out1_system_top_clk_wiz_0_0路径类型:设置(Max在缓慢的过程角落)要求:2.000ns (clk_out1_system_top_clk_wiz_0_0 rise@2.000ns - clk_out1_system_top_clk_wiz_0_0 rise@0.000ns) Data Path Delay: 3.899ns (logic 1.412ns (36.211%) route 2.487ns (63.789%))
使用HDL Coder来评估和突出显示模型中的关键路径,而不需要综合设计。关键路径估计通过使用来自特定目标数据库的时序数据执行静态时序分析来识别关键路径。不使用合成工具估计关键路径可能导致不准确的计时结果。关键路径估计可以加快识别和优化设计中的关键路径的过程。它是表演的另一种选择FPGA综合与分析使用HDL工作流顾问。想要了解更多,请看不运行综合的关键路径估计.
要估计关键路径,在设置报告选项任务,选择生成高级时间关键路径报告复选框。运行工作流到生成RTL代码和IP核的任务。
HDL编码器在代码生成报告中生成一个关键路径估计部分。在本节中,当您选择链接到criticalpathestimated
脚本,代码生成器将突出显示生成模型中的关键路径。这个图显示了hdlcoder_sfir_fixed_stream
建模时突出显示关键路径。
要想在设计中获得更准确的关键路径信息和突出显示关键路径,请使用backannotation。要使用反向注释,您必须离开当前的Workflow Advisor会话,然后运行通用ASIC / FPGA
使用合成结果对模型进行注释的工作流。
在使用backannotation之前,建议您将当前的HDL Workflow Advisor设置导出到脚本中。通过将设置导出到脚本,您可以在关键路径上进行迭代,并自定义各种设置以优化设计,直到满足时间要求。您可以将Workflow Advisor脚本导入到HDL Workflow Advisor中,然后运行工作流。另请参阅使用脚本运行HDL工作流.
使用backannotation:
在设置目标设备和合成工具任务,选择通用ASIC / FPGA
随着目标工作流程.为合成工具,指定用于运行IP核心代
工作流。
当您指定这些设置时,HDL Coder将重置此任务及其之后的所有任务。
选择运行这个任务.
在设置目标频率任务,指定用于运行的相同目标频率IP核心代
工作流。选择运行这个任务.
右键单击用合成结果注释模型任务和选择运行到选定任务.
当你运行链接到用合成结果注释模型任务时,代码生成器将突出显示生成模型中的关键路径。图中显示的关键路径hdlcoder_led_blinking
模型位于高密度脂蛋白计数器块。
要解决计时故障,您可以使用这些建议中的任何一个或建议的组合,直到您的设计满足目标频率。
您可以使用速度优化,如分布式管道和时钟速率管道,通过添加管道寄存器而保留函数行为,来中断关键路径。通过减少关键路径,可以实现更高的时钟频率,并增加信号的到达时间,直到它等于所需的时间,松弛变为零。
分布式管道和分层分布式管道优化将设计中存在的延迟转移到子系统层次结构中。当您启用分层分布式管道时,请确保所有子系统块有DistributedPipelining启用。如果您的设计不满足时间要求,您可以通过使用InputPipeline或OutputPipeline块的属性。控件的“HDL块属性”对话框可以指定这些属性子系统.
如果分布式管道无法移动寄存器,您可以添加延迟块,然后启用保存设计延误设置。重置检查全局设置任务并运行工作流到构建FPGA比特流的任务。您可以在此方法上进行迭代,并使用其他优化,如时钟速率流水线,使用较大的值过采样因子如果设计不满足计时要求。要指定这些设置,请使用流水线选项卡的设置优化选项任务在HDL工作流顾问。有关更多信息,请参见速度优化.
如果您的设计包含多个采样率或使用特定的HDL块实现或速度优化,在代码生成后以更快的速度插入管道寄存器,那么您的设计可以有多个循环路径。默认情况下,HDL编码器使用单时钟模式,以最快的采样率生成主时钟,并创建一个定时控制器实体。定时控制器产生一组时钟使能与所需的速率和相位信息采样时钟信号块在较慢的采样时间。
如果关键路径的信号速率较慢,合成工具可能无法满足时序要求。由于工具无法从生成的HDL代码推断出样本率,并假定这些路径必须以最快的速度运行,因此会发生计时故障。您可以使用基于启用的多周期路径约束来生成约束文件,使合成工具能够减轻多周期路径上的时钟约束。为指定多周期路径约束的生成,在设置优化选项任务,选择Enable-based约束复选框。运行工作流到构建FPGA比特流的任务。例如,请参见使用多循环路径约束来满足慢路径的时序要求.
使用目标频率(MHz)设置为HDL编码器指定目标频率,以修改参考设计中的时钟模块设置,以产生该频率的时钟信号。另请参阅目标频率参数.
要解决定时故障,请减少目标频率(MHz)设置使合成工具能够满足时间约束。要查看您可以指定的目标频率,请使用来自合成工具时间报告的松弛和关键路径信息。因为松弛等于所需时间和到达时间的差,你可以把松弛加到所需时间上,然后用这个和作为新的需要时间
.用这个的倒数新的需要时间
为满足定时要求的目标频率值新的需要时间
等于到达时间。在MATLAB中计算目标频率®命令窗口,运行此脚本。
%使用定时报告指定所需的时间(ns)和空闲时间(ns)required_time = 2;松弛= 2.2;% Slack是required_time和arrival_time之间的差值%通过在required_time中添加slack,你可以解决这个问题New_required_time = required_time + slack;Target_frequency = 1 / (New_required_time);%因为我们以纳秒为单位计算新的时间Target_frequency_MHz = Target_frequency * 10^3;
在设置目标频率任务,指定此值目标频率(MHz),然后运行工作流到构建FPGA比特流的任务。如果看到计时失败,可以使用这种方法迭代目标频率值,直到设计满足计时要求,松弛变为零。
您还可以将HDL Worflow Advisor设置导出到一个脚本,并通过指定保持对目标频率值的迭代Target_frequency_MHz
的值TargetFrequency
财产。然后,运行脚本。
%设置此频率为新的目标频率hdlset_param (“hdlcoder_led_blinking”,“TargetFrequency”, Target_frequency_MHz);
hdlcoder。董事会
|hdlcoder。ReferenceDesign