QUARTUS两个警告的意思——求解释
1.Warning (10236): Verilog HDL Implicit Net warning at xx.v(166): created implicit net for "MEM_HAIOS"
2.Warning (10227): Verilog HDL Port Declaration warning at xx.v(106): data type declaration for "CPU_data" declares packed dimensions but the port declaration declaration does not
请问这两个warning一般是在什么情况下会出现?如何解决?如果不解决的话 会产生什么样子的影响?
在网上查了很多资料都没有关于这方面的解释。求解脱~
能不能把源文件贴出来看一下?便于大家分析啊
1. 检查一下这个net“MEM_HAIOS”,应该是没有声明吧,或者是没有驱动。
2. CPU_data这个信号声明和端口声明不一致。
小编,verilog的基本语法你要好好学习了。
你好,这个程序源代码很长,可能没有办法全部贴出来,我只能大致描述一下了:
关于MAIN_HAIOS,这个变量,在底层文件中定义的是wire型的,程序如下:
assign MEM_HAIOS=((~AEN)&(rst_n)&(addr==20'h00220))?1'b0:1'b1;
这个功能块在顶层文件中被调用,调用的时候也是wire型。功能块的作用是地址译码,奇怪的是凡是被译码的都被提示有这个类似的错误。
关于MAIN_HAIOS这个变量是否有驱动我在回答上面朋友的帖子的时候已经说明了,我想肯定不会是一些简单的变量定义不相符合的问题吧,如果是这样的问题,提示应该是直接说变量的定义不对。
关于CPU_data这个变量, 我在顶层文件中的端口声明是 inout,变量定义是wire ;在底层的5个模块中被调用,4个输入,1个输出。
大家在编译的时候没有出现过类似的警告吗?
我知道警告的问题严重性可能不高,但是我很想搞明白到底是为什么会出现这样的警告,奇怪的是在网上都查不到类似的消息。
呵呵,第二个问题搞明白了,确实是端口声明和变量定义的问题,原来端口的声明中的位宽必须和变量定义中的位宽相同,我原来以为位宽只要在变量定义中说明就可以了。
2楼说的很对,我是该好好看看verilog的语法了。
在第1个问题我还没有搞懂。继续求。
你的回复:" 关于MAIN_HAIOS,这个变量,在底层文件中定义的是wire型的,程序如下"
是不是在顶层调用的时候没有写wire?什么地方漏掉了
wire MAIN_HAIOS;
这句话吧,不是底层就是顶层。
1. 你是调用instance了吧?忘了声明wire了。
2. 数据位数declare错了吧?例如 output [31:0] Go; reg [30:0] Go就会产生这样的警告。
instance是什么意思?
学习了
关于这个问题,我也遇到了,不过增加:wire “被警告的信号”;之后警告就没了
呵呵 估计跟Verilog的两个标准有关
第一个问题应该是MEM_HAIOS wire没有定义,也许你前面定义的时候单词拼写错了,所以没发现,这样的问题一不小心就会犯,呵呵
