文章目录

  • 一、 状态机相关
  • 二、 面积和速度优化
  • 三、 其他常用选项及命令

Synplify Pro是Synplicity公司(Synopsys公司于2008年收购了Synplicity公司, 其客户遍布于通讯、半导体、航空/航天、计算机和军事电子等诸多领域,如:Philips,Agilent,Cisco,Lockheed,GE,Siemens,Lucent,Ericsson,Huawei,ZTE,UTStarcom等。本人所在公司即其中之一。)的高性能FPGA综合工具,为复杂可编程逻辑设计提供了优秀的HDL综合解决方案,它包含了BEST算法对设计进行整体优化。打开它的界面,最醒目的就是左侧偏上位置一个大大的“Run”按钮。就好像是在告诉你“你要做的就只是点一下‘Run’”。事实也的确如此。不过,想要用好它,可不是点一下“Run”这么简单。当然,这篇文章无意也不可能成为Synplify Pro的User Guide。只对使用过程中最常用的选项及命令作个介绍。

一、 状态机相关

FSM Compiler Option
FSM Compiler是一个全局选项。勾选此选项之后Synplify Pro会自动检测代码中的状态机,根据状态数量的不同选择不同的编码方式。状态数量在0-4之间采用顺序编码(Sequential),状态数量在5-40之间采用独热码(One hot),状态数量在40以上采用格雷码(Gray)。 对状态机状态进行“可到达分析”,优化掉无法到达的状态和无法执行到的语句。

FSM Explorer Option
它是FSM Compiler的一个子选项,勾选FSM Explorer则FSM Compiler也会被自动选中。勾选FSM Explorer会影响状态机的编码方式,它对每一个检测到的状态机尝试三种不同的编码方式之后选择最优的编码方式。

Syn_state_machine Directive
与FSM Compiler的不同之处在于FSM Compiler是全局选项,而syn_state_machine Directive是局部指令,使用方法如下:
reg [7:0] curr_state ;
如果我们希望某一部分代码按状态机综合但是我们没有勾选FSM Compiler选项或者FSM Compiler没有将它视为状态机,则可以使用上述代码描述将其指定为状态机。同样,也可以将其指定为“非状态机”。

Syn_encoding Attribute
BTW:Attribute和Directive的区别在于Attribute是“综合时作用”,而Directive是“编译时作用”;Attribute和工艺(如ALTERA或XILINX,或同一厂家不同系列)相关,而Directive和工艺无关。
Syn_encoding Attribute的使用方法如下:
reg [7:0] curr_state ;
Syn_encoding Attribute可选的值有“onehot”,“gray”,“sequential”,“safe”,“original”。强烈建议对每一个状态机使用“safe”,它可以在状态机受到扰动进入非法状态时自动将其复位到一个有效的状态,避免状态机“死机”。

二、 面积和速度优化

Resource Sharing Option
是一个全局选项,勾选此选项则允许编译器共用互相排斥语句中的算术单元,常用于加法器、减法器等,有时对Reg/LUT也会略有减少。

Pipelining Option & Retiming Option
它们都是全局选项。若选中Retiming则Pipelining会自动被选中。Pipelining只改变寄存器的位置,通过移动寄存器的位置优化寄存器之间的组合逻辑级数,达到优化时序的目的。而Retiming不仅改变寄存器的位置还可能改变寄存器的数量。值得注意的是,它在改变寄存器数量时不会改变寄存器的级数,确保设计者预期的逻辑功能不被改变。

Fanout Guide – one of the Device Mapping Options
Fanout Guide是全局选项,默认一般为10000,如果设计中有较多单元fanout太大导致最终实现时序难收敛,可以视情况设置。减小扇出则Synplify Pro会自动使用更多的逻辑资源来进行逻辑复制。

Syn_maxfan Attribute
Syn_maxfan是局部属性。它可以用来改变特定单元的扇出,优先级高于全局Fanout Guide选项。下面是一个使用Syn_maxfan attribut的例子:
reg [31:0] data_out ;

三、 其他常用选项及命令

