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

Libero SoC timing constraints (*.sdc) difference

设计 RTL 后,我使用 Synplify pro 创建了 my_design.sdc 文件(用于约束时钟,input/output 延迟,...)。当约束正确时,我单击综合,然后自动获得另一个 my_design_sdc.sdc 文件。如果我右键单击第一个,我可以 select "Use for synthesis" 和 "Use for compile" 用于 my_design_sdc.sdc 文件。我不明白的是,哪个文件是干什么用的,因为在编译和布局布线之后,还有SmartTime软件可以获取my_design_sdc.sdc文件。

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

问题 2:是否必须将它们都放在完整链中(从 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。这些只是一些差异。

我正在使用:

Q1:Synplify 会根据您给 synplify 的时钟设置自动生成一个智能时间 SDC 文件。这样您就不必两次定义所有时钟。如您所知,Synplify 和 Smarttime 需要略有不同的 SDC 文件。

Q2:取决于你的项目。通常,您为 Synplify 创建一个 SDC 文件,基本上只包含时钟信息。然后从 synplify 中获取自动生成的 SDC,并将其与第三个 SDC 一起提供给 'compile' 步骤,您在其中定义所有 input/output 延迟、错误路径和类似的东西。

Q3:这就是自动生成文件的目的。它允许您在一个 SDC 文件中定义所有时钟设置。

请记住,您提供给 Synplify 的 SDC 信息通常不是非常重要。它只是帮助 Synplify 有时做出更好的 area/speed 优化调用。 您提供给编译步骤的 SDC 文件是关键文件。在这里,您的时钟、input/output 延迟和错误路径必须 100% 正确。

顺便说一句:多循环路径基本上是 "expert level mechanism"。很难做到这些。这是在适当的设计中很少使用的东西。然而,它们的功能经常被误解和误用,导致设计不稳定。 很可能,多循环路径约束不是您应该在设计中使用的东西。