基于网表分割和多线程并行的硬件描述语言仿真加速方法技术

技术编号:15101605 阅读:58 留言:0更新日期:2017-04-08 10:57
本发明专利技术公开了一种基于网表分割和多线程并行的硬件描述语言仿真加速方法。用于解决计算机软件串行仿真方法中无法有效利用计算资源及仿真时间长的难题。其实现步骤是:首先获取硬件描述语言工程代码综合后产生的网表中节点间的连接关系;然后消除网表中的反馈回路;再依照逻辑计算顺序对网表中节点划分层次;最后将每层中数据无关的节点分配到计算机处理器的不同线程并行计算并输出仿真结果。应用本发明专利技术的方法进行硬件描述语言仿真具有效率高、结果准确、计算资源利用充分的优点,相比于现有仿真方法,在生成相同仿真结果的情况下本发明专利技术可以缩短仿真时间一半以上。

【技术实现步骤摘要】

本专利技术属于计算机仿真领域,涉及一种硬件描述语言仿真方法,用于可编程逻辑器件的功能仿真。
技术介绍
在可编程逻辑器件开发流程中,计算机仿真软件将硬件描述语言工程代码转换为抽象的逻辑电路,通过计算机处理器线程切换来模拟逻辑电路器件并行运行的模式,并对应各种可能的输入信号仿真得到设计电路的输出信号,达到对可编程逻辑器件的初步功能验证。随着多核处理器的发展及电路设计规模的扩大,已有的线性串行仿真技术已不能满足当前的硬件描述语言仿真要求。可编程逻辑器件的仿真技术大多采用事件驱动模型,该模型软件在应对大规模复杂电路时难以利用多核优势并行执行,仿真无法充分利用处理器的计算资源而效率低下。为此很多学者和公司致力于硬件描述语言并行仿真技术的研究工作,提出了各种基于多核处理器的并行化仿真方法,其中具有代表性的仿真方法包括以下三种:第一种是印度学者Mahesh在2010年DesignAutomationConference.(ASP-DAC’10)国际会议上发表的文章“SCG-PSim:AfastSystemCsimulatoronGPUs”中提出的基于图形处理器的仿真方法。图形处理器专为执行复杂的数学和几何计算而设计,在浮点运算和并行计算方面可以提供数十倍乃至上百倍于中央处理器的性能。文中方法的缺点在于中央处理器和图形处理器总线带宽差异较大,图形处理器所有计算都是用浮点算法,对耦合性很强的数据进行初始化和传输的时间消耗非常大。第二种是TunLi在2004年Int.Conf.VLSIDesign.国际会议上发表的文章“Designandimplementationofaparallelverilogsimulator:Pvsim”(2004,vol.0,pp.329)中给出的基于MPI库和TimeWarp优化同步并行仿真算法。这种方案局限于verilogHDL,并且采用的并行库针对分布式内存架构,不适合开发者常用的单芯片多核处理器。第三种是LindaKaouane等人在2008年ComputationalScienceanditsApplications.(ICCSA'08)国际会议上发表的文章“SysCellC:SystemConCell”(2008,vol0,pp.234-244)中描述的基于SystemC的针对单元或模块的设计方案。这种方法在有限的协同处理模块中需要完全更改编程模型来融合多种结构,造成大量的上下文切换,这样极大地降低了效率,而且他们通过手动划分SystemC仿真代码来提取需要密集计算的部分,这样做的实用性有待论证。
技术实现思路
本专利技术的目的在于避免上述已有技术的不足,提出一种基于网表划分和多线程并行仿真的加速方法,利用网表中逻辑节点之间的连接关系和计算机多核处理器的并行计算能力对数据不相关的节点进行仿真,以提高硬件描述语言工程代码仿真过程的速度。实现本专利技术的技术关键是将硬件描述语言仿真过程划分为多线程并行计算。首先在硬件描述语言代码综合后产生的网表基础上,消除网表中的反馈回路使网表中节点成为数据无关项,然后对网表中的节点按照逻辑计算顺序划分层次,将每层中的节点分配到计算机处理器的不同线程并行仿真,最后输出仿真结果。其技术步骤包括:(1)根据网表中逻辑电路各节点的连接关系,将硬件描述语言代码综合后产生的网表中的节点用集合F={f1,f2,...,fj,...,fn本文档来自技高网
...

【技术保护点】
一种基于网表分割和多线程并行的硬件描述语言仿真加速方法,包括如下步骤:(1)根据网表中逻辑电路各节点的连接关系,将硬件描述语言代码综合后产生的网表中的节点用集合F={f1,f2,...,fj,...,fn}来表示,其中j取值为1,2,…,n‑1,n;F中每个元素fj包含一个节点的编号num、种类type、层次gatelevel、与fj相连的上一级节点编号inputnum和fj输出信号所指向的下一级节点编号outputnum,由F中元素fj的连接关系形成一个有向图G=<F,E>,其中F代表节点fj的相关信息,E代表节点间的有向边;(2)对有向图G=<F,E>进行逆向深度优先搜索,得到其中所有的反馈回路,对每一个反馈回路中编号num最大的节点fbig,复制fbig逻辑值并赋给新节点f′big,用f′big指向反馈回路中num值最小的节点flittle,并且消除fbig指向flittle的路径,当消除所有的反馈回路后,图中剩下的节点形成新的有向图G'=<F',E'>;(3)从有向图G'的输入节点开始依次遍历输出信号所指向的相邻节点,将遍历到的每一个节点fj的层次gatelevel设置为前一级节点gatelevel中最大的值并加1,将F'划分成S个子集Fi',其中i取值为1,2,…,S‑1,S,每个子集Fi'中节点的gatelevel都相同;(4)在单芯片多核心处理器上调用多线程函数OpenMP,对每个子集Fi中的节点生成一个function( )函数并按照gatelevel递增的顺序调用function( )进行逻辑运算,编译运行仿真程序生成仿真结果。...

【技术特征摘要】
1.一种基于网表分割和多线程并行的硬件描述语言仿真加速方法,包括如
下步骤:
(1)根据网表中逻辑电路各...

【专利技术属性】
技术研发人员:刘凯鲍迪李玲
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1