主要内容摘自Quartus prime

Recommended Design Practices

For optimal performance, reliability, and faster time-to-market when designing with Altera devices, you should adhere to the following guidelines:
• Understand the impact of synchronous design practices
• Follow recommended design techniques, including hierarchical design partitioning, and timing
closure guidelines
• Take advantage of the architectural features in the targeted device

Following Synchronous FPGA Design Practices

Good synchronous design practices can help you meet your design goals consistently. Problems with other design techniques can include reliance on propagation delays in a device, which can lead to race conditions, incomplete timing analysis, and possible glitches.
In a synchronous design, a clock signal triggers every event. As long as you ensure that all the timing requirements of the registers are met, a synchronous design behaves in a predictable and reliable manner for all process, voltage, and temperature (PVT) conditions.

Implementing Synchronous Designs

Because the internal circuitry of registers isolates data outputs from inputs, instability in the combinational logic does not affect the operation of the design as long as you meet the following timing requirements:
• Before an active clock edge, you must ensure that the data input has been stable for at least the setup time of the register.
• After an active clock edge, you must ensure that the data input remains stable for at least the hold time of the register.

Asynchronous Design Hazards

Asynchronous design techniques have inherent problems such as relying on propagation delays in a device, which can vary with temperature and voltage fluctuations, resulting in incomplete timing constraints and possible glitches and spikes.

HDL Design Guidelines

When designing with HDL code, you should understand how a synthesis tool interprets different HDL design techniques and what results to expect.

Altera recommends that you design your combinational logic carefully to avoid potential problems and pay attention to your clocking schemes so that you can maintain synchronous functionality and avoid timing problems.

Optimizing Combinational Logic

In Altera FPGAs, these functions are implemented in the look-up tables (LUTs) with either logic
elements (LEs) or adaptive logic modules (ALMs).

Avoid Combinational Loops

Combinational loops are among the most common causes of instability and unreliability in digital
designs. Combinational loops generally violate synchronous design principles by establishing a direct feedback loop that contains no registers.

You should avoid combinational loops whenever possible. In a synchronous design, feedback loops should include registers. For example, a combinational loop occurs when the left-hand side of an arithmetic expression also appears on the right-hand side in HDL code. A combinational loop also occurs when you feed back the output of a register to an asynchronous pin of the same register through combinational logic.

Avoid Unintended Latch Inference

A latch is a small circuit with combinational feedback that holds a value until a new value is assigned.

It is common for mistakes in HDL code to cause unintended latch inference; Quartus Prime Synthesis issues a warning message if this occurs. Unlike other technologies, a latch in FPGA architecture is not significantly smaller than a register.  The architecture is not optimized for latch implementation and latches generally have slower timing performance compared to equivalent registered circuitry.

Latches have a transparent mode in which data flows continuously from input to output.  Be aware that even an instantaneous transition through transparent mode can lead to glitch propagation. The TimeQuest analyzer cannot perform cycle-borrowing analysis.

Due to various timing complexities, latches have limited support in formal verification tools.

Avoid Delay Chains in Clock Paths

You require delay chains when you use two or more consecutive nodes with a single fan-in and a single fan-out to cause delay. Inverters are often chained together to add delay. Delay chains are sometimes used to resolve race conditions created by other asynchronous design practices.

Effects such as rise and fall time differences and on-chip variation mean that delay chains, especially those placed on clock paths, can cause significant problems in your design. Avoid using delay chains to prevent these kinds of problems.

Use Synchronous Pulse Generators

You can use delay chains to generate either one pulse (pulse generators) or a series of pulses
(multivibrators). There are two common methods for pulse generation. These techniques are purely asynchronous and must be avoided.

When you must use a pulse generator, use synchronous techniques.

The pulse width is always equal to the clock period. This pulse generator is predictable, can be verified with timing analysis, and is easily moved to other architectures, devices, or speed grades.

