OpenRisc-57-ORPSoC仿真环境的构建

引言

要利用ORPSoC进行开发,最直接的方式当然是直接用FPGA开发板进行调试,当往往很多时候,直接在FPGA板子上运行的时候会出现问题。这时候,对ORPSoC进行仿真就是非常必要的了,通过仿真,可以尽快的锁定问题,解决问题。本小节就以ORPSoC针对ML501开发板为例,解决这个问题。


1,通用版本的RTL仿真

在opencores提供的ubuntu镜像里面,对于通用的版本(ORPSoC除了通用版本外,针对不同的开发板,有些模块有所差异),ORPSoC的RTL仿真器使用的是icarus,镜像里面已经安装好了,不需要任何工作,就可以对通用版本的ORPSoC进行仿真。请参考orpsoc.pdf的4.4章节。在~/soc-design/orpsocv2/sim/run目录下执行make rtl-tests VPI=1 即可建立VPI和RSP server,给or32-linux-gdb的端口号是50002,

运行or32-linux-gdb,target remote:50002 即可和ORPSoC通信,向ORPSoC中的RAM中load 程序(eg.vmlinux)。


2,仿真环境组成

整个仿真系统由or32-linux-gdb,RSP server,VPI,ORPSoC的jtag tap以及SoC中的其它模块组成。

关于具体细节,我们在介绍advanced debug system时,已经介绍过了,这里不再赘述。

如有疑问,请参考,其中的VPI模式。

http://blog.csdn.net/rill_zhen/article/details/14167515


3,环境要求

1>opencores提供的ubuntu镜像,里面预装了openRISC的gun工具链,以及ORPSoCv2的源文件和由makefile组成的工程结构。

http://opencores.org/or1k/Ubuntu_VirtualBox-image_updates_and_information

2>linux版本的modelsim

文件太大,无法上传,我用的是modelsim10.1c。

3>linux版本的ISE

我用的是14.1。


4,工具的安装

1>modelsim的安装与破解

1》modelsim的安装

a,在unbuntu下安装modelsim(命令前面不要加sudo,假设安装目标目录是:/home/openrisc/modelsim)

./install.linux

2》modelsim的破解

a,修改license.src文件

修改license.src文件中的前两行:

SERVER openrisc-VirtualBox 080072d8c85c 1717
VENDOR mgcld /home/zhanglei/modelsim-10.1c/modeltech/linux

其中openrisc-VirtualBox是hostname,可以通过hostname命令查看,

080072d8c85c 是虚拟网卡的MAC,通过虚拟机的设置->网络菜单就可以看到。

/home/openrisc/modelsim/是安装目录,在安装modelsim



b,生成:mentor.dat

在wendows下双击run_me.bat,生成mentor.dat,并将mentor.dat复制到安装目录下。

需要注意的是,如果你直接用的是我安装好的虚拟机,你需要修改mentor.dat中的网卡号为你自己的网卡号,并重启虚拟器。

c,修改环境变量

修改/home/openrisc/.bashrc文件,在文件末尾增加如下内容:

  export LM_LICENSE_FILE="/home/openrisc/modelsim/mentor.dat"
  export PATH=$PATH:/home/openrisc/modelsim/modeltech/linux
  alias licm="lmgrd -c /home/openrisc/modelsim/mentor.dat"

其中"/home/openrisc/modelsim/mentor.dat"是mentor.dat的存放目录,

/home/openrisc/modelsim/modeltech/linux是modelsim运行需要的库文件目录,安装完modelsim会自动生成。

lmgrd -c /home/openrisc/modelsim/mentor.dat是使能license。


d,复制并运行patch

将crack目录下的patch_2010和sfk两个文件copy到/home/openrisc/modelsim/modeltech/linux/mgls/lib

进入目录:cd /home/openrisc/modelsim/modeltech/linux/mgls/lib

执行:./sfk rep -yes -pat -bin /5589E557565381ECD00000008B5508/31C0C357565381ECD00000008B5508/ -dir .


