原创 ise9.1 使用总结

2011-4-28 20:09 5845 5 6 分类: FPGA/CPLD

终于开始编程序了,这里先总结总结我自己遇到的问题,因为问题太多,以后再遇到了没准就忘记怎么解决了。持续更新吧。


编号便于查找


(1)编dcm时钟控制测试程序时,设置好了ip,例化输出,综合时出现错误


       ERROR:Xst:2035 - Port <clk> has illegal connections. This port is connected to an input buffer and other components.
       查到的解决方法是禁掉自动I/O Buffer insertion 功能,具体的做法是右击synthesize,然后properties->Xilinx Specific Options,把add I/O buffer 的勾去掉,综合通过。但是这样处理了之后在map时又引入了许多的warning,而且还会引发错误。方法出处一会转帖出来。


(2)dac8812的控制时序测试时,综合没问题,但是map时出现错误


        Pack:198 - NCD was not produced. All logic was removed from design.


       其实这个错误的来源是下面的这几个warning导致


       MapLib:701 - Signal clk connected to top level port clk has been removed.


       MapLib:701 - Signal dad connected to top level port dad has been removed.
       以下省略很多这样的warning,这个问题之前一直没注意,后来才知道问题出在我在问题(1)中的处理,按照同样的流程把add I/O buffer 勾上,综合到route都没什么问题,可见warning也是不能忽略的呀。


(3)刚才不知道怎么了,行为仿真的时候出现下面的error


       ERROR:HDLParsers:3482 - Could not resolve instantiated unit dacinter in Verilog module work/datest_top in any library


       意思好像是找不到我top里例化的模块了,重新添加了一下,好用了。


(4)行为仿真发现没有波形,全是XX或者ZZZ,以前改一下clk频率就好了,这回这招不好使了,后来尝试改了一下rst的时间点,向后一段时间,发现好用了,仿真用的是ise自带的simulation。


(5)综合错误:ERROR:Xst:528 - Multi-source in Unit <entity> on signal <sig>


        大多数时候应该是同一个变量,在两个always模块中赋值了。还查到一些其他情况,一并粘贴:


Solution 1


This error appears when XST determines that there is contention on a particular signal. If the processes assigning values to this signal are mutually exclusive (as in the case of 3-state buffers), this message can be ignored.

However, in most cases, XST is able to determine when multiple drivers are illegal, and will stop synthesis soon after this message.

Check this signal and modify your code to avoid the existing contention.


Solution 2


In some cases, XST ties unconnected output ports to ground. If the output port is part of a 3-state bus, which in turn connects to another 3-state bus, then connecting one bit of the bus to ground will cause a multiple-driver error. Verify that this is not occurring in your design by searching for the following warning:

"WARNING:Xst:1305 - Output <dataout<23>> is never assigned. Tied to value 0."

To work around this issue, remove the unused output port.


Solution 3


This has also been seen in the following condition:

When there is an association signal named to_qvm_d4.Q_num.

When using association signal(to_qvm_d4.Q_num), XST will rename it to "to_qvm_d4_Q_num" during synthesis. There is signal named "to_qvm_d4_Q_num" in the same architecture. XST is confused with these two signals and errors.

To work around this issue, rename either of the two signals.


Solution 4


EDK Designs

For EDK Designs using bidirectional signals DIR=IO and THREE_STATE=FALSE, the external port name must match the connecting signal name exactly. NOTE: IOB_STATE is deprecated in future EDK versions.


(6)ERROR:Xst:902 - "dec_seg.v" line 38: Unexpected  event in always block sensitivity list.


一个组合电路,综合出错,上网查说是敏感表中不能既有电平又有边沿,而且也不能同一个信号的上升沿和下降沿同时出现,去掉敏感表中的边沿,运行OK了。


(7)map的时候出现错误ERROR:Pack:679 - Unable to obey design constraints (LOC = ...) which require the combination of the following symbols into a single slice component:
检查ucf文件,发现有一个管脚被重复分配,改了一下,运行OK!


(8)ERROR:NgdBuild:604 - 'GTP_DUAL_1' could not be resolved,这个错误在translate的时候报,是软件的bug,网上查说ise12.2多发,但是我用的9.1也出了这个,原因大概是ISE只复制了顶层的NGC文件,即mycpu.ngc,而顶层mycpu还包含其它ngc文件,因此找不到,报错。按照查到的解决办法,有两种。        


解决办法1是:在mycpu module前面加上


(* box_type = "user_black_box" *)


如:


(* box_type = "user_black_box" *)
   mycpu  my_cpu_moudle (.fpga_0_clk_1_sys_clk_pin(sys_clk),
                        .fpga_0_rst_1_sys_rst_pin(sys_rst_n),
                        .fpga_0_RS232_RX_pin(uart_rxd),
                        .fpga_0_RS232_TX_pin(uart_txd),
                        .led_out_GPIO_IO_O_pin(led_out[0:3]));


办法2是在ISE 的processes栏下,选中Translate,右键process propreties.....

弹出Translate Properties对话框,

在-sd  macro search path 中加上EDK工程的implementation子目录的路径

就可以了


一开始采用了第一种解决方案,translate通过,但在map时出错。改用第二种,问题是,我用了两个ip core,这个指定的路径只能是一个最直接的目录,所以只能完全解决其中一个core的错误,把两个core的文件夹里的文件全拷到工程目录中,指定工程目录路径为implementation子目录路径,搞定。


源地址:http://bbs.21ic.com/icview-213795-1-1.html


 


可以忽略的warning


(1)ProjectMgmt - "F:/verilogworks/FPGATESTS/datest_top_map.ncd" line 0 duplicate design unit: 'Module|datest_top'

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1756693 2014-5-8 11:51

good.good learning.

用户377235 2011-12-21 15:55

拷贝别人的东西有意思吗?

相关推荐阅读
用户1500115 2011-03-21 20:41
【转】Xilinx FPGA 开发中遇到的问题及解决途径
转自http://www.eefocus.com/leageshine/blog/08-01/142179_f13c8.html比我自己写的清楚明白 Q:Checking timing specifi...
用户1500115 2010-12-13 15:23
ic行业的前景分析---转
来源:http://www.ic1w.com/ic_news/201003/775.html;关于ic行业肯定各家看法都不同,取个我愿意看到的文章,算是给自己的心理安慰吧。关于国内IC行业前景的一些个...
用户1500115 2010-12-06 21:40
(转)数字IC后端设计流程
1. 数据准备。对于 CDN 的 Silicon Ensemble而言后端设计所需的数据主要有是 Foundry厂提供的标准单元、宏单元和I/O Pad的库文件,它包括物理库、时序库及网表库 ,分别以...
用户1500115 2010-12-03 15:29
【转】两段式和三段式Verilog状态机
三段式状态机:时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息。状态机采用VerilogHDL语言编码,建议分为三个always段完成。...
用户1500115 2010-11-29 10:34
如何编写testbench的总结(非常实用的总结)
 1.激励的设置相应于被测试模块的输入激励设置为reg型,输出相应设置为wire类型,双向端口inout在测试中需要进行处理。方法1:为双向端口设置中间变量inout_reg作为该inout的输出寄存...
EE直播间
更多
我要评论
1
5
关闭 站长推荐上一条 /3 下一条