Translate_off/translate_on Directive
Translate_off/translate_on必须成对出现。Translate_off之后的语句将在综合过程中被跳过,直到translate_on出现。
Translate_off/translate_on常用于在综合时自动屏蔽仿真需要的语句。以下是一个使用translate_off/translate_on的例子:
//synthesis translate_off
`define SIM_ON
//synthesis translate_on

Syn_black_box Directive
Syn_black_box指令用来将特定模块当成黑盒综合。不论该模块内容是否为空,但要求模块接口已经定义好。曾经在Stratix IV刚发布样片时做一个S-IV的项目,当时已有的Synplify Pro版本只能支持到S-III, 而S-IV与S-III的基本逻辑单元结构完全一样的。当时对S-IV底层强相关的模块使用syn_black_box,然后项目采用S-III器件综合出网表。再将网表和那几个被当作黑盒的模块一起使用Quartus II实现。

Syn_keep/syn_preserve/syn_noprune Directive
Syn_preserve用来保留寄存器,综合工具可能优化掉同样输入或扇出为0的寄存器,使用syn_preserve可以保留它们。
Syn_keep用来保留连线或组合逻辑。
Syn_noprune用来保留一个black box,如果一个black box的输出扇出为0,则该黑盒可能会被优化掉,使用syn_noprune可以保护它不被优化掉。

Syn_useioff Attribute (Technology related)
Syn_useioff attribute用来将输入输出寄存器置入FPGA的IO寄存器。它可以对输入输出管脚、输出寄存器或工程的顶层设置。
Syn_useioff attribute和工艺相关性较大,使用时需确认所用FPGA器件是否支持该属性。同时,该属性只是“尽力而为”,并不能保证最终结果一定符合设计者意图,强烈建议最终实现后在ISE/Quartus II中检查确认。

Syn_probe Attribute
Syn_probe attribute 可以用来方便测试。对一个内部寄存器使用syn_probe后,它在综合出的网表中成为顶层端口。若不使用该属性,则可能需要逐级修改设计文件(HDL代码)将内部寄存器连接到顶层。

转载自:http://blog.sina.com.cn/s/blog_65fe490d0100v8ax.html

Synplify Pro的常用选项及命令相关推荐

  1. linux中cooy命令_Linux:CentOS 7中常用的基础命令

    对于学习Linux系统来说,命令是必须熟练掌握的第一个部分.Linux系统中的命令有600多个,但常用的基础命令并不多.虽然不同版本的Linux系统的命令稍有不同,但命令的语法与使用方法基本相同,因此 ...

  2. Linux:CentOS 7中常用的基础命令

    对于学习Linux系统来说,命令是必须熟练掌握的第一个部分.Linux系统中的命令有600多个,但常用的基础命令并不多.虽然不同版本的Linux系统的命令稍有不同,但命令的语法与使用方法基本相同,因此 ...

  3. linux基本命令以及命令常用选项

    linux基本命令以及命令常用选项 touch  创建文件,改变恩建时间戳,如果直接跟上一个文件,该文件不存在则创建文件 -c 文件不存在不创建文件,存在则改变文件的时间戳 -a 只改变文件的访问时间 ...

  4. gcc/g++ 命令的常用选项

    gcc/g++ 命令的常用选项 使用g++编译CPP文件如果用gcc编译C++源文件时,加以下选项:-lstdc++,否则使用了C++操作的文件编译会出错.假如在程序中用到new delete操作,而 ...

  5. k8s学习-kubectl命令常用选项详解与实战

    目录 概述 语法 资源类型 输出选项 实战 基本命令 create get edit delete 集群管理 cluster-info top cordon && uncordon d ...

  6. Linux fuser 命令详解------常用选项fuser功能使用

    使用fuser命令结束一个文件的进程: 有时我们想卸载某个目录时发现一直处于busy状态,自己又不知道是什么时候占用的这是就可以用fuser来把访问这个目录的用户踢掉,实现卸载的目的,条件要在管理员用 ...

  7. gcc编译命令的常用选项——强烈推荐大家使用 -Wall 选项

    C程序编编译的过程分为如下四个阶段 1.预处理:头文件展开(#include).宏替换(#define).条件编译(#ifdef)(.i)使用预处理器(预处理阶段处理的都是以#开头的代码) 2.编译: ...

  8. linux基础命令netstat,Linux netstat命令详解与常用选项

    netstat是控制台命令,是一个很有用的监控TCP/IP网络工具,通过netstat命令我们可以查看路由表与实际网络连接的状态信息,这样可以让我们更加的方便了解到网络连接,下面随豆豆了解netsta ...

  9. ls 命令常用选项 以及 ls搭配通配符使用

    ls 可以列出指定目录的内容,单独使用 ls 默认列出当前目录的全部内容(不包括隐藏文件).通配符的使用不仅限于 ls,使用rm.grep.find命令时都可以搭配通配符,这里只是以 ls 为例.   ...

最新文章

  1. 学Java需要用到的软件快收藏!
  2. 4-2-串的堆存储结构-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版
  3. Codeforces Round #232 Editorial Div2-B
  4. 文巾解题 面试题 01.01. 判定字符是否唯一
  5. PHP mail()可能导致的问题
  6. .NET Core 小程序开发零基础系列(1)——开发者启用并牵手成功
  7. Java日志操作总结
  8. kernal tch 下载 天正_tch kernal.arx
  9. redis python 出错重连_python穿透类 对象代理
  10. 年底双薪一般是什么时候发_评职称发表文章一般发什么刊物
  11. WCF NetTcpBinding Transport安全模式(7) ClientCredentialType证书验证模式---- ChainTrust验证模式...
  12. 巅峰对决 竞逐百万大赛 | 2019数字中国创新大赛第二批赛题强势来袭
  13. 【Kindle】pdf转mobi适合kindle查看格式
  14. Java金融计算机计算irr_手把手教你使用金融计算器
  15. Vue+Mui商城项目使用说明(首页仿淘宝)
  16. Origin画图技巧之放大局域图技巧2
  17. java计算机毕业设计线上教育教学系统源码+数据库+lw文档+系统+部署
  18. python算法工程师面试_算法工程师的面试经历及总结
  19. python爬虫80行代码拿下喜马拉雅有声书
  20. 用了这个,我追到了自己的女神:Mac版QQ半自动发送情话

热门文章

  1. php混淆加密文件 并解密
  2. 武汉大学 计算机软件工程 张宇,2021年武汉理工大学计算机技术考研成功经验分享...
  3. 跨境电商独立站站群模式
  4. qt的LGPL协议开发商业软件
  5. 多个苏宁快递的物流情况是怎么批量查询的
  6. 富斯,迈克,天地飞4合1接收机说明书
  7. 自动驾驶专题介绍 ———— 毫米波雷达
  8. 学习 Go 语言 1 — 基础语法
  9. IE8兼容那些事(包括react)
  10. 从Poser中输出模型与向3ds Max导入模型