一种实现SystemC半实物仿真时间同步的方法与流程

文档序号:21280751发布日期:2020-06-26 23:35阅读:877来源:国知局
一种实现SystemC半实物仿真时间同步的方法与流程

本发明涉及半导体领域,尤其涉及一种实现systemc半实物仿真时间同步的方法。



背景技术:

由于近现代半导体行业的大力扩张,半导体的集成规模愈发复杂和庞大;例如最新的因特尔cpu,其中就集成了1000000多个半导体器件;伴随着目前的繁荣产业,半导体开发验证测试的速度对半导体企业的发展至关重要。所以目前的半导体开发中的基本模式是一边开发一边模拟验证,其中,systemc是一种能全生命周期支持的开发和测试框架。从前期的数字电路逻辑验证,到后期的架构分析,算法分析,以及上层应用软件软件例如操作系统的移植适配都是能支持的。所以目前systemc得到了广泛的应用,在目前5g技术的角逐上,华为就采用了fastmodels和半实物化仿真的方案来加快研发进度。其中fastmodels的导出接口标准就是systemc标准。

systemc是使用c++程序设计语言开发出来的一个类库,并且提供了一个事件驱动的仿真框架来对各种事件的执行顺序进行调度。systemc的调度算法思想是把连续的仿真时间划分为多个离散的仿真时刻,再把一个仿真时刻划分为多个delta-cycle,在一个delta-cycle或者多个delta-cycle周期之后更新通道值,这样就可以在这些delta-cycle中用顺序执行的编程语言来模拟硬件的并行性行为。使得仿真系统的设计者能够用c++的语法规则模拟并行的进程。这样不但增加了开发的便利程度,而且降低了软件工程师进行硬件开发测试的门槛。

目前systemc已经成为了仿真模拟行业的标准,各大eda厂商的产品都兼容systemc标准。systemc是纯粹的软件,虽然能完整模拟现有的硬件行为,但是目前的半导体开发早已经不是从零开始了,很多eda公司或者研发团队目前已经有很成熟的模块了,这些模块已经通过了很多次的严格测试;例如通信基带这些高频器件,它已经是一个很成熟的模块,这时候人们往往更希望这个模块能和软件一起协同仿真,而不是使用软件再写一个同样复杂的模拟模块。这时候,半实物仿真的需求就产生了。而且同样地,可能有些模块在整个系统中的复杂度并没有太高,设计也并不复杂,这时候我们就可以使用纯软件甚至tlm的方式来书写实现,一方面能集成成熟模块,另一方面不会因为某些不是很关键的模块而影响整体的测试验证进度。如背景图1所示,背景图1是一个半实物化仿真的示例:其中,左边的方框代表真实硬件,右边代表pc机上面运行的模拟程序。他们之间通过某种方式进行连接通信。

在半实物化仿真的领域中,有一个至关重要的问题,那就是时间的同步问题。什么叫做时间的同步呢?因为软件是在模拟真实硬件,所以,在软件的逻辑中,也是有时间概念的,这个时间并不是我们显示世界中的时间,而是虚拟的逻辑时间。假如说软件模拟需要运行逻辑时间1分钟,如果这个运算逻辑很复杂,且你的电脑的性能一般般,那么可能这个软件需要运行10分钟之后才结束。那么在模拟的世界里,软件还是运行了1分钟,但是现实世界中的时间花了10分钟。如果你的电脑性能足够强大,那么可能这个软件只运行1秒钟就结束了,那么逻辑的运行时间还是1分钟。所以,目前的问题在于,不同的模拟环境中,不同的电脑性能下,软件的模拟速度都是很难统一的。那么在实际的软硬协同半实物化仿真的工作中,这种问题肯定是首要解决的。因为你的一个成熟的外设模块,他的性能是固定的;例如一个成熟的基带模块硬件,他的性能是固定的,他解码一段无线电信息所花的时间基本上是严格相等的。那么我们的问题就是来保证这两个模块的同步,因为一个是固定的时间,另一个是不固定的时间,如背景图2所示。



技术实现要素:

本发明提供了一种实现systemc半实物仿真时间同步的方法,包括执行以下步骤:步骤1:在pc机和实际硬件之间连接时钟源发生器,该时钟源发生器能按照指定的数值来产生对应的时钟源,所述时钟源作为半实物仿真中的实际硬件的时钟输入源;步骤2:在pc机的systemc的程序里面,书写一个时钟同步模块,该时钟同步模块一方面产生时钟输出来驱动实际硬件,另一方面通过usb总线和pc机进行时钟同步协议的通信来同步systemc程序的运行。

