vivado 如何设置安全状态机模式

首先我们要明白为什么要设置安全状态机模式。

具体可以参考以下文章

[doc] FPGA设计中状态机安全性研究 - 豆丁网 (docin.com)

我们在写状态机的时候,会添加default语句(vhdl是ohters)分支,当出现异常状态时,保证状态机能跳转到正常状态。但是EDA工具会对default语句有意的自动忽视,这是对状态机进行优化的结果,故我们需要设置安全状态机模式,保证当出现异常状态时,保证状态机能跳转到正常状态。

在ISE中可以通过设置综合选项,Sefe implement 进行安全状态机设置。

而在vivado中在综合选项中无法进行设置,在其论坛上找到答案。

Xilinx Customer Communityhttps://support.xilinx.com/s/?language=en_US

通过此链接,打开PDF后 ,可以看到关于安全状态机设置的介绍。

接下来介绍在在verilog、VHDL代码中具体实现方式。

此外还有一种方式,通过约束来进行实现,具体查看Ug912。以下为ug912的截图。

 

 

我们从xdc example中可以看到在约束文件中添加语句:set_property fsm_safe_state reset_state [get cells  state_reg* ] 来实现安全状态机。

这句话是什么意思呢,你需要了解tcl语法里面的置换操作和常用的正则表达式,具体知识这里不详细展开。

其中[get cells  state_reg* ]表示通过正则表达式*可以搜索到名称中带有 state_reg 字符的cell,寄存器也是cell。这里主要搜索寄存器。

这句话可以理解为凡是名字中带有state_reg 字符的寄存器被搜索到后,并进行安全状态机模式设置。

 参考链接:

1、如何在libero中设置安全状态机,参考以下链接

状态机的安全实现_FA@TE的博客-CSDN博客

2、get_ports/get_pins/get_cells/get_nets - 简书 (jianshu.com)

3.、《数字集成电路静态时序分析基础》笔记③-可编程逻辑-与非网 (eefocus.com)

4、每天学命令<get_cells>_Tao_ZT的博客-CSDN博客

5、FPGA时序约束之Tcl命令的对象及属性 | 电子创新网赛灵思社区 (eetrend.com)

6、TCL get*命令_帅小琪LOVE的博客-CSDN博客

changelog 

1 新增实现方式:通过约束实现安全状态机。2021年12月1日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值