0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于打拍优化时序你真的全面了解吗?

FPGA之家 来源:CSDN技术社区 作者:数字芯片实验室 2021-04-27 14:15 次阅读

如果你参加过IC校招面试,自然会被问到“setup/hold的概念,以及setup/hold违例怎么办?”

这时候,你肯定会立马在脑海中从打拍或者插buffer两个答案中选一个。但是在实际项目中,往往没有这么简单。举一个实际的场景:

2d1e480e-a67f-11eb-aece-12bb97331649.png

AXI master和AXI slave这一簇信号出现setup时序违例怎么办?

1、从AXI master 到AXI slave 出现setup违例;

2、从AXI slave 到AXI master出现setup违例;

3、两者都出现setup时序违例。

所以AXI master和AXI slave之间的打拍会存在4中模式:

Forward Registered :对valid和payload路打拍

Backward Registered :对ready路打拍

Fully Registered :同时对valid/payload路和ready路打拍

Pass Through Mode:Bypass,均不打拍

这个问题没那么容易或者说不能够直接打拍,是因为这一簇信号遵循valid-ready协议,需要打拍的信号间存在时序的耦合

所以问题就简化成如何在遵循valid -ready协议的master和slave 之间完成“打拍”,或者说在打拍的同时处理valid-ready协议。

Forward Registered

2d2f1292-a67f-11eb-aece-12bb97331649.png

always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) valid_dst 《= 1’d0; else if (valid_src == 1‘d1) valid_dst 《= #`DLY 1’d1; else if (ready_dst == 1‘d1) valid_dst 《= #`DLY 1’d0;end always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) payload_dst 《= ’d0; else if (valid_src == 1‘d1 && ready_src == 1’d1) payload_dst 《= #`DLY payload_src;end ready_src = (~valid_dst) | ready_dst

2e3ed10e-a67f-11eb-aece-12bb97331649.png

现在来分析下上述Forward Registered 打拍代码的几个输出端口

valid_dst:在master发请求(拉高valid_src)时拉高valid_dst,直到当前master没有valid请求并且slave可以接收请求(拉高ready_dst)时拉低valid_dst,表示一次传输完成。

payload_dst:在master发请求(拉高valid_src),并且前面没有请求、请求已经被接收或者正在被接收时将payload_src打拍赋给payload_dst。

其实master本身也会遵循valid-ready协议,payload_src和valid_src做同样处理就行,即也可以在(valid_src == 1‘d1 && ready_src == 1’d0)时进行赋值,因为此时payload_src输入应该约束保持原始数据。

ready_src:register slice或者slave可以接收数据时拉高ready_src.

Backward Registered

2e49a4b2-a67f-11eb-aece-12bb97331649.png

always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) valid_tmp0 《= 1’d0; else if (valid_src == 1‘d1 && ready_dst == 1’d0 &&valid_tmp0 == 1‘d0) valid_tmp0 《= #`DLY 1’d1; else if (ready_dst == 1‘d1) valid_tmp0 《= #`DLY 1’d0;end always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) payload_tmp0 《= ’d0; else if (valid_src == 1‘d1 && ready_dst == 1’d0 &&valid_tmp0 == 1‘d0) payload_tmp0 《= #`DLY payload_src;end assign payload_dst = (valid_tmp0 == 1’d1) ?payload_tmp0 : payload_src; always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) ready_src 《= 1’d0; else ready_src 《= #`DLY ready_dst;end

Backward Registered 打拍相比较Forward Registered 会复杂点,因为存在slave没有ready时master发来请求,需要暂存payload的场景。

2e73e8d0-a67f-11eb-aece-12bb97331649.png

现在来分析下上述Backward Registered打拍代码的几个输出端口:

ready_src:对ready通路直接进行打拍。

valid_dst:当slave没有ready,master发来请求时拉高标志位valid_tmp0,表示下一次slave准备好之后应该从register slice内暂存的payload拿数据

payload_dst:当slave没有ready,master发来请求时暂存payload到payload_tmp。最终的payload_dst根据标志位valid_tmp0从payload_tmp和payload_src之间选择

Fully Registered

类似于,简单理解就是个乒乓BUFFER,使用非空信号做valid_dst;payload的非满信号做ready_src

Pass Through Mode

直接相连

通过上述分析,可以使用register slice mode参数化的库,在后端要求AXI BUS打拍时直接调用,而无需重复造轮子。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IC
    IC
    +关注

    关注

    35

    文章

    5545

    浏览量

    173296
  • 时序
    +关注

    关注

    5

    文章

    357

    浏览量

    36968
  • Setup
    +关注

    关注

    0

    文章

    30

    浏览量

    11842
  • MASTER
    +关注

    关注

    0

    文章

    79

    浏览量

    11163

