Makefile使用教程

article/2025/9/11 17:17:16

目录

一、前言

二、VCS的常用命令参数

2.1. 一步法

2.2. 两步法

2.3. 三步法

三、常见错误

四、参考资料


一、前言

以Makefile启动VCS为例来讲解如何使用命令参数,VCS编译文件会引入过多参数,试想如果我们每次都需要终端中敲击过多参数才能运行一次VCS,那么效率显然是很低的,于是通过脚本语言存储参数从而简化操作指令是必要的,于是Makefile派上了用场。

我们通常会将参数写入到Makefile中,然后通过脚本简化命令成make run_vcs来一步完成VCS的编译连接运行,这称为一步法(首参数是vcs)。
 

二、VCS的常用命令参数

命令参数含义补充
vlogan分析verilog文件(如果是分析VHDL文件,类似的指令是vhdlan),编译常用三步法中使用(见下文)
vcs使用vcs编译文件一步法或两步法中使用(见下文)
-sverilog编译的文件中含sv语法,编译sv文件必加这一条vcs -sverilog tb.sv 编译tb.sv文件
-full64以64位模式编译且创建64位可执行文件可供模拟如果是64位操作系统,则必须添加
-l compile.log将编译内容写入到compile.log文件中
+v2k(-v2k)使用Verilog 1364-2001标准广泛使用的标准
-f编译覆盖.v文件和包含路径的文件vcs -f ram.lst  编译ram的lst文件,在lst文件中可能包含路径比如/home/host/rtl/ram.v
-timescale=1ns/1ps定义仿真的时间单位为1ns,精度为1ps为不包含timescale编译器指令的文件指定时间表,并在包含时间表的文件前先指定时间表
+plusarg_save使能传参功能,仿真时可将具体数值传入
-ntb_opts编译的时候加上一些选项-ntb_opts uvm1.2表示加载uvm1.2库文件
+incdir+<directory>指定包含使用`include 编译器指令指定的文件的目录,可以指定多个目录,用+字符分隔每个路径名称;
-debug_all启动所有调试功能,-debug部分调试,-debug_access+<option>(VCS2014版本后新增的debug可选功能)
-nc不打印synopsys的版权信息加或不加都不影响仿真
-R编译后立即启动仿真一步法中使用
-sim_res启用时间分辨率

注意:incdir文件的时候,只能包含文件夹下的文件,而不包括下级文件夹的内容(如果要包含下级文件夹的内容,需要写+incdir+uvm/{test,test/basic_test},这样就包括了uvm下test文件中的文件,同时包含了uvm下test下basic_test中的文件) 

2.1. 一步法

对设计/验证文件用VCS做编译检查时,可以只用一些简单的VCS指令来实现。以下操作适合不涉及仿真,仅仅检查当前写的文件是否有错时使用。

命令结果
vcs +v2k -full64 file1.v  file2.v编译Verilog文件
vcs +v2k -full64 -sverilog file1.v  file2.v  file3.sv  file4.sv编译可包含SV语法的文件
vcs +v2k -full64 -f file1.lst 编译lst文件,文件中包含路径的文件信息

如果在编译后还需要启动仿真(前提:具备验证环境),且文件繁多,且需要添加更多的控制参数,那么需要使用Makefile,以下是一步法的Makefile编写示例

一步法Makefile编写示例:

通过-R选项将编译与仿真操作合并,从而实现一步法

2.2. 两步法

我们有时会将编译与仿真拆分,在编译完成生成simv文件后,再运行仿真执行simv文件,称为两步法。

两步法Makefile编写示例:

与一步法相比,将其拆分成两个步骤,同时不使用-R参数

补充:-gui参数是可选的,控制打开图形化界面,可以打开verdi或dve,dve是vcs原生的,而verdi用的比较广泛

2.3. 三步法

三步法相比于两步法将编译(compile)拆分成了分析(analysis)和细化(elaborate),一般是在面对多文件类型编译时(比如有verilog也有VHDL)用到。实际上这是按照VCS实际运行过程来划分步骤的,VCS运行的过程是将编译通过的文件临时存储,然后通过细化成为可执行的文件.simv,最后通过执行.simv文件即可完成文件的编译与仿真。

在Makefile中先实现分析命令(首参数是vlogan或vhdlan,分别编译verilog和VHDL文件,这里的an是analysis的缩写),再实现细化命令(首参数是vcs),最后实现仿真命令。

三步法Makefile编译示例

三、常见错误

cannot find vcs compiler

不用Makefile编译,时常会少打一些编译参数,比如缺少-full64,则会报cannot find vcs compiler。另外如果编译sv文件,不加-sverilog则会报syntax error(语法错误)

四、参考资料

关于VCS仿真的详细流程:

VCS仿真流程_甲六乙的博客-CSDN博客_vcs vlogan

Makefile详细编写实例:

【数字IC快速入门】Makefile脚本了解_Thomas-w的博客-CSDN博客_makefile脚本

Makefile中的=,:=,+=的用法

Makefile中:=, =, ?=和+=的含义_keep_forward的博客-CSDN博客_makefile中:=

debug选项

Synopsys VCS 编译时,启用debug选项_XtremeDV的博客-CSDN博客


http://chatgpt.dhexx.cn/article/jAJmKWma.shtml

相关文章

Makefile详细教程

Makefile详细教程 我编写本指南是因为我永远无法完全理解 Makefile。 他们似乎充斥着隐藏的规则和深奥的符号&#xff0c;提出简单的问题并没有得到简单的答案。 为了解决这个问题&#xff0c;我花了几个周末的时间坐下来阅读所有关于 Makefile 的内容。 我已将最关键的知识浓…

最实用的Makefile教程 真的很简单(搞不明白网上的教程写那么复杂干嘛)

前言 其实我的要求不高&#xff0c;我就是想要写个Makefile&#xff0c;把我那些需要反复编译的文件处理一下就可以了&#xff0c;所以我当时就拼命地在网上找关于Makefile的教程&#xff0c;结果看到的教程都是啰里啰嗦一大堆&#xff0c;看得我云里雾里。 大家要知道&#…

Makefile的入门完整教程(包学包会)

Makefile的完整入门教程&#xff08;实现不了来打我TAT&#xff09; 看完能够了解Makefile是什么&#xff1b;我们能用makefile做什么&#xff1b;makefile的简易使用 1、什么是Makefile Makefile 可以简单的认为是一个工程文件的编译规则&#xff0c;描述了整个工程的编译和…

Linux makefile 教程 非常详细,且易懂

最近在学习Linux下的C编程&#xff0c;买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊&#xff0c;可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来&#xff0c;方便学习。 后记&#xff0c;看完发现这篇文章和《Linux环境下的C…

Makefile基础教程

前期准备 在真正使用Makefile之前&#xff0c;我们首先先写四个c文件和相应的h文件&#xff0c;分别是fun0.c,fun1.c,fun2.c,fun0.h,fun1.h,fun2.h以及main.c //fun0.c #include "fun0.h" void print0(){printf("hello world 0"); }//fun0.h #include &l…

Makefile教程(掌握这里足够)

众所周知&#xff0c;在Linux环境下进行项目开发那就少了使用make来构建和管理自己的工程。如果想要更加深入的学习&#xff0c;我在这里推荐一本书 https://www.jianguoyun.com/p/DZWKrLIQjKL5Bxi0z5UD 访问密码&#xff1a;KvhT2v 1. makefile的命名 默认的情况下&#xff…

Makefile 编写教程(由简至难)

目录 一、测试代码二、.c 文件与Makefile同级三、.c文件与Makefile不同级四、链接静态库 一、测试代码 本文以将main.c add.c common.h三个文件编译成一个可执行文件为例&#xff0c;来讲解Makefile的编写。以下是每个文件的代码&#xff08;很简单&#xff0c;测试用&#xf…

好看的vscode字体

vscode下载上面出现的字体(自行百度搜索) (Cascadia Code, 等线)(等线是中文, Cascadia Code是英文, 自认为比较cool的搭配, 也可以自行选择)然后放到C:\Windows\Fonts 会自动安装就完事了~ 欢迎大家关注我的公众号:<前端成长指南> 我会把我的原创作品陆续放在上面

Unity3D中字体样式

字体样式分为三种 系统默认字体 自定义字体&#xff08;包括全部字体&#xff09; 自定义字体&#xff08;不包括全部字体&#xff09;系统默认字体描述优点内存占用小缺点没有艺术效果&#xff0c;没有灵魂 自定义字体&#xff08;包括全部字体&#xff09;描述优点具有一定…

前端HTML字体和文本样式

前端HTML字体和文本样式 文章目录 前端HTML字体和文本样式1.字体样式1.1字体大小1.2 字体粗细1.3 字体样式&#xff08;是否倾斜&#xff09;1.4字体类型1.5 样式层叠问题1.6 字体复合属性 2.文本样式2.1 文本缩进2.2 文本水平对齐方式2.3文本修饰 3.行高 属性表示注意点font-s…

layui表头样式_Layui表格好看样式

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Layui表格好看样式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术&#xff1a;web 作者&#xff1a;xq 撰写时间&#xff1a;2019.7.27 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

android+字体样式包,android 改变全局字体样式(第三方字体包)

android 改变全局字体样式 参考&#xff1a;http://stackoverflow.com/questions/2711858/is-it-possible-to-set-font-for-entire-application/16883281#16883281 1.将要替换的字体包放到assets下 2.具体代码&#xff1a; //设置新的字体样式 public static void setDefaultFo…

IDEA 修改字体样式

每次发现别人的IDEA字体都是这么好看&#xff0c; 今天这里推荐一款设置方法美化我们IDEA的代码&#xff0c; 代码变漂亮了&#xff0c;写代码也更带劲&#xff01;注意哦这针对的都是windows系统哦&#xff0c;mac系统就不用了&#xff0c;已经很完美了 第一步&#xff1a;下载…

7.20 Web前端-字体样式

今天为大家介绍一下关于字体的相关知识&#xff0c;这里的知识比较简单&#xff0c;因为之前的教学中我们已经接触到了一部分关于字体的知识&#xff0c;在这里我来汇总说一下。 1.长度单位&#xff1a; 长度单位就是你的字体在网页中占用的长度是多少&#xff0c;在web中不是…

9款漂亮的纯css字体样式

样式&#xff1a; 代码&#xff1a; <html> <head> </head> <style>body{text-align: center;}.hcqFont{position:relative;letter-spacing:.07em;font-size:3em;font-weight:normal;margin:0 auto}.hcqFont:before,.hcqFont:after{position:absolut…

7款漂亮的纯css字体样式

简单粗暴&#xff0c;直接上马&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><h1 class"vintage1">美丽的中国语</h1><h1 class"vi…

纯Css比较好看的中英文字体样式(持续整理版)

刚好公司要用到&#xff0c;需要纯css的&#xff0c;不用任何插件就可以显示很不错的字体 样式一&#xff1a; <style type"text/css"> .tb-js-yf-style{font-family: "Arial","Microsoft YaHei","黑体","宋体",san…

Windows 安装 HDF5 C++库

1. 简介 HDF5可以自己从源码编译&#xff0c;也可以通过下载已经编译好的版本的安装包安装。下面介绍的是安装包安装的方式。 2. HDF5安装包下载 地址1&#xff1a; https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.18/bin/windows/ 地址2&#xff1a; h…

HDF5 使用介绍

1、HDF5介绍 HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF 是由美国国家超级计算应用中心&#xff08;NCSA&#xff09;创建的&#xff0c;以满足不同群体的科学家在不同工程项目领域之需要。HDF 可以表示出科学数据存储和分布的许多必要条件。HDF 被设计…

hdf5 文件生成 C++

使用 hdf5 配置 1. 包含目录 E:\WorkSpace\SoftWare\hdf5\include 2.库目录 E:\WorkSpace\SoftWare\hdf5\lib\ 3.链接器 -输入 hdf5.lib hdf5_cpp.lib 4. C/C -预处理器定义 H5_BUILT_AS_DYNAMIC_LIB; 注意 使用 hdf5 用于 训练 过程 void dataToMat(vector<Lan…