May
14
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
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
May
14
ISE6以前: Xilinx Answer Record 19604
ISE7以后: Xilinx Answer Record 21508
ISE9的compxlib已经有图形界面,就更方便了一些。Xilinx Answer Record 24800
修改了ModelSim.ini后,要注意这个ini是不是真正起作用,因为modelsim有比安装目录中的优先级更高的modelsim.ini,他们分别是工程目录中的modelsim.ini和在环境变量MODELSIM中指定的modelsim.ini。
ISE7以后: Xilinx Answer Record 21508
ISE9的compxlib已经有图形界面,就更方便了一些。Xilinx Answer Record 24800
修改了ModelSim.ini后,要注意这个ini是不是真正起作用,因为modelsim有比安装目录中的优先级更高的modelsim.ini,他们分别是工程目录中的modelsim.ini和在环境变量MODELSIM中指定的modelsim.ini。