原文标题:打拍优化时序不像听起来那么简单

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    快速全面了解大模型长文本能力

    关于LLM的长文本能力,目前业界通常都是怎么做的?有哪些技术点或者方向?今天我们就来总结一波,供大家快速全面了解
    发表于 02-22 14:04 311次阅读
    快速<b class='flag-5'>全面</b><b class='flag-5'>了解</b>大模型长文本能力

    关于JTAG口,了解多少?

    设想是JTAG口坏了,于是乎,本人换了usb-blaster,可一点反应也没有。难道真的是JTAG口坏了?于是,本人就去查阅相关资料去搞清楚问题的本质在哪里,下面就是本人的一些收获,分享出来,仅供各位
    发表于 01-19 21:19

    RFID和NFC之间的那些事儿,你真的了解吗?

    RFID和NFC之间的那些事儿,你真的了解吗?
    的头像 发表于 12-15 09:38 619次阅读
    RFID和NFC之间的那些事儿,你<b class='flag-5'>真的</b><b class='flag-5'>了解</b>吗?

    求助,关于AD2S1210的上电初始化时序问题

    Hi,你好,想请问下关于AD2S1210的上电初始化时序问题, 1、硬件复位引脚RESET引脚如果在VDD达到规定电压之前没有存在低电平的时间,会出现什么问题? 2、硬件复位引脚RESET引脚在
    发表于 12-06 06:55

    时序优化之发送端打拍策略解析

    打拍是进行时需优化最常用和最简单的方式之一,不过握手型协议的打拍和通常的使能型协议是不同的。
    的头像 发表于 12-04 10:23 388次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>优化</b>之发送端<b class='flag-5'>打拍</b>策略解析

    时序优化之接收端打拍策略探讨

    这篇文章是探讨对接收端进行时序优化(即ready打拍,或称backward打拍)的方式。
    的头像 发表于 12-04 10:20 274次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>优化</b>之接收端<b class='flag-5'>打拍</b>策略探讨

    时序仿真与功能仿真的区别有哪些?

    时序仿真与功能仿真的区别有哪些? 时序仿真和功能仿真都是电子设计自动化(EDA)过程中的常见任务,它们都是为了验证或验证电路设计的正确性。然而,它们之间也有明显的区别。 时序仿真
    的头像 发表于 09-17 14:15 2958次阅读

    时序仿真与功能仿真的区别在于

    时序仿真与功能仿真的区别在于 时序仿真与功能仿真是电子设计自动化(EDA)中最常见的两种仿真方式。虽然二者都是仿真技术,但根据仿真模型和目的的不同,它们之间还是存在一些根本差异。 1.定位
    的头像 发表于 09-08 10:39 3255次阅读

    使用Virtual Eval工具了解AD7124-4/8的时序性能

    在这个演示视频中,我们将使用Virtual Eval工具来了解AD7124-4/8的时序性能,并演示Virtual Eval工具的作用。
    的头像 发表于 09-07 12:31 473次阅读

    基于MC33771C和MC33772C的系统时序优化

    电子发烧友网站提供《基于MC33771C和MC33772C的系统时序优化.pdf》资料免费下载
    发表于 08-17 14:13 1次下载
    基于MC33771C和MC33772C的系统<b class='flag-5'>时序</b><b class='flag-5'>优化</b>

    ARMV6编译器使用O0优化时单片机程序卡死的解决方案

    最近使用keil 的ARMV6编译器的开发项目的时候遇到了这样一个问题——使用-O0优化时候复位单片机程序直接卡死(感觉根本没有执行),使用除-O0优化外的选项全都能通过。
    发表于 07-11 11:42 917次阅读
    ARMV6编译器使用O0<b class='flag-5'>优化时</b>单片机程序卡死的解决方案

    在valid ready协议中对ready进行timing修复打拍的方法

    首先将把目标设计想象成一个黑盒子,如图1所示,我们的目标是将READY_DOWN通过打拍的方法获得时序优化
    的头像 发表于 06-27 16:20 803次阅读
    在valid ready协议中对ready进行timing修复<b class='flag-5'>打拍</b>的方法

    唠一唠解决FPGA约束中时序不收敛的问题

    FPGA时序不收敛,会出现很多随机性问题,上板测试大概率各种跑飞,而且不好调试定位原因,所以在上板测试前,先优化时序,再上板。
    发表于 06-26 15:41 1345次阅读
    唠一唠解决FPGA约束中<b class='flag-5'>时序</b>不收敛的问题

    RK3588-MIPI屏幕调试笔记:RK3588-MIPI-DSI之LCD上电初始化时序

    RK3588-MIPI屏幕调试笔记:RK3588-MIPI-DSI之LCD上电初始化时序
    的头像 发表于 06-10 10:32 2137次阅读

    光纤面板你真的了解吗-科兰

    光纤面板在综合布线工程中是一个必备的原件,但是对于光纤面板你真的了解吗?下面就跟随科兰小编一起来了解一下吧。 什么是光纤面板? 纤维面板具有传光效率高,级间耦合损失小,传像清晰、真实,在光学上具有
    的头像 发表于 06-07 10:18 787次阅读
    光纤面板你<b class='flag-5'>真的</b><b class='flag-5'>了解</b>吗-科兰