用过了XST和Synplify Pro的兄弟姐妹都很多,
总有很多兄弟姐妹迷惑其中的结果。我只是根据实际情况跟大家聊一聊。
XST与Synplify综合结果差异分析
首先以状态机为例,向大家解释一下不同的结果。
在同步状态机设计中使用锁存器也会带来时序、稳定性等多方面的问题,而且在综合优化参数不一致的情
况下,不同综合器对锁存器的综合结果有可能不一致。本文通过分析相同状态机在XST和Synplify下综合结
果不同的实例,进一步阐述了这个观点。
给您聊聊XST和Synplify Pro综合结果的区别.
比方我们采用以下的状态转移图:
一位客户所设计的状态机使用Synplify综合和XST(Xilinx ISE内嵌的综合工具)综合的结果不一致,对
Synplify的综合结果以及布局布线后上板调试完全正确,而对XST的综合结果布局布线后上板调试发现
了错误,因此认为XST的综合结果有误,并对为什么XST综合会出现错误结果产生疑问。
在帮助他解决这个疑问后,我发现其中涉及的许多问题很具代表性,希望通过对这个问题的分析能对设
计工程师的实际工作有指导意义。
AVNET(安富利)北京
FPGA就用XILINX, 代理商只选安富利
状态转移图
该客户设计的是一个数据通讯中同步接收装置的状态机:当“Reset_b”复位后,进入“DROP”状态;当
接收指示信号“RXDV”有效后,从“IDLE”状态进入接收前缀信号状态“PREAMBLE”;当控制信
号“RxDEQ5”有效后进入“SFD”状态接收一些指示关键字;当控制信号“RxDEQ”有效时,进入数据
接收状态“DATA0”;接收完“DATA0”后接收“DATA1”,直到接收指示信号“RxDV”无效,返回
到“IDLE”状态。其状态转移图楼上图片所示。
AVNET(安富利)北京
FPGA就用XILINX, 代理商只选安富利
但是我们并不能因此说XST综合器的综合结果是错误的,该综合器不可靠。
这里两种综合结果有差异的根本原因在于作者的代码风格不合理。
作者在同步状态机描述中使用了大量不完整的条件判断语句,而XST在默
认参数条件下尽量避免使用锁存器,而通过组合逻辑判断实现状态转移。当然我们也可以通过设置XST参
数,使XST将上述代码描述也综合为锁存器。但是好的同步时序设计要尽量避免使用锁存器,这里使用锁存
器好像电路功能正确了,但是有很多隐含的错误。请读者思考一下,进入“PREAMBLE”状态后,如
果“RxDV”变低将会出现什么情况?同理,进入SFD状态后,条件不满足呢?这时发生的状态转移未必是
作者的设计意图。总之,使用锁存器造成的后果是状态机不健壮!
这里两种综合结果有差异的根本原因在于作者的代码风格不合理。
作者在同步状态机描述中使用了大量不完整的条件判断语句,而XST在默
认参数条件下尽量避免使用锁存器,而通过组合逻辑判断实现状态转移。当然我们也可以通过设置XST参
数,使XST将上述代码描述也综合为锁存器。但是好的同步时序设计要尽量避免使用锁存器,这里使用锁存
器好像电路功能正确了,但是有很多隐含的错误。请读者思考一下,进入“PREAMBLE”状态后,如
果“RxDV”变低将会出现什么情况?同理,进入SFD状态后,条件不满足呢?这时发生的状态转移未必是
作者的设计意图。总之,使用锁存器造成的后果是状态机不健壮!
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |