Clock setup:时钟建立关系
tsu:输入建立时间
th:输入保持时间
tco:时钟到输出延时,Tco = Clock Delay + Micro Tco + Data Delay
tpd:管脚到管脚的延时
Trd:寄存器到寄存器之间的延时
Minimum tpd & tco:最小tpd和tco
Clock Skew:时钟偏斜,时钟到达两个D触发器的时间差,当分频由内部电路产生,无法保证小的Clock skew
fmax:最高频率,Clock period = Data Delay – Clock skew +Tco +Tsu,Internal Fmax =1/Clock period
system Fmax = 1/[MAX(Input Clock period, Internal Clock period , Output Clock period)] 影响Fmax主要由于Trd引起的,fmax = 1/(Trd +Clock skew+MICRO Tco+MICRO Tsu) MICRO Tco MICRO Tsu 器件固定参数,<0.1ns 全局时钟 Clock skew可以忽略,所以 Fmax ~= 1/Trd 提高Fmax方法: 1、 减少走线时延。通过chip Editer修改走线 2、 减少组合逻辑的时延。加入流水(在REG和REG之间加了D触发器) Setup Time:建立时间
Hold Time:保持时间
Latency:延迟
Slack:时间裕量
Multicycle path:多周期路径,两个寄存器之间数据要经过多个时钟才能稳定的路径,一般出现于组合逻辑较大的那些路径。
亚稳态:建立和保持时间如果数据发生变化,就可能发生亚稳态现象。
一般来说,在单一时钟域的设计中只要系统电路的fmax能够保证,就可以避免亚稳态的发生;但是在跨时钟域的时钟的相位是异步的,亚稳态将无法避免。此时,在跨时钟设计时的解决亚稳态的思想是:虽然亚稳态无法避免,但却可以采用一定措施保证系统的可靠性,使得在发生亚稳态后系统仍然可以稳定地工作。
多时钟域下亚稳态的处理: 亚稳态无法避免,但要将其影响降到最低。 单根信号下,对第2个时钟用D触发器打2拍就可以将亚稳态的影响减少到可以忽略的地步。 多根信号下,不能用上面方法. 1、握手。速度太慢 2、异步FIFO 3、多相位/高频时钟多次采样数据
同步设计准则:
1、 尽可能使用同一时钟,时钟走全局时钟网络。多时钟域采用“局部同步”。
2、 避免使用缓和时钟采样数据。采用混合时钟采用将导致Fmax小一倍。
3、 避免在模块内部使用计数器分频所产生的时钟。
4、 避免使用门控时钟。组合电路会产生大量毛刺,所以会在clk上产生毛刺导致FF误翻转。可以用时钟始能代替门控时钟。
Synplify某些选项解释: FSM compile:选中后根据状态机数目多少,自动选择采用one-hot还是binary编码。 FSM explorer:在FSM compile基础上对状态机尝试各种编码,根据约束设置选择一种最优的编码方式。 Resource sharing:资源共享,让综合工具对代码进行资源优化。 Pipelining:通过更改D触发器的位置而不改变逻辑功能来平衡D触发器到D触发器的时延,以提高Fmax 。 Retiming:可以对时序和资源进行优化。 SCOPE窗口下代码: Clock:时钟约束 Clock to Clock:时钟到时钟约束 Input/Output:输入输出约束 Registers:寄存器约束 Multi-cycle Paths:多周期约束 Flase Paths:Flase路径约束 MAX Delay Paths:最大延迟路径 Attributes:属性 I/O standard:I/O标准 Compile Piont:多点编译 Quartus II中时序优化: Assignment stting----Timming Requriments& Optionss ---- clock --- 设置Fmax speed or Area or balanced WYSIWYG和Retimming standard fit auto fit fast fit Physical Synthesis Optiimation ---- 复制 和 Retimming 管脚约束 Assignment Editer 对Tsu Tco约束:if Tsu +Tco> 1/Fmax ,则出错。 应该对于输入管脚添加Tsu约束, 对于输出管脚添加 Tco约束 对于双向口,添加Tsu Tco约束 最后在Time Quest中分析报告,查看出错原因
|