在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11673|回复: 13

[求助] verilog2001中关于`define的作用域

[复制链接]
发表于 2013-12-26 15:42:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
请教各位一个问题,如题:
1.一般我们的宏定义都写在专门的.v中,这个宏定义define的作用域是多大,是全局吗?
2.现在出现这么个问题,用quartus软件,用文本的方式*.qsf去管理工程(可以认为就是quartus settings + filelist),但是发现define.v的作用域并不是全局(define.v的位置必须要在上面),这是怎么回事?

谢谢大家!
发表于 2013-12-26 16:41:05 | 显示全部楼层
是的,在编译时调用这个变量前就要先定义好,你可以调整下编译列表的位置,或者干脆写在专门的.v文件,放在比较top的位置。
发表于 2013-12-26 20:41:53 | 显示全部楼层
写在模块外面就是全局吧,里面就不是全局吧,我也是菜鸟
发表于 2013-12-27 11:16:38 | 显示全部楼层
内容没人?
发表于 2013-12-27 20:15:53 | 显示全部楼层
这个的作用域一般都是模块内部的!
发表于 2013-12-28 09:40:30 | 显示全部楼层
感觉还是没明白,2楼的回答可能会有点帮助
发表于 2013-12-29 15:53:17 | 显示全部楼层
回复 1# masure


    所谓全局 是指从它的定义位置开始 一直到项目结束  除非遇到 undef
发表于 2014-4-3 09:06:21 | 显示全部楼层
作用于添加include的文件,从定义开始至文件结尾
发表于 2014-4-3 11:14:36 | 显示全部楼层
记得quartus ii 有一个设置可以将define 设置成全局,类似ISE 都有这种设置。
发表于 2017-4-13 17:57:31 | 显示全部楼层
回复 1# masure

如果你去查verilog的官方文档,上面说的是define是没有范围限制的,一旦被定义,在哪里都可以用。所以,define的作用域就是从编译器编译到该define,直到编译结束或者是遇到`undef或者是被重复define。所以define真实的作用域是由编译的顺序来指定的,vcs的编译顺序是按照-f指定的文件列表从上到下来的,ncsim应该也是这样。
如果你遇到define作用域不对,一定是编译的顺序不对,期望作用域全局的定义,要放在编译的最前面。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 09:27 , Processed in 0.035188 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表