Makefile使用教程

目录

一、前言

二、VCS的常用命令参数

2.1. 一步法

2.2. 两步法

2.3. 三步法

三、常见错误

四、参考资料


一、前言

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

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

扫描二维码关注公众号,回复: 15861182 查看本文章

二、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博客

猜你喜欢

转载自blog.csdn.net/weixin_55225128/article/details/128514273
今日推荐