Libero SoC时序约束(* .sdc)差异

时间:2018-04-12 10:55:27

标签: fpga register-transfer-level

设计RTL后,我使用Synplify pro创建my_design.sdc文件(用于约束时钟,输入/输出延迟......)。当约束正确时,我点击合成,我自动获得另一个my_design_sdc.sdc文件。如果我右键单击第一个,我可以为my_design_sdc.sdc文件选择“Use for synthesis”和“Use for compile”。我不明白的是,哪个文件用于什么,因为在编译和放置和路由之后,还有SmartTime软件带有my_design_sdc.sdc文件。

Q1:这两个文件之间有什么关系?

Q2:是否必须将两者都放在完整的链中(RTL设计到程序)?

问题3:如果是这样,如果SmartTime的命令与Synplify不同,我如何确定约束之间的关系是否相同?

Synplify多周期约束定义:

set_multicycle_path [-start | -end] [-from {objectList}] [-through {objectList} [-through {objectList} ...]] [-to {objectList}] pathMultiplier [-disable] [-commentcommentString]

SmartTime多周期约束定义:

set_multicycle_path ncycles [-setup] [-hold] [-from from_list] [-through through_list] [-to to_list]

此外,Synplify使用 define_clock 命令进行时钟约束定义,SmartTime使用 create_clock 。这些只是差别很小。

我正在使用:

  • Libero SoC v11.8 sp2(在经典约束流程视图中)
  • IGLOO2

1 个答案:

答案 0 :(得分:0)

Q1:Synplify根据您提供的synplify时钟设置自动生成智能时间SDC文件。因此,您不必两次定义所有时钟。正如您已经想到的那样,Synplify和Smarttime需要稍微不同的SDC文件。

Q2:取决于你的项目。通常,您为Synplify创建一个SDC文件,基本上只包含时钟信息。然后从synplify中获取自动生成的SDC并将其提供给“编译”。步骤,与第三个SDC一起定义所有输入/输出延迟,错误路径等等。

问题3:这就是自动生成的文件的用途。它允许您仅在一个SDC文件中定义所有时钟设置。

请注意,您向Synplify提供的SDC信息通常并不十分重要。它只是帮助Synplify有时更好地进行区域/速度优化调用。 您为编译步骤提供的SDC文件是关键的。在这里,您的时钟,输入/输出延迟和错误路径必须100%正确。

顺便说一下:多周期路径基本上是一个专家级别的机制"。很难做到这些。这是在适当的设计中很少使用的东西。然而,它们的功能经常被误解和误用,导致设计不稳定。 在所有可能的情况下,多循环路径约束不是您应该在设计中使用的东西。