zt:synpify 综合,保持信号,时序处理
http://www.actel.com/kb/article.aspx?id=TT1002
Logic Replication vs. Preserve Attributes in Synplicity
In general, Synplicity's synthesis tool, Synplify, will try to replicate logic rather than add buffers to stay within the stated synthesis constraints. However, this feature is "turned off" if the logic in question contains syn_keep or syn_preserve attributes (these are two Synplify attributes that allow you to preserve a net or preserve a register - examples are shown below).
In other words, if you use syn_keep or syn_preserve attributes, you may slow down your design since buffers added in series with your logic will reduce your circuit's performance.
Examples of syn_keep and syn_preserve:
attribute syn_preserve of MYSIGNALNAME: signal is true;
Synplicity directive to preserve a signal and the register that generated it
attribute syn_keep of MYSIGNALNAME: signal is true;
Synplicity directive to preserve a signal
http://www.cnblogs.com/wobeiwangle/p/5755612.html
使用Synplify综合时保留logic
在使用Synplify综合时,此工具会自动优化我的设计。
当然此功能有好有坏,最近有个项目需要使用Chipscope观察内部信号,打开inserter就懵了,信号列表中我的设计有的是名字被改了,有的是干脆给优化没了。
网上当然也有人提出这个问题, 例如 http://www.xilinx.com/support/answers/5249.html 就提供了一个 /* synthesis syn_keep = 1 */ 的语法来保留自己的设计。
随后又以 /* synthesis syn_keep = 1 */ 为关键词搜索了一下,又发现了其他的新内容,随即记录一下。
在 Synopsys FPGA Synthesis Attribute Reference Manual 中提到了三个语法: syn_keep , syn_preserve, syn_noprune 并对三种语法做出了比较。
| syn_keep | 只适用于net和 combinational logic,此语法可以在综合过程中保留wire,且不对此wire做任何的优化。此语法也可用于register,当用于register时,register可以被保留且不会变成macro |
| syn_preserve | 保证register不会被优化 |
| syn_noprune | 保证一个没输出的blackbox(此blackbox 的输出没有驱动任何logic)不被优化 |
然而看了此表还是很模糊,再看了一下Synplify Pro for Microsemi Edition User Guide文档中 Preserving Objects from Being Optimized Away 部分则会有更深入的解释。
| To Preserve | Attach | Result |
| Nets | 使用syn_keep语法。适用于verilog中的wire或reg,或者VHDL中的signal | 在仿真,综合或者P&R中保留net |
| Net for probing | 使用syn_probe语法。用于verilog中的wire或者reg,或者VHDL中的signal | 保留内部的net来用于观察 |
| Shared registers | 使用syn_keep语法。适用于shared register的输入wire或者signal | 保留重复的驱动cell |
|
sequential component |
使用syn_preserve语法。适用于verilog中的reg或者module,或者VHDL中的signal或architecture | 保留固定值驱动的register |
| FSM | 使用syn_preserve语法。适用于verilog中的reg或module,或者VHDL中的signal | 保留state register有值的输出端口或者内部信号 |
|
instantiated components |
使用syn_noprune语法。适用于verilog中的module或者component,或者VHDL的architecture或者instance | 即使instance有未使用的端口也可以保留下来 |
由此可以总结一下:
syn_keep最常用,可以用于wire,reg和shared register两种情况;
syn_probe处于观察的目的可以使用于wire或者reg (ChipScope观察信号的话使用此语法应该足够了);
syn_preseve使用于固定值驱动(constant-driven)的register或者状态机register中;
而syn_noprune使用于例化的模块(instance),即使例化模块有未使用的端口,也可以让模块保留下来。
zt:synpify 综合,保持信号,时序处理的更多相关文章
- I2C总线信号时序总结
I2C总线信号时序总结 总线空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态.此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电 ...
- I2C总线信号时序总结【转】
本文转载自:https://i.cnblogs.com/EditPosts.aspx?opt=1 I2C总线信号时序总结 总线空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定 ...
- 每天进步一点点------SOPC的Avalon-MM IP核(一) avalon总线的信号时序
在SOPC中自定义外设时.可以设置avalon总线的信号时序,以满足外设的要求.一般情况下,可以设为: 其中setup为read和write信号之前,address和writedata信号提前建立的时 ...
- Tcl与Design Compiler (五)——综合库(时序库)和DC的设计对象
本文如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 前面一直说到综合库/工艺库这些东西,现在就来讲讲讲 ...
- Tcl与Design Compiler (十二)——综合后处理
本文如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 概述 前面也讲了一些综合后的需要进行的一些工作,这 ...
- DC综合及仿真验证和DFT测试
综合技术是提高设计产能的一个很重要的技术,没有综合技术的发展就不可能用HDL实现电路的设计,因为HDL开始是用来供电路仿真建模使用的,到了后来才把其中一部分子集作为可综合的语言,也就是R ...
- 从时序异常检测(Time series anomaly detection algorithm)算法原理讨论到时序异常检测应用的思考
1. 主要观点总结 0x1:什么场景下应用时序算法有效 历史数据可以被用来预测未来数据,对于一些周期性或者趋势性较强的时间序列领域问题,时序分解和时序预测算法可以发挥较好的作用,例如: 四季与天气的关 ...
- I2C总线完全版——I2C总线的结构、工作时序与模拟编程
I2C总线的结构.工作时序与模拟编程 I2C总线的结构.工作时序与模拟编程I2C总线(Inter Integrated Circuit)是飞利浦公司于上个世纪80年代开发的一种"电路板级&q ...
- 转:《IIC时序》
I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.I2C总线产生于在80年代,最初为音频和视频设备开发,如今主 ...
随机推荐
- RegOpenKeyEx和RegSetValueEx返回ERROR_SUCCESS,但注册表未发生变化。
win7 x64,需要open的时候加上KEY_WOW64_64KEY. lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microso ...
- 【python】获取指定网页上的所有超级链接
# -*- coding: utf-8 -*- import urllib2 import re #connect to a URL website = urllib2.urlopen("h ...
- ruby中 Win32ole的各应用操作方法(word excel Outlook IE)
Win32ole为标准Ruby发行版的一部分.Win32ole是访问Windows自动化的接口,可以让Ruby和Windows应用进行交互.具体说来Win32ole可以操作Word,Excel,IE, ...
- <<Numerical Analysis>>笔记
2ed, by Timothy Sauer DEFINITION 1.3A solution is correct within p decimal places if the error is l ...
- AES--高级数据加密标准
AES--高级数据加密标准 对称密码体制的发展趋势将以分组密码为重点.分组密码算法通常由密钥扩展算法和加密(解密)算法两部分组成.密钥扩展算法将b字节用户主密钥扩展成r个子密钥.加密算法由一个密码学上 ...
- C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
1.建立一个TimingActionFilter过滤器 public class TimingActionFilter : ActionFilterAttribute { public overrid ...
- mybatis传递参数到mapping.xml
第一种方案 ,通过序号传递 DAO层的函数方法 Public User selectUser(String name,String area); 对应的Mapper.xml <select id ...
- dom4J 学习
Java给我们提供了标准的W3C接口实现,已完成对XML的处理.主要有两大类,分别是DOM操作,SAX解析.DOM可以将XML加载到内存中,对XML进行方便的增删查改.由于是将整个XML都加载到内存中 ...
- [源码]String StringBuffer StringBudlider(1String部分)
String /** The value is used for character storage. */ private final char value[]; /** Th ...
- 【HOW】用PowerShell脚本修改用户配置文件属性显示次序
首先将如下脚本保存为PowerShell文件,如:ReorderUserProfileProperty.ps1. 在执行此脚本时,如果不输入任何参数,将列出所有用户配置文件属性的名称和显示次序:如果只 ...