非同步电路设计工具及计算机程序的制作方法

文档序号:6554460阅读:281来源:国知局
专利名称:非同步电路设计工具及计算机程序的制作方法
技术领域
本发明涉及一种非同步电路设计工具及计算机程序,用于验证或逻辑合成由非同步电路设计语言描述的代码。
背景技术
伴随IC技术的飞速发展而来的电路规模的飞速增大,在数字电路设计上,一般使用基于HDL(Hardware Descrption Language硬件描述语言)的文本方式(text-base)的电路设计和验证。电路规模的飞速的增大,使通过全局时钟驱动整个电路的同步设计方法在极短的时间内作为标准的方法得到了普及。构成目前的商用设计环境的CAE/CAD工具、SSI·MSI部件、组件库(Cell Library)等,几乎都是只为同步设计用准备。然而,最近,随着半导体技术的细微化、VLSI芯片的大型化、以及时钟频率的增大,时钟偏移(Clock Skew)的问题日益明显。虽然随着进程的细微化,开关元件的延迟变小,但另一方面,配线延迟相对变大。其结果,横贯芯片的整个时钟体系的延迟,因芯片内的位置不同而有很大的偏差,从而,无法保证被该偏差很大的全局时钟信号驱动的元件的输入输出信号的相位的一致性。除了时钟偏移的问题之外,消耗电力的增大也成为大的问题。伴随着因细微化带来的元件高速化、和电路规模的几何级数增大,随之而来的VLSI的消耗电力的几何级数的增大成为大的问题。进而,同步于同步电路的时钟的辐射噪声也是问题。作为解决这样的时钟偏移、消耗电力及辐射噪声的问题的技术,非同步设计越来越引人注目。
在设计非同步电路时有如下方法从电路图输入起,构造上·分阶段推进设计的方法、和以文本方式使用设计语言来进行设计·验证的方法。前者的方法具有直观性,适用于小规模电路的设计,但不适于进行大规模电路的设计。特别是,对于必须进行所设计的电路是否能发挥期望的功能的检验、伴随设计变更的形式验证、与软件的结合性验证、区块之间的结合性验证等最近的电路规模来说,是极不现实的方法。在后者的设计方法中,作为文本方式的设计语言,有OCCAM、CSP、Tangram等。OCCAM虽然作为Transputer用的并行编程语言使用,但被美国犹他大学的Brunvand副教授等使用在非同步电路的设计上。CSP,被加利福尼亚工科大学的Alain Martin副教授的小组,作为VLSI Programming Language(VLSI编程语言)使用。Tangram是被菲利浦研究所的Kees van Berkel作为基于CSP的独立语言开发的非同步电路描述语言。逻辑合成,由Syntax-directed Translation实施这一点,与CSP的情形相同。由于这些设计语言和合成工具还未商业使用,因此能够使用它们进行非同步电路的设计的工程师,只限于研究所或大学等研究机构。而且还存在以下问题,即目前的状况下,用于将使用这些设计语言描述的设计变成最终的LSI的各种工具,也是各个机构独有的,还未提出业界标准的工具。

