Verilog中数字不指定位宽与数制,综合时会出问题么
例子2:s_axi_awaddr <= s_axi_awaddr + 3840;
小弟最近负责系统在FPGA上的实现,目前功能基本OK了,但是看到代码中有如上的语句,不知道这种coding style会不会成为设计中的隐患?
按照逻辑设计,4143232和3840都是十进制,目前综合也是按照10进制来处理的,那以后会不会出现综合器认为4143232和3840是16进制数的情况呢?
围观帮顶
这么写就是十进制啊。如果是16进制的话,应该写成16‘hxxx
不同的综合器都会认为是10进制么,不指明位宽有关系么
我也自己顶一个
我用xilinx,个人觉得是可以的。不过,不推荐用10进制的方式描述。
嗯如果由于coding style的问题导致出来的电路和逻辑设计的不一样,比较难发现和调试
不指定位宽、不指定进制是相当不好的习惯。
一个是可读性差,对资源需要用多少位宽很模糊。你例子里的比较器、加法器是多少位的,一眼看不出来。
一个是可能造成预料外的仿真结果。你这一例好像不会有什么大问题,但难保以后不遇到。
最好还是加上吧,也不麻烦的
我们学的是默认为10进制,32位宽
前辈您好,我在用verilog导入到cadence时提示如下错误,但是我在.v文件中没发现错误,请您帮忙看一下是什么问题。/home/dianke/ic5141/design/sar_logic.v
assign start =!en_! & en_reg;
|
ncvlog: *E,EXPSMC (/home/dianke/ic5141/design/sar_logic.v,28|20): expecting a semicolon (';') [6.1(IEEE)].
begin
|
ncvlog: *E,CSISYX (/home/dianke/ic5141/design/sar_logic.v,110|21): case item syntax error [9.5(IEEE)].
default:
|
ncvlog: *E,NOTSTT (/home/dianke/ic5141/design/sar_logic.v,114|22): expecting a statement [9(IEEE)].
endcase
|
ncvlog: *E,NOTSTT (/home/dianke/ic5141/design/sar_logic.v,119|21): expecting a statement [9(IEEE)].
module __nclib.sar_logic:module
errors: 4, warnings: 0
把和报错相关的几行代码全贴出来
十分感谢热心相助,我已经解决了,在此谢过
一定要加上位宽,因为不加位宽默认会综合成32位的。写verilog必须严谨。
