这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 给您聊聊XST​和Synplify Pro综合结果的区别.

共21条 1/3 1 2 3 跳转至

给您聊聊XST​和Synplify Pro综合结果的区别.

助工
2013-08-05 15:14:28     打赏

用过了XST和Synplify Pro的兄弟姐妹都很多,
总有很多兄弟姐妹迷惑其中的结果。我只是根据实际情况跟大家聊一聊。
XST与Synplify综合结果差异分析
首先以状态机为例,向大家解释一下不同的结果。
在同步状态机设计中使用锁存器也会带来时序、稳定性等多方面的问题,而且在综合优化参数不一致的情
况下,不同综合器对锁存器的综合结果有可能不一致。本文通过分析相同状态机在XST和Synplify下综合结
果不同的实例,进一步阐述了这个观点。




关键词: FPGA     XST    

助工
2013-08-06 09:17:07     打赏
2楼

比方我们采用以下的状态转移图:
1111202212e084998f83b87e56.gif
一位客户所设计的状态机使用Synplify综合和XST(Xilinx ISE内嵌的综合工具)综合的结果不一致,对
Synplify的综合结果以及布局布线后上板调试完全正确,而对XST的综合结果布局布线后上板调试发现
了错误,因此认为XST的综合结果有误,并对为什么XST综合会出现错误结果产生疑问。 
在帮助他解决这个疑问后,我发现其中涉及的许多问题很具代表性,希望通过对这个问题的分析能对设
计工程师的实际工作有指导意义。

-XILINX DFAE-
AVNET(安富利)北京
FPGA就用XILINX, 代理商只选安富利

助工
2013-08-07 08:40:20     打赏
3楼

状态转移图 
该客户设计的是一个数据通讯中同步接收装置的状态机:当“Reset_b”复位后,进入“DROP”状态;当
接收指示信号“RXDV”有效后,从“IDLE”状态进入接收前缀信号状态“PREAMBLE”;当控制信
号“RxDEQ5”有效后进入“SFD”状态接收一些指示关键字;当控制信号“RxDEQ”有效时,进入数据
接收状态“DATA0”;接收完“DATA0”后接收“DATA1”,直到接收指示信号“RxDV”无效,返回
到“IDLE”状态。其状态转移图楼上图片所示。

-XILINX DFAE-
AVNET(安富利)北京
FPGA就用XILINX, 代理商只选安富利

助工
2013-08-08 09:16:34     打赏
4楼

锁存器的使用 
为了验证综合后仿真结果,本人用相同的测试激励,在ModelSim中对修改了“竞争冒险”的代码进行功
能仿真、XST综合后仿真、Synplify综合后仿真,综合时所用参数为默认参数。

-XILINX DFAE-
AVNET(安富利)北京
FPGA就用XILINX, 代理商只选安富利

助工
2013-08-09 08:37:11     打赏
5楼
从仿真波形可以看出,两种综合后仿真波形的最大差异在于“RxDEQ5”信号有效后状态转移的情况不
同:Synplify的综合结果,在“RxDEQ5”信号有效期间锁存了状态“2”;而XST的综合结果,
在“RxDEQ5”信号有效期间并未锁存状态“2”。这时再次分析代码,观察代码中大量使用的锁存器是否
符合设计需求(当初认为是作者的设计意图)。原设计中在状态“IDLE”、“PREAMBLE”、“SFD”的转
移条件中都使用了如下的命令格式: 
if(某转移条件) NextState<=某状态;

菜鸟
2013-08-12 09:00:59     打赏
6楼
这种描述方法常会被综合器综合成锁存器结构,而在设计准则中我们常说“同步时序设计最好不要使用锁
存器”。在同步状态机设计中使用锁存器也会带来时序、稳定性等诸多方面的问题。而且在综合优化参数
不一致的情况下,不同综合器对锁存器的综合结果有可能不一致。XST与Synplify是否因为该问题造成的综
合结果不一致呢?带着这个问题,我们分析XST和Synplify的综合结果。 
分析综合结果的方法多种多样,我们可以直接打开综合输出的网表文件,观察逻辑网表的连接。但是更为
方便的分析方法是使用RTL视图(寄存器传输级)分析综合结果。

高工
2013-08-12 12:02:55     打赏
7楼
这么多ID回帖是啥情况?

助工
2013-08-13 09:06:12     打赏
8楼
View是对源代码编译结果应用B.E.S.T技术再现的寄存器传输级原理图。该图高度抽象为模块化结构,帮助
用户理解源代码对应的具体电路结构,检验设计的正确性。Xilinx的FPGA/CPLD设计平台ISE也提供了功能
相似的RTL视图工具,可以使用ECS(原理图编辑器)观察XST的综合结果。 
Synplify的RTL视图,观察到状态转移变量“NextState”被综合成了锁存器(锁存器)。 
XST的RTL视图,其中状态转移变量“NextState”条件判断部分被综合成了组合判断电路,
而不是锁存器。

助工
2013-08-14 08:23:40     打赏
9楼
从XST和Synplify的状态转移图可以清晰的看到,两种综合工具在默认参数条件下对“IDLE”、
“PREAMBLE”、“SFD”等状态的转移条件的综合结果不一致,故而导致了综合后仿真波形的不同。
Synplify将这些状态转移条件综合为锁存器,而XST却综合为组合逻辑判断电路,未使用锁存器资源。

助工
2013-08-15 08:29:30     打赏
10楼
但是我们并不能因此说XST综合器的综合结果是错误的,该综合器不可靠。

这里两种综合结果有差异的根本原因在于作者的代码风格不合理。

作者在同步状态机描述中使用了大量不完整的条件判断语句,而XST在默
认参数条件下尽量避免使用锁存器,而通过组合逻辑判断实现状态转移。当然我们也可以通过设置XST参
数,使XST将上述代码描述也综合为锁存器。但是好的同步时序设计要尽量避免使用锁存器,这里使用锁存
器好像电路功能正确了,但是有很多隐含的错误。请读者思考一下,进入“PREAMBLE”状态后,如
果“RxDV”变低将会出现什么情况?同理,进入SFD状态后,条件不满足呢?这时发生的状态转移未必是
作者的设计意图。总之,使用锁存器造成的后果是状态机不健壮!

共21条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]