建立保持时间

 

一、  这两条约束语句都是针对板级延时而言的。

          语句中必须的有是,时钟与port.

 二、   set_input_delay

        用于数据输入端口,调节数据输入与时钟输入到来的相位关系。

        当FPGA外部送入FPGA内部寄存器数据时,会有两个时钟launch clock 与latch clock,前者负责将数据从外部寄存器中送出,后者要在setup 与hold都满足的条件下,将数据锁入FPGA内部寄存器。在这个过程中,如果launch clock已经将数据送出,并到达FPGA内部寄存器端口,而上一次的数据的hold时间还不足,就会冲掉前面这个数据,导致latch clock 锁存数据错误!方法就是用set_input_delay加在数据到达时间(data_arrival)上加延时,让数据推迟到达,让latch clock有足够的时间(一般为hold time)对数据锁存。

       

        例: set_input_delay -clock { clk_in } -add_delay 1.200 [get_ports {data_in}]

 

    图中input delay(data arrival)将数据到达时间延时1.2ns.

    set_output_delay

        用于数据输出端口,调节数据输出与时钟输出的相位关系。

        当FPGA内部送出数据给外部器件的时,也应该有两个时钟launch clock 与latch clock,前者负责将数据从内部寄存器中送出,后者要在setup 与hold都满足的条件下,将数据锁入外部寄存器。在这个过程中,就是要保证在时钟到来时数据准备好,并让时钟有足够的时间将数据打入外部寄存器中。但如果latch clock已经到来,由于板级延时等,数据未能如时到达,那latch clock没有足够的setup 时间对数据采样,导致采到的数据就是错误的!而解决方法就是用set_output_delay加在数据到达时间(data_arrival)上加延时(负值),或者说对latch clock 加延时(正值),表现为数据提前到达,或认为latch clock推迟到达,而其实质就是以时钟为参考,对数据进行的操作,让latch clock 有足够的时间(一般为setup time)对数据锁存。

 

     例:set_output_delay -clock { clk_in } -add_delay 2.000 [get_ports data_out]

 

图中output delay(data requared)向前推2.0ns

 

三、  在设置约束与分析时序过程中对launch clock 和latch clock 的选择和port的选择要注意以下问题:

   set_input_delay :在用的设置约束过程中,launch clock 应当是外部器件的数据发送时钟,如果FPGA内部并无相关时钟,就设置一个虚拟时钟作为launch clock ;latch clock 应当是FPGA内部寄存器时钟,当然应为FPGA内部时钟;在时序分析约束过程中,port应当至少选取To Node.

   set_output_delay :在用的设置约束过程中,launch clock 应当是FPGA内部的数据发送时钟,应当为FPGA内部时钟;latch clock 应当是FPGA外部器件数据锁存时钟,如果这个时钟FPGA内部并无相关时钟,就设置一个虚拟时钟作为latch clock ;在时序分析约束过程中,port应当至少选取From Node.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值