CN103403718A - 混合语言的模拟 - Google Patents
混合语言的模拟 Download PDFInfo
- Publication number
- CN103403718A CN103403718A CN2011800676502A CN201180067650A CN103403718A CN 103403718 A CN103403718 A CN 103403718A CN 2011800676502 A CN2011800676502 A CN 2011800676502A CN 201180067650 A CN201180067650 A CN 201180067650A CN 103403718 A CN103403718 A CN 103403718A
- Authority
- CN
- China
- Prior art keywords
- hdl
- module
- describing
- circuit
- signal indication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
在一项实施例中,本发明提供了一种具有用第一和第二HDL的组合来描述的至少一个模块的电路描述的模拟代码的生成方法。详述所述电路描述(401),并且生成所述电路描述的模拟数据流图(430)。所述模拟数据流图的生成方式是使用至少第一数据流生成器对通过所述第一HDL的模块的数据路径进行建模(412、422),并且使用至少第二数据流生成器对通过所述第二HDL的模块的所述数据路径进行建模(410、420)。从所述数据流图中生成模拟代码(440),所述模拟代码经配置以根据所述模拟数据流图对所述设计的执行进行建模。
Description
技术领域
一项或多项实施例大体涉及电路设计的模拟。
背景技术
由于处理技术的发展,可以使用不同级别的抽象概念来设计复杂的集成电路(IC)。使用硬件描述语言(HDL),可以在门级、寄存器传送级(RTL)以及更高的逻辑级上设计电路。当使用HDL进行设计时,通常以模块化的方式对设计进行构建。设计者就系统的行为来描述模块,所述行为描述了通过组合式模块从一组寄存器到另一组寄存器的信号的生成和传播。HDL提供了一组丰富的构造,用于描述模块的功能。模块可以进行组合并扩充以形成甚至更高级别的模块。
为了降低设计成本,设计者通常会并入先前创作的设计,所述设计已经由企业内部提供或者由商业供应商提供。已经开发出可以被选择并且包括在电路设计中的预先开发的逻辑块的库。此类库模块包括,例如,加法器、乘法器、滤波器以及其他算法和数字信号处理(DSP)功能,通过这些模块可以轻易地构建系统。工程界有时将这些先前创建的设计称作“IP核心”(知识产权核心),或“逻辑核心”,并且此类术语在本文中可以互换使用。预先开发的逻辑核心的使用通过消除了电路的重新设计而带来了更快的设计周期。因此,使用来自库的核心可以降低设计成本。
在实施之前,可以对HDL进行模拟以确定该设计是否能够按照需要运行。从而可以避免由于错误设计而带来的浪费的制造成本。多种工具可以用于模拟电路设计,这些工具包括,例如,高级建模系统(HLMS)以及HDL模拟器。由于设计代码的面向对象的重新使用,HDL设计通常含有以不同HDL编写的模块。两种广泛使用的HDL是VHDL(VHSIC(超高速集成电路)硬件描述语言)以及Verilog。利用两种或多种HDL的HDL规范可以被称作混合语言设计。以一种语言定义的模块可以包括以另一种语言界定的另一个模块作为子模块,其中对实例化层次的深度或者设计层次切换语言类型的次数都没有限制。在模块实例化中用作端口的信号也可以传送语言边界,其中除了设计所施加的限制之外没有其他限制。为了便于说明,主要使用一种混合语言对实例和实施例进行描述,其中用Verilog或VHDL语言对所述设计的每个模块进行描述。本文中所用的VHDL组件和Verilog模块通常被称作模块。
由于不同的HDL格式不同且容量不同,混合语言设计可能难以有效地进行模拟。混合语言模拟的一个解决方案是在每个模块的基础上执行代码生成(即,用于实现编译代码模拟的根据HDL的可执行/汇编/目标代码生成)。在代码生成期间,针对每个实例化的Verilog和VHDL模块,生成一个不同的表示。这些基于模块的表示在运行时间被读取,并且被用来实现模拟。在此类模型中,用于在Verilog和VHDL模块之间转换和传播信号的端口连接在模拟运行时间进行配置,通常会形成可以增大模拟工作负荷的新信号。为了处理用于对跨语言边界的信号进行传播所必需的数据类型转换以及复杂端口连接,可能需要额外的隐式HDL过程来对信号进行适当的映射和转换。处理信号传播以及额外的HDL过程的组合效应增大了模拟复杂性以及存储器要求,并且降低了模拟运行时间效率。
发明内容
在一项实施例中,本发明提供了一种具有用第一和第二HDL的组合来描述的至少一个模块的电路描述的模拟代码的生成方法。详述所述电路描述,并且生成所述电路描述的模拟数据流图。所述模拟数据流图的生成方式是使用至少第一数据流生成器对通过第一HDL的模块的数据路径进行建模,并且使用至少第二数据流生成器对通过第二HDL的模块的数据路径进行建模。从数据流图中生成模拟代码,所述模拟代码经配置以根据模拟数据流图对设计的执行进行建模。
在一些实施例中,对通过用第一和第二HDL描述的模块的数据路径进行建模包括:推断数据流网络(dataflow net)、为每个模块创建过程、为这些网络创建驱动程序,并且确定每个过程对数据流网络的敏感度。
在一些实施例中,对通过用第一HDL描述的模块的数据路径进行建模包括:在电路描述的第一遍历中使用第一数据流生成器对用第一HDL描述的模块的数据流网络进行推断,并且在电路描述的第二遍历中使用第三数据流生成器来执行步骤。所述步骤可以包括:为用第一HDL描述的每个模块创建过程;创建与第一HDL关联的网络的驱动程序;以及,确定用第一HDL描述的模块的过程的敏感度。
在一些实施例中,对通过用第二HDL描述的模块的数据路径进行建模包括:在电路描述的第一遍历中使用第二数据流生成器来执行步骤,并且使用第四数据流生成器来执行用第二HDL描述的模块的浅遍历。所述步骤可以包括:推断用第二HDL描述的模块的数据流网络;为用第二HDL描述的每个模块创建过程;创建与第二HDL关联的网络的驱动程序;以及,确定用第二HDL描述的模块的过程的敏感度。
在一些实施例中,电路描述的第二遍历仅对电路描述的实例化语句进行了遍历。
在一些实施例中,第一HDL是Verilog且第二HDL是VHDL。
在一些实施例中,生成电路描述的模拟代码的方法进一步包含:创建具有与第一HDL兼容的格式的第一HDL信号表示;创建具有与第二HDL兼容的格式的第二HDL信号表示;以及,对于模拟数据流图中的跨语言边界处的电路描述的每个实例化模块,将实例化模块的端口映射到第一HDL信号表示,并且将实例化模块的端口映射到第二HDL信号表示。
在一些实施例中,模拟代码的生成包括生成第一和第二事务功能。第一事务功能经配置以响应于模拟期间第一HDL信号表示的值发生改变而:将第一HDL信号表示转换为第二HDL信号表示的格式的第一转换值,并且用第一转换值来更新第二HDL信号表示。第二事务功能经配置以响应于模拟期间第二HDL信号表示的值发生改变而:将第二HDL信号表示转换为第一HDL信号表示的格式的第二转换值,并且用第二转换值来更新第二HDL信号表示。
在一些实施例中,第一信号表示按照与第一HDL兼容的格式存储在第一存储器位置,而第二信号表示按照与第二HDL兼容的格式存储在第二存储器位置。
在一些实施例中,第一事务功能经配置以在模拟期间的δ周期(delta cycle)中完成转换及更新操作,在此期间第一HDL信号表示的值发生改变,并且第二事务功能经配置以在模拟期间的δ周期中完成转换及更新操作,在此期间第二HDL信号表示的值发生改变。
在另一项实施例中,本发明提供一种方法用于生成用第一和第二HDL的组合描述的电路设计的模拟代码。详述所述电路描述,并且生成所述电路描述的模拟数据流图。从数据流图中生成模拟代码,所述模拟代码经配置以根据模拟数据流图对设计的执行进行建模。模拟代码使用具有与第一HDL兼容的格式的第一HDL信号表示以及具有与第二HDL兼容的格式的第二HDL信号表示。对于模拟数据流图中的跨语言边界处的电路描述的每个实例化模块,所述实例化模块的端口被映射到第一HDL信号表示,并且被映射到第二HDL信号表示。
在一些实施例中,模拟代码的生成进一步包括生成第一事务功能,所述第一事务功能经配置以响应于模拟期间第一HDL信号表示的值发生改变而:将第一HDL信号表示转换为第二HDL信号表示的格式的第一转换值,并且用第一转换值来更新第二HDL信号表示。模拟代码的生成进一步包括生成第二事务功能,所述第二事务功能经配置以响应于模拟期间第二HDL信号表示的值发生改变而:将第二HDL信号表示转换为第一HDL信号表示的格式的第二转换值,并且用第二转换值来更新第二HDL信号表示。
在一些实施例中,第一和第二事务功能经配置以将第一信号表示按照与第一HDL兼容的格式存储在第一存储器位置,并且将第二信号表示按照与第二HDL兼容的格式存储在第二存储器位置。
在一些实施例中,第一事务功能经配置以在模拟期间的δ周期中完成转换及更新操作,在此期间第一HDL信号表示的值发生改变,并且第二事务功能经配置以在模拟期间的δ周期中完成转换及更新操作,在此期间第二HDL信号表示的值发生改变。
在一些实施例中,电路描述的模拟数据流图的生成包括:使用第一数据流生成器对通过用第一HDL描述的模块的数据路径进行建模,并且使用第二数据流生成器对通过用第二HDL描述的模块的数据路径进行建模。
在一些实施例中,对通过用第一HDL描述的模块的数据路径进行建模包括:在电路描述的第一遍历中使用第一数据流生成器对用第一HDL描述的模块的数据流网络进行推断,并且在电路描述的第二遍历中使用第三数据流生成器来执行所述步骤。所述步骤可以包括:为用第一HDL描述的每个模块创建过程;创建与第一HDL关联的网络的驱动程序;以及,确定用第一HDL描述的模块的过程的敏感度。
在一些实施例中,对通过用第二HDL描述的模块的数据路径进行建模包括:在电路描述的第一遍历中使用第二数据流生成器来执行步骤,并且使用第四数据流生成器来执行用第二HDL描述的模块的浅遍历。所述步骤可以包括:推断用第二HDL描述的模块的数据流网络;为用第二HDL描述的每个模块创建过程;创建与第二HDL关联的网络的驱动程序;以及,确定用第二HDL描述的模块的过程的敏感度。
在一些实施例中,电路描述的第二遍历仅对电路描述的实例化语句进行了遍历。
在又一项实施例中,本发明提供了一种制品。所述制品的特征在于一种非暂时性处理器可读存储媒介,所述非暂时性处理器可读存储媒介配置有处理器可执行指令以处理电路描述。当处理器执行所述指令时,所述指令使处理器对电路描述进行详述,并且生成电路描述的模拟数据流图。所述模拟数据流图的生成方式是使用至少第一数据流生成器对通过第一HDL的模块的数据路径进行建模,并且使用至少第二数据流生成器对通过第二HDL的模块的数据路径进行建模。在电路描述的两个遍历中使用数据流生成器对通过第一HDL的模块的数据路径进行建模。在电路描述的第一遍历中,使用电路描述的第一遍历中的第一数据流生成器推断出第一HDL的模块的数据流网络。在电路描述的第二遍历中,为第一HDL的每个模块生成过程、生成第一HDL的网络的驱动程序,并且确定第一HDL的模块的过程的敏感度。一旦创建了数据流图,那么就生成了模拟代码,所述模拟代码经配置以根据模拟数据流图对设计的执行进行建模。
在一些实施例中,对通过用第二HDL描述的模块的数据路径进行建模包括:在电路描述的第一遍历中使用第二数据流生成器来执行步骤,并且使用第四数据流生成器来执行用第二HDL描述的模块的浅遍历。所述步骤可以包括:推断用第二HDL描述的模块的数据流网络;为用第二HDL描述的每个模块创建过程;创建与第二HDL关联的网络的驱动程序;以及,确定用第二HDL的模块描述的过程的敏感度。
应了解,各种其他实施例在以下具体实施方式和权利要求书中进行描述。
附图说明
在查看以下具体实施方式和参考各图之后,将容易了解各个方面和优点,在图中:
图1示出了混合语言电路描述层次的一个实例;
图2描绘了图1所示的混合语言电路描述的模块之间的信号传播;
图3示出了在编译期间可以被预先配置的事务功能的一个实例实施方案的流程图,用以在模拟期间在跨语言边界处对信号进行有效的转换;
图4示出了用于对混合语言电路描述进行编译的一个实例过程的流程图;以及
图5示出了一种计算机架构,其经配置可以实施本文所描述的过程和功能。
具体实施方式
数据流建模提了一种有效的方式来模拟HDL设计。在数据流模型中,电路的建模是根据寄存器之间的数据流并且是按照设计处理数据的方式进行,而不是单个的门极的实例化。数据流模拟器的特征在于模拟代码的执行方式跟随数据(即,在HDL模块内部和穿过其的信号流)。为了优化数据的创建并且同时满足此特性,单语言模拟器通常在经由实例化的模块之间传播信号,而无需创建用于新实例化模块的新的信号数据结构。所述模拟器重新使用来自实例化模块的数据结构。然而,当一个信号在基于不同HDL的模块之间穿过时,两个模型的信号数据结构是不兼容的。先前的混合语言模拟器解决这一问题的通常方法是在不同的HDL类型的模块被实例化时创建新的信号和运行时间帮助过程来处理信号转换和传播。这些新的信号和运行时间过程使得模拟器的工作负荷以及内存需求变大。
一项或多项实施例提供了一种用于生成用于混合语言数据流模拟的运行时间有效代码的方法,由此来减少模拟器的工作负荷和内存需求。在编译期间,数据流表示是按照将信号表示的数目最小化的方式来创建的,并且跨过HDL语言边界的信号的转换是预先配置的。无需在运行时间创建额外的过程即可处理跨过混合语言规范的语言边界的信号传播。相反,跨语言边界的信号传播的固有复杂性是在创建信号数据流和生成模拟代码的阶段内的编译时间处理的。结果是获得了一种具有显著改进的运行时间性能以及内存占用的混合语言模拟器。
图1示出了混合语言电路描述的一个实例。在此实例中,HDL规范包括顶级VHDL模块Vh1(102)。Vh1模块对Verilog模块Ver2(104)进行实例化。Verilog模块对VHLD模块Vh3(106)和Verilog模块Ver4(108)进行实例化。Vh3模块进一步对Verilog模块Ver5(110)进行实例化。为了便于说明,HDL设计层次的深度在此实例中被限制为四级。在实践中,在对模块进行实例化时,不存在对信号跨过语言边界的次数进行限制的HDL设计规则。因此,大的HDL设计可能需要跨过边界很多次并且需要大量的信号转换。
一项或多项实施例改进了混合语言数据流模拟器中的跨语言边界的信号传播的模拟器效率,方法是针对每个跨语言边界的信号,创建一个Verilog表示以及一个VHDL表示。在编译时,信号的Verilog表示是由激活的Verilog数据流生成器创建的,如同其在单语言Verilog模拟器中一样,而VHDL表示是由激活的VHDL数据流生成器创建的,如同其在单语言VHDL模拟器中一样。如果一个信号跨过语言边界很多次,那么随后将使用先前为对应的HDL创建的表示。数据流信号的再次使用确保了针对端口的信号创建在混合语言模拟器中是最佳的。
在代码生成阶段内,可以生成事务功能以对模拟期间混合语言信号的VHDL和Verilog部分的更新进行控制。事务功能经配置以唤醒/调度VHDL和Verilog过程,所述过程对该信号敏感。这种架构确保了编译器为每个混合语言信号建立了最小量的数据。这继而减少了在运行时间需要被处理的信号编码数据的量。
图2描绘了图1所示的混合语言电路描述的模块之间的信号传播。在该实例中,两个信号表示Vhsig220和Versig222被用于表示通过模块202、204、206、208和210的信号数据流。VHDL模块模拟时使用的是Vhsig220信号表示,而Verilog模块模拟时使用的是Versig222信号表示。在编译期间,VHDL端口被映射到Verilog信号上。在编译期间生成的事务功能经配置以响应于一个信号表示发生改变,而对另一个信号表示进行更新。
例如,在模拟期间,Vhsig220用于表示由VHDL模块Vh1202生成的信号。VHDL模块202模拟时使用的是信号Vhsig220,而Verilog模块Ver2204、Ver4208和Ver5210模拟时针对它们各自的信号使用的是Verilog信号表示Versig222。当Vhsig在Vh1202的模拟之后进行更新时,事务功能也对Versig222进行更新。为了简明起见,Vhsig220等信号也可以用于表示输出信号、输入信号,或者除了输入信号外的模块中的局部声明的信号。
在混合语言模拟中,所用的跨过语言边界的一个信号的改变必须传播到存取该信号的所有Verilog和VHDL模块中。此类信号中发生在Verilog侧的改变应该能够立刻在VHDL侧上可用,并且VHDL侧上的信号改变应该可以立刻在Verilog侧上可见。
一项或多项实施例对此问题的解决方式是为经传送跨过语言边界的每个信号保留两个存储器位置:一个Verilog类型位置,以及一个VHDL类型位置。在运行时间,当Verilog模块对信号的Verilog表示进行修改时,改变被写入Verilog类型存储器位置中。在相同的δ周期中,即,信号的Verilog表示被传播的相同建模时间段,事务功能将Verilog值转换为VHDL值,并且将转换值写入信号的VHDL类型位置。类似地,当VHDL模块在运行时间改变信号时,所述改变被写入VHDL类型存储器位置,并进行转换且被储存在与所述信号相关联的Verilog类型位置中。这确保了在执行Verilog模块时,模拟器使用信号的最新值,并且将其与先前的值进行比较以检查值的改变。类似地,在执行VHDL模块时,信号的最新VHDL值随时可用,如同其在单语言VHDL流中一样。由于事务功能经配置以对每个信号对进行转换和更新,因此当信号在运行时间被评估并且位于Verilog模块内部时,模拟器不需要考虑混合语言信号。
图3示出了由可以在编译期间生成和配置的事务功能执行的一个实例过程的流程图,用以在模拟期间在跨语言边界处对信号表示进行有效的更新。在方框302和304处对VHDL信号进行监控,并且在方框306处,响应于对信号Vhsig的修改,事务功能经配置以将Vhsig的值写入到VHDL格式存储器位置。在方框308处,事务功能使用在编译期间确定的转换将Vhsig转换为Verilog格式。在方框310处,将转换值储存在Verilog格式存储器位置中。当在方框306和310处将所述值写入到存储器之后,在方框312处,当事务功能对Vhsig或Versig敏感,所述事务功能初始化一些过程的执行,所述过程由数据流图指示。
类似地,在方框322和324处对Verilog信号Versig进行监控。在方框326处,响应于对Versig信号的修改,事务功能经配置以将Versig的值写入到Verilog格式存储器位置。在方框328处,事务功能使用在编译期间确定的转换将Versig转换为VHDL格式。在方框330处,将转换值储存在VHDL格式存储器位置中。当在方框326和330处将所述值写入到存储器之后,在方框332处,当事务功能对Vhsig或Versig敏感时,所述事务功能初始化一些过程的执行,所述过程由数据流图指示。
在一项或多项实施例中,完全详述的混合语言设计的数据流表示可以通过以下方式生成:使用单语言Verilog和VHDL数据流生成器以推断网络、创建过程,创建网络的驱动程序,并且确定完全详述的混合语言设计中的每个模块的敏感度。可以针对混合语言HDL规范生成数据流图,方法是遍历设计并使用VHDL生成器对通过VHDL的信号数据流进行建模,并且使用Verilog数据流生成器对通过Verilog模块的信号数据流进行建模。
由于跨模块引用具有额外的固有复杂性,Verilog数据流中心模拟器需要自顶向下遍历所述设计两次。每个遍历是使用一个单独的数据流生成器实现的,因此Verilog数据流中心模拟器使用两个数据流生成器以确定通过Verilog模块的数据流。
一项或多项实施例使用四个数据流生成器来生成混合语言数据流模型。两个数据流生成器对所述设计的VHDL模块进行处理,而另外两个对所述设计的Verilog模块进行处理。由于混合语言设计的Verilog部分必须由Verilog模拟数据流生成器来处理,而所述设计的VHDL部分必须由VHDL数据流生成器来处理,因此,混合语言模拟器需要至少三个数据流生成器:两个Verilog生成器以及一个VHDL生成器。需要两个Verilog生成器是为了保留信息的分离。随着所述设计的遍历,VHDL生成器用于对所述设计的VHDL部分进行遍历,而Verilog生成器用于对所述设计的Verilog部分进行遍历。因此,所述设计的完整遍历利用了至少一个VHDL生成器以及至少一个Verilog生成器。
由于需要对设计层次的Verilog部分进行两个遍历,因此需要第二VHDL生成器来对设计层次的VHDL部分进行遍历。因此,可以在所述设计的两个遍历中使用两个VHDL生成器以及两个Verilog生成器来生成混合语言数据流图。可以使用相同的代码来实施第一和第二Verilog数据流生成器以及第一和第二VHDL数据流生成器。然而,这些是不相交的结构,因为在它们之间没有信息的共享。在实践中,可以在创建第二Verilog数据流生成器之前删除第一Verilog数据流生成器。
当遍历所述设计时,会基于每个实例化模块的HDL类型来选择适当的VHDL或Verilog数据流生成器。例如,如果顶部模块是以VHDL语言编写的,那么就创建一个VHDL数据流生成器并且用它对HDL设计层次进行自顶向下的遍历,直到Verilog模块被实例化为止。响应于遇见Verilog模块,创建Verilog数据流生成器并且用它继续对Verilog模块下方的设计层次进行遍历。使用Verilog数据流生成器对所述设计进行遍历,直到Verilog模块将VHDL模块实例化为止。此时,先前创建的VHDL数据流生成器可以用于对此VHDL模块下方的VHDL层次进行遍历。继续使用VHDL数据流生成器进行遍历,直到遇见另一个Verilog模块实例化为止。响应于遇见Verilog模块,使用先前创建的Verilog数据流生成器来继续遍历所述层次。根据需要,控制在VHDL数据流生成器与Verilog数据流生成器之间进行多次切换。在此遍历期间,VHDL数据流生成器针对被处理的每个VHDL模块执行多个任务,包括:推断网络、生成过程以在模拟中实施模块的语句、创建具有由每个模块修改的信号的网络的驱动程序,并且确定推断出的数据流网络的每个生成的过程信号的敏感度。对于每个Verilog模块,Verilog数据流生成器用于推断数据流网络。如上文所述,由于跨模块引用的固有复杂性,需要第二遍历来创建过程和网络驱动程序,并且针对每个Verilog模块确定网络的敏感度。
一旦完成层次设计的第一遍历,那么便创建第二VHDL数据流生成器并且可以用它来对所述设计层次进行从顶级VHDL模块开始的自顶向下的浅遍历。浅遍历是指这样一种设计遍历,其中未处理VHDL过程、信号分配以及声明。在浅遍历中,实例化语句被识别并且解析,直到遇到一个Verilog模块的实例化为止。响应于遇见Verilog模块实例化,创建第二Verilog数据流生成器并且用它对在此实例化模块下方的Verilog层次设计进行遍历。
在此第二遍历中,第二Verilog数据流生成器针对被处理的每个Verilog模块执行多个任务,包括创建模块的过程、创建网络的驱动程序,以及确定每个过程对数据流网络的敏感度。如同第一遍历,在遍历设计层次时,控制在跨语言边界处的第二Verilog和VHDL数据流生成器之间来回切换。
图4示出了用于对混合语言电路描述进行编译的一个实例过程的流程图。在方框401处详述电路描述。在方框430中所示的实例过程中生成混合语言HDL描述的数据流图。在方框402处创建VHDL数据流生成器以及Verilog数据流生成器。在方框404处创建VHDL信号Vhsig以及Verilog信号Versig。在此实例中,在遍历混合语言设计之前创建信号表示以及数据流生成器。在一些实施方案中,当遇见第一个HDL的模块时,生成第一信号表示以及数据流生成器。如果遇见一个不同HDL的模块,那么此时则会生成第二信号表示以及数据流生成器。
在方框406处初始化对完全详述的设计的第一遍历。在方框410处,对于在第一遍历期间在决策步骤408遇见的每个Verilog块,使用第一Verilog数据流生成器来解决第一组数据流问题。如上文所述,第一数据流生成器用于推断Versig信号的数据流网络。在方框412处,对于在第一遍历期间在决策步骤408遇见的每个VHDL块,使用第一VHDL数据流生成器对Vhsig信号表示的数据流进行映射。如上文所述,在第一遍历中,VHDL数据流生成器会推断Vhsig的网络、创建包括在模块中的过程、创建网络的驱动程序,以及确定每个过程对数据流网络的敏感度。
每当在决策步骤414处遇到模块的新实例时,在决策步骤408处选择适当的数据流生成器用于数据流图的创建。当在决策步骤414处完成HDL规范的第一遍历时,在方框416处创建第二VHDL数据流生成器以及第二Verilog数据流生成器。详述的设计被遍历第二次,并且第二数据流生成器用于完成HDL规范的数据流图。对于在决策步骤418遇到的每个Verilog块,在方框420处使用第二Verilog数据流生成器来完成使用Versig信号的Verilog数据流图。如上文所述,在方框410处,第二Verilog数据流生成器创建了模块的过程、创建了网络的驱动程序,并且确定了每个过程对在第一遍历中创建的数据流网络的敏感度。对于每个VHDL模块,第二VHDL数据流生成器允许对完整的规范进行遍历,方法是在方框422处执行对每个VHDL模型的浅遍历,其中只有VHDL模块内部的实例化语句得到了详细的处理。
模拟代码经配置以对模块的执行进行建模,并且在方框440处,根据模拟数据流图使用第一HDL信号表示以及第二HDL信号表示来生成模拟代码,其中所述第一HDL信号表示具有与第一HDL兼容的格式,所述第二HDL信号表示具有与第二HDL兼容的格式。对于模拟数据流图中的跨语言边界处的电路描述的每个实例化模块,所述实例化模块的端口被映射到第一HDL信号表示,并且被映射到第二HDL信号表示。
虽然所述实例和实施例主要是在用VHDL和Verilog表述的混合语言设计的背景中进行描述的,但是应理解所述实施例可以与含有其他HDL语言以及/或者除了VHDL以及Verilog之外的混合语言规范的模拟一起使用。类似地,虽然上述实例和实施例是参考一个顶级模块进行描述的,但是应理解可以轻易地推测出用于具有多个顶级模块的设计的一项或多项实施例。
图5示出了一个实例计算布置的方框图,所述布置经配置可以实施本文所描述的过程和功能。应了解,各种替代性计算布置,包括配置有程序代码的一个或多个处理器和存储器布置,都将适于容纳所述过程和数据结构并且实施不同实施例的算法。包含一项或多项实施例的且以处理器可执行格式进行编码的过程的计算机代码,可以经由各种计算机可读存储媒介或输送信道(例如,磁盘或光盘或磁带、电子存储装置或如网络上的应用服务等)进行存储和供应。
处理器计算布置500包括耦合到主总线512的一个或多个处理器502、时钟信号发生器504、存储器单元506、存储单元508,以及输入/输出控制单元510。布置500可以用分开的组件在电路板上实施或可以在集成电路内部实施。当在集成电路内部实施时,处理器计算布置又称为微控制器。
计算布置的架构取决于实施需求,这可以由所属领域的技术人员识别。处理器502可以是一个或多个通用处理器,或一个或多个通用处理器与合适的协处理器的组合,或一个或多个专用处理器(例如RISC、CISC、管线等)。
存储器布置506通常包括多个等级的高速缓冲存储器,以及一个主存储器。存储布置508可以包括本地和/或远程持续存储,例如由磁盘(未图示)、闪存、EPROM或其他非易失性数据存储提供的。存储单元可以是可读的或能够读/写的。此外,存储器506和存储508可以组合在单个布置中。
处理器布置502执行存储508和/或存储器506布置中的软件,从存储508和/或存储器506布置读取数据并将数据存储到存储508和/或存储器506布置中,并且通过输入/输出控制布置510而与外部装置进行通信。这些功能由时钟信号发生器504进行同步。计算布置的资源可以由操作系统(未图示)或硬件控制单元(未图示)进行管理。
所述实施例可以应用到用于HDL模拟的多种系统中。通过考虑本说明书,其他方面和实施例将会是显而易见的。本说明书以及所说明的实施例希望仅被视作实例,而所述实施例的实际范围和精神由所附权利要求书指示。
Claims (15)
1.一种生成电路描述的模拟代码的方法,所述电路描述具有用第一硬件描述语言(HDL)描述的至少一个组件以及用不同于所述第一HDL的第二HDL描述的至少一个模块,所述方法包含:
在至少一个编程处理器上执行操作,包括:
详述所述电路描述;
生成模拟数据流图,所述生成包括:
使用第一数据流生成器通过用所述第一HDL描述的模块对数据路径进行建模;以及
使用第二数据流生成器通过用所述第二HDL描述的模块对所述数据路径进行建模;并且
从所述数据流图中生成模拟代码,所生成的代码是可执行的用以根据所述电路描述来模拟电路操作。
2.根据权利要求1所述的方法,其中通过用所述第一和第二HDL描述的模块对所述数据路径进行建模包括:
推断数据流网络;
为每个模块创建过程;
创建所述网络的驱动程序;以及
确定每个过程对所述数据流网络的敏感度。
3.根据权利要求1所述的方法,其中通过用所述第一HDL描述的模块对所述数据路径进行建模包括:
在所述电路描述的第一遍历中使用所述第一数据流生成器对用所述第一HDL描述的模块的数据流网络进行推断;以及
在所述电路描述的第二遍历中,使用第三数据流生成器来执行以下步骤,包括:
针对用所述第一HDL描述的每个模块创建过程;
创建与所述第一HDL相关联的所述网络的驱动程序;以及
确定用所述第一HDL描述的所述模块的过程的敏感度。
4.根据权利要求3所述的方法,其中通过用所述第二HDL描述的模块对所述数据路径进行建模包括:
在所述电路描述的所述第一遍历中使用所述第二数据流生成器以执行以下步骤,包括:
推断用所述第二HDL描述的模块的数据流网络;
为用所述第二HDL描述的每个模块创建过程;
创建与所述第二HDL相关联的所述网络的驱动程序;以及
确定用所述第二HDL描述的所述模块的过程的敏感度;并且
使用第四数据流生成器以执行用所述第二HDL描述的模块的浅遍历。
5.根据权利要求4所述的方法,其中所述电路描述的所述第二遍历仅对所述电路描述的实例化语句进行了遍历。
6.根据权利要求1至5中任一权利要求所述的方法,其进一步包含:
创建具有与所述第一HDL兼容的格式的第一HDL信号表示;
创建具有与所述第二HDL兼容的格式的第二HDL信号表示;以及
针对所述模拟数据流图中在跨语言边界处的所述电路描述的每个实例化模块:
将所述实例化模块的端口映射到所述第一HDL信号表示;并且
将所述实例化模块的所述端口映射到所述第二HDL信号表示。
7.根据权利要求6所述的方法,其中所述模拟代码的生成包括:
生成第一事务功能,所述第一事务功能经配置以响应于模拟期间所述第一HDL信号表示的值发生改变而:
将所述第一HDL信号表示转换为所述第二HDL信号表示的所述格式的第一转换值;并且
用所述第一转换值来更新所述第二HDL信号表示;并且
生成第二事务功能,所述第二事务功能经配置以响应于模拟期间所述第二HDL信号表示的所述值发生改变而:
将所述第二HDL信号表示转换为所述第一HDL信号表示的所述格式的第二转换值;并且
用所述第二转换值来更新所述第二HDL信号表示。
8.根据权利要求7所述的方法,其中:
所述第一信号表示按照与所述第一HDL兼容的格式存储在第一存储器位置中;以及
所述第二信号表示按照与所述第二HDL兼容的格式存储在第二存储器位置中。
9.根据权利要求7所述的方法,其中:
所述第一事务功能经配置以在模拟期间的δ周期中完成转换及更新操作,在此模拟期间所述第一HDL信号表示的所述值发生改变;并且
所述第二事务功能经配置以在模拟期间的δ周期中完成转换及更新操作,在此模拟期间所述第二HDL信号表示的所述值发生改变。
10.一种计算机程序产品,其包含:
配置有处理器可执行指令的非暂时性处理器可读存储媒介,当所述指令由处理器执行时会使得所述处理器执行以下步骤,包含:
对具有用第一硬件描述语言(HDL)描述的至少一个模块以及用不同于所述第一HDL的第二HDL描述的至少一个模块的电路描述进行详述;
生成模拟数据流图,所述生成包括:
使用第一数据流生成器通过用所述第一HDL描述的模块对数据路径进行建模;以及
使用第二数据流生成器通过用所述第二HDL描述的模块对所述数据路径进行建模;并且
从所述数据流图中生成模拟代码,所生成的代码是可执行的用以根据所述电路描述来模拟电路操作。
11.根据权利要求10所述的计算机程序产品,其中通过用所述第一和第二HDL中至少一者描述的模块对所述数据路径进行建模包括:
推断数据流网络;
为每个模块创建过程;
创建所述网络的驱动程序;以及
确定每个过程对所述数据流网络的敏感度。
12.根据权利要求10或权利要求11所述的计算机程序产品,其中所述步骤进一步包含:
创建具有与所述第一HDL兼容的格式的第一HDL信号表示;
创建具有与所述第二HDL兼容的格式的第二HDL信号表示;以及
针对所述模拟数据流图中在跨语言边界处的所述电路描述的每个实例化模块:
将所述实例化模块的端口映射到所述第一HDL信号表示;并且
将所述实例化模块的所述端口映射到所述第二HDL信号表示。
13.一种从电路描述中生成的电路,所述电路描述具有用第一硬件描述语言(HDL)描述的至少一个组件以及用不同于所述第一HDL的第二HDL描述的至少一个模块,所述电路通过以下步骤创建出,所述步骤包含:
在至少一个编程处理器上执行操作,包括:
详述所述电路描述;
生成模拟数据流图,所述生成包括:
使用第一数据流生成器通过用所述第一HDL描述的模块对数据路径进行建模;以及
使用第二数据流生成器通过用所述第二HDL描述的模块对所述数据路径进行建模;并且
从所述数据流图中生成模拟代码,所生成的代码是可执行的用以根据所述电路描述来模拟电路操作。
14.根据权利要求13所述的电路,其中所述步骤进一步包含:
创建具有与所述第一HDL兼容的格式的第一HDL信号表示;
创建具有与所述第二HDL兼容的格式的第二HDL信号表示;以及
针对所述模拟数据流图中在跨语言边界处的所述电路描述的每个实例化模块:
将所述实例化模块的端口映射到所述第一HDL信号表示;并且
将所述实例化模块的所述端口映射到所述第二HDL信号表示。
15.根据权利要求13或权利要求14所述的电路,其中通过用所述第一和第二HDL中至少一者描述的模块对所述数据路径进行建模包括:
推断数据流网络;
为每个模块创建过程;
创建所述网络的驱动程序;以及
确定每个过程对所述数据流网络的敏感度。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/027,683 US8838431B1 (en) | 2011-02-15 | 2011-02-15 | Mixed-language simulation |
US13/027,683 | 2011-02-15 | ||
PCT/US2011/056919 WO2012112195A1 (en) | 2011-02-15 | 2011-10-19 | Mixed-language simulation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103403718A true CN103403718A (zh) | 2013-11-20 |
CN103403718B CN103403718B (zh) | 2016-11-02 |
Family
ID=44898231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180067650.2A Active CN103403718B (zh) | 2011-02-15 | 2011-10-19 | 混合语言的模拟 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8838431B1 (zh) |
EP (1) | EP2676210B1 (zh) |
JP (1) | JP5716104B2 (zh) |
KR (1) | KR101765985B1 (zh) |
CN (1) | CN103403718B (zh) |
WO (1) | WO2012112195A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106104468A (zh) * | 2013-12-13 | 2016-11-09 | 起元技术有限责任公司 | 动态地确定数据处理应用程序的模式 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223910B1 (en) * | 2014-01-21 | 2015-12-29 | Xilinx, Inc. | Performance and memory efficient modeling of HDL ports for simulation |
US11151326B2 (en) * | 2019-02-13 | 2021-10-19 | Wipro Limited | Methods and systems of interchanging code-mixed words and uni-language words |
US11036546B1 (en) * | 2019-04-16 | 2021-06-15 | Xilinx, Inc. | Multi-threaded shared memory functional simulation of dataflow graph |
WO2023244373A1 (en) * | 2022-06-15 | 2023-12-21 | Microsoft Technology Licensing, Llc | Site convergence agent and associated method |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466898B1 (en) * | 1999-01-12 | 2002-10-15 | Terence Chan | Multithreaded, mixed hardware description languages logic simulation on engineering workstations |
US7191412B1 (en) * | 2005-09-28 | 2007-03-13 | Xilinx, Inc. | Method and apparatus for processing a circuit description for logic simulation |
CN1959684A (zh) * | 2005-10-31 | 2007-05-09 | 松下电器产业株式会社 | 混合信号电路模拟器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6807520B1 (en) * | 2000-12-11 | 2004-10-19 | Synopsys, Inc. | System and method for simulation of an integrated circuit design using a hierarchical input netlist and divisions along hierarchical boundaries thereof |
US7181383B1 (en) * | 2003-11-26 | 2007-02-20 | Cadence Design Systems, Inc. | System and method for simulating a circuit having hierarchical structure |
US7681184B1 (en) * | 2004-05-24 | 2010-03-16 | Borland Software Corporation | System and methodology for cross language type system compatibility |
US7251795B2 (en) * | 2004-09-27 | 2007-07-31 | Cadence Design Systems, Inc. | Connecting verilog-AMS and VHDL-AMS components in a mixed-language mixed-signal design |
US7260792B2 (en) * | 2005-05-10 | 2007-08-21 | Cadence Design Systems, Inc. | Modeling a mixed-language mixed-signal design |
US7979820B1 (en) * | 2005-10-24 | 2011-07-12 | Cadence Design Systems, Inc. | Temporal replicant simulation |
US8069024B1 (en) * | 2005-10-24 | 2011-11-29 | Cadence Design Systems, Inc. | Replicant simulation |
US7721090B1 (en) | 2006-03-07 | 2010-05-18 | Xilinx, Inc. | Event-driven simulation of IP using third party event-driven simulators |
US8447581B1 (en) * | 2009-09-15 | 2013-05-21 | Xilinx, Inc. | Generating simulation code from a specification of a circuit design |
-
2011
- 2011-02-15 US US13/027,683 patent/US8838431B1/en active Active
- 2011-10-19 JP JP2013554437A patent/JP5716104B2/ja active Active
- 2011-10-19 CN CN201180067650.2A patent/CN103403718B/zh active Active
- 2011-10-19 EP EP11776675.8A patent/EP2676210B1/en active Active
- 2011-10-19 WO PCT/US2011/056919 patent/WO2012112195A1/en active Application Filing
- 2011-10-19 KR KR1020137024367A patent/KR101765985B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466898B1 (en) * | 1999-01-12 | 2002-10-15 | Terence Chan | Multithreaded, mixed hardware description languages logic simulation on engineering workstations |
US7191412B1 (en) * | 2005-09-28 | 2007-03-13 | Xilinx, Inc. | Method and apparatus for processing a circuit description for logic simulation |
CN1959684A (zh) * | 2005-10-31 | 2007-05-09 | 松下电器产业株式会社 | 混合信号电路模拟器 |
Non-Patent Citations (1)
Title |
---|
VICTOR BERMAN: "Standard Verilog-VHDL Interoperability", 《IEEE COMPUTER》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106104468A (zh) * | 2013-12-13 | 2016-11-09 | 起元技术有限责任公司 | 动态地确定数据处理应用程序的模式 |
CN106104468B (zh) * | 2013-12-13 | 2020-03-10 | 起元技术有限责任公司 | 动态地确定数据处理应用程序的模式 |
US11340910B2 (en) | 2013-12-13 | 2022-05-24 | Ab Initio Technology Llc | Dynamically determining a mode of a data processing application |
Also Published As
Publication number | Publication date |
---|---|
EP2676210B1 (en) | 2017-09-06 |
CN103403718B (zh) | 2016-11-02 |
US8838431B1 (en) | 2014-09-16 |
WO2012112195A1 (en) | 2012-08-23 |
KR20140016902A (ko) | 2014-02-10 |
EP2676210A1 (en) | 2013-12-25 |
KR101765985B1 (ko) | 2017-08-23 |
JP5716104B2 (ja) | 2015-05-13 |
JP2014510338A (ja) | 2014-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Compton et al. | Reconfigurable computing: a survey of systems and software | |
Densmore et al. | A platform-based taxonomy for ESL design | |
Gajski et al. | SpecC: Specification language and methodology | |
CN102708221B (zh) | 用于对局部重配置模块进行布局和布线的方法和设备 | |
US10296689B2 (en) | Automated bottom-up and top-down partitioned design synthesis | |
CN1985256A (zh) | 硬件描述语言(hdl)程序的执行 | |
CN104603784A (zh) | 相对定时表征 | |
CN103403718A (zh) | 混合语言的模拟 | |
Sozzo et al. | Pushing the level of abstraction of digital system design: A survey on how to program fpgas | |
Lavagno et al. | Design of embedded systems | |
CN108140067A (zh) | 交互式多步骤物理合成 | |
Vanderperren et al. | Extending UML for electronic systems design: A code generation perspective | |
Doucet et al. | Balboa: A component-based design environment for system models | |
US9223910B1 (en) | Performance and memory efficient modeling of HDL ports for simulation | |
US9135384B1 (en) | Compilation and simulation of a circuit design | |
Sahlbach et al. | A system-level FPGA design methodology for video applications with weakly-programmable hardware components | |
Nepomnyashchy et al. | High-Level Design Flows for VLSI Circuit | |
Mathur et al. | A hierarchical simulation framework for application development on system-on-chip architectures | |
Neagu | Architectural exploration of Logic-in-Memory systems with DExIMA-CAD | |
de Fine Licht et al. | Modeling and implementing high performance programs on fpga | |
Dal et al. | ParaGnosis: A Tool for Parallel Knowledge Compilation | |
Riccobene et al. | Model transformations in the UPES/UPSoC development process for embedded systems | |
Dossis | High-Level Synthesis for Embedded Systems | |
Verdier et al. | Exploring RTOS issues with a high-level model of a reconfigurable SoC platform. | |
Thiele et al. | SCF—state machine controlled flow diagrams |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |