来自http://wenku.baidu.com/link?url=h0Z_KvXD3vRAn9H8mjfbVErVOF_Kd3h-BZSyF1r4sEYj3ydJGEfBHGY1mvntP4HDuFj9JOVGiFIyto2rs-mRUOyK-R7i5MTrtPc2MjccPCe

前言:
在DE2-70,随便一个Nios II系统在Quartus II编译后,几乎都会遇到1个critical warning:“Critical Warning: Timing requirements for slow timing model timing analysis were not met. See Report window for details.”,该如何解决呢?

说明:
使用環境:Quartus II 8.1 + Nios II EDS 8.1 + DE2-70 (Cyclone II EP2C70F896C6N)

在研究Nios II系统的过程中,在从DE2平台转移到更强大的DE2-70平台时,有一个很恼人的问题,随便一个Nios II系统,编译几乎都会有1个critical warning:

Quartus II的warning尚可忽略,但critical warning就没办法再装做不看到了吧?虽然Nios II执行结果正确,但看到这个critical warning总是很碍眼。

经仔细研究发现,原来是经过Quartus II合成后,时序无法满足要求。

原本以为是自己的code有问题,可是将DE2-70 CD 4个包含Nios II系统的范例拿来编译,除了DE2_70_SD_Card_Audio_Player正常外,其他3个范例也都有critical warning。

DE2_70_NET

DE2_70_NIOS_DEVICE_LED

DE2_70_NIOS_HOST_MOUSE_VGA

DE2_70_SD_Card_Audio_Player (正常)

看到连DE2-70 CD的范例本身都有这个问题时,可以确定不是自己的code有问题。

“为什么这个时序无法满足的需求,在DE2都不会遇到呢?而且在Quartus II也增加了constraint,希望Quartus II能合成出Fmax为100MHz的系统,但是Quartus II怎么也合不出需要的100MHz?”

Pipeline Bridge与Altera提出的架构,可以解决这个恼人的问题。

Pipeline Bridge是什么东西?

Bridge的观念是Quartus II 7.1之后才提出的,就是为了解决Nios II系统Fmax低落的问题,由上图可知,一些较慢的slave都透过Pipeline Bridge与master沟通,而不像传统一样,每个master都与slave有专属的通道。

为什么这样就能增加Fmax?

主要有两个原因:

1.传统的master与slave因为有专属通道,所以有最大的concurrency,只要master不要同时存取同一个slave即可,但也增加了系统的复杂度,所以Fmax拉不高,若系统对于慢速的slave没有大量concurrency的要求,使用bridge可以降低系统的复杂度,并且提高Fmax。

2.Pipeline Bridge对于Avalon Bus的信号,如address、writedata、write、read、byteenable、chipselect、burstcount、readdata、readdatavalid与waitrequest都加上了pipeline register,所以可以拉高Fmax。

这只是最初步的解释而以,更详细的解释可以在Quartus II Handbook 8.1 vol.4的Chap.11 Avalon Memory-Mapped Bridges找到。

最后Fmax达到102.44MHz,critical warning也不见了。

原来没有使用pipeline bridge,尽管constraint已经调到100MHz,但Quartus II最后只能合成出68.35MHz

“哇!!竟然一行code都没改,Fmax就从68.35MHz变成102.44MHz,真是太神奇了”。

结论:
Bridge是个很有弹性的东西,巧妙的使用bridge架构整个系统,将有助于整体效率,在的ch.6,也提到Bridge使用的一些guideline,又兴趣的人可以参考。

