本发明涉及仿真,特别是涉及一种使用fifo移位实现流水线时钟的系统和方法。
背景技术:
1、现有典型的高效率仿真模型(如c模型)内的function module(功能模块)中复杂的计算模型在实现过程中不会考虑硬件中的流水延迟,通常因为硬件中的组合电路和组合逻辑的复杂性,只实现其内部功能,作为“黑盒”来使用,大大提升方便性。但是其缺点就是,无法准确有效的模拟硬件中的时序,从而在时序分析中function model就毫无优势。
2、具有“黑盒”功能的function module在被直接拿来做function module timer模型的时候会存着以下的问题:
3、有一个层级tn=5级的流水功能模块作为“黑盒”被使用在当前可以分析时序的模型中,当某次输入的数据时刻为t时,输出的数据时刻必然为t+tn,即t+5。可以直接通过对“黑盒”的输出做延迟5个cycle就可以实现其基本的时序延迟。但是如果有连续cycle的两次输入数据时刻为t0=0和t1=1时,通常采取一个数据输入结束后,再输入另一个数据,经过刚才实现的延迟,输出数据时刻为t0′=t0+5,t1′=t0+10,如图1所示;而在实际硬件中的输出数据时刻应为t0′=t0+5,t1′=t1+5=t0+6,如图2所示。显然在连续的输入数据在“黑盒”中执行后进行输出时,对“黑盒”进行简单的延迟会导致模拟的时钟与实际情况完全不符。
4、鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
技术实现思路
1、本发明实施例要解决的技术问题在于保障仿真效率的同时,如何解决功能模块内无法直接正确分析时序的问题。
2、本发明实施例采用如下技术方案:
3、第一方面,本发明提出了一种使用fifo移位实现流水线时钟的系统,包括多个功能模块、多个fifo移位模块和拦截层模块,每两个相邻的功能模块之间设置有一个fifo移位模块;所述拦截层模块与所述多个fifo移位模块连接;
4、每个所述fifo移位模块用于对数据执行流水线移位操作,并计算时钟数;
5、所述拦截层模块用于配置所述多个fifo移位模块的级数。
6、优选的,每一所述功能模块包括sched模块、ictrl模块、多个alu管线和多个寄存器;
7、所述sched模块和所述ictrl模块之间配置有级数为s的fifo移位模块,所述ictrl模块与所述alu管线之间配置有级数为i的fifo移位模块,所述alu管线与对应的所述寄存器之间配置有级数为ai的fifo移位模块,其中,i=0,1,…,n,且n为所述alu管线的数量;所述sched模块用于调度系统内的数据,并将调度的数据传输到ictrl模块内;
8、所述ictrl模块用于将sched模块传输的数据解析为对应alu管线的指令,并将指令分发到对应的alu管线内;
9、所述alu管线用于将接收的指令的计算结果写入对应的寄存器内。
10、优选的,所述fifo移位模块用于对数据执行流水线移位操作,具体包括:
11、获取fifo移位模块内的深度单元数量m,将fifo移位模块内的深度单元的位置标志初始化为0,并按照数据的传输顺序对深度单元进行排序,排序的顺序为1、2、…、m,其中,m为大于0的自然数;
12、当t时刻第一数据输入时,将第一数据拉入fifo移位模块内序号为1的深度单元内,并将序号为1的深度单元的位置标志更新为1;
13、当t+t时刻第二数据输入时,将第一数据向前移动t个深度单元,并将第一数据拉入fifo移位模块内序号为t+1的深度单元内,将序号为1的深度单元的位置标志更新为0,将序号为t+1的深度单元的位置标志更新为1,并将第二数据拉入序号为1的深度单元内,并将序号为1的深度单元的位置标志更新为1;
14、当准备输出时,若当前fifo移位模块内序号为m的深度单元内的位置标志为0时,则fifo移位模块内的数据整体向前移动一个深度单元;若当前fifo移位模块内序号为m的深度单元内的位置标志为1时,则输出对应的数据。
15、优选的,所述alu管线为fop、dot、bit、int、cpx和mov中的一种或多种。
16、第二方面,本发明还提供了一种使用fifo移位实现流水线时钟的方法,所述方法用于构建第一方面的使用fifo移位实现流水线时钟的系统,所述方法包括:
17、在每两个相邻的功能模块之间设置对应的fifo移位模块,将拦截层模块与所述fifo移位模块连接,并设置fifo移位模块的级数;
18、利用fifo移位模块对系统内的数据执行流水线操作,并计算出数据的时钟数,以获取数据传输的时序。
19、优选的,所述功能模块包括sched模块、ictrl模块、多个alu管线和多个寄存器,所述通过拦截层模块配置所述fifo移位模块的级数,并利用所述fifo移位模块对数据执行流水线操作,获取数据的时钟数,具体包括:利用所述sched模块调度系统内的数据,并将调度的数据传输到所述ictrl模块内;
20、利用所述ictrl模块将sched模块传输的数据解析为对应alu管线的指令,并将指令分发到对应的alu管线内;
21、利用所述alu管线将接收的指令的计算结果写入对应的寄存器内;
22、利用拦截层模块在sched模块与ictrl模块之间、ictrl模块与alu管线之间,以及alu管线与寄存器之间配置对应的fifo移位模块的级数,并利用所述fifo移位模块对数据执行流水线时钟移位操作,获取数据的时钟数。
23、优选的,所述利用所述fifo移位模块对数据执行流水线移位操作,还包括获取所述系统内各fifo移位模块对应的时序延时,具体包括:
24、将测试数据输入到所述系统内进行仿真,获取第一仿真波形数据;
25、从第一仿真波形数据中抽取各fifo移位模块内输入信号时序和输出信号时序,获取各fifo移位模块输入信号时序和输出信号时序之间的时钟数差。
26、优选的,在构建所述系统之后,还包括利用rtl模型对所述系统内的fifo移位模块的流水线时序的准确度进行验证,具体包括:
27、获取预设数量的测试数据,将测试数据依次输入rtl模型内进行仿真,获取rtl模型的第二仿真波形数据;
28、将测试数据输入所述系统内进行仿真,获取所述系统的第三仿真波形数据;
29、将第二仿真波形数据与第三仿真波形数据进行比对,根据比对结构获取第二仿真波形数据与第三仿真波形数据不一致的数据量,并计算出所述数据量占测试数据的第一误差百分比;
30、设定第一误差百分比的比对阈值,若第一误差百分比小于等于比对阈值,则说明验证通过;若第一误差百分比大于比对阈值,则说明验证不通过,并对所述系统进行重新调整。
31、优选的,所述系统内的fifo移位模块的时序验证,按照数据流入fifo移位模块的长度统计耗时、任务整体统计时耗或任务对应的各子阶段功能逻辑的耗时中的一种或多种。
32、优选的,构建所述系统之后,还包括利用所述系统进行仿真,具体包括:
33、加载所述系统内流水线操作配置文件,配置各fifo移位模块流水线移位延时;
34、获取待仿真的数据任务,按照输入所述系统内的顺序对待仿真的数据任务进行排序;
35、依次按照排序的序号,将待仿真的数据任务输入所述系统内进行仿真,直到完成所有的待仿真的数据任务的仿真,并记录每个待仿真的数据任务的开始时钟、结束时钟,以及结束时对应的仿真波形数据。
36、本发明的使用fifo移位实现流水线时钟的系统内通过在每两个相邻的功能模块之间添加fifo移位模块,并通过拦截层模块配置fifo移位模块的级数,fifo移位模块对数据执行流水线移位操作,并计算时钟数,使得fifo移位模块具有正确的流水线时序逻辑,使得本发明的流水线时钟系统既具有组合逻辑的仿真速度,又能模拟硬件中的时序,具有评估流水线时钟系统的能力。
1.一种使用fifo移位实现流水线时钟的系统,其特征在于,包括多个功能模块、多个fifo移位模块和拦截层模块,每两个相邻的功能模块之间设置有一个fifo移位模块;所述拦截层模块与所述多个fifo移位模块连接;
2.根据权利要求1所述的使用fifo移位实现流水线时钟的系统,其特征在于,每个所述功能模块包括sched模块、ictrl模块、多个alu管线和多个寄存器;
3.根据权利要求1所述的使用fifo移位实现流水线时钟的系统,其特征在于,所述fifo移位模块用于对数据执行流水线移位操作包括:
4.根据权利要求3所述的使用fifo移位实现流水线时钟的系统,其特征在于,所述alu管线为fop、dot、bit、int、cpx和mov中的一种或多种。
5.一种使用fifo移位实现流水线时钟的方法,其特征在于,所述方法用于构建权利要求1至4中任一项所述的使用fifo移位实现流水线时钟的系统,所述方法包括:
6.根据权利要求5所述的使用fifo移位实现流水线时钟的方法,其特征在于,所述功能模块包括sched模块、ictrl模块、多个alu管线和多个寄存器,所述通过拦截层模块配置所述fifo移位模块的级数,并利用所述fifo移位模块对数据执行流水线操作,获取数据的时钟数,包括:利用所述sched模块调度系统内的数据,并将调度的数据传输到所述ictrl模块内;
7.根据权利要求6所述的使用fifo移位实现流水线时钟的方法,其特征在于,所述利用所述fifo移位模块对数据执行流水线移位操作,还包括获取所述系统内各fifo移位模块对应的时序延时,包括:
8.根据权利要求6所述的使用fifo移位实现流水线时钟的方法,其特征在于,在构建所述系统之后,还包括利用rtl模型对所述系统内的fifo移位模块的流水线时序的准确度进行验证,包括:
9.根据权利要求8所述的使用fifo移位实现流水线时钟的方法,其特征在于,所述系统内的fifo移位模块的时序验证,按照数据流入fifo移位模块的长度统计耗时、任务整体统计时耗或任务对应的各子阶段功能逻辑的耗时中的一种或多种。
10.根据权利要求7所述的使用fifo移位实现流水线时钟的方法,其特征在于,构建所述系统之后,还包括利用所述系统进行仿真,包括:
