用RTL测试平台验证事务级IP模型
时序条件,而非功能性。但这类测试平台却能用来校正时序的TLM。此外,那些测试通信协议(包括总线协议和握手协议)的测试平台也不适 用于测试TLM模型。因为协议测试这类操作对于TLM而言级别太低,TLM无法对读、写操作的协议建模。另外,那些结果中会产生"don't care"状态的测试平台也不适用于测试TLM。
总之,这种重用RTL测试平台的方法保证了TLM模块在给定一个输入时,能 够得到与RTL模型相同的输出。如果在验证RTL模型时所用的输入已经非常全面,那么只要一个SystemC TLM能够产生与RTL模型同样的输出,那么我们就可以认为二者具备同样的功能。而且,虽然并非所有RTL测试平台均适用于TLM,但大多数都可以在 TLM上重用,因此开发成本也降到了最低。
关 于该方法的缺点,此前已有论述,那就是TLM模型和RTL模型之间可能出现的时序失配,出现这种情况时需要一定的人工工作量。此外,脚本及其他用于将 RTL信号转化为事务的软件,在用于具备非标准接口的IP模型时,都应作出相应改动。值得庆幸的是,事实上 SoC设计中的大多数接口都是标准的总线类型。
另一种可供选择的方法
重用RTL 测试平台来验证TLM模块的另一种技术,就是采用一种允许混合语言仿真的工具,对SystemC模型和HDL模型进行协同仿真。该方法最主要的优势就在 于,它无需首先在RTL模型上运行激励,然后再用脚本将结果转化为SystemC测试平台。然而,采用协同仿真来实现向更高抽象级别转化的做法也并非毫无 价值。
协同仿真采用了一种叫做包装(wrapper)的SystemC模块,该模块可以将总线信号转换为TLM读写事务。而 中断等其他系统信号则可以通过SystemC信号与TLM模块直接相连。但这时会产生一个问题,因为大多数RTL测试平台都考虑了时序因素,因而它们就希 望TLM模块能够在一个给定的时间内对输入信号作出响应,否则就宣告测试失败。所以我们要么必须修改RTL测试平台,使其忽略时序因素,要么必须修改 TLM和RTL接口,将二者调整为具备相同的时序因素。
RTL和TLM的协同仿真除了能够验证TLM模块以外,还能胜任几项 其他的任务。例如,SystemC TLM就能用作验证RTL模型的测试平台。但由于SystemC测试平台缺乏RTL模型的时序精度,所以它只能设计来检查事件的功能是否完成,而不能用来 检查事件的时序。
另外,RTL和TLM协同仿真还能用于测试整个SoC平台的嵌入式软件,即使并非所有的TLM模块都已就 绪。设计工程师可以采用这种方法来编写嵌入式软件中需要硬件时序信息的那部分。但由于仿真RTL需要很长时间,所以此项技术存在局限性。但随着代码长度向 短小精炼发展,该技术的应用价值也越来越高。
作者:Rohit Jindal
Kshitiz Jain
设计工程师
STMicroelectronics公司
RTL 相关文章:
- 基于FPGA的原型能为您做些什么(10-01)
- 测试SDRAM控制器的PDMA(01-04)