FPGA设计时序约束八、others类约束之Set_Case_Analysis

目录

一、序言

二、Set Case Analysis

2.1 基本概念

2.2 设置界面

2.3 命令语法

2.4 命令示例

三、工程示例

四、参考资料


一、序言

    在Vivado的时序约束窗口中,存在一类特殊的约束,划分在others目录下,可用于设置忽略或修改默认的时序路径分析,以Vivado2022.1版本为例,主要包括以下4类

 

二、Set Case Analysis

2.1 基本概念

    Set case analysis(设置案例分析)命令通常通过对逻辑如配置寄存器设置常数值来描述功能模块,设置对象可为端口,线net,层级引脚或子模块输入引脚,常数值通过约束的逻辑单元传输,从而关闭该单元的任何时序分析,功能和设置set false path类似。约束可以在SDC、XDC文件中使用。

    使用set case analysis可以减少分析的空间,运行时间和内存消耗,将信号是一个常量值的信息告知时序分析工具是很重要的,对于保证不去报告非功能路径和不相关的路径也是至关重要的。因此,一个引脚pin带有set_case_anlaysis约束时,上面传输的信号是不活跃信号,和引脚相关的时序arc是关闭的。

    最常见的使用场景是对一个多路选择器选择引脚设置为0或1,使得两个多路选择器中一个输入来传输,以关闭从mux/s到mux/I1引脚的时序分析路径为例,约束命令如下

set_case_analysis 0 [get_pins mux/S]

    再看一个例子,将一个AND门 的一个输入通过set_case_analysis设为0,AND门的输出也为0,即0传输到了下一逻辑,时序分析工具不会去计算对应的时序arch也不会展示在时序报告中。但是,布局布线中仍会去修复这些引脚上的最大切换,最大扇出违例。

2.2 设置界面

    进入Timing Constraints界面,在左侧Others栏中选中Set Case Analysis,右侧即显示Set Case Analysis界面,双击空白位置

 

    在Find names of type的下拉框显示可设置的对象,有Port和Cell pins两类

 

可约束的值有4个:0,1,rising,falling,约束为0或1时,对应的时序路径将不存在,设置为切换边沿时,只有信号为设置的边沿切换时才进行时序分析。

 

2.3 命令语法

命令格式如下

set_case_analysis [‑quiet] [‑verbose] <value> <objects>

参数含义如下表

2.4 命令示例

约束两个主时钟到CLKBUFGMUX的两个输入引脚上,将set_case_analysis约束选择引脚clock_sel/S的值为1,此时将只有clk_B会传输到输出端口,clk_A被阻断了,效果和将对应的pin连接到VDD或VSS相同。。

create_clock -name clk_A -period 10.0 [get_pins clock_sel/I0]
create_clock -name clk_B -period 15.0 [get_pins clock_sel/I1]
set_case_analysis 1 [get_pins clock_sel/S]

三、工程示例

工程代码:

module timing_analysis(d1,d2,clk1,clk2,clk3,clk4,rst,out1,out2);
input d1,d2,clk1,clk2,clk3,clk4,rst;
output out1,out2;
reg ff1,ff2,ff3,ff4,ff5;
always @(posedge clk1)
    if(!rst)
        ff1<=0;
    else
        ff1<=d1;
always @(posedge clk2)
    if(!rst)
        ff2<=0;
    else
        ff2<=ff1;
always @(posedge clk3)
    if(!rst)
        ff3<=0;
    else
        ff3<=ff2;
assign out1=ff3&ff2;

always @(posedge clk4)
    if(!rst)
        ff4<=0;
    else
        ff4<=d2;
always @(posedge clk4)
    if(!rst)
        ff5<=0;
    else
        ff5<=ff4;
assign out2=ff5;
endmodule

综合后网表连接图

 

未添加set_case_analysis时的时序报告,同步时钟报告中只有clk4,异步时钟报告中有clk1到clk2,clk2到clk3的时序路径,根据综合网表连接图,符合预期。

 

对clk1设置set_case_analysis值为fall,clk4设置set_case_analysis值为1,同步时钟路径中已不存在clk4,异步时钟路径中存在clk1到clk2。因为clk1设置的analysis clk为下降沿,而实际为上升沿,clk4设置为常量1,不存在切换

 

四、参考资料

1、用户手册《ug835-vivado-tcl-commands-en-us-2023.1.pdf》

文档链接:https://pan.baidu.com/s/1Su_w9CDHR7R9_tt_in_arQ?pwd=7w4f 

提取码:7w4f

2、Vivado的command reference

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值