发明内容
因此,本发明的课题在于提供一种非同步电路设计工具及计算机程序,使得熟悉工业界广泛普及的同步电路设计的硬件描述语言的技术人员,能比较容易地进行非同步电路设计。
为了解决上述课题,本发明的非同步电路设计工具,包含具有转换机构的翻译机,所述转换机构将由非同步电路设计语言描述的代码转换为同步电路设计用的硬件描述语言,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的所述同步电路设计用的硬件描述语言。通过将由非同步电路设计语言描述的代码转换为同步电路设计用的硬件描述语言,能够用同步电路用的市售仿真器对电路设计进行功能验证。
本发明的非同步电路设计工具,包含具有验证机构的专用仿真器,所述验证机构用于对非同步电路设计进行功能验证,所述非同步电路设计由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。通过使用对由非同步电路设计语言描述的非同步电路设计进行功能验证的专用仿真器,即使不将非同步电路设计语言转换为同步电路设计用的硬件描述语言,也能够进行功能验证。
在构成本发明的非同步电路设计工具的专用仿真器中,验证机构可以通过编译方式将非同步电路设计语言转换为中间语言之后进行功能验证,或者,也可以通过解释方式逐次解释非同步电路设计语言并同时进行功能验证。在大规模的电路设计中,优选使用编译方式;在小规模的电路设计中,优选使用解释方式。
本发明的非同步电路设计工具,包含具有逻辑合成机构的逻辑合成工具,所述逻辑合成机构通过逻辑合成代码来生成网表,所述代码由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。通过逻辑合成由非同步电路设计语言描述的代码来生成网表,能够得到可组装在实际电路中的电路连接信息。
在本发明的构成非同步电路设计工具的逻辑合成工具中,优选构成为,还具有由同步电路设计用的组件、和非同步电路设计用的组件构成的组件库,逻辑合成机构参照组件库来生成网表。只需通过在同步电路设计用的组件之外添加非同步电路设计用的组件,就可以构筑生成网表所需的组件库。
在本发明的非同步电路设计语言中,作为用于进程间通信的数据类型,优选包含cport和channel。作为cport的属性,优选具有active/passive及input/output。例如,在语句“cport active input[7:0]A;”中,声明cportA为active port,是8位的input port。
另外,在语句“channel[7:0]T;”中,声明channel T为连接Sub-process的cport的8位宽的channel。
本发明的非同步电路设计语言中,作为用于进程间通信的命令,优选包含send、receive、sync以及probe。用语句指定进行通信的cport和变量。
语句“send(A,x);receive(B,y);”,表示将变量x的数据通过cportA发送到对方的进程中,并将通过cport B接收的数据存储在变量y中。
另外,语句“sync(Z);”,表示使用cport Z取得同步,但不接收或发送数据。上述send、receive以及sync命令,在实际的电路中,起动2相至4相握手。
再有,命令probe是返回值的Function,例如,语句“probe(B);”,通过cport B,返回连接着cport B的channel上的立即值。通过使用probe命令,能够在进程间的握手开始之前,例如作为准备、进行任意的处理。
本发明的计算机程序是使计算机系统作为将代码转换为同步电路设计用的硬件描述语言的转换机构发挥功能的计算机程序,所述代码由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的所述同步电路设计用的硬件描述语言。通过执行将由非同步电路设计语言描述的代码转换为同步电路设计用的硬件描述语言的计算机程序,能够用同步电路用的市售仿真器对电路设计进行功能验证。
本发明的计算机程序是使计算机系统作为对非同步电路设计进行功能验证的验证机构发挥功能的计算机程序,所述非同步电路设计由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。通过执行对由非同步电路设计语言描述的非同步电路设计进行功能验证的计算机程序,即使不将非同步电路设计语言转换为同步电路设计用的硬件描述语言,也能够进行功能验证。
本发明的计算机程序使计算机系统作为验证机构发挥功能,是通过编译方式将非同步电路设计转换为中间语言之后进行功能验证的计算机程序,所述非同步电路设计由所述非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。在大规模的电路设计中,优选使用编译方式。
本发明的计算机程序使计算机系统作为验证机构发挥功能,是通过解释方式逐次解释非同步电路设计语言并同时进行功能验证的计算机程序,所述非同步电路设计由所述非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。在小规模的电路设计中,优选使用解释方式。
本发明的计算机程序,是使计算机系统作为逻辑合成机构发挥功能的计算机程序,所述逻辑合成机构通过逻辑合成代码生成网表,所述代码由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。通过执行逻辑合成由非同步电路设计语言描述的代码来生成网表的计算机程序,能够得到可组装在实际电路中的电路连接信息。
在本发明的计算机程序中,作为基本要素,优选包含例如probe命令,所述probe命令在非同步进程间通信中,接收请求信号后,在发送确定信号之前执行任意的处理。通过使用probe命令,能够在开始进程间的握手之前,进行任意的处理。
在本发明的计算机程序中,作为基本要素,优选包含例如使端口之间同步的sync命令。通过使用sync命令,能够控制非同步进程间通信。
本发明的计算机程序可以记录在记录媒体上。作为记录媒体,例如优选半导体存储元件(ROM、RAM、EEPROM等)、磁记录媒体(软盘、磁卡等可以磁性读取数据的记录媒体)、光记录媒体(CD-RAM、CD-ROM、DVD-RAM、DVD-ROM、DVD-R、PD盘、MD盘、MO盘等可以光学读取数据的记录媒体)。在这些记录媒体上记录信息的形式,没有特别的限定。