作为本发明的进一步改进,在所述步骤1中,所述时钟源发生器为逻辑芯片,所述逻辑芯片一方面对被测试的实际硬件产生时钟输出,另一方面和pc机通过usb总线进行通信。

作为本发明的进一步改进,在所述步骤1中,pc机的虚拟仿真软件通过usb驱动程序来访问所述逻辑芯片,给所述逻辑芯片发送不同的控制命令用来产生不同的时钟。

作为本发明的进一步改进,在所述步骤1中,pc机的虚拟仿真软件还对时钟次数进行计数,用作pc机同步时钟周期的根据。

作为本发明的进一步改进,在所述步骤2中,所述时钟同步模块的实现方式如下:

在systemc里面创建一个thread,然后由thread设计一个时钟周期,这个逻辑的时钟周期就对应着要同步的真实硬件的时钟周期,然后保持这两个时钟周期的同步。

作为本发明的进一步改进,所述逻辑芯片上设有第一usb口,所述pc机上设有第二usb口,所述逻辑芯片、所述pc机通过所述第一usb口、所述第二usb口传输同步时钟协议。

作为本发明的进一步改进,所述实际硬件上设有第三usb口,所述pc机上设有第四usb口,所述实际硬件、所述pc机通过所述第三usb口、所述第四usb口传输其他数据通信。

作为本发明的进一步改进,所述pc机为windows或linux系统。

本发明的有益效果是:本发明的一种实现systemc半实物仿真时间同步的方法就保证了软件的逻辑时钟和实际硬件的时序同步,满足了软硬件协同模拟开发的基本需求。

附图说明

图1-2是本发明方法的背景图;

图3是本发明方法的示意框图。

具体实施方式

如图3所示,本发明公开了一种实现systemc半实物仿真时间同步的方法,包括执行以下步骤:

步骤1:我们常用的数字电路,都需要一个时钟振荡源,本发明的方法就是在时钟振荡源部分来做特殊处理,做一个时钟源发生器,在pc机和实际硬件之间连接时钟源发生器,该时钟源发生器能按照指定的数值来产生对应的时钟源,所述时钟源作为半实物仿真中的实际硬件的时钟输入源;

步骤2:在pc机的systemc的程序里面,书写一个时钟同步模块,该时钟同步模块一方面产生时钟输出来驱动实际硬件,另一方面通过usb总线和pc机进行时钟同步协议的通信来同步systemc程序的运行。

在所述步骤1中,所述时钟源发生器为逻辑芯片,所述逻辑芯片一方面对被测试的实际硬件产生时钟输出,另一方面和pc机通过usb总线进行通信。

在所述步骤1中,pc机的虚拟仿真软件通过usb驱动程序来访问所述逻辑芯片,给所述逻辑芯片发送不同的控制命令用来产生不同的时钟。

在所述步骤1中,pc机的虚拟仿真软件还对时钟次数进行计数,用作pc机同步时钟周期的根据。

在所述步骤2中,所述时钟同步模块的实现方式如下:

在systemc里面创建一个thread,然后由thread设计一个时钟周期,这个逻辑的时钟周期就对应着要同步的真实硬件的时钟周期,然后我们的核心目的就是要保持这两个时钟周期的同步。

所述逻辑芯片上设有第一usb口,所述pc机上设有第二usb口,所述逻辑芯片、所述pc机通过所述第一usb口、所述第二usb口传输同步时钟协议。

所述实际硬件上设有第三usb口,所述pc机上设有第四usb口,所述实际硬件、所述pc机通过所述第三usb口、所述第四usb口传输其他数据通信。

所述pc机为windows或linux系统。

本发明公开的一种实现systemc半实物仿真时间同步的方法其工作原理如下:首先硬件的时钟输入不会自发产生,而是被动地通过pc主机下发的指令来产生不同次数的时钟脉冲;如果没有指令,那么时钟振荡的输出就保持原来的电平不变。然后每当pc机器下发产生时钟的指令后,时钟同步芯片收到这个指令后,就会产生时钟输出到实际硬件上,然后硬件就会表现出它自己的逻辑行为,达到模拟的目的。然后时钟同步芯片回复pc机一个信号,表示时钟动作已经执行完毕,等下个周期同样如此。当软件模拟的逻辑很复杂的时候,软件可能需要运行更久一些才能到下个周期,这时同步芯片由于还没有得到产生时钟的指令,所以还不会产生时钟输出,实际硬件的行为也相当于暂时冻结了,来等待软件的下一次同步。这样的运行模式,就保证了软件的时钟和实际硬件的时序同步,满足了软硬件协同模拟开发的基本需求。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1