验证基础及modelsim使用方法
验证基础
验证方法
自动化验证
Modelsim使用方法
基本操作
脚本使用
预置验证–复位,读写寄存器等。
直接验证–根据需要产生测试用例,进行验证。
随机验证–平台自动产生测试用例,进行验证。
覆盖验证–根据覆盖率统计,产生补充测试用例。
验证方法
产生复位信号
上电复位:上电时自动产生的复位信号,在时刻0发生
硬/软复位:按键或上位机产生的复位信号,在时刻t(t>0)发生
预置验证
硬/软复位
上电复位
硬/软复位
0ns
always @ (posedge sys_clk or negedge reset_n)
if(~reset_n)
wait_reset_done <= 1'b0;
else
wait_reset_done <= ~wait_reset_done;
预置验证
读写寄存器
遍历(0x00~0xff) ?
time = 256 * 66/1000000 = 169us
如果是32bit数据, time = 283468s
(0x00,0xff)?
预置验证
0xff
1
1
0xff
0xff
1
1
0xff
0x55
0
0
0x35
1
1
1
1
1
0
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
(0xff,0xf0,0x55,0x33,0x00)
直接验证
VHDL不支持内部信号的访问,需使用signal spy系统任务才能访问内部信号
在VHDL 中使用signal spy任务时,需调用modelsim_lib里的util Package
直接验证
library ieee;
library modelsim_lib;
use ;
use ;
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;
引用util library
将内部信号/top/uut/inst1/sig1的值映射到顶层信号/top/top_sig1上
将映射信息打印到脚本命令窗口
打开使能/关闭控制,初始状态为使能
使能信号映射
关闭信号映射
不打印使能信息
不打印关闭信息
RAM的输入/输出是无序的
RAM输入到输出时间间隔较长
RAM输入/输出由地址控制
直接验证
clk
addr
h7ff
h0
h3ff
h1
h1ff
h2
data
data0
data1
data2
data3
data4
data5
输入
输出
clk
addr
addr1
addr2
addr3
addr4
addr5
data
data1
data2
data3
data4
验证基础及modelsim使用方法. 来自淘豆网m.daumloan.com转载请标明出处.