搜索
bottom↓
回复: 19

verilog中变量定义,quartus和modelsim中编译时规则不一致

[复制链接]

出0入25汤圆

发表于 2019-8-30 09:09:56 | 显示全部楼层 |阅读模式
从github上下载了一个verilog代码,,用quartus编译没问题,,
然后用modelsim仿真,结果编译阶段报错,,说下图中淡蓝色那行csr_w没定义,,看了下原来是定义在使用的后面

于是就把定义挪到了淡蓝色那行上面,,编译这里不报错了,,
结果更多地方报错,,原来这个代码里面很多地方都用了这种变量定义在变量使用之后的方法

难道我要把整个代码里全部定义都改一遍吗,,那也太麻烦了,,
突然想到坛里 dukelec 大侠发帖说的用 iverilog + gtkwave 仿真的方法,,于是就把代码拿到iverilog下仿真,,结果编译没有报错,,而且也看到正确的波形了

我知道标准里是规定要先定义后使用的,,modelsim严格符合标准,,quartus和iverilog在这点上没有严格符合标准,,
可把代码一行一行全改了也太麻烦了,,
请问modelsim有没有设置能够让编译不那么严格,,这种代码也能编译通过?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-8-30 14:34:50 | 显示全部楼层
学习一下,我之前也遇到了这个问题。

出0入0汤圆

发表于 2019-8-31 07:44:02 | 显示全部楼层
你说“quartus和iverilog在这点上没有严格符合标准”,是不是不太对?感觉都是标准,但是属于不同版本的标准。

quartus:ctrl+shift+e,然后compiler settings -> verilog hdl input 右边 verilog version 那里的选项,你用了哪个?

modelsim:compile -> compile option ...  -> verilog & systemverilog -> language syntax 这里的选项,你用了哪个?

出0入0汤圆

发表于 2019-8-31 08:52:23 | 显示全部楼层
大佬开始进军fpga啦

出0入12汤圆

发表于 2019-8-31 08:59:06 | 显示全部楼层
是不是 verilog 的的标准不一样?

出0入12汤圆

发表于 2019-8-31 09:07:52 | 显示全部楼层
你的 modelsim 是直接建立工程还是在 quartus 里面调用?

出0入25汤圆

 楼主| 发表于 2019-8-31 10:11:52 | 显示全部楼层
本帖最后由 XIVN1987 于 2019-8-31 10:13 编辑
givealittletime 发表于 2019-8-31 07:44
你说“quartus和iverilog在这点上没有严格符合标准”,是不是不太对?感觉都是标准,但是属于不同版本的标 ...






大侠要感兴趣的话可以自己编译试下:https://github.com/ataradov/riscv


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入25汤圆

 楼主| 发表于 2019-8-31 10:15:03 | 显示全部楼层
abutter 发表于 2019-8-31 09:07
你的 modelsim 是直接建立工程还是在 quartus 里面调用?


从quartus里面通过 Tools -> Run Simulation Tool -> RTL Simulation 调用的

出0入25汤圆

 楼主| 发表于 2019-8-31 10:18:58 | 显示全部楼层
givealittletime 发表于 2019-8-31 07:44
你说“quartus和iverilog在这点上没有严格符合标准”,是不是不太对?感觉都是标准,但是属于不同版本的标 ...


modelsim那个默认选的是 Default,,我给勾选成 Use Verilog 2001,,关闭对话窗,重新打开对话框,,勾选的是Use Verilog 2001
但是如果我把modelsim关掉,,重新打开,,勾选的又变成 Default了,,不保存我的设置

出0入25汤圆

 楼主| 发表于 2019-8-31 10:22:52 | 显示全部楼层
meirenai 发表于 2019-8-31 08:52
大佬开始进军fpga啦


生命不息,折腾不止

出0入0汤圆

发表于 2019-8-31 10:38:00 | 显示全部楼层
本帖最后由 givealittletime 于 2019-8-31 10:45 编辑
XIVN1987 发表于 2019-8-31 10:18
modelsim那个默认选的是 Default,,我给勾选成 Use Verilog 2001,,关闭对话窗,重新打开对话框,,勾 ...


modelsim如果从default改成2001,仿真还报不报原来的错误?

附:在modelsim的安装目录下,找到modelsim.ini文件,将其只读属性去掉,然后打开modelsim将defaut改成2001后退出,再进去看看是否已经保存。

出0入25汤圆

 楼主| 发表于 2019-8-31 10:44:26 | 显示全部楼层
givealittletime 发表于 2019-8-31 10:38
modelsim如果从default改成2001,仿真还报不报原来的错误?


报,一样的

改成1995后就变成报下面的语法错误了,,应该是因为localparam在1995标准中没定义,,所以改动还是起作用了的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入25汤圆

 楼主| 发表于 2019-8-31 10:57:54 | 显示全部楼层
givealittletime 发表于 2019-8-31 10:38
modelsim如果从default改成2001,仿真还报不报原来的错误?

附:在modelsim的安装目录下,找到modelsim. ...


搞明白了,,

modelsim中设置是起作用了的,,我修改设置的时候下面三行的值是跟着变化的:


modelsim关闭后这三行的值也能保存下来

只不过 从quartus中通过 Tools -> Run Simulation Tool -> RTL Simulation 启动modelsim的时候设置又被重新设置了,,设置命令如下:



可知设置的verilog标准也是2001,,和quartus中使用的标准一样,,所以不是标准差异引起的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入25汤圆

 楼主| 发表于 2019-8-31 11:07:14 | 显示全部楼层
givealittletime 发表于 2019-8-31 07:44
你说“quartus和iverilog在这点上没有严格符合标准”,是不是不太对?感觉都是标准,但是属于不同版本的标 ...


我查了下verilog 2001的标准:


其中一段:


可见数据类型声明必须出现在引用之前,,modelsim严格遵守了这一条,,quartus和iverilog没有严格遵守

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-8-31 11:47:39 | 显示全部楼层
那就只好对自己要求严格点了,写代码规范、严谨

出615入1076汤圆

发表于 2019-8-31 13:36:30 | 显示全部楼层
看了下,这个项目作者也是用 iverilog 仿真的。
其实,不仅是定义在使用之后不报错,1 bit wire 型不定义都不报错。
最简单的办法是:提交 issue,等作者自己整理干净代码。

出0入0汤圆

发表于 2019-8-31 19:26:57 来自手机 | 显示全部楼层
RAMILE 发表于 2019-8-31 13:38
楼主立刻推出一款verilog代码格式化工具

自动完成比较实用  很多c编辑器有  不知道verilog有不有

出0入0汤圆

发表于 2019-8-31 21:50:05 来自手机 | 显示全部楼层
貌似quartus编译好后调用modelsim不用再编译的

出0入0汤圆

发表于 2019-9-1 07:54:35 | 显示全部楼层
楼主的代码风格......

出0入442汤圆

发表于 2019-9-15 11:01:04 来自手机 | 显示全部楼层
dukelec 发表于 2019-8-31 13:36
看了下,这个项目作者也是用 iverilog 仿真的。
其实,不仅是定义在使用之后不报错,1 bit wire 型不定义都 ...

不在前面定义的话,ise默认就是1bit。。导致我至少浪费了120分钟在分析数据为毛只有最低位有数据。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 19:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表