CycloneV SERDES仿真

【时间:2013 年 11 月 15 日, 来源:本站原创, 作者:杨森】

骏龙科技 杨森

 

QII中调用CycloneVSERDESreconfig模块时,IPCore会自动生成以子目录形式存储相关仿真文件(ArriaVStratixV也是一样的)。按照Altera提供的相关文档,可以通过执行自动生成的脚本文件,或者自己编写脚本文件,实现对SERDES的仿真。对于第一种方法,需要使用quartus_sh的命令执行脚本文件。其实在Modelsim下自行创建do文件的方式,可以更容易理解需要哪些仿真文件,并且这种方式会更加通用,适用于所有的仿真流程。

仿真所用到的软件环境包括Modelsim SE10.0eQII 12.0 SP1

1.       调用CycloneVCustom PHYTransceiverReconfiguration Controller

                     

 

       

在例化PHY IPCore时,使能“Enableembedded reset controller”,PHY自带reset模块,“tx_ready”和“rx_ready”状态输出指示。

在例化PHY IPCore时,可以发现下面信息栏有提示需要与2reconfiguration模块相连,一个是连接到transceiver channel,一个是连接到transmitPLL。所以在例化reconfiguration模块时,在“Number of reconfiguration interfaces”栏内填写的参数为2,这样才可以保证PHYreconfiguration模块的“reconfig_to_xcvr”和“reconfig_from_xcvr”两个信号的数据位宽相匹配。(PHYIPCore仅例化了一个SERDES通道)

Custom PHY的相关参数设置,是需要通过Avalon-MM PHY Management Interface进行访问的,参数的设置都是以寄存器方式进行读写。参照“Altera Transceiver PHY IP Core User Guide”,设置SERDES自回环,使能RX字节对齐模块。对应地址偏移为0x061,“phy_mgmt_writedata”设为32’d1;地址偏移为0x085,“phy_mgmt_writedata”设为32’d1

 

2.         生成Custom PHYReconfiguration IPCore之后,在工程目录下会分别生成两个不同的目录,包括IPCore的设计和仿真文件。

3.         在工程当前目录下新建Modelsim文件夹,相关test bench和仿真产生的文件都会存于此目录下。

 


4.         创建simlib.do文件,对除了工程相关文件之外的所需仿真文件,进行编译。文件内容如下:

set LIBPATH c:/altera/12.0/quartus/eda/sim_lib/

#指定sim_lib目录

set PHYPATH ../gxb_1g25_sim/altera_xcvr_custom_phy

#指定Custom PHY目录

set RECONFPATH ../gxb_reconf_sim/alt_xcvr_reconfig

#指定Reconfiguration目录

 

vlib sim_lib

vmap sim_lib sim_lib

#创建sim_lib仿真库,将相关仿真库文件编译至此库中

 

vlog -work sim_lib $LIBPATH/220model.v

vlog -work sim_lib $LIBPATH/altera_mf.v

vlog -work sim_lib $LIBPATH/sgate.v

vlog -work sim_lib $LIBPATH/altera_primitives.v

#添加常规需要的仿真库文件之外,其中下面5个文件,是CycloneV系列在Modelsim下推荐编译的仿真库文件

vlog -work sim_lib $LIBPATH/altera_lnsim.sv

vlog -work sim_lib $LIBPATH/mentor/cyclonev_atoms_ncrypt.v

vlog -work sim_lib $LIBPATH/cyclonev_atoms.v

vlog -work sim_lib $LIBPATH/mentor/cyclonev_hssi_atoms_ncrypt.v

vlog -work sim_lib $LIBPATH/cyclonev_hssi_atoms.v

                                                                                                                                   

#以下仿真库文件为当前工程调用PHYReconfiguration IP Core的相关文件

#header file

vlog -work sim_lib $PHYPATH/alt_xcvr_csr_common_h.sv

vlog -work sim_lib $PHYPATH/*_h.sv

 

#common function

vlog -work sim_lib $PHYPATH/altera_xcvr_functions.sv

 

#low latency phy

vlog -work sim_lib $PHYPATH/*.v

vlog -work sim_lib $PHYPATH/*.sv

 

# compile simulation files for reconfig instance

vlog -work sim_lib $RECONFPATH/alt_xcvr_reconfig_h.sv

vlog -work sim_lib $RECONFPATH/*.v

vlog -work sim_lib $RECONFPATH/*.sv

 

5.       创建sim.do文件,将工程相关文件进行编译。文件内容如下:

#do simlib.do

 

vlib work

vmap work work

#创建work仿真库,将工程相关仿真库文件编译至此库中

 

vlog +acc -work work -incr -f run.f

#将工程相关带路径的文件名存放在run.f的文件中,对其进行编译。Run.f为任意命名的文件

 

vsim -novopt  -L sim_lib -lrun_modelsim.log  \

+transport_int_delays +transport_path_delays \

work.tb_top

#work仿真库的tb_top模块进行仿真,其中tb_toptest bench中的module名称,仿真记录信息存放于run_modelsim.log日志文件中,“+transport_int_delays +transport_path_delays”参数建议添加,表示当前为高速信号仿真

 

6.         创建run.f文件,将工程相关文件名称存放在此文件中,并带有相对路径。文件内容如下,除了tb_top.vtestbench文件在当前所建的modelsim目录下,其余文件都在上一级,即当前工程目录下。

../gxb_1g25.v

../gxb_reconf.v

../mayuan.v

../phy_mgmt_ctrl.v

../top.v

tb_top.v

 

7.         创建wave.do文件,执行上一步创建的sim.do文件,并将需要观察的信号置于wave窗口,并运行仿真。文件内容如下:

quit -sim

do sim.do

add wave sim:/tb_top/u1_top/*

add wave -divider phy_mgmt_ctrl

add wave sim:/tb_top/u1_top/phy_mgmt_ctrl_inst/*

radix -hex

run 50us

 

8.         打开Modelsim,通过File->Change Directory命令将工作目录指定到创建的modelsim目录下。由于是第一次运行仿真,可以先执行一次“do simlib.do”命令,即编译除工程文件之外的仿真库文件。以后再次运行仿真时,即可跳过此步骤。直接执行“do wave.do”命令,因为wave.do文件中已经嵌套了sim.do文件。

 

9.       仿真结果

可以看到程序中在tx_ready信号变高之后,开始发送数据。在rx_ready信号变高之后一段时间,开始接收到正确的数据。