【CO】ISE的仿真工作流程浅析
对于ISE的仿真工作流程的一些个人见解
ISE的仿真工作流程浅析
仿真是什么
我们编写Verilog程序,是通过代码来模拟硬件操作。将代码转化为硬件行为并反映出来,这是ISE仿真去做的事情。至于我们看到的图形化界面所呈现的波形等信息,只是对仿真结果的呈现。并不是真正的仿真。
ISE仿真工作流程
在编写P4评测机时,对于ISE执行的命令其实只有两条:
1 |
|
第一条命令是对mips_tb进行编译,编译结果为mips.exe文件。执行这一步骤会在当前工作目录下产生两项关键文件(当然还有一些fuse的脚本之类的不过不在讨论范围内):isim文件夹和mips.exe可执行程序。如果我们把产生的该.exe文件移至其他目录下执行,则会报错找不到isim文件夹,这告诉我们两条信息:
- .exe的执行依赖于执行的工作目录
- 这里编译产生的.exe依赖于isim文件夹。
这里的isim文件夹即为mips.exe进行仿真所依赖的文件,是必不可少的。同时我们还应该知道,.exe
的执行是和当前工作目录有关的,故应当把isim文件夹和生成的mips.exe程序放在同一目录下。
mips.prj是执行的项目所包含的所有文件,内容如:
1 |
|
如果verilog程序中使用了$readmemh()
来读取相对路径指向的文件,那么当前目录为工作目录。
第二条命令是按照mips_tcl中规定的方式执行mips.exe,mips_tcl中的内容如:
1 |
|
所以总结一下ISE的仿真流程:
- 编译文件产生.exe可执行程序和isim文件夹(仿真依赖文件)。
- 运行.exe并产生输出。
运行评测命令后目录结构如下:
Add Source和New Source的一些区别
Add Source是通过相对路径进行调用而不是通过拷贝,即Add Source的文件并没有在当前项目的工作目录下,只是被当前项目调用。New Source是在当前项目目录(即工作目录)下新建文件。
但是在实例化过程中并不会产生影响:
因为这些文件都在.prj中被包括进了项目内:
同时我们也可有这样的猜想:
在寻找文件时,会优先在当前项目目录下进行查找:第一张图中没有导入datapath时有一个问号标志,后面的路径是E:\ise\
。
这是我在讨论区回答问题时的一些总结。原文连接:http://cscore.buaa.edu.cn/#/discussion_area/1494/1798/posts