首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Xilinx PCIE IP modelsim 仿真

Xilinx PCIE IP modelsim 仿真

以下是代码片段:
    第一篇博文该写些什么,笔者思虑很久了,回想自笔者接触电子行业以来调过单片机,画过电路板,做个PCI,PCIE,嵌入式开发系统,处理器接口,但每每思之,都感觉各个项目只是浮光掠影,不敢在本论坛班门弄斧,但想到写总结一来可以巩固自己的知识,加深理解,二来可以给要做类似项目的同行一点点启示,三来可以和同行们交流,让大家批评指正,不亦说乎。
    思之再三,还是从最近做的PCIE的项目开始,项目背景就不介绍了,有兴趣的可以私聊。好了,言归正传,介绍一下PCIE的Modelsim仿真。
    PCIE的仿真难点应该就是PCIE传输层包的构建了,因为整个设计一端时2.5Gbps的差分信号,一端是你要仿真的用户逻辑,一种方法是用testbench模拟Xilinx IP 输出端并行总线的时序,这样要求设计者对PCIE的包结构非常熟悉,无疑这样工作量很大;方法二是将工程编译完成,用chipscope下到FPGA中,将板卡插入主机之上调试,这样比较耗时,而且也费力。以上两种方法笔者都试过,如果您也在这么做,那么恭喜你,现在不用这么做了,因为Xilinx已经把我们想做的都做了。下面笔者就介绍PCIEmodelsim仿真,这种方法是用逻辑构建2PCIE设备,一个用于测试时模拟主机的行为,另一个就是您要测试的部分了。

    1 编译xilinx库文件(13.2 modelsim仿真需要6.6d以上的modelsim版本)
开始->Design suite->ISE Design Tool –> Tool->Simulation Library Compilation Wizard编译xilinx库文件;

2编译好后,打开modelsimini文件,增加初始化库文件,并指定到编译好的库文件中。

其中lib名字一定要和Simulation Library Compilation Wizard生成的库文件名相同,否则modelsim编译时会显示找不到库的错误。
3 例化一个PCIEIP,打开modelsim,改变文件夹到例化到的例子的simulationfunctional文件夹,将ISE/verilog/src/文件中的glbl.v文件在work库中编译一下,并去掉simulate_mti.do文件中的glbl.v文件的加载,然后编译就可以了。

运行,过程中出现modelsim让终止的对话框选择no,运行结果如下:

经仿真,例子只给了链路训练的仿真。

仿真文档参考Virtex-6 FPGA Integrated Block for PCI Express User Guideug517)。

模块的结构图如下:

Board为顶层模块,EP为用户例化PCIE PIO例子,实际调试中可以改为添加用户逻辑的PCIE代码,RP为测试模块代码,RP源文件在simulationfunctionaldsport文件中。
Pci_exp_usrapp_rx/tx分别定义了用于仿真的package产生task,可以根据需要调用task进行测试。


//Test starts here

if (testname == "dummy_test")

begin

$display("[%t] %m: Invalid TESTNAME: %0s", $realtime, testname);

$finish(2);

end

`include "tests.v"

else begin

$display("[%t] %m: Error: Unrecognized TESTNAME: %0s", $realtime, testname);

$finish(2);
End
Pci_exp_usrapp_tx一段代码,测试程序可以在tests.v文件中通过调用task经行测试。实际测试中需要把用户测试代码添加到sample_test1文件中。
仿真的打印信息:

仿真首先要TSK_BAR_INIT,然后再进行其他操作,才会出来波形,否则只能进行链路训练。
仿真环境默认只支持一个bar,如果有多个bar可将pci_exp_usrapp_tx.v中的pio_check_design改为0(检测在TSK_BAR_INIT中完成)。


如果用户想实测带有用户逻辑的代码,需要在example design的基础上添加用户代码,但是要注意最好不要改变设计中顶层模块的名字以便simulation_mit.do文件找不到编译文件,如果改变了,用户可以通过修改.do文件的内容来仿真。
E:/loongson/PCIE/Xilinx_PCIe_V6/pcie_1x1_example/ipcore_dir/pcie/simulation/functional仿真PCIE PIO的例子
返回列表