数字IC知识点总结(11)-VCS与Makefile仿真

首先我们来看Makefile是什么,引一段CSDN博客中的文段

make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。
首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:
1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2.如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3.如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。

只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。

简单来说就是我们使用一个make指令来代替先前的许多命令。

再来说VCS,什么是VCS呢?

下面说基础操作(最最基础的)

首先进入个人的目录中.v文件的路径下,对我们设计好的.v文件和tb文件首先进行编译,在终端Terminal中输入

vcs -sverilog -debug_all -timescale1ns/1ps led.v tb_led.v -l com.log 

这样对源代码RTL和testbench进行编译。其中led.v是设计文件,tb_led为测试文件。

跑完之后可以ls一下,看到在目录中出现了simv这个可执行文件

接下来输入指令来跑仿真

./simv -l sim.log

最后在dve中查看波形

dve -vpd vcdplus.vpd &

其中这个&表示后台运行。这样我们就打开了dve界面,在图形化界面中选择simv进行setup 、run 即可

但是这样太过于复杂了,所以我们选择使用Makefile。首先我们的的要做的make指令包括:

  • make all 进行上述所有的操作
  • make com 编译
  • make sim 运行sim
  • make run_dve 打开DVE
  • make clean 删除仿真中间文件

我们在终端中有Makefile的目录下只需要输入上述make指令即可完成操作

在此之前我们首先将.v tb文件的路径生成为file.list,在中断中输入

find -name "*.v" > file.list

打开file.list成这样

之后gvim makefile

all: com sim run_dve

com:
  vcs -sverilog -debug_all -timescale1ns/1ps led.v tb_led.v -l com.log

sim:
  ./simv -l sim.log

run_dve:
  dve -vpd vcdplus.vpd &

clean:
  rm -rf *.log csrc simv* *.key *.vpd DVEfile coverage *.vdb

保存后在终端中输入 make all 即可进行上述操作,出现的也和上面的都一样。最后做完可以make clean清除刚才仿真生成的文件,可以ls一下查看是否清除干净

#数字IC##笔记##FPGA工程师##电路设计工程师##芯片设计工程师#
全部评论
感谢楼主分享之前就是学ic的,可惜没干这行
1 回复 分享
发布于 2022-04-27 15:27

相关推荐

华为硬件笔试超详细指南!附题库发现又到了华为机考季,身边有小伙伴也在准备机考,但据反应突击复习成绩不理想[笑哭R],主播在这做一个华为笔试指南。硬件机考题型:题型是30道单选60分,10道多选40分,全对多选才得分,相对单选多选难度较大,经常出现某个选项把握不准的情况,因此经常容易丢分,所以能不能过还是有较大运气成分。考察范围:模电数电:二极管特性,触发器/锁存器特点(rs,jk,t,d),同步电路,异步电路,逻辑图的化简,主要还是偏概念的需要很清晰了解。电力电子:熟悉基本的半导体器件的特性(mos,igbt,bjt),共射极,共基级,共集电极的特点,反馈有关知识点,不同类型整流电路输出电压大小,常见的拓扑电路如buck,boost,谐振有关的知识点,运放特点以及应用。通讯协议:常见的spi,i2c,485等,需要了解其起始,结束以及工作模式,同步异步,双工还是半双工,传输速率原理图和pcb相关知识点:这块相对来说是最陌生的,只能靠实践,自己亲手完全了解还是有点困难的。主要考察原理图绘制的一些细节以及高速信号走线的注意事项。其他:碰到其他题目真的没办法只能纯看脸了,有的完全和硬件没啥关系或者我们在平时根本接触不到比如什么失效曲线,齿轮比,示波器测试要求等等,就只能靠多多做题记住。备考指南:时间充裕情况下,可以从牛客刷题,上面模电数电题库,还有pcb相关的题库都比较全面。关于高速信号相关的可以推荐两本书:王剑宇 高速信号设计实践  和  于博士 信号完整性分析。基本都对硬件电路中的一些注意事项以及原理有说明。以上比较适合时间充裕的小伙伴。没时间的话,只能建议找往年的题目,不懂就背,背就完了,基本都是一个大题库,里面随机抽题,重合概率起码有40,50%,运气好点肯定能过的。
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
09-06 19:01
南开大学 Java
📍面试公司:比亚迪🕐面试时间:9月6号💻面试岗位:后端开发❓面试问题:**一、八股**1. Java中ConcurrentHashMap的扩容机制是如何实现的?2. JVM中ZGC的读写屏障是如何工作的?3. Spring Boot自动配置的原理是什么?4. MySQL的redo log和binlog的区别与联系?5. Redis的集群数据迁移过程是怎样的?6. 如何设计一个高可用的分布式配置中心?7. Kafka的消费者重平衡机制是如何触发的?8. 什么是分布式事务的TCC模式?9. 如何实现一个分布式系统的流量控制?10. 谈谈你对响应式编程的理解11. Java中线程池的拒绝策略有哪些?12. 数据库的读写分离如何保证数据一致性?13. 什么是服务网格的数据平面和控制平面?14. 如何设计一个分布式系统的监控告警体系?15. 谈谈你对云原生架构的理解**二、项目**1. **苍穹外卖项目**:- 如何实现分布式环境下的定时任务调度?- 订单状态机是如何设计的?2. **黑马点评项目**:- 如何保证缓存与数据库的双写一致性?- 热门数据淘汰策略是如何实现的?**三、手撕**1. 力扣1466.重新规划路线:n个城市组成的有向图,计算需要改变方向的路线数量- 思路:DFS/BFS遍历,统计需要反转的边数2. 力扣448.找到所有数组中消失的数字:给定一个含n个整数的数组,找出所有在[1,n]范围内但没有出现在数组中的数字- 思路:利用数组本身作为哈希表,通过取反标记已出现的数字
查看21道真题和解析
点赞 评论 收藏
分享
评论
7
45
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务