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

2009-8-13 09:29 5466 10 7 分类: FPGA/CPLD

    可观测性和可控制性是对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;

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条