ngo文件的使用
直接在ISE中添加源文件就可以了。
我用的是lattice软件,为什么产生的ngo文件不可以用啊,是不是要设置什么啊
大概是这样的,NGO本身是个ISE和LATTICE可以识别的网表文件(或者更后面一点的文件),你在引用的时候,在RTL代码里面要设个空模块,或直接用那个(名字).v,可以看下里面的内容,就是input output port信号,然后就是综合器关闭,然后再打开的两行语句,就是告诉综合器把这个模块综合成黑盒。 然后在后端MAP和PAR阶段,在用到这个模块的时候,直接调用工程目录下的这外(名字).ngo,就MAP过去了。
所以你得要使用的.v文件,同时要把.ngo放在工程目录下两步。
我调用一个模块可以map过去,如果我在顶层调用二个模块是,就说我的系统时钟不能驱动多个模块的输入时钟,如果是用的源代码,就没有这个问题,但是用NGO文件就不行。怎么使其能map过去啊
你用的是BUFR区域时钟,还是BUFG全局时钟?另外NGO生成的CORE要调用的是硬核资源吧?也就是位置是固定的?比如RAM, DCM之类的资源它都是有位置的。
既然是提示不能驱动多叶钟,那先把时钟改成BUFG来看看,同时对于某些资源,其时钟来源是IO列的,然后内部再做其它处理,如果你同时例化两个,那可以将就其中一个的位置,那另一个资源却无法过去,因为不能调用资源列的BUFR或BUFG,这种情况较少见。
你用的NGO是什么资源?
我的顶层是module top_led(clk,cout);
input clk;
output [1:0]cout;
led1 led1(
.clk(clk),
.cout(cout[0])
);
led2 led2(
.clk(clk),
.cout(cout[1])
);
endmodule
模块端口列表是
module led1(clk,cout)/*synthesis syn_black_box*/ ;
input clk;
output cout;
endmodule
module led2(clk,cout)/*synthesis syn_black_box*/ ;
input clk;
output cout;
endmodule
我的ngo文件是用synplify pro 生成的edn文件,然后用lattice daimond编译edn文件生成的。最后建立新工程在工程中加上ngo,端口列表文件,顶层文件,/*synthesis syn_black_box*/ 写在synplify pro工程文件的代码中。ERROR - map: IO buffer clk drives IO buffer led2/clk_pad directly, but this is not possible是我顶层文件的问题还是我生成ngo文件的问题啊
我的顶层是module top_led(clk,cout);
input clk;
output [1:0]cout;
led1 led1(
.clk(clk),
.cout(cout[0])
);
led2 led2(
.clk(clk),
.cout(cout[1])
);
endmodule
模块端口列表是
module led1(clk,cout)/*synthesis syn_black_box*/ ;
input clk;
output cout;
endmodule
module led2(clk,cout)/*synthesis syn_black_box*/ ;
input clk;
output cout;
endmodule
我的ngo文件是用synplify pro 生成的edn文件,然后用lattice daimond编译edn文件生成的。最后建立新工程在工程中加上ngo,端口列表文件,顶层文件,/*synthesis syn_black_box*/ 写在synplify pro工程文件的代码中。ERROR - map: IO buffer clk drives IO buffer led2/clk_pad directly, but this is not possible是我顶层文件的问题还是我生成ngo文件的问题啊
我在网上看到的大多是赛林思的设计生成ngo网表文件,在综合设置中将IO buffer选项去掉,这样设计就不会出现我类似的情况了,但是我在lattice diamond中没有找到类似的设计设置。不知道我的设计是不是赛灵思的生成ngo网表文件那样就行了,还是有其他问题。
我的ngo文件是用synplify pro 生成的edn文件,然后用lattice daimond编译edn文件生成的。
问题可能出在这儿,你直接使用EDN看看,不要编译成NGO后再加进去。
这是我的猜想,不知道是否成功,你先试试,通过了我再说原因。
我如果用edn文件和verilog源代码文件效果是一样的可以正常实现功能,但是为了设计的保密性要使用ngo作为工程的子模块的文件,然后在顶层调用啊,感觉edn文件看不出源代码啊,但是要求用ngo文件。在赛灵思的软件中生成ngo黑盒文件时要设置IO buffer选项去掉,但是在lattice 中不知道怎么进行那个设置。
你把这个模块命名种两个模块,然后分别调用例化一次试试,
如果使用edn文件,和使用源代码是一样的,可以通过,就是使用ngo就有问题了,好像是IO buffer问题,赛林思中说设置IO buffer,但是lattice中没有说设置啊,不知怎么解决。
我的意思是说把这个模块分别命名为name1.v和name2.v,然后再编译成name1.ngo, name2.ngo,再分别例化调用它们来看一下,应该是没啥效果,可以试试看。
我倒是没有遇到你这样的问题,而是出现了其它杂七杂八的问题,说是这个模块不能扩展,后经过反复的查找原因还是正常调用了。
