首页 > 其他分享 >verilog预编译处理(ieee标准)

verilog预编译处理(ieee标准)

时间:2024-01-25 17:55:58浏览次数:29  
标签:宏名 定义 resetall 源文件 编译 verilog 模块 include ieee

`celldefine

`endcelldefine

在ieee中的描述如下:

  这两个指令用于将模块标记为单元模块,它们表示包含模块定义。某些PLI使用单元模块用于这些应用,
如计算延迟。该命令可以出现在源代码描述中的任何地方。但是,推荐将其放在模块定义的外部。

但是具体还不知道怎么用,没实践过。

`default_nettype:

该指令用于为隐含网络指定网络类型,也就是为那些没有被说明的连线定义网络类型。 

如果没有出现’default_netype指令,或者如果指定了’resetall指令,则隐含的网络类型是wire。

当default_netype设置为none时,需要明确地声明所有网络;如果没有明确地声明网络,则产生错误。

`define 宏定义

使用格式:`define 标识符(宏名) 字符串(宏内容)
作用很简单,就是为了在编译预处理时,把程序中在该命令之后的所有宏名替换成宏内容。

可以通过这种方式将一个很长的字符串用很短的宏名替代,或者用有意义的宏名去代替一个
没有意义的数字或符号。通过修改宏定义中的宏内容可以实现大规模修改,更加简洁。

关于使用宏定义的7点说明:

  1.建议宏名均使用大写,以便更好地和变量区分。

  2.`define可以写在模块外和模块内,有效范围为定义之后到原文件结束。通常将其定义在module外,
     作为程序的一部分,在此程序内都有效。

  3.在引用已定义的宏名时,必须在宏名的前面加上符号`,表示该名字是一个经过宏定义的名字。

  4.宏定义是用宏名代替字符串,也就是做简单的置换,不做语法检查。只有在编译已经被宏展开
    后的源程序时才报错。
  
  5.宏定义不是verilog HDL语句,不必在行末加分号,加分号则分号也被当成宏内容字符串进行替换。

  6.宏定义可以嵌套,定义一个新的宏定义时可以引用之前定义过的宏定义进行嵌套。

  7.宏名和宏内容必须在同一行进行声明,宏内容中如果有注释行,注释行不会被替换。

`undef 宏定义取消:

用于取消之前声明过的宏定义。

条件编译:

  `ifdef,`elsif,`else,`endif,`ifndef
  当FLAG1被定义过了,执行FLAG1,没有被定义过就检查下一个,有点类似ifelse
  其中`ifndef是没有被定义过才执行,`endif是结束语句。

    `ifdef <FLAG1>
   // Statements
    `elsif <FLAG2>
   // Statements
    `elsif <FLAG3>
   // Statements
    `else
   // Statements
    `endif

什么时候使用等后续用上了再更新

`include:文件包含处理

一般形式为:

  `include"文件名"

    文件包含的意思是一个源文件可以将另一个源文件的内容全部包含进来:将目标文件的全部内容复制
  插入到`include命令出现的地方。

    这个功能十分有用:可以将一些常用的宏定义命令或task组成一个文件,然后用`include命令将这些
  宏定义和task拿到自己的源文件中,相当于工业上的标准元件拿来使用。另外在verilogHDL文件中,一
  个源文件可能要用到另外几个源文件中的模块,遇到这种情况即可用`include命令将所需模块的源文件
  包含进来(但是一般在一个项目中可以直接用模块名)。

`timescale 时间尺度:

  格式:`timescale 时间单位/时间精度,有效值和单位为1,10,100以及s,ms,us,ns,ps,fs
  (时间精度可以理解为在仿真时设置时间的最小精度,比如#100.11和#100.1就是精度差1个单位

`resetall:

   该编译器遇到`resetall指令时,会将所有的编译指令重新设置为默认值。推荐在源文件的开始放
   置`resetall.将`resetall命令放置在模块内或者UDP声明中是非法的。

标签:宏名,定义,resetall,源文件,编译,verilog,模块,include,ieee
From: https://www.cnblogs.com/tomako123/p/17987525

相关文章

  • mips交叉编译
    ./configure\--prefix=$(pwd)/output\--enable-cross-compile--arch=mips--target-os=linux\--cross-prefix=mips-linux-gnu---cc=mips-linux-gnu-gcc-7.2.0\--disable-everything\--disable-autodetect\--enable-avdevice\--enable-avfilter\--disable-ms......
  • 拉取新项目,编译的时候报:类文件具有错误的版本61.0,应为52.0
    参考文章:https://blog.csdn.net/weixin_45565886/article/details/128771247以下是正文:执行命令:mvncleaninstall-DskipTests报错: 直接启动项目,报错:根本原因:jdk版本太低了,需要升级到jdk17。解决方式:第一步:切换jdk的版本到jdk17。 下载jdk17:https://www.oracle.com/......
  • 关于configure 交叉编译配置问题
    参考来源:https://blog.csdn.net/yxnyxnyxnyxnyxn/article/details/7979530介绍configure是linux下编译的配置工具,通过参数配置编译的目标平台这个configure是一个自动生成的脚本文件,所用的工具是autoconf和automake,这两个工具,根据configure.in和makefile.am文件(可能还需要make......
  • win10 下载 Chromium 源码并编译
      https://www.yangdx.com/2022/07/215.html 辅助看 https://blog.csdn.net/weixin_42081389/article/details/132127613 上面的走完,在编译的时候 下载ninja-win.zip下面放到pathhttps://github.com/ninja-build/ninja/releases cmd要管理员权限   报......
  • Java反编译工具 JD-GUI安装使用
    将源代码转换成二进制执行代码的过程叫“编译”,那么反编译就是将二进制执行代码转换成源代码。在java开发里,源代码是.java文件,然后经过编译后生成计算机识别的.class文件,但是.class文件是计算机识别的我们一般看不明白,因此需要反编译变成我们能读懂的源码,但是反编译后的......
  • openssh9.6 源码编译与交叉编译
    环境ubunut18.04。x86平台openssh9.6,这里我是要移植到别的机器。不是在本地使用所以我要编出两个版本x86和armubunutx86版本编译过程准备工作安装依赖库,可以通过apt包管理安装,也可以源码安装,我们这里需要zlib,openssl和pamlinux安装pam库centossudoyuminstall......
  • gvim中配置systemverilog语法高亮
    GVim的格式设置一般在家目录下的.vimrc文件中进行设置,一些常见的配置可参考如下:点击查看代码"语法高亮度显示syntaxon"设置行号setnu"防止中文注释乱码setfileencoding=utf-8setfenc=utf-8setfencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936,big-5......
  • 利用Taro框架搭建基于React项目并编译成微信小程序
    Taro是一个开放式跨端跨框架解决方案,支持使用React/Vue/Nerv等框架来开发微信/京东/百度/支付宝/字节跳动/QQ/飞书小程序/H5/RN等应用。现如今市面上端的形态多种多样,Web、ReactNative、微信小程序等各种端大行其道。当业务要求同时在不同的端都要求有所表现的时候,针对不......
  • datax编译以及测试流程
    简单记录一下1、编译mvn-Ucleanpackageassembly:assembly'-Dmaven.test.skip=true'   缺少<!--<dependency>--><!--<groupId>org.pentaho</groupId>--><!--<artifactId>pentaho-aggdesigne......
  • m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,测试结果如下:2.算法涉及理论知识概要在现代数字通信和存储系统中,错误检测和纠正(ErrorDetectionandCorrection,EDC)机制是至关重要的。Hamming码,以其发明者RichardHamming命名,是一种线性错误检测和纠正码,广泛应用于这些系......