打印

ISE tips

[复制链接]
1948|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星之火红|  楼主 | 2012-10-10 17:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ps, TI, se, ip, AN
11.4 一键使用PlanAhead查看网表Using this tip, we can view ISE design's netlist schematic with PlanAhead by only one click in ISE project. The process is really easy. PlanAhead is a power toy. I really recommend every ISE user try PlanAhead if you haven't.
ISE打开综合后网表默认是使用ISE本身自带的工具(RTL View and Technology Schematic)。PlanAhead的Schematic工具比ISE的漂亮很多也方便很多,但是每次打开PlanAhead还需要新建一个工程设置器件设置网表设置约束文件很是麻烦。
实在ISE 11.4中可以只点击一次就用PlanAhead打开ISE综合后的网表

User Constraints --> Floorplan Area/IO/Logic(PlanAhead)这个选项不仅可以用来做规划,其实打开后的视图直接用来查看Schematic也一样好用!

coe文件模板经常会不知道coe文件怎么写,怎么生成,语法怎么回事。原来在%Xilinx%/coregen/data目录下,有coe文件模板,各种作用下的模板,比如DA FIR, BlockRAM等等

Generate core with XCO in batch mode已经有一个xco文件,要通过xco重新生成core的网表文件,可以用这样的命令行:
coregen -b xxx.xco
控制XST插入buffer的方法
  • 用buffer_type约束。具体使用方法在XST User Guide
  • 手动插入BUFG,然后设置允许使用BUFG的数量,那么手动插入的将拥有高优先级而先占用了BUFG。

同时更改所有IO管脚的电平标准要更改所有IO Pin的IO Standard,可以打开PACE,选择所有管脚(通过shift或ctrl键多选),按右键,Create Constraints,然后自己选需要的吧:)
另一种不太推荐的方法是在UCF中通过通配符给所有NET都定义一个IOSTANDARD。
NET "*" IOSTANDARD = LVCMOS33;
子模块的网表分别存在多个目录怎么办当子模块以网表形式提供时,NgdBuilder (Translate)会搜索工程目录下的edn, ngc等网表文件。如果存在子目录中,在Translate属性中的Macro Search Path填写目录名。如果有多个子目录,不是在Macro Search Path中填写多个目录名,而要在下面一条填写其他Translate option的地方写上 -sd -sd 。每个-sd后只能写一个目录名。这一点在dev.pdf中提到。

Timing Analyzer中的Tioop之类的delay type的图形解释?Tioop之类的延时信息首先是在Datasheet中有详细定义。一般在DC and Switching Characteristics章节中。Datasheet会列出定义以及各个速度等级的延时。

ISE Text Editor有自动完成功能按Ctrl+Enter可以自动完成关键词和信号名
-----------XST中更多的控制--------------
1. 综合器插入的Buffer类型不是我想要的,如何控制XST插入buffer的类型?
- 用buffer_type约束控制某个信号驱动的buffer的类型。具体使用方法在XST User Guide。
- 如果用了很多门控时钟,XST会给他们分别都插入BUFG,而真正需要BUFG的信号可能却因此没有BUFG可分配了。此时可以手动例化插入BUFG,然后在XST属性中设置允许使用BUFG的数量,那么手动例化BUFG的将拥有高优先级而先占用了规定的可用BUFG数量。

2. 怎样防止逻辑被合并优化?
- 在默认情况下,综合器会将有相同输入信号并且实现相同功能的逻辑认为是重复的逻辑而将他们合并优化。
- 为防止这种情况发生,可以关闭XST的"Resource Sharing"和"Equivalant Register Removal"选项
- 也可以在特定的逻辑上加上Keep约束或S约束

3. 用综合约束控制产生电路
- 综合器也需要添加约束。通常使用的UCF只在布局布线时才起作用。在越早的步骤中使用约束,就能对设计进行更早的干预和优化,时序收敛的可能性就越大。
- 在XST的属性中添加XCF约束
- Period, Offset, From To的约束语法都和UCF一样。

--------复制寄存器相关事项--------
1. 什么时候要复制寄存器?
- Fanout太多导致延时增大(在FPGA中不是最主要的因素)
- Fanout太分散相距太远导致布局布线后出现过长的走线

2. 复制寄存器有哪些方法?
- 手动作HDL Coding,并且为了防止这些寄存器再次被综合器优化合并,需要将“Equivalant Register Removal”设置为False。
- 让工具自动复制。为需要复制的寄存器添加Max_Fanout约束,并关闭Resource Sharing和Equivalent Register Removal。注意当Max_Fanout约束设置得过小时,可能不会生效。

--------使用BlackBox注意事项------------
1. 什么是BlackBox
- 一个大的设计中可以用到一系列网表文件作为输入的一部分而并不全部使用HDL文件。当综合这个大设计时综合器不需要知道这个网表文件是怎样实现的,而只需要知道它的输入输出接口就可以了。这样的网表就称为黑盒子,因为我们不需要看到它的内部情况。
- 通常付费IP都会以BlackBox的形式

2. 如何使用BlackBox
- BlackBox网表可以是EDIF或NGC文件。
- 每个BlackBox网表都需要有一个与之相对应的HDL文件来注明它的端口。这个HDL只说明BlackBox的端口信息,而不提供具体实现信息。这个只提供端口信息的HDL文件称为Wrapper。Wrapper的名字通常需要与BlackBox网表的名字相同。
- 在ISE工程中使用BlackBox时只需要将它的Wrapper添加到工程中。然后像普通的模块一样在其上层声明和例化就可以使用。
- BlackBox网表文件可以放在ISE工程目录中,也可以放在其他任意文件夹内。当不放在ISE工程目录时,需要在Translate属性中将Macro Search Path指向这个目录。多个目录使用"|"分割。

3. 如何制作BlackBox
- BlackBox只是普通网表而已。XST的综合结果就可以直接作为BlackBox使用。
- 通常BlackBox外部还会连接其他逻辑,所以BlackBox中一般不插入IOBUF。在XST属性中去除Insert IO Buffer的选项。



type=text/javascript> if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 92066; var cb_entryId = 2105904; var cb_blogApp = "sangreal"; var cb_blogUserGuid = "b234da07-1aa6-e011-a53f-842b2b196315"; var cb_entryCreatedDate = '2011/7/14 8:38:00';

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1782

帖子

22

粉丝