执行上述命令后会出现如下信息:

error: failed to read+write: sfk - skipping
  4 files checked, 2 changed.
  1 errors occurred.

不影响使用。


e,使能环境变量

source /home/openrisc/.bashrc


f,使能license

licm&

如果程序没有退出的话,说明license有效,否则根据错误提示把对应的问题解决掉。


g,测试

执行vsim命令,就会出现我们熟悉的modelsim的窗口,modelsim就安装成功了。如下所示:

OpenRisc-57-ORPSoC仿真环境的构建_第1张图片


2>ISE的安装

1》安装

在linux下直接双击setup文件,按照窗口提示,完成安装即可。在最后需要指定license时,选择xilinx_ise.lic文件即可。

2》修改环境变量

修改/home/openrisc/.bashrc文件,在文件末尾增加如下内容:

source /opt/Xilinx/I14.1/ISE_DS/settings32.sh

保存退出之后,执行source /home.openrisc/.bashrc 使新加的内容起效。

3》测试

执行/opt/Xilinx/14.1/ISE_DS/ISE/bin/lin/ise 就会出现我们熟悉的ISE的窗口,如下所示:

OpenRisc-57-ORPSoC仿真环境的构建_第2张图片


5,ORPSoC工程修改

1>修改soc-design/orpsocv2/boards/xilinx/ml501/bench/verilog/include/eth_stim.v文件,将123行和124行末尾的分号(‘;’)去掉。


2>修改~/soc-design/orpsocv2/bench/verilog/vpi/c/Makefile文件,在文件中增加对MGC_PATH的定义:modelsim的安装目录

OpenRisc-57-ORPSoC仿真环境的构建_第3张图片



6,ORPSoC的仿真

在安装完modelsim和ISE之后,对ORPSoC稍作修改,ORPSoC的RTL仿真环境就搭好了,下面我们就可测试一下吧。

1>运行ORPSoC系统,建立RSP server

在~/soc-design/orpsocv2/boards/xilinx/ml501/sim/run 目录下执行 make rtl-tests VPI=1

如果有什么问题,可以先执行make distclean将之前生成的文件去掉,重新执行make rtl-test VPI=1

如果想看波形,执行 make rtl-test VPI=1 VCD=1

通过修改~/soc-design/orpsocv2/boards/xilinx/ml501/sw/board/include/board.h中的#define BOOTROM_SPI_FLASH来从spi flash启动。

通过修改~/soc-design/orpsocv2/boards/xilinx/ml501/rtl/verilog/include/or1200-defines.h末尾的启动地址来设置第一条指令的地址。

此外,还有一点需要注意,orpsoc的工程里,bootrom.S使用的board.h默认是ordb2a-ep4ce22的,需要在~/soc-design/orpsocv2/sw/目录下执行 

ln ~/soc-design/orpsocv2/boards/xilinx/ml501/sw/board/include/board.h board.h重新设置连接文件,执行ml501的board.h

执行make rtl-tests VPI=1结果如下:

OpenRisc-57-ORPSoC仿真环境的构建_第4张图片


2>运行or32-linux-gdb,向DDR2 SDRAM中下载linux

OpenRisc-57-ORPSoC仿真环境的构建_第5张图片


7,小结

自此,我们把ORPSoC的仿真环境搭起来了。需要说明的是,ML501的ORPSoC的仿真器用的是modelsim,如果你想用其它的仿真器,则需要自改~/soc-design/orpsocv2/sim/bin/Makefile中的相关参数。


Enjoy!


8,RTL仿真参考

上面我们把仿真环境搭起来了,但是如何进行仿真呢?请参考:

http://opencores.org/or1k/ORPSoC_RTL_simulation_debugging

下面是我仿真的波形:

OpenRisc-57-ORPSoC仿真环境的构建_第6张图片




你可能感兴趣的:(OpenRisc-57-ORPSoC仿真环境的构建)