一种在波形显示器中快速渲染大型模拟波形的方法

文档序号:9371873阅读:429来源:国知局
一种在波形显示器中快速渲染大型模拟波形的方法
【技术领域】
[0001]本发明是一种在波形显示器中快速渲染显示波形的方法,适用于快速显示仿真过程中产生的点数巨大的模拟波形,所属的技术领域是集成电路计算机辅助设计领域,尤其是涉及大规模集成电路的仿真领域。
【背景技术】
[0002]随着集成电路规模的急剧增加,电路仿真所产生的波形文件也越来越大。波形显示器(Viewer)是直接查看波形的工具,它可以通过Zoom (放大或缩小)、Measure (测量X值、Y值和斜率等)等操作来观察波形细节,以验证仿真结果是否符合要求,是电路设计领域必不可少的工具之一。对于一个点数超过千万的波形,用波形显示器查看时,不仅读取数据的速度非常重要,渲染显示的速度也同样不可忽视。在频繁进行Zoom等操作时,每次都需要重新渲染波形以刷新Viewer,速度的快慢将直接影响用户体验。因此,在保证波形基本形状不失真的前提下,对原始波形进行过滤转换,得到点数很少的新波形,可以极大地提高Viewer刷新的速度,这对于实际电路设计尤其是电路仿真具有重要意义。
[0003]波形的渲染显示是Viewer能够顺利进行Zoom、Measure等其他操作的前提。目前,在集成电路仿真领域,比较常用的Viewer有:Synopsys公司的Custom WaveView, Cadence公司的WaveScan, Silvaco公司的SmartView。对于大数据波形的快速渲染显示,不少Viewer都在致力于提升其速度,有的已经有了较好的解决方案。因此,提出并实现一种具有自主知识产权的快速渲染方法具有非常重要的意义。
[0004]本发明的基本原理为:在任何既定像素宽度的屏幕上,每单位像素上只要能得到其纵轴方向的最大值和最小值,就可以绘出整个波形的基本形状,而且不会失真。这种方法得到的特征波形点数很少,可以大大地提高渲染的速度;而且,它还可以通过设置点数阈值,以满足不同用户对时间和空间的不同需求,因而具有良好的可扩展性和实用性。

【发明内容】

