首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» Vivado bug大揭秘——Block Design中的Bug及解决办法
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
Vivado bug大揭秘——Block Design中的Bug及解决办法
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-8-20 09:57
|
只看该作者
Vivado bug大揭秘——Block Design中的Bug及解决办法
Design
,
开关
Block Design 作为VIVADO的一大新神器,给用户设计带来了极大的方便,能够根据用户的定制需求自动选择、组合以及连接不同的IP。然而,其中不可控的Bug也给用户带来了一定的烦恼。这篇博文首先给出了一个Block Design的设计实例,带大家直观了解一下Block Desing。然后,列举了其中两个常见的Bug,给出其解决方法以及解决该类位的思路。
一、 Block Design示例
如下图,设计一个基于AXI4-Lite的一个8*1的互连开关:
首先,我们只需要给出该设计模块的整体框架,是一个8*1的互连开关。然后,在引出对外的接口,并配置每个接口的参数。另外,还需要根据自己的需求设定互连开关中的一些参数,例如,需不需要slice来缓存、性能还是面积优先等等。最后,在参数配置完毕之后,就可以生成满足自己定制需求的交叉开关。如上图所示,自动添加了一下IP进去,如couplers、xbar等;在设计实现时,省去了设计者自己选择IP,手动添加互连的工作,带来很大的方便。
一、存在的Bug及解决方法
1. 多个功能类似的block design模块中的bug
问题描述:
在设计中,往往需要多个Block Design(一下简称BD)模块,然而当多个BD的功能类似,导致两个BD中存在相同的IP时,两个BD在实例化IP模块时会使用相同的名字。例如,在一个系统中,用到了一个8*1的互连BD,用到了一个3*2的互连BD,两个BD都是互连开关,都有couplers模块,且发现实例化这些couplers模块时,使用相同的名字,如下图在0号master端口的couplers都使用m00_couplers_imp_PQAAIF的模块名。
此时,如果我们去跑系统的行为仿真,会发现总有一个BD的功能是不正确的,然而配置和逻辑是没有问题的。而且,在系统的综合实现时也会报错。
解决方法:
个人觉得这类问题是VIVADO中BD的硬伤,修改软件的参数或者BD模块的参数是改正不了的,直接修改源文件中的代码。当然,如果在VIVADO环境中去查看这些代码都是Read-Only模式的,是不能修改的。所以,我们要定位出问题的文件是哪个,然后在工程所在的文件夹中搜索,然后通过其它的编辑软件打开修改。例如,刚才的两个BD模块出问题的文件,分别位于E:\TD\TD.srcs\sources_1\bd\axi_lite_i\hdl和E:\TD\TD.srcs\sources_1\bd\axi_interconnect\hdl,我们只需修改其中任意一个,将名字相同的模块名改为不同即可。
1. 无法自动添加功能需求的IP
BD功能的强大之处就在于其能够根据用户的需求(设定一些参数)自动添加相应的IP,然而,有时候却无法添加,给用户带来意想不到的错误。
问题描述:
仍以上述的3*2互连开关为例,该互连开关能够连接不同时钟频率的模块,自动完成不同时钟域的转换。我们仅需要在配置端口处配置该端口所连模块的工作频率,例如在slave端口处,如果设定与互连开关不同的频率,该端口处Couplers就会自动添加时钟转换模块的IP。
然而,在master端口处采用类似的方法,我们在生成BD之后,却发现没有相应的时钟转换模块。相同的操作,在不同类型端口处去有不同的生成结果。
解决办法:
这类的Bug肯定会导致逻辑的错误,因为少了一些IP。所以,建议各位设计者在使用BD时,要抱着怀疑的态度,在BD生成完毕之后,在点击去查看一下,看所需要的IP是否添加完整,不要给后续的调试带来极大的麻烦。
针对上述的问题,我们可以采用两种方法:
1. 当发现所要的IP没有添加进去时,我们可以分析该IP所在的位置,自己手动添加该IP,然后互连到相应的位置。如下图所示,少了时钟转换模块,我们将其手动添加到外部,也能完成相应的逻辑功能。
2. 寻找没有自动添加的原因。这个解决方法有点可遇而不可求,有的时候就是软件中的一点小Bug,你稍微修改一下模块的参数即可。比如刚才的问题,我们可以在该端口的属性窗口中将clock port的选项给选择正确了即可(这个操作按道理是软件自动完成的,因为另一端的端口处不用自己选择也能自动添加正确)。
以上笔者列举了BD设计中常见的Bug,由于篇幅原因无法将其他的一一列举出来。如果您在设计中发现其它的Bug,暂时又难以解决,可以联系我QQ:657428214,我们一起探讨解决。
文章来源:eeee的博客 (
http://blog.chinaaet.com/detail/35714
)
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议