SGDC脚本举例

clock -name| -tag
[ -
]
[ -edge]
[ -]
[ -add ]
-name 时钟端口/管脚名称 , 可以指定单个或是多个以空格分隔的端口信号列表
- 时钟域名 , 未指定时钟域名默认时钟域名将于时钟名称一致
-tag 未指定时钟约束的-name参数 , 则由tag参数指定的名称将被视为虚拟时钟名称
-
时钟周期
-edge 时钟边值列表
-add 可以在同一个名称上指定两个时钟 , 如下所示
clock -name top.clk -tag C1 - A - 10.0
clock -name top.clk -tag C2 - B - 10.0 -add
reset
reset -name
[ -async | -sync ]
[ -value]
[ -soft ]
-value 复位有效值 , 若是复位低有效 , 就设置为0即可
-sync/aysnc 一般是我们设计中都是异步复位 , 同步释放 , 所以就是异步的复位 , 默认是异步复位 , 若是没有特殊需求可以不进行设置
-soft 在CDC中不使用
用来描述定义模块端口的理论信息 , 我们更多的使用其来对黑盒进行约束 。关于的约束选项比较多 , 下面就常用的进行介绍
-

SGDC脚本举例

文章插图
-ports
-clock
[ -reset]
[ -combo]
[ -sync
-from-to
[ -seq]
[ -]
【SGDC脚本举例】]
[ -]
[ -scope]
[ -mode]
[ -]
[ -]
[ -]
[ -
]
[ -
]
[ -]
[ -]
[ -]
[ - ]
[ -]
[ -start ]
[ -end ]
[ -]
很多可选的约束设置都没有给出 , 是在目前使用的过程中没有遇见 , 后续有使用了在对其进行补充~
举例
SGDC脚本举例

文章插图
在官方给出的示例中对输入输出分别做了举例 , 如下所示
约束用于指定黑盒的输入引脚和输出引脚之间的路径 。该约束应该仅用于指定从黑盒输入到输出的组合路径 。示例如下:
设计中存在一些主要输入、触发器、网络或术语 , 它们可能在开始时发生短暂变化 , 但在电路的其余操作中会假定静态值为0或1 。您可以使用准静态约束将主输入、触发器、网络或术语指定为静态信号 , 以跳过对涉及此类信号的路径的验证 。可以理解为一些不需要做CDC的信号 , 或者是不需要考虑时序问题的信号 , 都可以设置为静态信号来减少噪声 。
-nameex-name top.A
-name {} -value
分析约束指定案例分析条件 。看如下一个案例 , 它主要是对时钟做一个选择: ‐name sel ‐value 0 。一般这种我们都选择异步时钟通过这个mux 。
其他
首先定位使用该功能的目的:并不是代替SGDC的书写 , 而只是给我提供一个模板 , 我们需要对其进行有选择的使用!!!使用项目文件命令将块级SDC命令转换为相应的SGDC约束 。具体使用方式如下:
创建一个xxx.sgdc 文件 , 里面的内容如下
u_top
-.sdc
这里的sdc路径是对于prj的路径而言的 。执行的结果会在 //cdc/(就是你在执行的目标)/目录下 。
当主要从设备、系统或对象的角度查看时 , 黑盒是指设备、系统或对象 。当主要从输入和输出特征的角度查看设备、系统或对象时 , 黑盒是指设备、系统或对象 。CDC分析基于对所有时钟网络的完整拓扑遍历 , 黑盒导致分析不完整 , 源于黑盒的时钟可能驱动的不同的逻辑 。同时黑盒的定义时用来简化CDC分析的 , 不正确的约束会带来过多的噪音或是放过真正的问题 。正确的bbox设置可以有效的减少噪声的产生 , 帮助分析 。