推荐 的FPGA设计经验(1)组合逻辑优化的更多相关文章

  1. 推荐 的FPGA设计经验(3) 物理实现和时间闭环优化

    Optimizing Physical Implementation and Timing Closure Planning Physical Implementation When planning ...

  2. 推荐 的FPGA设计经验(2)-时钟策略优化

    Optimizing Clocking Schemes Avoid using internally generated clocks (other than PLLs) wherever possi ...

  3. 推荐 的FPGA设计经验(4) 时钟和寄存器控制架构特性使用

    Use Clock and Register-Control Architectural Features FPGAs provide device-wide clocks and register ...

  4. FPGA 设计怎样进行面积优化(逻辑资源占用量优化)

    FPGA面积优化 1 对于速度要求不是非常高的情况下,我们能够把流水线设计成迭代的形式,从而反复利用FPGA功能同样的资源. 2 对于控制逻辑小于共享逻辑时,控制逻辑资源能够用来复用,比如FIR滤波器 ...

  5. 5.防止FPGA设计中综合后的信号被优化

    随着FPGA设计复杂程度越来越高,芯片内部逻辑分析功能显得越来越重要.硬件层次上的逻辑分析仪价格十分昂贵,而且操作比较复杂.目前,FPGA芯片的两大供应商都为自己的FPGA芯片提供了软件层面上的逻辑分 ...

  6. FPGA设计思想与技巧(转载)

    题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一 ...

  7. 【设计经验】2、ISE中ChipScope使用教程

    一.软件与硬件平台 软件平台: 操作系统:Windows 8.1 开发套件:ISE14.7 硬件平台: FPGA型号:XC6SLX45-CSG324 二.ChipScope介绍 ChipScope是X ...

  8. FPGA设计方法检查表

    -----------------------摘自<FPGA软件测试与评价技术> 中国电子信息产业发展研究院 | 编著------------------------------- 文本格 ...

  9. FPGA设计经验谈 —— 10年FPGA开发经验的工程师肺腑之言

    FPGA设计经验谈 —— 10年FPGA开发经验的工程师肺腑之言 2014年08月08日 14:08    看门狗 关键词: FPGA 作者:friends 从大学时代第一次接触FPGA至今已有10多 ...

随机推荐

  1. centos7下搭建sphinx全文检索引擎

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用 程序更容易实现专业化的全文检索.Sphinx特别为一些 ...

  2. React Native调试技巧与心得

    转自:http://blog.csdn.net/quanqinyang/article/details/52215652 在做React Native开发时,少不了的需要对React Native程序 ...

  3. [原]Linux 修改时区

    1.查看当前时区 date -R 2.修改当前时区 tzselect 之后会出来一个选项菜单,选择你想要的时区就OK了 3.替换系统时区文件 cp /usr/share/zoneinfo/XXX/YY ...

  4. SAP S/4HANA销售订单创建时,会自动触发生产订单的创建

    这个自动触发的过程是怎么实现的? 使用下面的代码创建一个销售订单: DATA: ls_header TYPE bapisdhd1, ls_headerx TYPE bapisdhd1x, lt_bap ...

  5. PhoneGap 的存储 API_Web Sql

    一.介绍 此 API 基于 W3C WEB SQL Database Specification 和 W3C Web Storage API Specification. 有些 设备已经提供了对该规范 ...

  6. phonegap的照相机 API

    一. Camera Api 简单介绍 Camera 选择使用摄像头拍照,或从设备相册中获取一张照片.图片以 base64 编码的 字符串或图片 URI 形式返回. 方法: 1. camera.getP ...

  7. hdu-2841 Visible Trees---容斥定理

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2841 题目大意: N*M的格点上有树,从0,0点可以看到多少棵树. 解题思路: 发现如果A1/B1= ...

  8. 使用 JDK XML 和 java对象相互转换

    Unmarshaller 类能将 XML 数据转换为 Java 内容对象. Marshaller 类能够将 Java 对象转换回 XML 数据. package jaxb; /** * Created ...

  9. 树莓派(Raspberry Pi)上手小记

    引言 本日志中有不少软广告,博主并没有收他们任何好处,完全是给想入手的小伙伴们指条路而已.不喜勿看,不喜勿闻,不喜勿喷. 介绍 之前两三个月突然听说了这么个东西,也没有留意,某天突然在一个微信公众号上 ...

  10. list使用方法

    转:https://www.cnblogs.com/epeter/p/5648026.html Java中对List集合的常用操作 目录: list中添加,获取,删除元素: list中是否包含某个元素 ...