鲜花购物网站源码,天津建设工程信息网怎么上传资质企业,深夜一个人适合看的电影,娄底市建设银行宣传部网站提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 文章前情预告一、define是个啥#xff1f;二、为什么要使用define三、怎么使用define四、define的横向拓展五、define思想在生活中的体现!六、结论七、参考资料八、… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 文章前情预告一、define是个啥二、为什么要使用define三、怎么使用define四、define的横向拓展五、define思想在生活中的体现!六、结论七、参考资料八、交个朋友 文章前情预告 本篇文章介绍define宏定义之前也学过随着最近有更新的了解记录下来想和大家分享希望能帮助到大家博客主要是从以下几个方面介绍define是什么用define宏定义的优点是什么怎么用宏定义宏定义使用的注意事项宏定义的思想在其他方面的体现宏定义的思想在生活中的联系最后奉上写这篇博客的参考资料
一、define是个啥
define宏定义无论是在Verilog中还是Systemverilog中经常被用到宏定义的格式是
define macro_name(formal_argu_list) macro_text“‘define”是宏定义的标志通知综合软件这是一个宏定义。请注意有开头符号“’”。
“macro_name”是宏定义的名称。
“macro_text”是宏定义被综合软件重新替代的内容。
“formal_argu_list”是宏定义可能的输入参数里面可以有多个输入。在综合软件处理宏时这些变量可以取代“macro_text”里对应的内容。当不需要参数时可以省略这一项。
定义宏语句的最后是没有分号“;”的这点我们要特别注意。如果不小心加了分号那么这个分号会被综合软件视为“macro_text”的一部分参与替代工作。
二、为什么要使用define
define宏定义的本质就是用简短的字符代替一大段字符可以起到减少代码量的作用使代码看起来简洁可以提高代码的移植性。
三、怎么使用define 说完什么是define与为什么要有这个东西最重要的就是在实践中使用不以应用为目的实践就是耍流氓
例子1.define在Verilog中经常被用来定义变量的位宽
define BIT_WIDTH 8
reg [BIT_WIDTH-1:0] bit_variable; //reg [7:0] bit_variable在《SystemVerilog_3.1a》标准中关于define宏的描述如下所示
例子2.define在Systemverilog中可以实现参数的传递成为带参数的宏函数
define test_inst (A,B,C) \.Au_inst (Ainst), \.Bu_inst (Binst), \.Cu_inst (Cinst).....test_inst(a,b,c);等价于.au_inst (ainst),.bu_inst (binst),.cu_inst (cinst)注意事项 1、 define在实现带参数的宏函数时一定要加上这个符号综合软件只有在识别到这个符号时才会将参数进行传递这个符号相当于tcl脚本set a中的set,Perl脚本中的$只有出现这个关键符号软件才会进行变量替换 2、 为了避免重复宏定义可以使用下述方式进行定义
ifndef data_wdithdefine data_width
endif3、重要重要重要 重要的事情说三遍关于宏定义的有效范围宏定义的有效范围从宏定义开始对后续文件一直有效直到另一个宏定义改变这个宏定义的值所以这就要求按照一定的顺序进行文件的编译例如Verilog在module关键字之前一般都是include一些宏定义的文件如果这些文件在endmodule后去包含编译器就会因为找不到这些宏定义的替换内容而报错 4、 宏定义本质上就是替换编译不会对这个宏名称做语法检查只有当被替换的内容出错时编译才会报错所以在调用宏定义之前一定要告诉编译器宏定义的内容去哪里寻找Verilog是通过include、incdir这个关键字去寻找C语言调用子函数通过跳转地址跳转到实际的子函数中去执行一句话如果替换就得告诉编译器去哪里找
四、define的横向拓展
define宏定义的本质就是替换这种替换就是用更少的信息表示更多的信息与之原理相同的还包括Systemverilog的interfaceC语言的子函数
五、define思想在生活中的体现!
有句话怎么讲的”艺术来源于生活“技术与生活也息息相关define的思想个人感觉在生活中处处可见比如你去买了苹果你妈问你买的啥你回答买的水果你爸买的西瓜你妈问你买的啥你爸回答水果都是一样的好比水果这个宏定义在你那里被定义成了苹果在你爸那里被定义成了西瓜宏定义的名称不重要重要的是定义的内容一千个人眼里有一千个哈姆雷特一千个人眼里有一千个宏定义内容
六、结论
前面强调的按一定顺序编译的问题Makefile可以实现确保编译的顺序问题关于Makefile的描写下一篇文章见
七、参考资料
参考资料1 verilog 宏之define 参考资料2Systemverilog 宏定义 define
八、交个朋友 博主写文章有很多不足之处欢迎各位大佬多多评论留言批评指正在博文中放置大量图片是因为思考快与慢中介绍了一个启动效应希望大家在看到这些知识的时候还可以拥有乐趣拥有视觉的冲击也希望这个文章能够真正帮助到大家