激励发生器
1.功能
- 功能:激励发生器(stimulator)的作用是模拟与DUT相邻设计的接口协议,在符合符合接口协议的前提下向DUT发送合适的激励,来检测DUT的功能(比如,要检测DUT的某个功能点,那激励发生器有没有能力来发送适当的激励来检测这个功能点呢?能不能发送适当激励就取决于是否符合接口协议)
2.优势
- 相较于真实的硬件设计,激励发生器只关注如何模拟接口信号,使其能够以真实的接口协议向DUT发送激励,它不需要模拟硬件设计内部的功能细节,这使得实现激励发生器的工作比设计一个真实硬件更加容易也更容易维护
- 相较于真实硬件设计,激励发生器能够向DUT发出更丰富的激励场景,这些场景使得验证更加充分,因为不但验证了硬件普通的接口协议,还能模拟出更多复杂的、在更高系统级别无法产生的场景,这些场景只有在模块级别才能够产生和检查(对于边界场景触发的缺陷采取立即修正,因为无法保证它在此项目或者下个项目不被系统触发)
3.作用范围
激励发生器模拟的式与DUT相邻设计的接口协议,它是向DUT边界端口发送激励,而不是DUT内部,channel initiator和register initiator(4.分类 提到)连接上行通道从端,寄存器,数据整形器,而不连接DUT内部组件如仲裁器
4.分类
按与DUT的连接关系,可把激励发生器分为initiator(发起器)和responder(响应器):
initiator:与上行通道从端channel slave和寄存器register连接,作用是主动发起接口数据传输
channel initiator
- 确保chx_ready为低时,chx_data和chx_valid保持不变
- 相邻数据之间没有数据包的限制而关系较弱,但也一个考虑数据之间有无空闲周期以及数据的传输速率
- FIFO的状态有 empty full 中间态,为了能够触发所有FIFO的所有状态(遍历),应该控制channel initiator的传输速率
register initiator
- 寄存器接口上cmd的默认状态为idle,并不知道cmd_addr和cmd_data_in的默认值,所有应给出随机数值来测试DUT的接口协议稳定性
- 可连读 连写 交叉读写来测试寄存器的读写功能
- 测试应覆盖寄存器的所有比特位(包括后26位的保留位)
- 需测试只读寄存器是不是不可写入,同时要测试读出的数值是否为硬件的真实状态
formatter responder
- 整形器接口协议较为复杂,侧重formatter接口协议是否遍历
- 除了按协议给出fmt_grant的响应外,海洋检查协议的时序
- 为模拟真实场景,可对fmt_grant采用立即拉高或者延时拉高,测试formatter接口的响应时序
5.实际工作中的应用
- 若接口协议是成熟的商业协议,建议使用第三方商用接口IP,这很大程度上节省了二次开发的成本和对激励发生器调校的精力
- 不建议使用不成熟的激励发生器
- 对接口协议的理解不能完全遵循设计者的描述,更不能看设计接口的实现代码
6.其他
- 激励发生器的接口是与DUT之间的连接,此外,也应该有时钟和复位的输入来确保生成的数据盒DUT接口侧同步
- 激励发生器具有存储接口数据生成历史的功能,用来在仿真运行时或结束后查看接口数据,便于统计与调试
7.题目
1.CD
2.ABD