VCS编译过程:
1.参数处理:
当敲下make compile后,Makefile会去调用vcs这个可执行文件,并把一堆参数丢给它
而vcs这个可执行文件实际上是一个脚本,一个能处理上百个参数的脚本
2. 代码处理:
预处理: 使⽤命令:gcc -E -o hello.i hello.c
编译: 使⽤命令:gcc -S -o hello.s hello.i
汇编: 使⽤命令:gcc -c -o hello.o hello.s
预处理/编译/汇编:这个vcs会去调用真正的编译器来编译我们的verilog/systemverilog代码,
代码编译完成后,此时得到的是一些目标文件、动态库,存在放csrc文件夹里面(注意里面有一个文件还是叫Makefile):
3. 链接:
链接: 使⽤命令:gcc -o hello hello.o
vcs会调用g++来完成目标文件、动态库的链接,而指导g++工作的,正是上面提到的套娃Makefile;
至此,得到了一个完整的可执行文件simv
仿真过程:
执行 可执行文件simv
并以+UVM_TESTNAME=?的方式传入用例名,就可以对不同用例进行仿真