17.08.2013 Views

第43 期 - Xilinx

第43 期 - Xilinx

第43 期 - Xilinx

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

专 家 讲 堂<br />

要实现规范性,可以采用给 UUT<br />

创建一个并行流程的方法。激励信号<br />

不管来源如何,都同时馈送给 UUT 和<br />

并行路径。该并行流程由 UUT 的行为<br />

模型以及可调整行为模型和 UUT 之间<br />

任何时间差异的后续异步 FIFO 构成。<br />

先用“波形比较器”检测 UUT 的<br />

新输出值,然后从行为模型的 FIFO<br />

获取下一个值。随后比较这两个值,<br />

将结果寄存起来,就可以清晰无误地<br />

说 明 两 条 路 径 的 相 符 之 处 和 不 符 之<br />

处。图 4 显示了该类型测试平台的典<br />

型模型。<br />

设计的核心<br />

磁盘文件 磁盘文件<br />

激励脚本<br />

控制台脚本<br />

设计的核心包括 UUT 以及该<br />

UUT 的已知正确行为模型 (KGBM)。<br />

磁盘文件<br />

激励信号<br />

脚本<br />

控制台脚本<br />

48 赛灵思中国通讯 43 <strong>期</strong><br />

仿真<br />

(行为仿真、网表仿真、<br />

时序仿真)<br />

图 3:通用测试平台结构<br />

格式化器<br />

UUT 应足够简单,就是用户力求实现<br />

的可综合设计。KGBM 的行为符合<br />

UUT 的规范,但其采用行为结构进行<br />

编码。<br />

通过使用行为建模技术构建“理<br />

想”的 UUT 版本(不必是可综合的版<br />

本),用户(或用户的波形比较器)<br />

就能够迅速发现 UUT 和 KGBM 输出<br />

之间的任何差异。一般来说行为建模<br />

更快更易于编码,因为它无需满足严<br />

格的综合和时序收敛要求。<br />

应分层构建行为模型。在完成最<br />

底层的创建后,应逐个单元地用对应<br />

的小测试平台进行仿真,以检验整个<br />

模型的行为是否正确,就像仿真可综<br />

合的设计一样。这些小测试平台一般<br />

不需要具有时间无关性或自检功能。<br />

UUT 支持功能<br />

UUT<br />

UUT 的已知正<br />

确的行为模型<br />

波形<br />

FIFO<br />

图 4 - 时间无关性自检测试平台通用方框图<br />

临时性措施(波形手动检查)通常足以<br />

胜任它们的验证工作。<br />

创建激励信号<br />

创建激励信号的方法有多种,最直<br />

接的是从控制台输入。许多仿真环境都<br />

允许用户将值“强制”送入信号中。虽<br />

然这种做法适用于某些设计或特定信<br />

号,但更大型、更复杂的设计还是采用<br />

能方便进行重复输入的方式为宜,因为<br />

这样可以更加轻松地进行分析和调试。<br />

根据使用的仿真工具,还可以使用<br />

“tcl”或者“do”脚本为激励信号创建<br />

脚本。虽然这种方法有诸多优势,但需<br />

要考虑馈送到 UUT/KGBM 中的数据类<br />

型。脚本创建法特别适用于有一定数量<br />

的输入、需要用无法预计的方法进行仿<br />

真的情况,比如抖动、伪随机噪声或数<br />

据。<br />

体现为简单文本文件的磁盘文件激<br />

励法对简单数据流的加载来说是一种理<br />

想的方法。ASCII 文本文件只包含准备<br />

输 入 到 设 计 中 的 值 。 比 如 可 以 使 用<br />

WaveGen 设计,这是赛灵思提供的参<br />

考设计,配套有 ISE ® 工具套件,在许<br />

波形 波形比较器<br />

控制台输出<br />

磁盘文件

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!