[0005]本发明针对大规模集成电路仿真生成的大型模拟波形,提出了一种在波形显示器上快速渲染这类波形的方法。在实际工程应用中,以该方法得到的新波形保留了原始波形的基本形状特征,不会出现失真现象,而且,由于新波形的点数较少,大大提高了渲染速度,为Viewer进行其他后续操作提供了极大的便利,增强了 Viewer的实用性。
[0006]本发明的主要技术方案包括以下两个部分:
一、基于像素点的波形快速显示原理
众所周知,计算机显卡是以像素点为单位来显示图形图像的,对应的屏幕也是由N*M的像素阵列组成的。以分辨率为1024*768为例,可以认为屏幕是由横轴上的1024个像素点与纵轴上的768个像素点组成的像素阵列。屏幕上任何图案的显示,就是通过分别控制这个像素阵列上的点的颜色、灰度值等实现的。
[0007]对于一个模拟波形而言,由于其具有连续性,因此,渲染显示时只需要简单地连接前后相邻的两个点即可得到曲线。计算机显卡和显示器结构共同决定了屏幕的最大分辨率,所以,对于一个软硬件确定的计算机系统而言,其显示屏上横轴所能够显示的像素点个数也是确定的。如图1所示,由于人眼的分辨能力有限,当坐标缩放到一定程度后,在像素宽度内的所有原始点实际上就几乎处于同一条直线上了,因此,只要将该区域内所有点的最大值和最小值求出来,作为区域两端的Y值,然后将这两个点相连,则这段波形的基本形状就可以大致勾勒出来,其他的点实际上都可以忽略。也就是说,当原始波形的点数过多时,没有必要将所有点都渲染出来,只需要显示其大致形状即可。至于具体细节,可以通过连续放大等操作来进一步查看。
[0008]上述原理表明,基于像素显示的屏幕,其最大分辨率决定了模拟波形在渲染显示时的点数阈值。简单地说,点数阈值只要超过最大分辨率中的水平像素个数即可。例如,假设某屏幕的最大分辨率为1024*768,则其横轴方向上可显示的像素个数最多为1024个,因此,过滤转换后的新波形,点数只要大于1024个就可以把原始波形的基本形状完整无误地显示出来。
[0009]二、大型模拟波形的过滤方法
在第一部分中所述的波形快速显示原理的基础上,本发明设计了一种将大型模拟波形进行过滤的方法,过滤后的新波形能够完好地表示原始波形的特征,且点数很少,可以极大地提高渲染的速度。
[0010]如图2所示,大型模拟波形的过滤步骤如下:
1.设置点数阈值。
[0011]点数阈值,即波形过滤需要满足的点数最小值。该值可以由用户自己设置,但必须限制其大于屏幕最大分辨率的水平像素个数。原因如下:
I)若阈值小于水平像素个数,则过滤后的点太少,以至于不能覆盖水平方向上的所有像素。这种情况下,人的肉眼能够辨别出来细小的差异,因此第一部分所述原理的前提条件不成立,很可能会因为过滤而出现失真现象。
[0012]2)波形点数若小于水平像素个数,渲染速度已经很快,刷新时间也非常短,根本没有必要浪费时间去进行过滤。
[0013]所以,当波形点数小于阈值时,将不进行过滤,直接渲染原始波形。
[0014]对于一台最大分辨率为1024*768的显示器屏幕而言,只要满足阈值N > 1024即可。为了方便计算,我们可以取整,例如取N = 2000。另外,鉴于目前大部分PC机所配显示器的水平像素个数都不超过4000,因此,我们也可以取N = 4000。
[0015]2.根据阈值N,将X轴进行等距划分,计算出特征波形的所有X值。
[0016]阈值确定之后,接下来就是将原始波形的X轴进行等距划分。例如,原始波形的X轴范围为O?10s,N = 4000,则将这1s均分为4000份,每份的距离delta_x = 10/4000s=2.5ms。过滤后的特征波形将会有(4000 + I) = 4001个点,必须提前求出这4001个点的X坐标值,以便后续计算等距点所在区域的Y值。以线性横坐标轴为例,第i个点的X坐标值的计算公式如式(I)所示:
Xi = X0 + i * delta_x (O〈= i〈 N)(I)
需要特别注意的一点是,这里的“等距”划分是基于屏幕像素而言的,而不是Viewer坐标轴的。因此,不同的坐标轴,“等距”的意义并不相同。也就是说,对于非线性的X坐标轴,等距划分的结果其实并不是“等距”的。以1glO坐标为例,如图3所示,这是显示ac信号的默认坐标轴。在这种情况下,“等距”划分得到的坐标值应该是经过pow(10,X)运算后得到的值,所以,每个等距区间的范围是不相等的,第一个等距区间映射到实际的X范围可能是[1,10],第二个则可能变为了 [10,100],其他区间以此类推。因此,对于1glO坐标轴,则第i个点的X坐标值的计算公式如式(2)所示:
Xi = pow (10, (X。+ i * delta_x)) (O〈= i〈 N)(2)
3.扫描原始波形,将其划分为多个单调区间。
[0017]单调区间是指函数在某一区间内的函数值Y,随自变量X增大而增大(或减小)恒成立。如果函数y=f(x)在某个区间是增函数或减函数,那么就说函数y=f(x)在这一区间具有(严格的)单调性,这一区间叫做y=f (X)的单调区间。
[0018]从单调区间的定义可以知道,在单调区间内,所有点的最大值和最小值必然是该区间两端的Y值。这样,就不必要去遍历整个单调区间,可以节省大量计算时间。
[0019]4.根据单调区间与等距区间的大小关系,分别采用不同方法,设置等距点的Y值。
[0020]I)单调区间小于或等于等距区间的情况。
[0021]这种情况下,需要根据等距区间的X轴范围,找到其包含的所有单调区间。由于单调区间的两端必定是最值,因此只需比较两端的Y值即可,不必再次遍历。比较后得到一个最大值和最小值,将它们设为这两个等距点的Y值。
[0022]2)单调区间大于等距区间的情况。
[0023]求出单调区间中各等间距区域的最大值和最小值,这是过滤方法中最重要的一个步骤。在每个单调区间里,都包含一定数目的等距点,其数量取决于单调区间的范围大小。但是,不同单调区间所包含的原始点数目并不一定相同,其稠密程度也可能有差别。当波形的点数达到千万级别时,在一个等距区间内就有可能包含成千上万个原始点,也可能只包含数十个点,这取决于原始波形中点的稠密分布情况。
[0024]对每个单调区间,求出相邻两个等距点之间所在区域的最大值和最小值,作
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1