ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Verilog编译指令

2022-08-14 16:01:42  阅读:174  来源: 互联网

标签:模块 31 编译 指令 Verilog resetall include


编译指令

编译指令(Compiler directive)能够让仿真器和综合工具执行一些特殊的操作。特点:

  1. 以`(重音符号)为前缀
  2. 从处理位置一直保持有效,除非被其他指令覆盖或者取消
  3. `resetall指令将所有编译指令复位成默认值

主要的编译指令:

  1. celldefine和endcelldefine:
  • 用于将模块标记为单元(cell),一些PLI程序可能会使用到。目前不常用。
  1. default_nettype
  • 用于指定隐含声明线网(Implicit net declaration)的类型。类型可以是none, wire, wand, wor, tri, triand, trior, tri0, tri1.
  • 只能在模块外部使用。
  • 默认类型是wire。
  • 如果设置为`default_nettype none,那么所有的线网都要清晰申明,否则会报错。
  1. define和undef
  • 前者用于定义一个宏替换,后者用于取消一个宏替换,resetall对define不起作用。
  • 可以在模块内外,效果都是一样的,parameter就只能在模块内。
  • 看看这个讲解,很基础,很清晰。
  • 宏定义的还可以这样使用:
    `define macro_name(arguements) text_string(arguements)
//Compare two 32-bit signed number
`define gt(x,y) ((x[32] == 0 && y[31] == 0) ? (x[30:0] > y[30:0]) : \
                 (x[31] == 1 && y[31] == 1) ? (x[30:0] > y[30:0]) : \
                 (x[31] == 0 && y[31] == 1) ? 1 : 0)
//pay attention that there is no ";" next to the ending of `define sentence!
reg [31:0] pig,dig;

if (`gt(pig,dog)) $display ("Info : Pig is greater than dog");
  1. include
  • include用于在源文件中插入另一个文件,要插入的内容可以是全局宏定义,也可以是经常使用的任务和函数。
  • 最好不要在文件名中使用绝对路径和相对路径,而是在编译时使用+incdir指定路径名。
  • resetall对include不起作用
  • 一个include不能插入多个文件,必须用多条include语句来实现。
  • include "../../primitive.v"插入的文件必须使用""括起来。
  1. ifdef,else,elsif,endif,ifndef
  • 用到再说
  1. resetall
  • 在编译中碰到resetall,所有指令恢复默认值。
  • resetall不能在模块和UDP中使用。
  1. line
  • 没懂
  1. timescale
  • 用于指定后续模块的仿真时间单位(time_unit)和时间精度(time_precision)。
  1. unconnected_drive和nounconnected_drive
  • 对于模块为连接的input端口,unconnected_dirve pull1/pull0,用于指定这些端口的上拉(1),下拉(0)
  • resetall = nounconnected_drive
  1. begin_keywords和end_keywords
  • 说明对一块源代码块使用哪一个保留关键字集合。
  1. pragma
  • 改变verilog源程序解释的指令。

掌握常用的编译指令就好

标签:模块,31,编译,指令,Verilog,resetall,include
来源: https://www.cnblogs.com/xing-usetc/p/16585290.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有