尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

仿真(3):do文件写法

仿真(3):do文件写法
📅 发布时间:2026/7/31 3:17:17

Q:来教我写.do文件~

A:好的,.do文件就是 ModelSim/QuestaSim 的批处理脚本。它把你手动点击鼠标或逐条输入命令的操作,全部写在一个文件里,一次性跑完。

它本质上是Tcl 脚本(扩展名是.do),核心命令就那么几个。我教你写一个最通用的模板。

第一步:一个最通用的.do文件模板(适用于任何项目)

用文本编辑器(如 gedit、Notepad++)新建一个文件,命名为simulate.do,输入以下内容:

tcl

# ============================================ # 1. 清除上次仿真环境(避免冲突) # ============================================ quit -sim # ============================================ # 2. 创建并映射工作库 # ============================================ vlib work vmap work work # ============================================ # 3. 编译所有 .v 和 .sv 文件 # ============================================ # 方法 A:如果当前目录下全是你的文件,直接全部编译 vlog *.v *.sv # 方法 B:如果只想编译指定的几个文件(把注释去掉,把方法A注释掉) # vlog full_adder.v # vlog tb_full_adder.v # ============================================ # 4. 加载仿真(指定顶层模块) # ============================================ # 注意:这里要加载的是 Testbench(顶层),而不是被测试的模块 vsim work.tb_full_adder # ============================================ # 5. 添加波形信号 # ============================================ # -r 表示递归添加所有子模块的信号 # * 表示添加该层级所有信号 add wave -r sim:/tb_full_adder/* # ============================================ # 6. 运行仿真 # ============================================ # -all 表示一直运行到遇到 $stop 或 $finish run -all # 或者你可以指定固定时间(如果 TB 里没有自动结束的话) # run 100ns # ============================================ # 7. 查看波形(可选) # ============================================ # 这行通常不用写,因为图形界面会自动弹出 # view wave

第二步:如果你不想写 Testbench,想手动给激励(纯命令行方式)

如果你只有一个full_adder.v,没有tb_full_adder.v,那么.do文件需要手动force信号:

tcl

quit -sim vlib work vmap work work vlog full_adder.v # 加载模块 vsim work.full_adder # 添加信号 add wave -position insertpoint sim:/full_adder/* # 手动施加激励(每隔10ns变化一次) force a 0 force b 0 force cin 0 run 10ns force a 0 force b 1 force cin 0 run 10ns force a 1 force b 0 force cin 0 run 10ns force a 1 force b 1 force cin 0 run 10ns # 最后退出 run 10ns quit -sim

第三步:如何在 ModelSim 里运行这个文件?

  1. 打开 ModelSim。

  2. 在 Transcript(底部的命令行窗口)里,切换到你的文件所在目录:

    tcl

    cd D:/your_project_folder
  3. 输入命令执行你的脚本:

    tcl

    do simulate.do

第四步:最常用的几条命令解释(直接记这几句就够了)

命令作用示例
quit -sim关闭当前仿真会话(相当于重置环境)quit -sim
vlib work创建一个名为work的库文件夹vlib work
vlog *.v编译所有.v文件vlog full_adder.v
vsim work.模块名加载某个模块进行仿真vsim work.tb_top
add wave *添加当前层级所有信号到波形图add wave sim:/tb_top/*
add wave -r *递归添加所有子模块的信号add wave -r /*
run -all一直运行到仿真结束($stop)run -all
run 100ns只运行100纳秒run 100ns
restart重置仿真时间为0,不清除信号restart
force强制给信号赋值(命令行方式)force a 1

第五步:一个你马上就能用起来的终极版

既然你刚写完Full_adder,在项目文件夹里新建sim.do,直接复制粘贴这个:

tcl

quit -sim vlib work vmap work work vlog *.v vsim work.tb_full_adder add wave -position insertpoint sim:/tb_full_adder/* run -all

然后在你写好的Full_adder.v和tb_Full_adder.v所在的文件夹下启动 ModelSim,输入do sim.do,波形就会自动出来。以后你跑任何实验,只要把tb_full_adder改成你的顶层 TB 名字就行了。

相关新闻

  • OpenClaw多模态AI代理框架部署与应用指南
  • 电脑自动化解决方案 OpenClaw 小龙虾 Windows 部署实操文档(含安装包)
  • 从Il2Cpp逆向到DLL注入:构建游戏安全分析实战框架

最新新闻

  • 软件工程期末高效复习:用工程化思维构建知识体系与实战技巧
  • 基于Cucumber的UI自动化测试框架:从BDD理念到工程实践
  • 2026年 无锡单锥双螺旋混合机专业供应商实力解析:高效均匀混合工艺与稳定可靠设备保障 - 优企名品
  • STM32F103C8T6流水灯项目实战:从GPIO原理到工程优化
  • VS Code配置Unity安卓真机调试:从环境搭建到实战避坑指南
  • AI生成UI组件库效能跃迁公式(α×DesignIntent + β×CodeFidelity + γ×DevX):实测提升前端交付效率3.8倍

日新闻

  • 7步掌握KMS智能激活工具:Windows和Office永久激活完整方案
  • 如何在Windows上运行iOS应用:ipasim跨平台模拟器终极指南
  • 2026年重庆工伤赔偿律师口碑推荐:洪家木律师用专业赢得信赖 - 本地品牌推荐

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号