crazybird

【原创】验证平台的搭建——应用篇

0
阅读(2941)

    基于上一篇博文《验证平台的搭建——实现篇》的基础上,讲讲该验证平台的使用方法。

一、基本参数设置

    针对不同的计算机以及软件的安装路径,需要对验证平台的一些参数进行设置。首先是器件库的路径设置,打开批处理文件sim.bat,根据具体情况进行设置,如图1所示。

库路径的设置.bmp

图1  库路径的设置

    其次是设置需要用到哪些器件库,打开do脚本文件vsim.do,可根据具体需求进行设置(这里用到的器件库有altera_ver、lpm_ver、sgate_ver、altera_mf_ver、altera_lnsim_ver等),如程序清单1所示。

程序清单1

if {$lib == "altera"} {
    vsim -suppress 3009 -t 1ps -quiet -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L 
    cyclone_ver -L cycloneii_ver -L cycloneiii_ver -L cycloneiiils_ver -L cycloneive_ver -L cycloneiv_hssi_ver -L 
    cycloneiv_pcie_hip_ver -L cycloneiv_ver -L  work -voptargs="+acc" -wlf $log_path/vsim.wlf work.testbench 
} else {
    vsim -suppress 3009 -t 1ps -quiet -L work -voptargs="+acc" -wlf $log_path/vsim.wlf work.testbench 
}

    一般情况下,以上参数只需设置一次。

二、验证平台启动参数设置

    关于验证平台的启动参数说明可双击批处理文件“显示帮助信息.bat”进行查看,如图2所示。

显示帮助信息.bmp

图2  显示帮助信息

    而参数的设置是在批处理文件“sim_start.bat”中进行的。验证平台运行于命令下且不需要器件库,如程序清单2所示;验证平台运行于命令下且需要器件库,如程序清单3所示;验证平台运行于图形界面下且不需要器件库,如程序清单4所示;验证平台运行于图形界面下且需要器件库,如程序清单5所示。

程序清单2

call sim

程序清单3

call sim -lib altera

程序清单4

call sim -gui

程序清单5

call sim -lib altera -gui

    接下来,举一个简单的例子并通过验证它的功能来介绍验证平台的使用。此次要验证的是altera的PLL核,输入时钟为50MHz,输出时钟为100MHz和50MHz,IP核参数设置如程序清单6所示。

程序清单6

altpll_component.bandwidth_type = "AUTO",
altpll_component.clk0_divide_by = 1,
altpll_component.clk0_duty_cycle = 50,
altpll_component.clk0_multiply_by = 2,
altpll_component.clk0_phase_shift = "0",
altpll_component.clk1_divide_by = 1,
altpll_component.clk1_duty_cycle = 50,
altpll_component.clk1_multiply_by = 1,
altpll_component.clk1_phase_shift = "0",
altpll_component.compensate_clock = "CLK0",
altpll_component.inclk0_input_frequency = 20000,
altpll_component.intended_device_family = "Cyclone IV E",

    相应的测试代码如程序清单7所示。

程序清单7

`timescale 1ns/1ps
module testbench;
reg             rst;
reg             clk_in_50M;
wire            clk_out_100M;
wire            clk_out_50M;
wire            locked;

parameter CLK_CYCLE = 20;
initial
begin
    clk_in_50M = 0;
    forever #(CLK_CYCLE/2)
        clk_in_50M = ~clk_in_50M;
end

sys_pll u_sys_pll (
    .areset (   rst         ),
    .inclk0 (   clk_in_50M  ),
    .c0     (   clk_out_100M),
    .c1     (   clk_out_50M ),
    .locked (   locked      )
);

initial
begin
    rst = 1;
    #(CLK_CYCLE*10);
    rst = 0;
    #(CLK_CYCLE*1000);
    $stop;
end

endmodule

    由于需要查看输入输出时钟的波形关系,因此PLL功能的验证主要基于图形界面。又因为对PLL的仿真需要器件库,故验证平台的仿真参数设置如程序清单8所示。

程序清单8

call sim -lib altera -gui

    双击sim_start.bat批处理文件,启动仿真,仿真结果如图3所示。输入50MHz的时钟、输出100MHz和50MHz的时钟,很显然,PLL的功能是正确的。

PLL仿真结果.bmp

图3  PLL仿真结果

    如果不指定器件库的话,将出现错误,如图4所示。

编译错误.bmp

图4  编译错误

    好像讲完了,其他的就自己去创造吧。哈哈*^_^*


                                               首创于电子技术应用网站,未经同意不得转载~~