为什么代码中要避免使用时钟下降沿?
扫描二维码
随时随地手机看文章
以前做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里边
所以覆盖率会降低