图1是使用业界标准Verilog HDL的典型的电路设计流程。
图2是表示非同步电路中的进程间通信的图。
图3是表示进程之间的2相握手的图。
图4是表示进程之间的4相握手的图。
图5是表示端口的属性的组合的图。
图6是端口属性和通道信号的说明图。
图7是2线编码的说明图。
图8是2线编码的说明图。
图9是握手电路的说明图。
图10是进程A的非同步设计描述。
图11是进程B的非同步设计描述。
图12是进程C的非同步设计描述。
图13是翻译机的说明图。
图14是专用仿真器的说明图。
图15是进程A的Verilog代码转换例。
图16是握手电路的非同步设计描述。
图17是握手电路的Verilog代码转换例。
图18是2线式编码的转换方案。
图19是2线式编码器/解码器的说明图。
图20是逻辑合成工具的说明图。
图21是进程A的网表。
图22是进程A的电路图。
图23是reg-simpl连接图。
图24是bit-to-dual连接图。
图25是Q_elem连接图。
图26是Q_elem的输入输出信号的顺序。
图27是Muller-C元件连接图。
图28是使用了probe命令的非同步电路设计代码。
图29是Verilog代码的编写示例。
图30是非同步进程间通信的说明图。
图31是进程之间的握手的说明图。
图32是使用了probe命令的非同步电路设计代码。
图33是Verilog代码的编写示例。
图34是非同步进程间通信的说明图。
图35是进程之间的握手的说明图。
图36是使用了sync命令的非同步电路设计代码。
图37是Verilog代码的编写示例。
图38是非同步进程间通信的说明图。
图39是进程之间的握手的说明图。
图40是使用了sync命令的非同步电路设计代码。
图41是Verilog代码的编写示例。
图中10-翻译机,11-转换机构,20-转用仿真器,21-验证机构,30-逻辑合成工具,31-逻辑合成机构,32-组件库,40-非同步电路设计语言,50-Verilog代码,60-网表。
具体实施例方式
以下,参照各图对本发明的优选实施方式进行说明。
图1表示使用业界标准Verilog HDL的典型的电路设计流程。在该图中,单实线框表示设计描述或设计进程(process)的输入输出数据,双实线框表示设计的进程。设计规格(Design Specification),是关于相应设计的规格描述。通过自然语言、表格、图等直观的形式,用自然的描述来对预先规定的规格进行详细的描述。此为产品的详细规格书的基础。行为描述(Behavioral Description),是关于相应设计的动作水平的详细描述。也可以使用Verilog HDL来进行动作水平的描述,此时,可以使用VerilogHDL专用的仿真器,来验证与设计规格的一致性。
虽然RTL描述(Register Transfer Level Description寄存器传输级描述)使用Verilog HDL进行描述,但与动作描述独立于体系(architecture)不同,RTL描述依存于体系。虽然动作描述不能成为逻辑合成的对象,但RTL描述是可以逻辑合成的描述。动作描述被提供给用于验证设计规格是否被正确描述的仿真器,同时,被用于使用RTL描述的功能性检验和测试(Functional Verification & Testing)用的测试矢量(Test Vector)的生成。逻辑合成(Logic Synthesis)的输出即门级网表(Gate-level Netlist),被与组件库一同提供给基于功能性检验和测试的逻辑验证。逻辑验证之后,实施平面规划自动布局布线(Floor Planning Automatic Place & Route)以后的物理验证,从而获得物理布局(Physical Layout)。观察布局检验(LayoutVerification)的结果,根据需要对布局实施修正,之后执行实现(Implementation),并实施芯片制作。
图2表示非同步电路中的进程间通信(握手通信)。所谓非同步电路,是指以各个进程(最小功能电路)在不使用全局时钟的前提下自律或他律地取得局部协调并同时进行分散控制为目的,设计出的电路。同步设计中,由于命令取得、解码、执行(execution)、读/写等各操作,同步于全局时钟来进行,因此要想令电路动作高速化,就会产生时钟延迟、时钟偏移、时钟抖动(Clock Jitter)等问题,而在非同步设计中,由于进程彼此相互通过握手来自律或他律地进行动作,因此不发生此类问题。各个进程通过通信通道与其他的进程连接,在局部的协调之下,自律或他律地实施事件驱动。通信通道在其两端上,与端口连接。如该图所示的例子中,进程A具有端口a,进程B具有端口b。进程A和进程B,在端口a和端口b上经通信通道连接。通信通道,由Request(请求)信号、Acknowledge(确认)信号、以及数据信号构成。各个进程可以独立于其他的进程实施并行动作,无需实施处理等待直到其他进程的处理结束。进程,可以在希望处理的准备结束的阶段推进处理。
图3表示进程间的2相握手(无归0(Non Return to Zero)),在信号的上升沿或下降沿发送接收req/Acknowledge信号。例如,在上述的例子中,要从端口a向端口b发送req信号,将req信号从L电平上升到H电平、或从H电平下降到L电平。端口b通过检测出req信号的上升沿或下降沿,检测出从端口a向端口b发送req信号这一情况。要从端口b向端口a返回Acknowledge信号,将Acknowledge信号的电平从L电平上升到H电平、或从H电平下降到L电平即可。由此,结束握手。
图4表示进程间的4相握手(归0(Return to Zero)),用信号电平发送接收req/Acknowledge信号。例如,在上述的例子中,要从端口a向端口b发送req信号,将req信号从L电平上升到H电平即可。端口b检测出req信号跃迁到H电平这一情况后,检测出req信号被发送这一情况。端口b为了向端口a返回Acknowledge信号,将Acknowledge信号的电平从L电平上升到H电平即可。确认到Acknowledge信号的电平跃迁到H电平这一情况的端口a,将req信号的电平从H电平下降到L电平。确认到req信号的电平从H电平跃迁到L电平这一情况的端口b,将Acknowledge信号的电平从H电平下降到L电平,并结束握手。在以下的记述中,为了便于说明,以进程间通信采用4相握手为例进行说明。
图5表示端口属性的组合。由于进程自律或他律地进行动作,因此所有的端口中附有“Active(主动)”或“Passive(被动)”的属性1。进而,如果考虑“Input(输入)”或“Output(输出)”这个属性2,则共计可以分为4个种类的属性。对置端口的属性,被通信对象的端口属性唯一地规定。例如,如图6所示,在要求自律转送数据的进程A的端口属性为“ActiveInput(主动输入)”的情况下,他律转送数据的进程B的端口属性为“PassiveOutput(被动输出)”。通信通道中的Request信号和Acknowledge信号的发送接收,通过上述的2相握手、或4相握手进行。在这种情况下,如果使用2线编码(dual-rail encoding),则如图7所示,能够去掉Acknowledge信号线。如果,如图8所示,在进程A的端口为“Active Output”的情况下,由于Request信号线和数据信号线的方向相同,因此能够去掉Request信号线。在非同步设计中,通过在控制部和数据路径部的设计上使用2线编码,无需插入明示的延迟元件,从而电路系统不易受延迟影响(DelayInsensitive)。本发明,对图6所示的捆装数据(Bundle Data)方式、和图7或图8所示的2线编码方式均能够对应。
图9表示多个进程间的握手电路。各个进程具有多个端口,构成为能够与多个进程通信。在如该图所示的握手电路中,进程A在与进程B通信的同时,还与进程C进行通信。进程A对进程B、C为Active(黑点所示),而进程B对进程A、C为Passive(白点所示)。进程C对进程A为Passive,对进程B为Active。如果着眼于进程A,由于端口Pa1的属性为Active Input,因此如图6所示,通过自发地发送Request信号起动握手,来从进程B接收数据。另一方面,由于端口Pa2的属性为Active Output,因此如图8所示,通过自发地发送Request信号起动握手,来将数据发送给进程C。
在本发明中,通过在Verilog HDL等硬件描述语言中附加使非同步进程间通信成为可能的新的基本要素(Primitive),从而使用实现借助上述的握手电路沟通的进程间通信的非同步电路设计语言,来进行电路设计。图10表示将图9中所示的进程A,通过使用本发明的非同步电路设计语言来进行编写(coding)的编写示例。现按照语法,对该图中所示的编写示例进行说明。首先,在模块声明部中,声明模块名为“A”、输入输出信号名为“RESET,Pa1,Pa2”。在输入输出信号(端口)声明部中,声明1位的输入信号“RESET”、和2位的变量(寄存器)“regA”。然后,通过由本发明的非同步电路设计语言新导入的声明语句cport,声明用于进行非同步进程间通信的端口名“Pa1,Pa2”及其属性。端口Pa1的属性是ActiveInput,端口Pa2的属性是Active Output。通过receive(接受)命令从进程B接收信号,通过send(发送)命令向进程C发送信号。receive命令和send命令,是由本发明的非同步电路设计语言新导入的命令。参照always语句可知被编写为,等待初始化信号RESET被解除,将经端口Pa1接收的来自进程B的数据代入变量regA,并经端口Pa2发送给进程C。如果将图9所示的进程B、C用非同步电路设计语言进行编写,则分别如图11、图12所示。
图13是非同步电路设计工具100的功能方块图。非同步电路设计工具100,具有翻译机(translator)10。翻译机10具有转换机构11,其将用非同步电路设计语言描述的代码40,转换为同步电路设计用的硬件描述语言(例如,Verilog HDL或VHDL),其中所述非同步电路设计语言,是在同步电路设计用的硬件描述语言(例如,Verilog HDL或VHDL的子集或全集)中添加有使非同步进程间通信成为可能的基本要素的语言。通过将代码40转换为同步电路设计用的硬件描述语言50,从而能够使用同步电路用的市售仿真器验证由非同步电路设计语言描述的电路设计。翻译机10,通过将计算机程序在计算机系统上执行来实现,所述计算机程序使计算机系统发挥转换机构11的功能。
图15表示该代码转换示例。虽然该图的Verilog代码对应于图7,但不是2线式编码,为判断包含数据总线的信号线是否为高阻抗的电路。实际的电路,被通过2线式编码组装。即,该Verilog代码用于仿真器验证,而不用于逻辑合成。在模块声明部中,声明模块名为“A”、输入输出信号名为“RESET,Pa1_req,Pa1_data,Pa2_data,Pa2_ack”。在输入输出信号声明部中,声明1位的输入信号“RESET”、2位的变量“regA”、1位的输出信号“Pa1_req”、2位的输入数据线“Pa1_data”、2位的输出数据线“Pa2_data”、以及1位的输入信号线“Pa2_ack”。如上所述,由于在本实施方式中采用了4相握手,因此参照着图4、图7,来对图15中的Verilog代码进行说明。
虽然Verilog代码的首个begin-end区块,采取了图4中说明的步骤,但取代2线式编码的方案,通过直接用单线式判断是否为高阻抗,来判断数据是否被输出到信号线上。即,输出信号Pa1_req相当于图7中的Request信号,输入信号Pa1_data相当于Acknowledge信号或数据信号。首先,通过force命令将Pa1_req设成High(高电平),来送出Request,直到数据被输出到输入数据线Pa1_data上为止、即高阻抗消失为止实施等待。若数据被输出到输入数据线Pa1_data上,则被取入到内部寄存器regA中。第2个begin-end区块采取图8所说明的步骤,输出数据线Pa2_data相当于Request信号或数据信号,输入信号线Pa2_ack相当于Acknowledge信号。首先,通过force命令将regA的内容输出到输出数据线Pa2_data上,直到Pa2_ack不为高阻抗为止实施等待。在接收到Pa2_ack后,将输出数据线Pa2_data置为高阻抗后开放,等待Pa2_ack变为高阻抗,结束握手。
图16表示用非同步电路设计语言,编写由图10至图12所描述的进程A、B及C构成的图9的握手电路得到的编写示例。通过用本发明的非同步电路设计语言新导入的声明语句channel,将连接进程A、B及C的2位的3条通道声明为CH1、CH2及CH3。各个进程的阻抗,通过这些通道连接。如果通过上述翻译机10,将该编写示例转换为Verilog代码,则得到图17所示的Verilog代码。如该图的Verilog代码所示,图16的通道CH(n=1,2,3),被展开为2种配线(wire)CHn_ctrl(n=1,2,3)及CHn_data(n=1,2,3)。进程A的端口Pa1_req连接在配线CH1_ctrl上,端口Pa1_data连接在配线CH1_data上。同样,进程C的端口Pc3_ack连接在配线CH3_ctrl上,端口Pc3_data连接在配线CH3_data上。
还有,虽然在上述的说明中,举例表示了将由非同步电路设计语言描述的代码转换为同步电路设计语言之后,用同步电路用的市售仿真器进行功能验证的情况,但如图14所示,也可以通过具有专用仿真器20的非同步电路设计工具100来进行功能验证。专用仿真器20,作为对由非同步电路设计语言描述的代码40的非同步电路设计实施功能验证的验证机构21发挥功能,其中所述非同步电路设计语言,是在同步电路设计用的硬件描述语言中添加有使非同步进程间通信成为可能的基本要素的语言。作为验证机构21,可通过编译方式将非同步电路设计语言转换为中间语言后进行功能验证,或可通过解释方式将非同步电路设计语言逐次解释并同时进行功能验证。专用仿真器20,通过将计算机程序在计算机系统上执行来实现,所述计算机程序使计算机系统发挥验证机构21的功能。
通过本发明的逻辑合成工具,将非同步电路设计语言的代码转换为能够组装的网表(电路的连接信息)。如上述已经说明的那样,进程A的翻译机10的输出列表中难以组装。其原因在于,通过检测出数据信号线的高阻抗来检测出数据的到来,在实际的电路中不实用。以2线式编码(Dual-rail Encoding)方式下的组装为前提,对本发明的逻辑合成工具进行说明。图18是2线式编码的编写方案的一例。图19是在4位的数据转送中使用2线式编码方式的情况的电路图。为了便于说明,着眼于d0位进行说明。首先,由于最初没有输出具有任何意义的数据,因此,Send信号为Low,所有的数据线对(Pair)为“{0,0}”。将欲发送给d0的数据、例如1输出之后,若Send信号变为High,则有“{d0.0,d0.1}={0,1}”。配备在接收侧的各个数据线对上的解码器(4位的情况下为4个解码器),根据图18中的方案检测出数据的到来,并获取数据。为了等待来自各位所对应的解码器的到达信号全部到齐,使用Muller-C元件。在向Muller-C元件的输入都为High的时刻,Receive信号变为High,4位数据到达。
上述的非同步电路设计语言,如图20所示,被通过具有逻辑合成工具30的非同步电路设计工具100,转换为能够组装的Verilog网表。逻辑合成工具30具有逻辑合成机构31,其逻辑合成由非同步电路设计语言描述的代码40来生成网表60,其中所述非同步电路设计语言,是在同步电路设计用的硬件描述语言中添加有使非同步进程间通信成为可能的基本要素的语言。逻辑合成工具30,还具有由同步电路设计用的组件和非同步电路设计用的组件构成的组件库32。逻辑合成机构31,参照组件库32生成网表。逻辑合成工具30,通过将计算机程序在计算机系统上执行来实现,所述计算机程序使计算机系统发挥逻辑合成机构31的功能。
图21是通过逻辑合成工具30转换图10所示的进程A的编写示例所得到的网表。参照该网表的声明语句可知,图10的列表中描述的2位的端口,为了进行2线式编码,被展开为“input[3:0]Pa1_d;output[3:0]Pa2_d;”后,转换为4位的端口。将对应于该图的列表的电路图,表示在图22中。在说明该图所示的电路之前,对该电路中使用的各个组件进行说明。这些组件属于逻辑合成工具30的组件库32。
图23表示reg-simple连接图。该组件是1位数据的2线式编码方式中的解码器。“d0,d1”为1位的输入数据的2线,根据图18的方案解码的数据被设置在内部寄存器中,同时被输出到输出线“Q,Q_”上。此时,表示数据的到达的put信号变为High。图24表示bit_to_dual连接图。在send信号变为High时,对输入信号D进行2线式编码后输出为输出信号“d0,d1”。图25表示Q_element连接图。该组件执行图26所示的顺序。图27表示Muller-C元件连接图。在A、B均为High时,Z变为High;在A、B均为为Low时,Z变为Low。此外的情况下,Z的输出不变化。
在此,对图22所示的进程A的电路图进行说明。虚线围住的部分是通过逻辑合成工具30生成的连接图,从逻辑合成工具30所附带的组件库32中选取必要的组件,来构成图20所示的列表中描述的电路。虚线上的圆圈,表示对应的信号线是由声明语句cport指定的输入输出端口。接着,对该电路的动作顺序进行说明。虽然在图10的列表中没有明示使用初始化信号RESET,但在逻辑合成的输出即图21的列表中将其插入。最初,由于RESET信号为High,因此Q_element的1c输入X8_c为Low,处于图26所示的顺序的初始状态。由于RESET变为Low后,Pa2_c也为Low,因此,X8_c变为High(t1)。由于这在图26中表示输入1c变为High,因此开始该图所示的顺序。如该图所示,接受输入1c跃迁为High这一情况后,输出rc跃迁为High(t2)。这在图22中,表示Pa1_c跃迁为High。Pa1_c是对进程B(参照图9)的Request信号。
进程B接收该Request信号后,将2线式编码的数据送出到Pa1_d[n](n=0,1,2,3)。该数据被解码后,作为regA
及regA[1]锁存在reg-simple内部(“regA
_”及“regA[1]_”为反向输出)。同时,在此定时(timing),确认数据的接收的X1_d及X2_d变为High,并被输入到Muller-C元件中。由于因X1_d及X2_d的数据线的长度的偏差等,数据到达的定时也存在偏差,因此X1_d及X2_d一起变为High的定时不仅限于同时。在X1_d及X2_d一起变为High的时刻,Muller-C元件的输出X0_d变为High(t3)。图22的X0_d在图26中相当于rd,接受到其跃迁为High这一情况后,Q_elem将rc、即图22的Pa1_c设为Low(t4)。进程B接受Pa1_c跃迁为Low这一情况后,检测出收到从进程B送出到进程A的数据这一情况,为了中止数据的送出,将Null输出到数据线上。由于reg-simple在数据线上被输出Null的时刻,将X1_d及X2_d设为Low,因此,Muller-C元件在X1_d及X2_d一起变为Low的时刻,将X0_d设为Low(t5)。由此,结束与进程B的握手。
由于图22的X0_d变为Low,在图26中表示rd跃迁为Low,因此Q_elem将ld、即图22的X8_dd设为High(t6)。X8_dd是bit-to-dual的send信号。bit-to-dual对保持在reg-simple中的数据regA
及regA[1]进行2线式编码后送出到Pa2_d[n](n=0,1,2,3)。由于该数据送出,对进程C(参照图9)来说是来自进程A的Request,因此进程C接收该Request后,将作为Acknowledge信号的Pa2_c设为High。Pa2_c变为High后,NOR的输出即X8_c(Q_elem的输入信号1c)变为Low(t7)。Q_elem接受输入1c跃迁为Low这一情况,使作为输出信号1d(bit-to-dual的send信号)的X8_dd跃迁为Low(t8)。bit-to-dual接受send信号跃迁为Low这一情况,中止被2线式编码的数据的送出,并将Null输出到数据线Pa2_d[n](n=0,1,2,3)上。进程C通过接收Null,检测出Acknowledge被进程A接收这一情况,并将作为Acknowledge信号的Pa2_c跃迁为High。由此,结束与进程C的顺序,但如图10的列表所示,由于设为always wait(!RESET),因此只要RESET信号不为High,就重复与进程B及进程C的非同步通信。
如果使用本发明的probe及sync,则能够进一步简单地构成更有效率的电路。首先,在说明该优选实施例之前,将添加到Verilog HDL的子集(subset)中的通信用基本要素总结如下。
1.channel为新添加的data type(数据类型)。连接下述cport。
2.cport为新添加的data type。有以下6种类型。
active input主动输入端口active output 主动输出端口passive input 被动输入端口passive output 被动输出端口active sync 主动同步端口passive sync被动同步端口3.send/receive/sync/probe 为新添加的通信用命令。
send发送从变量读取的数据的命令receive 接收数据和往变量中写入的命令sync不伴随数据的发送接收,在端口间取得同步的命令。
4.probe 新添加的Function(函数)。
probe 为返回连接指定的cport的channel上的立即值的Function。
首先,对具有probe function(探测函数)的实施例进行说明。在经由passive端口的send或send的握手中,通过来自对置端口的Request信号的到来,开始发送或接收的顺序。然而,在实际的电路中,有时并非通过Request信号的到来而立即开始握手,而是例如等待Request信号,首先实施其他处理,之后实施发送或接收的握手。通过新定义的命令,能够等待来自对置端口的Request信号,首先实施其他处理,之后实施发送或接收的握手。
图28是用非同步电路设计语言描述probe的使用例1的编写示例。在该图所示的编写例中,“…”表示任意的语句。在模块声明部中,声明模块名为“M”、输入输出信号名为“P”。在输入输出信号(端口)声明部中,声明端口P为8位的cport passive output。在if语句中描述为,在probe(P)命令所返回的值为1位的1的情况下,执行接下来的语句(在if语句和send(P,a)之间的“…”)。send(P,a),是用于将从变量a读取的值通过端口P发送到对置端口的命令。
图29是将probe的使用例1转换为Verilog代码的代码转换例。在模块声明部中,声明模块名为“M”、输入输出信号名为“P_ctrl,P_data”。在输入输出信号声明部中,声明1位的输入信号P_ctrl、和8位的输出信号P_data。如果图示该状态,则如图30所示。进程M、N通过各自的端口P、Q连接。端口P是passive output,端口Q是active input。端口P通过P_ctrl从端口Q接收到Request信号后,通过P_data发送数据(Acknowledge信号)。在此,返回图29的说明,if语句被编码为,在P_ctrl的值为1位的1的情况下,执行接下来的语句(if语句和begin之间的“…”)。begin~end语句,是将send(P,a)转换为Verilog代码的语句。参照图31对该begin~end语句进行说明。首先,等待P_ctrl变为不是高阻抗,执行probe命令之后,将变量a的值输出到P_data中。接着,等待P_ctrl变为高阻抗,并开放P_data(4相握手)。在此,P_ctrl相当于Request信号,P_data相当于Acknowledge信号。这样,通过使用probe命令,能够从对置端口接收到Request信号后,在向该对置端口返回Acknowledge信号之前,执行任意的语句“…”。
图32是用非同步电路设计语言描述probe的使用例2的编写示例。在模块声明部中,声明模块名为“M”、输入输出信号名为“P”。在输入输出信号声明部中,声明端口P为8位的cport passive input这一情况。在wait语句中描述为,在probe(P)命令所返回的值为8位的规定值的情况下(不是高阻抗的情况下),执行根据probe(P)命令所返回的值决定的case语句的内容“…”。receive(P,a),是用于将通过端口P接收到的值代入到变量a中的命令。
图33是将probe的使用例2转换为Verilog代码的代码转换例。在模块声明部中,声明模块名为“M”、输入输出信号名为“P_ctrl,P_data”。在输入输出信号声明部中,声明8位的输入信号P_data、和1位的输出信号P_ctrl。如果图示该状态,则如图34所示。进程M、N通过各自的端口P,Q连接。端口P是passive input,端口Q是active output。端口P通过P_data从端口Q接收到数据(Request信号)后,通过P_ctrl返回Acknowledge信号。在此,返回图33的说明,wait语句被描述为,在P_data的值为8位的规定值的情况下(不是高阻抗的情况下),执行根据P_data的值决定的case语句的内容“…”。begin~end语句,是将receive(P,a)转换为Verilog代码后得到的。参照图35对该begin~end语句进行说明。首先,等待P_datal变为非高阻抗,执行probe命令后,将输出到P_data的值代入到变量a中。接着,将1位的1输出到P_ctrl,等待P_data变为高阻抗后,开放P_ctrl(4相握手)。在此,P_data相当于Request信号,P_ctrl相当于Acknowledge信号。这样,通过使用probe命令,能够从对置端口接收到Request信号之后,在向该对置端口返回Acknowledge信号之前,执行由case语句指定的任意的内容“…”。
图36是将sync的使用例1通过非同步电路设计语言进行描述的编写示例。在模块声明部中,声明模块名为“M”、输入输出信号名为“P”。在输入输出信号声明部中,声明端口P为cport passive sync。sync(P),是用于通过端口P取得端口之间的同步的命令。
图37是将sync的使用例1转换为Verilog代码的代码转换例。在模块声明部中,声明模块名为“M”、输入输出信号名为“P_ctrl,P_data”。在输入输出信号声明部中,声明输入信号P_ctrl、和输出信号P_data。如果图示该状态,则如图38所示。进程M、X,通过端口P、Q连接。端口P为passive sync,而端口Q为active sync。而且,进程M、N通过端口R、S连接。端口R为active input,端口S为passive output。端口P、Q,不进行数据的接收发送地在端口间取得同步。端口R、S通过握手来收发数据。在此,返回图37的说明,begin~end语句,是将sync(P)转换为Verilog代码得到的。该begin~end语句中,首先,等待P_ctrl变为非高阻抗,向P_data输出1位的1。接着,等待P_ctrl变为高阻抗,开放P_data。由此,能够使端口P、Q之间同步。
参照图38及图39,对sync命令的使用例进行说明。在此例示的是,进程X通过端口P、Q控制进程M、N之间的通信的步骤。进程M,通过P_ctrl变为非高阻抗,检测到来自端口Q的Request信号的到来后,将请求进程N转送数据的Request信号输出到R_ctrl。于是,数据被从进程N输出到R_data。该数据是对Request信号的Acknowledge信号。进程M接受数据被输出到R_data这一情况,对R_ctrl求非(negate)。进程M接收完来自R_data的数据后,将Acknowledge信号输出到P_data。于,P_ctrl被求非。这样,通过使用sync命令,也能控制进程之间的通信。
图40,是将sync的使用例2通过非同步电路设计语言描述的编写示例。在模块声明部中,声明模块名为“M”、输入输出信号名为“P”。在输入输出信号声明部中,声明端口P为cport active sync。if语句被描述为,在probe(P)的返回值为1位的1的情况下,执行if语句和sync(P)之间的内容“…”。虽然本例表示使用probe命令的例子,但在使用sync命令的前提下,if语句并非必须,可以省略。
图41是将sync的使用例2转换为Verilog代码的代码转换例。在模块声明部中,声明模块名为“M”、输入输出信号名为“P_ctrl,P_data”。在输入输出信号声明部中,声明输入信号P_data、和输出信号P_ctrl。if语句被编写为,在P_ctrl的值为1位的1的情况下,执行接下来的语句(if语句和begin之间的“…”)。begin~end语句,是将sync(P)转换为Verilog代码得到的。在该begin~end语句中,首先,向P_ctrl输出1位的1,等待P_data变为非高阻抗。P_data变为非高阻抗后,开放P_ctrl,并等待P_data被求非。
根据本实施方式,能够提供一种环境,使得熟悉业界标准的HDL(Verilog HDL及VHDL)的技术人员,可以比较容易地设计非同步电路。另外,由此,能够超越伴随半导体进程的细微化的进展而显著化的同步电路设计的界限(电力问题、时钟偏移问题等)的问题,从而相比以往,能够令进程所提供的能力,以更短时间、更低成本获得更高可靠性·验证性。再有,由于非同步电路的移植性高,因此能够将通过本发明开发的非同步电路设计技术作为IP反复活用,因此易于应对技术人员不足或短期的开发。再有,根据本实施方式,能够提供电磁辐射极少的、用于将非同步电路开发为各种产品的环境。本发明的非同步电路设计技术,能够应用于超低耗电VLSI及安装它的半成品或成品(PDA、智能卡、电子书等)、以及使用TFT技术的LSI及使用它的半成品或成品。具体来说,可以应用于可穿戴机器、玩具、家用防盗传感器及相关机器、RFID等不搭载电池的电子机器、汽车搭载机器、医疗机器、军需产品等。
权利要求
1.一种非同步电路设计工具,其特征在于,包含具有转换机构的翻译机,所述转换机构将由非同步电路设计语言描述的代码转换为同步电路设计用的硬件描述语言,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的所述同步电路设计用的硬件描述语言。
2.一种非同步电路设计工具,其特征在于,包含具有验证机构的专用仿真器,所述验证机构用于对非同步电路设计进行功能验证,所述非同步电路设计由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。
3.根据权利要求2所述的非同步电路设计工具,其特征在于,作为所述验证机构,包含通过编译方式将所述非同步电路设计语言转换为中间语言之后进行功能验证的专用仿真器。
4.根据权利要求2所述的非同步电路设计工具,其特征在于,作为所述验证机构,包含通过解释方式逐次解释所述非同步电路设计语言并同时进行功能验证的专用仿真器。
5.一种非同步电路设计工具,其特征在于,包含具有逻辑合成机构的逻辑合成工具,所述逻辑合成机构通过逻辑合成代码来生成网表,所述代码由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。
6.根据权利要求5所述的非同步电路设计工具,其特征在于,所述逻辑合成工具,还具有由同步电路设计用的组件、和非同步电路设计用的组件构成的组件库,所述逻辑合成机构参照所述组件库生成所述网表。
7.根据权利要求1所述的非同步电路设计工具,其特征在于,所述非同步电路设计语言的基本要素,作为数据类型包含cport和channel,作为修饰cport的属性包含active/passive及input/output,作为命令包含send、receive、sync,作为Function包含probe。
8.一种计算机程序,其特征在于,使计算机系统作为将代码转换为同步电路设计用的硬件描述语言的转换机构发挥功能,所述代码由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的所述同步电路设计用的硬件描述语言。
9.一种计算机程序,其特征在于,使计算机系统作为对非同步电路设计进行功能验证的验证机构发挥功能,所述非同步电路设计由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。
10.一种计算机程序,其特征在于,使计算机系统作为验证机构发挥功能,所述验证机构通过编译方式将非同步电路设计转换为中间语言之后进行功能验证,所述非同步电路设计由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。
11.一种计算机程序,其特征在于,使计算机系统作为验证机构发挥功能,通过解释方式逐次解释非同步电路设计语言并同时进行功能验证,所述非同步电路设计由所述非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。
12.一种计算机程序,其特征在于,使计算机系统作为逻辑合成机构发挥功能,所述逻辑合成机构通过逻辑合成代码生成网表,所述代码由非同步电路设计语言描述,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的同步电路设计用的硬件描述语言。
全文摘要
一种非同步电路设计工具,包含具有转换机构的翻译机,所述转换机构将由非同步电路设计语言描述的代码转换为同步电路设计用的硬件描述语言,所述非同步电路设计语言是附加有使非同步进程间通信成为可能的基本要素的所述同步电路设计用的硬件描述语言。通过将由非同步电路设计语言描述的代码,转换为同步电路设计用的硬件描述语言,能够用同步电路用的市售仿真器对电路设计进行功能验证。从而,能够提供一种非同步电路设计工具,使得熟悉工业界广泛普及的同步电路设计的硬件描述语言的技术人员,能够比较容易地进行非同步电路设计。
文档编号G06F9/44GK1808451SQ20061000614
公开日2006年7月26日 申请日期2006年1月19日 优先权日2005年1月19日
发明者唐木信雄, 李德群 申请人:精工爱普生株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1