Synplify 使用过程中最常用的选项及命令的介绍

转自:http://forum.eepw.com.cn/thread/208282/1

Synplify 使用过程中最常用的选项及命令的介绍。
一、 状态机相关
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    /* synthesis syn_state_machine=1 */;
如果我们希望某一部分代码按状态机综合但是我们没有勾选FSM Compiler选项或者FSM Compiler没有将它视为状态机,则可以使用上述代码描述将其指定为状态机。同样,也可以将其指定为“非状态机”。
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”,它可以在状态机受到扰动进入非法状态时自动将其复位到一个有效的状态,避免状态机“死机”。
二、 面积和速度优化
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    /* synthesis syn_maxfan=10 */;
三、 其他常用选项及命令
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指令用来将特定模块当成黑盒综合。不论该模块内容是否为空,但要求模块接口已经定义好。
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代码)将内部寄存器连接到顶层。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Synplify是一种常用的逻辑综合工具,用于将高级综合的RTL代码转换为可综合的门级网表。本文将介绍如何使用Synplify来完成这个过程。 首先,打开Synplify软件。在界面的左侧面板,选择文件-新建工程,然后选择工程保存的路径和名称。点击“确定”按钮后,会进入到工程设置页面。 在工程设置页面,你需要指定RTL设计文件的路径。点击“添加入口文件”按钮,选择对应的文件,然后点击“确定”按钮。你还可以设置目标设备和综合选项,以便根据实际需求进行调整。 点击“下一步”按钮后,会进入到约束设置页面。在这里,你需要指定时钟相关的约束和其他约束条件。点击“下一步”后,可以设置优化选项和组织设计属性等。 完成设置后,点击“开始综合”按钮,Synplify开始将RTL代码转换为门级网表。综合完成后,你可以在输出窗口查看详细的综合结果和报告。 除了综合之外,Synplify还提供了优化和分析的功能。你可以使用优化工具来进一步优化设计,减少资源占用和功耗。分析工具可以帮助你分析综合结果,查找潜在的问题和瓶颈。 总结而言,Synplify是一款强大的综合工具,可以将RTL代码转换为可综合的门级网表。通过正确设置工程参数、约束和优化选项,可以得到高质量的综合结果。同时,Synplify还提供了丰富的分析工具,以助于设计优化和问题排查。 ### 回答2: Synplify是一款常用的综合工具,用于将高级综合的RTL代码转化为硬件描述语言(HDL)的结构级代码。下面是使用Synplify的简要指南。 首先,打开Synplify软件。在工程管理页面新建一个工程,并输入工程名称和存储路径。然后,选择要综合的文件,这些文件包括模块文件、约束文件和测试文件等。 接下来,进入工程设置页面。在这个页面,需要设置时钟和时钟域、约束和综合选项等。 关于综合选项,选择正确的目标设备是非常重要的,因为不同的FPGA或CPLD芯片对综合的支持程度有所差异。可以根据目标设备手册的信息来选择正确的目标设备。 在约束设置,需要指定时钟频率、输入/输出延迟等信息。同时,还可以设置综合优化和资源利用策略,以达到优化综合结果的目的。 完成工程设置后,点击开始综合按钮,即可开始综合过程。综合过程会将RTL代码转化为网表文件,该文件描述了电路的逻辑结构。 当综合完成后,可以查看综合报告。综合报告包含了综合结果、警告和错误等信息,可以帮助开发者评估综合效果和优化电路。 最后,可以进行后续的仿真和实现工作。可以使用其他工具对综合结果进行功能仿真,验证电路功能的正确性。然后,可以将综合结果配合物理约束进行布局和布线,最终生成比特流文件,用于烧写到目标设备。 综上所述,以上是使用Synplify的简要指南。通过合理设置综合选项和约束,并根据综合报告调整代码,可以得到高效的综合结果。 ### 回答3: Synplify 是一种常用的高级综合工具,用于将 RTL 代码转换为硬件描述语言(HDL)的综合网表,以便在后续的物理设计流程使用。以下是一个简要的 Synplify 使用指南: 1. 配置项目:在开始使用 Synplify 之前,需要创建一个项目并对其进行配置。可以设置目标 FPGA 设备型号、时钟约束、全局约束等。 2. 导入设计:将 RTL 代码导入到 Synplify ,可以使用 Verilog 或 VHDL 语言编写。确保代码质量良好,语法正确,并满足设计规范和约束。 3. 约束设置:使用约束文件或 GUI 设置时钟约束和其他约束条件。时钟约束是设计最重要的一部分,因为时钟是整个系统的主导节拍。 4. 综合配置:根据设计需求和目标设备的特性进行综合配置。可以设置综合策略、时序分析设置、信号优化等参数。 5. 运行综合:在完成项目配置后,可以运行综合过程Synplify 会将 RTL 代码转换成相应的综合网表,同时还会生成综合报告,包含综合结果和统计信息等。 6. 时序分析:分析综合结果的时序信息,确保满足时序约束,检查是否存在潜在的时序问题,并进行优化。 7. 运行后续流程:将综合结果与其他物理设计流程(如布局布线、仿真等)进行集成,完成整个芯片设计流程。 8. 调试和优化:如果综合结果不满足设计要求,可以通过调试和优化技术进行改进。可以尝试修改约束条件、代码结构、综合策略等来优化综合结果。 9. 生成输出文件:在完成综合流程后,可以生成各种输出文件,如综合网表、仿真模型、综合约束等,以便后续步骤使用Synplify 是一款功能强大、易于使用的高级综合工具,可以帮助设计工程师快速进行逻辑设计和验证,并最终实现高质量的数字电路设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值