RISC-V MCU中文社区

【分享】 时序约束问题的解决办法

发表于 全国大学生集成电路创新创业大赛 2023-05-17 12:25:38
0
1397
3

在使用vivado对 Verilog 代码进行综合后,点击“SYNTHESIS”下的“Report Timing Summary”,可以查看综合后的时序报告,查看 Setup Time 和 Hold Time 是否满足约束。

我们要留意的是 WNS 和 WHS 两个数值,如果这两个数值为红色,就说明时序不满足约束。下面将解释怎么解决这个问题。

1. Setup Time 违例

Setup slack 计算如下图所示:

所以 slakc 为负数时,说明路径的组合逻辑延时过长。解决办法有两个:第一个是降低时钟频率,第二个是将延时过长的组合逻辑拆成两个或者多个时钟周期执行。

无论 Setup Slack 为多少,只要为负数,都要解决 Setup Time 违例。

2. Hold Time 违例

Hold Slack 计算如下图:

路径1时间为数据从CLK跳转开始从源寄存器传到目的寄存器输入端并保持稳定的时刻,路径2时间为CLK跳转后传到目的寄存器clk输入端并保持稳定的时刻。

Hold slack 为负数,说明数据比时钟提前到达目的寄存器,此时路径可能会出现数据透明阶段。解决办法主要是:在两寄存器的组合逻辑之间添加反相器当作 buffer。

若综合后的 Hold Slack 为 7% 及以内的时钟周期,都可以不用做优化,因为这个可以在 Implementation 之后由器件本身属性来消除,或者在 Implementation 时,软件会自动插入 Buffer。例如笔者在对修改后的 E203进行综合后,得到 Hold Slack 为 -4.148 ns, 时钟周期为 62.5 ns。但在实现后,该 Hold 违例消失。 

需要注意的是,解决了 Hold 违例可能会重新出现 Setup Time违例,但由于 Hold 违例可以被器件本身属性消除,因此建议先解决 Setup 违例再解决 Hold 违例。

喜欢3
用户评论
Lalaland

Lalaland 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板