QII添加IP Core生成的时序约束文件的操作步骤_冯学良

  • 格式:pdf
  • 大小:1.14 MB
  • 文档页数:6

QII添加IP Core生成的时序约束文件的操作步骤
骏龙科技技术支持部----广州办事处
1.选择你需要使用的IP,这个文档以RapidIO为例;
选择菜单的Tools——》MegaWizard Plug-in Manager,如下图所示:

2.设置好IP Core的参数后,点击完成,在IP生成的路径下,会生成以sdc
结尾的时序约束文件和tcl脚本文件,SRIO这个IP只有一个sdc文件和一个
tcl文件,但是有些IP会生成几个tcl文件,例如DDR,除了时序约束还有管
脚约束的tcl文件,这些都需要在QII里面运行才能确保添加正确的约束;
3.在QII里面运行IP Core生成的Tcl脚本文件;
菜单Tools——》Tcl Scripts,

选中需要运行的Tcl文件,选择Run,如下图所示:
如果有多个tcl文件需要运行,请重复执行上述的操作并留意窗口信息,确保
Tcl文件的正确执行。

4. 在QII的项目路径里面包含SDC文件;
菜单Projeccts ――》 Add/Remove Files in Project,在弹出窗口里面确认
包含SDC文件。
5. 打开SDC文件检查是否需要修改,一般来说,IP Core自动生成的信号名
称肯定会和你的代码里面的信号名称不一致,这时候是需要你修改的,我以
RapidIO生成的SDC文件为例进行说明;

# The clocks below correspond to the top level clock names assumed
by the
# design. This section may need to be edited to reflect the actual
clock
# name that drives the associated clock input to the Rapid IO Core.
# For the ref clock and the system clock, you may run the
constraints TCL
# Script to patch this file. Refer to the documentation for the
TCL
# constraints script for further info.
set ref_clk_name "clk"
set sys_clk_name "sysclk"
请使用你的代码里面的信号名称替换红色的信号名;

if { $clocks_match == 0 } {
create_clock -name $ref_clk_name -period 8 -waveform { 0.000 4 }
[get_ports $ref_clk_name]
}
create_clock -name $sys_clk_name -period 12.8 -waveform { 0.000
6.4 } [get_ports $sys_clk_name]
另外还需要确认你使用的输入时钟信号是否是直接从IO脚输入的信号,如果
是,这两个不需要修改,如果是中间信号或者锁相环输出,请使用get_pins代
替,并在timequest中确认是否能找到该信号,如下图所示:

菜单 Constrains Æ Create Clock;

点击Target旁边的浏览按键,在弹出的窗口中选择Get_pins,然后在旁边的
输入栏里面输入你需要查找的信号名称,如果能够找到就没有问题了。

大家好:
刚给客户写了个文档,跟大家分享一下,客户之前使用RapidIO时,
没有正确运行TCl文件和修改SDC文件,导致编译后虽然没有时序告警,
但是会出现修改逻辑也会影响RapidIO的工作,所以特意给他们写了个
简单文档,我的办法不一定是最好的,如果还有其他方法请指出,谢谢!!

而且我觉得我们IP生成的SDC文件默认对这两个时钟信号进行Get_ports
的操作也不好,因为一般来说,很多情况客户的时钟都是锁相环产生的,
这样的话,Get-Ports根本不起作用,现在timequest是比以前有优势,
但是如果你没有添加正确的约束,它连时序告警都没有,所以客户有时候
也觉得为什么没有时序告警但是IP仍然工作不正常。所以以后一定要第一时间
确认时序约束是否添加正确,我这次也花了不少冤枉的时间来诊断这个问题。
谢谢!!