请教一个verilog的语法错误
出错的代码大概是这样子:
1 reg [3:0]a,b,c;
2 reg aa,bb,cc;
3
4 always @(posedge CLK)
5 begin
6 if(~RST_)
7 a <= o;
8 else
9 a <= b;
10 end
报出来的ERROR是:
Line 1:Root scope declaration is not allowed in verilog95/2K mode
Line 2:Root scope declaration is not allowed in verilog95/2K mode
Line 4: Syntax error near "always".
用的是XILINX的FPGA综合工具。
多谢大家指教!
我觉得是不是第一行啊,应该是
reg [3:0] a;
reg [3:0] b;
reg [3:0] c;
你那样写是不是会认为b和c是1位的。
我不知道我说的对不对,好久没碰verilog了
1. 敏感列表没有复位信号
2. 输入输出端口没定义
3. a<=o(你写的好像是字母o),,该为a<=4'd0
缺少敏感变量表会造成什么后果呢?
这个复位是同步复位吧,应该不会报这个错误,感觉赋值语句有问题a <= o;
缺少了复位信号敏感列表使得本来应该综合成时序逻辑的
现在综合为组合逻辑了
他这个是同步复位
但是在实际应用中都不这么用
都用异步复位(同步释放)
好犀利
你这么用,不代表都这么用。你老人家有没有仿过、综合过小编的代码?就敢这么说?
1、2两个错误警告,意思是在root空间声明信号。
说白了,就是在module ... endmodule之外写了reg ..., wire ...等等来声明信号。
root空间的定义,请小编参考systemverilog语言手册的相关部分。
3错误是指always附近语法错误,具体是什么错误,需要更多代码来定位错误。也有可能
是那个字母o引起,根据小编给出代码只能猜测是把0(零)写成了字母o。
小编的寄存器写法,是标准的同步dff,rst_信号会成为D端逻辑的一部分。
任何一个设计,到底如何复位,取决于整个系统是先来rst还是先来clk,而非“都怎么怎么用”。
顶,我也觉得是
好像是o的问题,其它看起来都比较正常
你这个说法太片面了...工程中用同步复位的地方也有很多,虽然没有异步复位多..
小编你把整个文件的内容贴上来吧...
你这程序一看就是写着玩的,不具有涉密性...
你贴上来大家才好帮你查错...
楼上有朋友说的对,错误1.2的意思就是类似namespace的意思,你在space以外使用了未定义变量.
错误三就是明显的0写成了o....
lz这个…那个O是啥?第三个原因可能就是小编把0写成O了;;前两个错误很蛋疼啊,你程序没写完整,LZ你给个整体程序吧…不然没办法给你看,,
语法 综合前先nLint检查 无Error 无Warning再做综合,对于能综合的 ,结果怎么样,就看你的代码水平,代码风格啦
