来自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. [go-linq]-Go的.NET LINQ式查询方法

    关于我 我的博客|文章首发 开发者的福音,go也支持linq了 坑爹的集合 go在进行集合操作时,有很不舒服的地方,起初我真的是无力吐槽,又苦于找不到一个好的第三方库,只能每次写着重复代码.举个栗子 ...

  2. go每日一库 [home-dir] 获取用户主目录

    关于我 我的博客|文章首发 顾名思义,go-homedir用来获取用户的主目录.实际上,通过使用标准库os/user我们也可以得到内容,使用以下方式 标准库使用 package main import ...

  3. 围绕 Kubernetes 的 8 大 DevOps 生产关键实践

    本文主要介绍 DevOps 的 8 大关键实践在 Kubernetes 平台下如何落地,结合我们目前基于 Kubernetes 平台的 DevOps 实践谈谈是如何贯彻相关理念的,这里不会对其具体实现 ...

  4. 第11 章 : 可观测性:你的应用健康吗?(liveness和readiness)

    课时 11:可观测性:你的应用健康吗?(莫源) 本次课程的分享主要围绕以下五个部分: 介绍一些整体需求的来源: 介绍在 K8s 中 Liveness 和 Readiness 的使用方式: 介绍在 K8 ...

  5. [Azure Devops] 获取单元测试的代码覆盖率

    1. 获取代码覆盖率 上一篇文章里,我们在 Pipeline 中插入一个单元测试并把所有单元测试都通过作为 Pipeline 通过的硬性要求.除此以外,我们还可以获取单元测试的代码覆盖率,用作衡量代码 ...

  6. Java利用线程工厂监控线程池

    目录 ThreadFactory 监控线程池 扩展线程池 扩展线程池示例 优化线程池大小 线程池死锁 线程池异常信息捕获 ThreadFactory 线程池中的线程从哪里来呢?就是ThreadFoct ...

  7. OO第四单元&课程总结

    一.本单元架构设计 第一次作业 本次作业要求解析UML类图. 首先,将UML中的各个元素(比如UmlClass.UmlInterface等)转化成自己定义的类(MyClass.MyInterface) ...

  8. Linux就该这么学:重定向,管道符,通配符,转义符,环境变量

    第三章:重定向,管道符,环境变量 3.1 输入输出重定向 定义:输入重定向是指将文件导入命令中,输出重定向是指将原本显示到屏幕的信息输出问文件.相较于输入重定向,输出重定向使用的更多,下面重点介绍输出 ...

  9. 一文简述Java IO

    Java IO 本文记录了在学习Java IO过程中的知识点,用于复习和快速查阅,不够详细的部分可能会在后续补充. 什么是流 流:内存与存储设备(外存)之间传输数据的通道 IO:输入流输出流(如rea ...

  10. 在Win10中手动添加/修改本地IP

    1 前言 好久没动Win10了... 今天需要用Win10做一下实验,手动修改IP,于是写下了这篇文章作为过程记录. 2 概述 Win10里面修改本地IP不是一件特别困难的事,简单来说可以分为两种方式 ...