May 14

BlackBox 不指定

RickySu , 20:53 , 技术经验 , 评论(3) , 引用(0) , 阅读(1565) , Via 本站原创 | |
BlackBox是FPGA设计中一个重要的技巧,不过觉得Xilinx的文档没有很好地将它讲清楚。

BlackBox的主要想法就是把设计的某一个子模块单独综合,综合的结果作为一个黑盒子子模块,上层设计不再对这个模块进行优化,只能看到它的端口。

要让XST实现BlackBox,其实非常简单,将一个子模块单独综合后,会得到ngc文件或者edif文件。在使用这个网表时,在子模块的描述文件中只要包含端口信息而不要实现的信息(这个文件通常称为wrapper),这样XST就会自动寻找project目录下的网表文件了。不过HDL文件和网表文件的文件名得相同。
如果网表文件不在project目录中,就要在Translate的Search Macro Path属性中填写寻找的路径,多条路径可以以|分割。

写个简单的示例:
顶层文件top.v/vhd,子模块是ngc格式的网表module.ngc,子模块有一个仅描述了端口的wrapper文件module.v/vhd.
HDL中不用包括任何blackbox属性。综合器会自动加上的。

在Reference的页面中有for vhdl和verilog的详细例子。敬请参阅。

注1:
说到wrapper,因为综合工具综合时其实是不读ngc/edif网表的(分析时序除外),子模块的端口完全是靠wrapper告诉综合器的。而ngc/edif的网表是在translate(NgdBuild)的时候才将所有的网表组合为一个ngd文件的。

注2:
生成用于子模块的ngc网表时,要在XST属性中选择不添加IO Buffer。否则最后使用的时候由于这些不该有的buffer会在Translate的时候报错。

Reference:
Black Box support
Tags: , ,
Kitdoe
2009/03/24 19:52
zan
生成用于子模块的ngc网表时,要在XST属性中选择不添加IO Buffer。否则最后使用的时候由于这些不该有的buffer会在Translate的时候报错。
谢谢,总算找到问题所在了~~
zhj1985 Email
2009/03/02 16:42
如果是verilog写的话,就只要先写verilog文件:
module name (input_name,output_name);
   input input_name;
   output output_name;

endmodule

然后把网表文件放在该目录下就可以了。

楼主,我是在看你那篇文章“XST Synthesize Tips ”时点过来的。那篇文章中的其他几个常用选项(如Add IO Buffers)我都找到哪里设置的,BlackBox这个应该是不用特别设置的吧,默认的
RickySu 回复于 2009/03/02 18:36
是的,不用特别设置
lubee Email
2007/05/19 15:25
请教:文中的一句话"在子模块的描述文件中只要包含端口信息而不要实现的信息,这样XST就会自动寻找project目录下的网表文件了。"是不是针对VHDL来说的,若使用verilog,是不是就直接例化就可以了?还需要在子模块中使用black box的约束语句吗?
非常感谢!
RickySu 回复于 2007/05/20 20:38
我的做法对于VHDL和Verilog是相同的。没有试过你的方法,不过估计是不行的。
另外,感觉lubee兄并没有完全理解我说得做法,可能我写个例子更好些:)
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]