日志档案

发表于 2008-6-29 10:39:22

1

标签: Modelsim  VHDL  SignalSpy  

采用Signal Spy增强VHDL的测试能力

    可观测性和可控制性是对testbench的基本要求。与Verilog相比,VHDL语言缺少层次化路径访问的能力;但是在VHDL语言中可以通过全局变量进行entity之间的通讯,这里的全局变量就是在package中定义的signal。在实际应用中,Verilog的层次化路径访问是真正的“无损探测”;VHDL的全局变量更适合用于测试组件之间通信,不适于在DUT组件内部使用(需要在设计中添加测试专用的语句)。 riple

   最初发现Signal Spy这一功能,始于 riple 和“蔡晃悠”大哥的一段讨论。开始使用这一功能还是最近的事。 riple

    Signal Spy给VHDL语言增加了等价于Verilog语言的层次化路径访问能力,再加上VHDL语言的全局变量通信能力,VHDL似乎比Verilog更适合用作HDL测试语言。 riple

    Signal Spy是Modelsim专用的工具,不是VHDL语言内置的特性。添加这一功能对Modelsim来说不是什么难事,因为不论是Verilog,还是VHDL,在Modelsim编译后得到的数据库都是支持层次化路径访问的。 riple

    使用Signal Spy需要: riple

    1. 包含modelsim_lib中的Util Package riple

     library modelsim_lib;
     use modelsim_lib.util.all;

    2. 初始化Signal Spy riple

    init_signal_spy(, , , )

 

    炒一个栗子在此: riple

library ieee;
library modelsim_lib;
use ieee.std_logic_1164.all;
use modelsim_lib.util.all;

entity top is
end;

architecture only of top is
    signal top_sig1 : std_logic;
begin
    ...
    spy_process : process
    begin
        init_signal_spy("/top/uut/inst1/sig1","/top/top_sig1",1,1);
        wait;\
    end process spy_process;
    ...
    spy_enable_disable : process(enable_sig)
    begin
        if (enable_sig = '1') then
            enable_signal_spy("/top/uut/inst1/sig1","/top/top_sig1",0);
        elseif (enable_sig = '0')
            disable_signal_spy("/top/uut/inst1/sig1","/top/top_sig1",0);
        end if;
    end process spy_enable_disable;
    ...
end;

系统分类: CPLD/FPGA   |   用户分类: Modelsim   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(226)    回复(0)  

投一票您将和博主都有获奖机会!