为什么代码中要避免使用时钟下降沿?(转)
来源:互联网 发布:u盘做随身系统ubuntu 编辑:程序博客网 时间:2024/05/20 13:08
以前做FPGA的时候,没有关心过这个问题,上升沿和下降沿,一直混用。但是昨天后端部门的Lint检查和综合检查都指出了这个问题,要求把设计中的所有时钟沿都统一为上升沿抽样。这样做的目的,据说是为了提高scan chain的覆盖率。因为没有经验,想在这里请教一下大家:
- 混用上升下降沿会对scan chain造成什么样的影响,能否具体解释一下;
- 如果代码在逻辑上必须用下降沿采样,怎样才能满足后端的要求(用上升沿采样),有无变通方法;
我的代码
我在上面提到了上升沿和下降沿混用,其实是表述不正确。不是混用,而是在代码中有些寄存器用posedge,有些则用negedge,对同一个寄存器同时使用两个边沿的情况没有。,我的代码是这样的情况,比如
always @ (posedge i_clk or negedge i_rst_n) begin
.... // reg 1
end
always @ (negedge i_clk or negedge i_rst_n) begin
.... // reg 2
end
对于这样的情况,后端部门也建议尽量避免,也就是说所有寄存器全都采用上升沿,要怎么处理呢?
dft_drc会认为该寄存器有violation
因此不把他放到chain里边
所以覆盖率会降低
- 混用上升下降沿会对scan chain造成什么样的影响,能否具体解释一下;
- 如果代码在逻辑上必须用下降沿采样,怎样才能满足后端的要求(用上升沿采样),有无变通方法;
我的代码
我在上面提到了上升沿和下降沿混用,其实是表述不正确。不是混用,而是在代码中有些寄存器用posedge,有些则用negedge,对同一个寄存器同时使用两个边沿的情况没有。,我的代码是这样的情况,比如
always @ (posedge i_clk or negedge i_rst_n) begin
.... // reg 1
end
always @ (negedge i_clk or negedge i_rst_n) begin
.... // reg 2
end
对于这样的情况,后端部门也建议尽量避免,也就是说所有寄存器全都采用上升沿,要怎么处理呢?
====
用下降沿采样的话dft_drc会认为该寄存器有violation
因此不把他放到chain里边
所以覆盖率会降低
- 为什么代码中要避免使用时钟下降沿?(转)
- 为什么 C++ 中提倡尽量避免使用宏 #define(转)
- 为什么 C++ 中提倡尽量避免使用宏 #define(转)
- 为什么要避免使用汉堡包菜单
- 为什么尽量避免使用触发器
- TDD基站中为什么要用GPS为时钟源
- WebRTC通话过程中如何避免其它进程音量下降
- Java中为什么使用静态代码块
- 避免在代码中直接使用delete关键字
- 避免在代码中直接使用delete关键字
- 数字时钟(代码)
- JavaScript 时钟(代码)
- 为什么要使用多线程?(无代码,无真相)
- DllMain中要谨慎写代码避免死锁
- MFC 中怎样使用时钟
- Xilinx 中时钟的使用
- EffectiveJava(23)为什么不能在新生代码中使用原生态类型
- React为什么要尽量避免操作DOM
- 黑马之前,一个简单的winform程序
- Android之drawable state各个属性详解
- Css content属性详解
- ASCII和字母的转换
- Oracle System用户实际权限
- 为什么代码中要避免使用时钟下降沿?(转)
- win7+ubuntu
- GB2312
- http://bbs.csdn.net/topics/360205599
- Shapes-Object2
- C++中的覆盖、隐藏、重载
- WCF配置
- php.ini 常用 配置
- CSS content, counter-increment 和 counter-reset详解