一种时钟精确的路由查找引擎仿真方法及装置
本发明涉及路由查找,尤其涉及一种时钟精确的路由查找引擎仿真方法及装置。
背景技术:
1、路由查找引擎是路由器、三层交换机等路由转发设备的核心组件,包含控制平面的转发信息表(forwarding information base,fib)更新计算单元,以及数据平面的路由查找单元。在路由查找引擎的设计与实现过程中,仿真验证是保证系统功能正确的关键环节。因此,如何对路由查找引擎仿真验证成为亟需解决的技术问题。
技术实现思路
1、为了解决现有技术中存在的问题,本技术实施例提供了一种时钟精确的路由查找引擎仿真的方法、装置、计算设备、计算机存储介质及包含计算机程序的产品,能够在通用编程语言环境中模拟硬件路由查找单元的周期级行为,验证路由查找中的转发表增量更新、数据平面rtl周期级流水信号以及边更新边查找的正确性,并更早发现更新指令错误及周期级行为不一致等问题。
2、第一方面,本技术实施例提供一种时钟精确的路由查找引擎仿真方法,包括:对数据平面路由查找单元的各硬件流水级进行寄存语义对象封装,得到软件侧流水线模型;其中,将能够在一个时钟周期内完成组合逻辑运算的处理逻辑确定为一个硬件流水级,每个硬件流水级封装为一个对应的流水级软件对象,每个流水级软件对象中建立有输入信号集合、输出信号集合和中间信号集合,配置为在一个仿真周期内包括输入更新动作、逻辑计算动作和锁存动作;通过全局时钟调度器对所述软件侧流水线模型中的全部流水级软件对象进行统一时钟调度;在每一仿真周期内,统一调用各流水级软件对象的输入更新动作、逻辑计算动作,全部流水级软件对象完成逻辑计算后统一调用各流水级软件对象的锁存动作;以控制平面生成的更新指令和数据通道生成的查找请求为输入,逐仿真周期模拟路由查找单元的更新指令执行过程和路由查找过程,输出运行结果以及各时钟周期、各流水级的中间状态。
3、在一些可能的实现方式中,所述每个流水级软件对象中建立有输入信号集合、输出信号集合和中间信号集合,包括:将由上游流水级或外部输入提供、用于驱动当前周期逻辑计算的信号划分为输入信号集合;将当前流水级计算后需要传递给下游流水级或外部模块的信号划分为输出信号集合;将在当前流水级内部产生并需要保存、用于后续判断、计算或跨周期传递的信号划分为中间信号集合。
4、在一些可能的实现方式中,输出信号集合和中间信号集合均包括当前已锁存状态和待锁存状态;所述输入更新动作包括:读取外部输入或上游流水级上一周期已锁存的输出信号集合,并写入本流水级软件对象的输入信号集合;所述逻辑计算动作包括:基于当前输入信号集合以及当前已锁存的输出信号集合和中间信号集合执行本周期逻辑计算,将计算得到的待锁存结果写入对应的待锁存输出信号集合和待锁存中间信号集合,且不修改当前已锁存的输出信号集合和中间信号集合;所述锁存动作包括:将待锁存输出信号集合和待锁存中间信号集合分别写入当前输出信号集合和当前中间信号集合,作为下一仿真周期可读取的当前状态。
5、在一些可能的实现方式中,寄存语义对象封装还包括组装软件侧流水线模型,具体包括:根据硬件路由查找单元中各流水级的数据处理顺序、级间接口及信号依赖关系,确定各流水级软件对象的排列顺序;对于首级流水级软件对象,将外部输入信号作为其输入更新动作的数据源;对于非首级流水级软件对象,将上游流水级软件对象的输出信号集合作为其输入更新动作的数据源;对于末级流水级软件对象,将其输出信号集合连接至外部输出模块;从而形成在流水级数量、级间拓扑、接口字段及周期级数据传递关系上与硬件路由查找单元相对应的软件侧流水线模型。
6、在一些可能的实现方式中,统一时钟调度包括:将全部流水级软件对象注册至全局时钟调度器;对每一仿真周期依次执行:遍历全部已注册的流水级软件对象,统一调用输入更新方法;遍历全部已注册的流水级软件对象,统一调用逻辑计算方法;在全部流水级软件对象完成逻辑计算后,遍历全部已注册的流水级软件对象,统一调用锁存方法;根据验证需要,导出各流水级软件对象的输入信号集合、输出信号集合、中间信号集合以及对应的待锁存结果,并记录相应的时钟周期编号、流水级编号和动作阶段;将时钟周期编号加1,进入下一仿真周期,重复上述过程,直至全部更新指令和查找请求仿真完成。
7、在一些可能的实现方式中,还包括系统级转发表增量更新正确性验证:将转发表更新指令序列输入算法级仿真模型,由算法级仿真模型更新转发表并在更新完成后执行查找请求序列,生成各查找请求对应的预期查找结果;将所述更新指令序列输入所述软件侧流水线模型,模拟更新指令对路由查找数据结构的增加、删除或修改过程,更新完成后输入查找请求序列并输出运行结果;将输出的查找结果与所述预期查找结果逐项比较,若二者不一致,则根据差异定位增量更新计算、更新指令内容、指令顺序、存储地址或指令执行过程中的错误。
8、在一些可能的实现方式中,还包括数据平面rtl周期级流水信号正确性验证:将同一组更新指令序列和查找请求序列分别输入rtl仿真环境和所述软件侧流水线模型,使二者在相同的输入内容、输入顺序和输入周期下执行仿真;rtl仿真环境按照时钟周期输出硬件侧中间结果,所述软件侧流水线模型按照相同的时钟周期、流水级划分和信号字段输出软件侧中间参考结果;在相同的时钟周期、相同的流水级以及相同的信号字段上,将rtl仿真输出的中间结果与所述中间参考结果逐项比较,若二者不一致,则根据差异所在的时钟周期、流水级和信号字段,定位rtl设计中的状态更新、流水级传递或组合逻辑计算错误。
9、在一些可能的实现方式中,还包括边更新边查找正确性验证:根据边更新边查找的验证场景,构造顺序交错的更新指令序列与查找请求序列;将所述交错的更新指令序列与查找请求序列分别输入所述软件侧流水线模型和rtl仿真环境,分别模拟更新指令与查找请求的输入、仲裁、流水级传递、路由查找数据结构访问以及更新生效过程,输出更新完成结果、各查找请求对应的查找结果和周期级中间状态;将二者输出的更新完成结果、查找结果及周期级中间状态对应比较,其中最终结果用于判断边更新边查找场景下的功能行为是否一致,周期级中间结果用于判断更新指令与查找请求在仲裁、流水级传递、数据结构访问及更新生效过程中的状态推进是否一致。
10、在一些可能的实现方式中,所述软件侧流水线模型为采用通用编程语言构建的、与数据平面路由查找单元在输入输出接口、流水级划分和周期级状态推进关系上保持一致的软件侧时钟精确仿真模型;所述路由查找过程为在转发信息表中针对目的ip地址的最长前缀匹配过程。
11、第二方面,本技术实施例提供一种时钟精确的路由查找引擎仿真装置,包括:封装模块,用于对数据平面路由查找单元的各硬件流水级进行寄存语义对象封装,得到软件侧流水线模型;其中,将能够在一个时钟周期内完成组合逻辑运算的处理逻辑确定为一个硬件流水级,每个硬件流水级封装为一个对应的流水级软件对象,每个流水级软件对象中建立有输入信号集合、输出信号集合和中间信号集合,配置为在一个仿真周期内包括输入更新动作、逻辑计算动作和锁存动作;调度模块,用于通过全局时钟调度器对所述软件侧流水线模型中的全部流水级软件对象进行统一时钟调度;在每一仿真周期内,统一调用各流水级软件对象的输入更新动作、逻辑计算动作,全部流水级软件对象完成逻辑计算后统一调用各流水级软件对象的锁存动作;仿真模块,用于以控制平面生成的更新指令和数据通道生成的查找请求为输入,逐仿真周期模拟路由查找单元的更新指令执行过程和路由查找过程,输出运行结果以及各时钟周期、各流水级的中间状态。
12、第三方面,本技术实施例提供一种计算机可读存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如第一方面任一项所述的方法。
13、第四方面,本技术实施例提供一种计算设备,包括处理器和存储器,其中,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器运行时,执行如第一方面任一项所述的方法。
14、第五方面,本技术实施例提供一种包含计算机程序的产品,当计算机程序产品在处理器上运行时,使得所述处理器执行如第一方面任一项所述的方法。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com