FPGA综合工具--Synplify Pro的常用选项及命令

摘要:
Synplify最近已被使用,但以前从未使用过。没有基础。查找帖子并保存。选中此选项后,SynplifyPro将自动检测代码中的状态机,并根据状态数选择不同的编码方法。如果扇出减少,SynplifyPro将自动使用更多的逻辑资源进行逻辑复制。Syn_属性的使用与过程高度相关。使用时,您需要确认FPGA设备是否支持此属性。Syn_ probeAttribute Syn_ probeat贡品可用于促进测试。将syn用于内部寄存器_探测后,它将成为集成网表中的顶级端口。

最近要用到Synplify,但以前没使用过,无基础,找到一篇帖子,隧保存下来。

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

Synplify 使用过程中最常用的选项及命令的介绍。
一、 状态机相关
(1)FSM Compiler Option
  FSM Compiler是一个全局选项。勾选此选项之后Synplify Pro会自动检测代码中的状态机,根据状态数量的不同选择不同的编码方式。状态数量在0~4之间采用顺序编码(Sequential),状态数量在5~40之间采用独热码(One hot),状态数量在40以上采用格雷码(Gray)。对状态机状态进行“可到达分析”,优化掉无法到达的状态和无法执行到的语句。
(2)FSM Explorer Option
  它是FSM Compiler的一个子选项,勾选FSM Explorer则FSM Compiler也会被自动选中。勾选FSM Explorer会影响状态机的编码方式,它对每一个检测到的状态机尝试三种不同的编码方式之后选择最优的编码方式。
(3)Syn_state_machine Directive
  与FSM Compiler的不同之处在于FSM Compiler是全局选项,而syn_state_machine Directive是局部指令,使用方法如下:
  reg   [7:0]    curr_state    /* synthesis syn_state_machine=1 */;
  如果我们希望某一部分代码按状态机综合但是我们没有勾选FSM Compiler选项或者FSM Compiler没有将它视为状态机,则可以使用上述代码描述将其指定为状态机。同样,也可以将其指定为“非状态机”。
(4)Syn_encoding Attribute
  BTW:Attribute和Directive的区别在于Attribute是“综合时作用”,而Directive是“编译时作用”;Attribute和工艺(如ALTERA或XILINX,或同一厂家不同系列)相关,而Directive和工艺无关。
  Syn_encoding Attribute的使用方法如下:
    reg   [7:0]    curr_state    /* synthesis syn_encoding=”safe,gray” */;
  Syn_encoding Attribute可选的值有“onehot”,“gray”,“sequential”,“safe”,“original”。强烈建议对每一个状态机使用“safe”,它可以在状态机受到扰动进入非法状态时自动将其复位到一个有效的状态,避免状态机“死机”。
二、 面积和速度优化
(1)Resource Sharing Option
  是一个全局选项,勾选此选项则允许编译器共用互相排斥语句中的算术单元,常用于加法器、减法器等,有时对Reg/LUT也会略有减少。
(2)Pipelining Option & Retiming Option
  它们都是全局选项。若选中Retiming则Pipelining会自动被选中。Pipelining只改变寄存器的位置,通过移动寄存器的位置优化寄存器之间的组合逻辑级数,达到优化时序的目的。而Retiming不仅改变寄存器的位置还可能改变寄存器的数量。值得注意的是,它在改变寄存器数量时不会改变寄存器的级数,确保设计者预期的逻辑功能不被改变。
(3)Fanout Guide – one of the Device Mapping Options
  Fanout Guide是全局选项,默认一般为10000,如果设计中有较多单元fanout太大导致最终实现时序难收敛,可以视情况设置。减小扇出则Synplify Pro会自动使用更多的逻辑资源来进行逻辑复制。
(4)Syn_maxfan Attribute
  Syn_maxfan是局部属性。它可以用来改变特定单元的扇出,优先级高于全局Fanout Guide选项。下面是一个使用Syn_maxfan attribut的例子:
  reg   [31:0]    data_out    /* synthesis syn_maxfan=10 */;
三、 其他常用选项及命令
(1)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
(2)Syn_black_box Directive
  Syn_black_box指令用来将特定模块当成黑盒综合。不论该模块内容是否为空,但要求模块接口已经定义好。
(3)Syn_keep/syn_preserve/syn_noprune Directive
  Syn_preserve用来保留寄存器,综合工具可能优化掉同样输入或扇出为0的寄存器,使用syn_preserve可以保留它们。
  Syn_keep用来保留连线或组合逻辑。
  Syn_noprune用来保留一个black box,如果一个black box的输出扇出为0,则该黑盒可能会被优化掉,使用syn_noprune可以保护它不被优化掉。
(4)Syn_useioff Attribute (Technology related)
  Syn_useioff attribute用来将输入输出寄存器置入FPGA的IO寄存器。它可以对输入输出管脚、输出寄存器或工程的顶层设置。
  Syn_useioff attribute和工艺相关性较大,使用时需确认所用FPGA器件是否支持该属性。同时,该属性只是“尽力而为”,并不能保证最终结果一定符合设计者意图,强烈建议最终实现后在ISE/Quartus II中检查确认。
(5)Syn_probe Attribute
  Syn_probe attribute 可以用来方便测试。对一个内部寄存器使用syn_probe后,它在综合出的网表中成为顶层端口。若不使用该属性,则可能需要逐级修改设计文件(HDL代码)将内部寄存器连接到顶层。

免责声明:文章转载自《FPGA综合工具--Synplify Pro的常用选项及命令》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP mkdir()无写权限的问题解决方法【Delphi】RAD 10.4 开发Android时如何在迁移SDK和NDK路径后解决提示 ld: cannot find -lxxx的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于时间系统的状态机

1根据各任务的周期执行时间确定轮询间隔,注意(轮询时间间隔只能比任务执行时间稍长,但一定不能断) 2 用一个定时器,基准定时为各任务的最小公倍数;软件计数器累加从而触发各任务标志(对任务进行字节编码) 3主函数中分别操作:Toggle_Task();//设置各标志,这里可以是非时间触发的事件 slect_task();//对任务标志进行字节解码:指针函数指...

工作流的模式

流模式(Sequential)1.适合一个比效机械化的流程2.在这种流程中,参与者处于一种被动的局面,他必须沿设定的路线一步一步完成。例1:在MIS系统中,一个操作机器的工作流:(开使->关1闸 –> 关2闸 -> 修理 -> 开2闸-> 开1闸 -> 结束)在这个工作流中,需要严格按流程操作。而且在[修理]结点处可能还...

最佳实践之有限状态机

有限状态机(Finite State Machine,FSM),简称状态机。今天这篇文档的主体思路,来自本人授权的一项发明专利。第一次尝试写出来,希望分享给更多人。 我当时写这个专利的时候,太有感觉了。非常的激动,同时我也很想分享给同事,但是可能太抽象了,未果。然后我想申请优秀专利奖,没有渠道!所以最近刷屏的屠呦呦没有评上院士的消息,我听后,心想意料之中吧...

FPGA的Signaltap 文件

quartus中的signal tap 能够方便的抓取模块中的信号 向工程添加一个Signaltap 的文件 ,点击菜单 File->New..., 在弹出的界面中选择 SignalTap II Logic Analyzer File。  软件会弹出如下的 SignalTap 的界面:  首先我们需要为 SiganlTap 选择一个采样时钟,采...

FPGA使用技巧

1 IOB 为了保证FPGA输入输出接口的时序,一般会要求将输入管脚首先打一拍再使用,输出接口也要打一拍再输出FPGA。将信号打一拍的方法是将信号通过一次寄存器,而且必须在IOB里面的寄存器中打一拍。因为,从FPGA的PAD到IOB里面的寄存器是有专用布线资源的,而到内部其他寄存器没有专用的布线资源。使用IOB里面的寄存器可以保证每次实现的结果都一样,使用...

FPGA中的INOUT接口和高阻态

除了输入输出端口,FPGA中还有另一种端口叫做inout端口。如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接。但是,有时候半双工通信就能满足我们的要求,理论上来说只需要一条信道就足够了,而FPGA上实现这一功能的管脚就是inout端口。管脚相连时,input对应output,因此inout只能和inout连接(否则...