【CO】ISE的仿真工作流程浅析

对于ISE的仿真工作流程的一些个人见解

ISE的仿真工作流程浅析

仿真是什么

我们编写Verilog程序,是通过代码来模拟硬件操作。将代码转化为硬件行为并反映出来,这是ISE仿真去做的事情。至于我们看到的图形化界面所呈现的波形等信息,只是对仿真结果的呈现。并不是真正的仿真。

ISE仿真工作流程

在编写P4评测机时,对于ISE执行的命令其实只有两条:

1
2
1. ISE 的安装路径/bin/nt64/fuse -nodebug -prj mips.prj -o mips.exe mips_tb
2. mips.exe -nolog -tclbatch mips.tcl

第一条命令是对mips_tb进行编译,编译结果为mips.exe文件。执行这一步骤会在当前工作目录下产生两项关键文件(当然还有一些fuse的脚本之类的不过不在讨论范围内):isim文件夹和mips.exe可执行程序。如果我们把产生的该.exe文件移至其他目录下执行,则会报错找不到isim文件夹,这告诉我们两条信息:

  1. .exe的执行依赖于执行的工作目录
  2. 这里编译产生的.exe依赖于isim文件夹。

这里的isim文件夹即为mips.exe进行仿真所依赖的文件,是必不可少的。同时我们还应该知道,.exe的执行是和当前工作目录有关的,故应当把isim文件夹和生成的mips.exe程序放在同一目录下。

mips.prj是执行的项目所包含的所有文件,内容如:

1
2
3
4
5
6
7
8
9
10
11
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\ALU.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\CTRL.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\datapath.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\DM.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\EXT.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\grf.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\IM.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\mips.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\mips_tb.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\npc.v"
verilog work "C:\Users\UserX\Desktop\p4_auto_test\mips\pc.v"

如果verilog程序中使用了$readmemh()来读取相对路径指向的文件,那么当前目录为工作目录。

第二条命令是按照mips_tcl中规定的方式执行mips.exe,mips_tcl中的内容如:

1
2
run 200us;
exit

所以总结一下ISE的仿真流程:

  1. 编译文件产生.exe可执行程序和isim文件夹(仿真依赖文件)。
  2. 运行.exe并产生输出。

运行评测命令后目录结构如下:
目录结构

Add Source和New Source的一些区别

Add Source是通过相对路径进行调用而不是通过拷贝,即Add Source的文件并没有在当前项目的工作目录下,只是被当前项目调用。New Source是在当前项目目录(即工作目录)下新建文件。
但是在实例化过程中并不会产生影响:
p3
p4
因为这些文件都在.prj中被包括进了项目内:
prj文件
同时我们也可有这样的猜想:
在寻找文件时,会优先在当前项目目录下进行查找:第一张图中没有导入datapath时有一个问号标志,后面的路径是E:\ise\


这是我在讨论区回答问题时的一些总结。原文连接:http://cscore.buaa.edu.cn/#/discussion_area/1494/1798/posts


【CO】ISE的仿真工作流程浅析
http://example.com/2024/11/06/【CO】ISE的工作流程浅析/
作者
mRNA
发布于
2024年11月6日
许可协议