集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1278|回复: 0

测试激励的加载的方法

[复制链接]
dzyjc7 发表于 2012-4-27 08:55:43 | 显示全部楼层 |阅读模式
激励的加载有四种方法:
(1)命令行方式
这种方法是通过在命令行下直接输入命令给信号加载激励,然后进行仿真。如要对上面的加法器进行仿真,则输入如下命令:
        Vsim –t ps work.add
        //加载work 库中的实体add,时间分辨率为ps
        Add wave –hex D1
        Add wave –hex D2
        Add wave –hex D0
        Add wave ce
        Add wave clk
        //把信号加载到波形窗口,hex 表示以16进制显示
        Force ce 0 //对ce 加激励为0
        Force clk 0 0,1 25 –r 50 //对clk 加载激励
        Force D1 16#2 //对D1 加载16 进制数2
        Force D2 16#1 //对D2 加载16 进制数1
        Run 100 //运行100 个时间单位
        如果要仿真其它数据,在命令行中改变激励
        就可以了
(2)宏文件法
    这种方法相当于DOS 的批处理。它把所有的命令保存为以do 为后缀名的文件中,称为宏文件。执行仿真时只要选择菜单Marco → ExecuteMarco,然后选择相应的宏文件执行即可,或者在命令行中输入do<宏文件名>。执行仿真的结果如图2 所示。
(3)测试文件法
   上述两种方法只适合验证数据量小的程序,对程序进行简单验证,如果要验证的数据量较大,
   上述两种方法就比较麻烦,现在被广泛采用的是测试文件法。这种方法其实是要设计者自己编写测试文件,把要验证的程序当成测试程序的一个模块,在测试文件中对要验证的程序加载激励。以下就是针对上面加发器的测试文件:
        library ieee;
        use ieee.std_logic_1164.all
        use ieee.std_logic_signed.all
        entity tb is
        end tb
        architecture a_tb of tb is
        component Add
        port(D1 : in std_logic_vector(7 downto 0);
        D2 : in std_logic_vector(7 downto 0);
        D0 : out std_logic_vector(7 downto 0);
        CE : in std_logic;
        Clk: in std_logic);
        end component;
        signal D1 : std_logic_vector(7 downto 0) :=(other => ‘1’);
        signal D2 : std_logic_vector(7 downto 0) :=(other => ‘1’);
        signal D0 : std_logic_vector(7 downto 0) :=(other => ‘0’);
        signal CE : std_logic := ’0’;
        signal Clk : std_logic
        begin
        dut : Add
        port map(D1 => D1,
        D2 => D2,
        D0 => D0,
        CE => CE,
        Clk => Clk);
        Clk <= not Clk after 25 ns;
        process
        begin
        wait until Clk = ‘1’ and Clk’event;
        D1 <= D1+1;
        D2 <= D2+2;
        end process;
        end a_tb;
用这个测试文件产生的仿真波形如图3 所示:
    这种方法可以仿真大量的数据,对程序进行比较全面的仿真。

(4)textio 法
    方法(3)产生的激励数据一般很有规律,也容易分析,但同时也可能造成某些情况无法检测到。所以做仿真时若希望验证一些没有规律的数据,则可以用 textio 方法实现。实际上它的输入激励是存储在dat 文件中的,在测试文件中读入这些数据,如果用VHDL 编写程序,需要textio 库和VHDL93 标准的支持,限于篇幅这里就不详细介绍,详情请参见有关文献。
用ModelSim 进行时序仿真
     时序仿真是FPGA 设计的重要步骤之一,它通常是在做完布局布线后进行,仿真中包含布局布线产生的延时信息。时序仿真的方法和步骤和功能仿真基本相同,但有两点需要注意:一是一般布局布线后生成的网表并不包含timing 数据,会用一个SDF(Standard Delay Format)文件来存储timing数据,它通常是由布局布线工具产生,在做时序仿真时要用到。上面启动仿真器加载时不仅要加载布局布线后生成的源文件,还要加载SDF 文件。二是在用ModelSim SE 版本时,由于不包含特定厂商的库文件,而在做时序仿真时恰恰与特定的器件相关,要用到这些库,为了提高仿真速度,通常需要提前编译这些库,而且不同厂商编译库的方法不尽相同,本文以编译Xilnx 公司的库为例,介绍编译库的方法。
     这种方法是通过在Xilinx 的网站上下载的xilinx_lib_4.tcl 脚本进行的,选择菜单中的执行宏或者在命令行中输入source xilinx_lib_4.tcl,会弹出图4 所示的对话框,在选择所要编译的语言后,Xilinx Software Version、编译的库、Xilinx 路径和Modelsim 路径后就可以进行库的编译了。其中较重要的是simprim(做时序仿真时用)和Xilinxcorelib(在进行Xilinx core 的电路仿真时用),这些库还有对应的Verilog 版本。在进行库编译之前,最好把ModelSim 安装目录下的modelsim.ini 文件的只读属性去掉,这样可以把编译后的库信息加到该文件中,具体信息如下:
        simprim = C:/Modeltech_5.5b/simprim
        simprims_ver = C:/Modeltech_5.5b/simprims_ver
        xilinxcorelib = C:/ Modeltech_5.5b/xilinxcorelib
        xilinxcorelib_ver = C:/
        Modeltech_5.5b/xilinxcorelib_ver
(本文由Cogo商城-IC元器件在线采购平台搜集整理,
浏览http://www.cogobuy.com/product/2-3-5-22.html了解更多详细信息)
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-25 16:00 , Processed in 0.061321 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表