verilog之预编译

1、基本作用

预编译,就是在verilog进入编译器前的准备工作。一般是完成一些文件的调用,一些编译器的设置,一些参数的定义。一般使用include,define,timescale就可以实现。比较灵活的使用是ifdef和endif的插入,可以将预编译的功能拓展。

2、使用事例

`define WIDTH 8
`include "demo_include.v"
`include "demo_h.h"
`timescale 10ns/1ns
`define cut
module demo;
reg [`WIDTH-1:0] s1; //different from parameters
reg clk;
demo_include U1(
.clk(clk)
);
initial begin
#1
$display(`WIDTH);
#2
`ifdef cut
$stop;
`endif
#2
$display(`HEIGHT);
$stop;
end
endmodule

上面的事例包括了定义了参数,引用了文件,设置时序间隔。

主要需要注意的是ifdef-endif的使用:

这里的使用方法就是将ifdef定义的宏作为开关使用,控制特定的代码段是否工作。类似一个可选择性注释的开关。

还有其他的作用,一般是编辑器的设置,这里不多介绍,这里记住这个使用方法就可以。

注意预编译区的代码也是按照前后顺序依次执行的。使用ifdef需要注意顺序,define要在ifdef前面使用。同理,也可以使用ifdef优化参数,对参数进行分类。

3、总结反思

预编译的内容不是特别复杂,一般用于提高设计的普适性和灵活性。在复杂设计时,应当注意预编译的充分利用以提高设计的效率。

verilog之预编译的更多相关文章

  1. Verilog 预编译

    Verilog 预编译 Verilog 语言支持宏定义(`define),参数 parameter,局域参数(localparam)以及`include等内容.这些数据常量的支持极大方便数字系统设计. ...

  2. 警惕!高版本VS发布时预编译导致Mono中Razor找不到视图

    早前一段时间,一位朋友在Q群里面找到我,说它按照<Linux.NET学习手记>的操作,把一个ASP.NET MVC 4.0的项目部署到Mono之后出现Razor无法找到视图的现象.当时费了 ...

  3. .NET MVC Razor模板预编译(二)

    在前面一片文章:<.NET MVC4 Razor视图预编译(一)> 里面我采用的是PrecompiledMvcViewEngineContrib组件进行预编译视图的虚拟地址注册,但是这个组 ...

  4. .NET MVC4 Razor视图预编译(一)

    在平时使用.NET MVC中不乏有类似的需求:某些razor视图,特别是系统后台的视图,不想让用户自行更改,需要通过某种方法把视图模板编译到项目的dll中去. 但是VS并不提供razor的预编译,如果 ...

  5. JDBC_part2_DML以及预编译_编写DBUtil工具类

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! jdbc day02 DML语法 比起插叙语句,没有R ...

  6. javascript中的预编译问题

    Js作为脚本语言,可以不需要编译直接运行,但遇到类似变量或者函数同名,预编译方面的知识可以帮助我们更好解决问题. 示例: 这是一段js中普通的函数调用代码 <script>1.    // ...

  7. DelphiXE10.1项目中增加预编译的方法

    操作: 菜单选择Proceject->Options->Delphi Compilerz在Conditional Defines(第一行)中添加预编译标识.例:VCL代码:uses{$IF ...

  8. C语言的傻瓜式随笔(二):全局变量、预编译、goto

    函数的作用:可以实现代码的重用. 函数只需要定义1次,那么函数中的代码就可以随意的调用.       -某不知出处的基本概念 学而时习之,如有误笔,请指正 一.goto跳转语句 goto在C语言的作用 ...

  9. 体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图

    这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配 ...

  10. 关于JavaScript预编译和执行顺序以及函数引用类型的思考

    昨晚在对项目中的一部分做模块化处理的时候,遇到了一个问题,一个重新定义的function对一个通用类中的function进行赋值覆盖的时候,失败了.问题抽象出来是这样的: <script > ...

随机推荐

  1. java 从零开始手写 redis(五)过期策略的另一种实现思路

    前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...

  2. [技术选型与调研] 流程引擎/工作流引擎:Activiti、Flowable、Camunda

    1 概述:流程与流程引擎 低代码平台.办公自动化(OA).BPM平台.工作流系统均需要流程引擎功能 [工作流引擎的三大功能] 1)验证当前过程状态:在给定当前状态的情况下,检查是否有效执行任务. 2) ...

  3. 【Unity3D】协同程序

    1 简介 ​ 1)协程概念 ​ 协同程序(Coroutine)简称协程,是伴随主线程一起运行的程序片段,是一个能够暂停执行的函数,用于解决程序并行问题.协程是 C# 中的概念,由于 Unity3D 的 ...

  4. python-web:flask框架下的html实例——用户注册页面

    1.submit实现页面跳转,方法为get <h1>用户注册</h1> <!-- 使用get方式提交,method为post/get,action保存提交到哪里 --&g ...

  5. win32-ReadProcessMemory在x86和x64下运行

    #include <iostream> #include <Windows.h> #include <winternl.h> #include <tchar. ...

  6. live555开发笔记(一):live555介绍、windows上msvc2017编译和工程模板

    前言   在pc上搭建流媒体服务器软件,打开视频接受推流,使用live555方案.   live555介绍   Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了标准流媒体传输 ...

  7. django学习第十一天---django操作cookie和session

    Cookie cookie解析 会话 http协议是无状态的,无连接的 导致每次客户端访问服务端需要登录成功之后才能访问的页面,都需要用户再重新登录一遍,用户体验极差. 客户端想了个办法,cookie ...

  8. Alpine安装gcc g++ make编译环境

    apk add gcc g++ make cmake gfortran libffi-dev openssl-dev libtool

  9. vscode配置远程开发环境

    下载vscode 下载好了后,先安装两个插件,商店里面搜索"Chinese",中文语言包, "python"安装包,安装好后重启vscode. 本地的pytho ...

  10. 在Vue中使用Canvas绘制背景

    好家伙, 在vue中使用canvas绘制与在html中使用canvas绘制大致相同, 但又有所区别  法一(无图片资源): vue中canvas的使用 - 掘金 (juejin.cn) 找到canca ...