Nios II系统在Quartus II编译后Timing requirements for slow timing model timing analysis were not met. See Report window for details的更多相关文章

  1. Quartus II中的Waring(转)

    1.Found clock-sensitive change during active clock edge at time <time> on register "<n ...

  2. Quartus II 中 Verilog 常见警告/错误汇总

    Verilog 常见错误汇总 1.Found clock-sensitive change during active clock edge at time <time> on regis ...

  3. [转载]Quartus ii 一些Warning/Eeror分析与解决

    我会在此基础上继续添加 原文地址:ii 一些Warning/Eeror分析与解决">Quartus ii 一些Warning/Eeror分析与解决作者:yanppf 注:http:// ...

  4. quartus II Warning 好的时序是设计出来的,不是约束出来的

    一.Warning (15714): Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings r ...

  5. DE1-SOC开发板上搭建NIOS II处理器运行UCOS II

    DE1-SOC开发板上搭建NIOS II处理器运行UCOS II   今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...

  6. Nios II 系统时钟timestamp的应用

    在用Nios II做外设时序驱动的时候,经常会用延时函数.有时会常使用某个FPGA芯片和时钟,比如笔者一直使用的芯片是cyclone系列 EP2C35F484C8N,PLL输入SOPC时钟是50M.因 ...

  7. 关于Quartus II 13.0对应开发NIOS II软件程序时报错Symbol 'NULL' could not be resolved问题的解决方法

    关于Quartus II 13.0对应开发NIOS II软件程序时报错Symbol 'NULL' could not be resolved问题的解决方法 近期在评估使用NIOS II处理器进行项目的 ...

  8. Nios II IDE代码优化,quartus ii 11.0版本IDE

    开发Altera Nios II软件可使用Nios II IDE或 Nios II Software BuildTools for Eclipse(即:Nios II SBT for Eclipse) ...

  9. Quartus ii 12.1软件破解之后编译原有的工程出现报警错误的解决办法

    在Quartus ii 12.1软件破解之后,想用来编译原来编译过的工程,但是编译到最后出现下面两个错误警告: 原来以为没有破解成功或者安装的时候有文件被杀毒软件吃了,导致安装错误,又重新安装了两次都 ...

随机推荐

  1. Linux Python2 升级到 Python3

    国内企业服务器用 CentOS 系统的比较多,CentOS8 系统已经将系统默认 Python 版本调整为了 Python3,但是 CentOS7 的存量还是很大,毕竟对企业生产服务来说稳定大于一切, ...

  2. Git命令太多记不住?有了这个神器,从此告别输入命令行

    一 .SourceTree简介 SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作.同时它也是Mercurial和Subve ...

  3. sqli-labs系列——第五关

    less5 更改id后无果,不能用union联合查询 此处用报错注入 报错注入的概念:(1). 通过floor报错 and (select 1 from (select count(*),concat ...

  4. [源码解析] 并行分布式框架 Celery 之架构 (2)

    [源码解析] 并行分布式框架 Celery 之架构 (2) 目录 [源码解析] 并行分布式框架 Celery 之架构 (2) 0x00 摘要 0x01 上文回顾 0x02 worker的思考 2.1 ...

  5. 【JVM进阶之路】七:垃圾收集器盘点

    在前面,我们已经了解了JVM的分代收集,知道JVM垃圾收集在新生代主要采用标记-复制算法,在老年代主要采用标记-清除和标记-整理算法.接下来,我们看一看JDK默认虚拟机HotSpot的一些垃圾收集器的 ...

  6. 学一手,知乎大V(轮子哥)当年靠它进微软亚洲研究院

    前言 vczh本名陈梓瀚,不过大家更愿意叫他「轮子哥」,毕业于华南理工大学软件学院.vczh大学时代就在微软实习,毕业后即加入微软.开始时是在微软上海,后来进入北京的微软亚洲研究院.现已移居美国西雅图 ...

  7. Node.js 包管理器 NPM 讲解

    包管理器又称软件包管理系统,它是在电脑中自动安装.配制.卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用.对于我们业务开发也很受益,相同的东西不必重复去造轮子. 每个工具或 ...

  8. Distributed | ZooKeeper

    ZooKeeper与之前看的论文不太一样,它主要是描述了一个分布式协调服务,提供了wait-free的api,可以让用户自己设计要求更高的原语.通过Zab协议保证sever之间的一致性,同时让读请求在 ...

  9. MyBatis-Plus笔记(入门)

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 官方文档 https://mybatis.plus/guide/ 本篇基于springboot,mybatis Plus的版本为3.4.2 本篇对应 ...

  10. 日志收集之filebeat使用介绍

    此系列文章一共分为三部分,分为filebeat部分,logstash部分,es部分.这里会按照每天几百亿条的数据量来考虑,去设计.部署.优化这个日志系统,来最大限度的利用资源,并达到一个最优的性能.本 ...