CN117829042A - 管理仿真系统的高性能模拟表示 - Google Patents

管理仿真系统的高性能模拟表示 Download PDF

Info

Publication number
CN117829042A
CN117829042A CN202311265403.4A CN202311265403A CN117829042A CN 117829042 A CN117829042 A CN 117829042A CN 202311265403 A CN202311265403 A CN 202311265403A CN 117829042 A CN117829042 A CN 117829042A
Authority
CN
China
Prior art keywords
inputs
compiler
simulation
state
rtl
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.)
Pending
Application number
CN202311265403.4A
Other languages
English (en)
Inventor
R·米塔尔
D·库马尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Synopsys Inc
Original Assignee
Synopsys Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Synopsys Inc filed Critical Synopsys Inc
Publication of CN117829042A publication Critical patent/CN117829042A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本申请案涉及管理仿真系统的高性能模拟表示。处理装置接收一或多个输入以用于使用仿真编译器对集成电路进行设计检验。处理装置确定用于处理所述一或多个输入的编译器的类型。响应于确定所述编译器类型是模拟编译器,所述处理装置根据所述一或多个输入来修改所述模拟编译器,以形成经修改的模拟编译器以匹配与所述仿真编译器相关联的一或多个仿真语义。所述处理装置使用所述经修改的模拟编译器来执行设计检验。

Description

管理仿真系统的高性能模拟表示
技术领域
本公开大体上涉及一种电子设计自动化系统,且更特定来说,涉及管理用于验证电路设计的仿真系统的高性能模拟表示。
背景技术
设计检验是集成电路的设计规划流程的一部分。设计检验可使用模拟或基于硬件的仿真来执行。基于硬件的仿真可用于检验大型电路设计配置及复杂的用例,而用基于模拟的设计检验通常是不可能的。基于硬件的仿真工作流程以早期设计提出期间的常见及基本的设计缺陷、寄存器传送级(RTL)问题及连接性问题开始。在项目执行的此阶段期间,快速周转时间成为关键要求。
发明内容
在一个实施例中,处理装置接收一或多个输入以用于使用仿真编译器对集成电路进行设计检验。处理装置确定用于处理所述一或多个输入的编译器的类型。响应于确定所述编译器类型是模拟编译器,所述处理装置根据所述一或多个输入来修改所述模拟编译器,以形成经修改的模拟编译器以匹配与所述仿真编译器相关联的一或多个仿真语义。所述处理装置使用所述经修改的模拟编译器来执行设计检验。
在一个实施例中,处理装置通过以下操作根据所述一或多个输入来修改所述模拟编译器:从一或多个输入识别RTL语句;针对一或多个时钟生成事件及一或多个非时钟生成事件解析所述RTL语句;处理所述一或多个时钟生成事件;及忽略所述一或多个非时钟生成事件。
在一个实施例中,处理装置通过以下操作根据所述一或多个输入来修改所述模拟编译器:基于所述一或多个输入确定调试特征被启用;及响应于基于所述一或多个输入确定所述调试特征未被启用,禁用所述模拟编译器中的所述调试特征。
在一个实施例中,处理装置通过以下操作根据所述一或多个输入来修改所述模拟编译器:使用所述一或多个输入执行一或多个变换以将4态逻辑状态转换为2态逻辑状态,以匹配与所述仿真编译器相关联的一或多个仿真语义。
在一个实施例中,执行所述一或多个变换以将所述4态逻辑状态转换为所述2态逻辑状态包含解析来自所述一或多个输入的RTL语句;响应于解析所述RTL语句,识别所述RTL语句中的未经初始化寄存器。所述处理装置从所述一或多个输入识别初始值,其中所述初始值由用户指定。所述处理装置将所述未经初始化寄存器指派给所述初始值。
在一个实施例中,执行所述一或多个变换以将所述4态逻辑状态转换为所述2态逻辑状态包含:确定所述集成电路是多驱动器电路。所述处理装置解析来自所述一或多个输入的RTL语句。响应于解析所述RTL语句,所述处理装置识别所述RTL语句中的z逻辑状态的值。所述处理装置将所述z逻辑状态的所述值指派给所述集成电路的导线的一或多个值。
在一个实施例中,执行所述一或多个变换以将所述4态逻辑状态转换为所述2态逻辑状态包含:解析来自所述一或多个输入的RTL语句。响应于解析所述RTL语句,所述处理装置识别所述RTL语句中的未经初始化寄存器。所述处理装置从所述一或多个输入识别初始值,其中所述初始值由用户指定。所述处理装置将所述未经初始化寄存器指派给所述初始值。
在一个实施例中,所述处理装置通过以下操作根据所述一或多个输入来修改所述模拟编译器:识别预加载的文件输入且执行永久编程操作,以将所述预加载的文件输入的一或多个值存储到与所述模拟编译器相关联的基于多维阵列的软件模型中。
在一个实施例中,所述处理装置通过从所述一或多个输入移除与仿真编译器相关联的快速时钟源而根据所述一或多个输入来修改所述模拟编译器。
在一个实施例中,所述处理装置通过执行黑盒移除而根据所述一或多个输入来修改所述模拟编译器。
附图说明
将从下文给出的详细描述及本公开的实施例的附图更充分理解本公开。图用于提供对本公开的实施例的了解及理解且不将本公开的范围限制于这些特定实施例。此外,图不一定按比例绘制。
图1是说明根据本公开的一些实施例的用于管理仿真系统的高性能模拟表示的本系统的框图。
图2是说明根据本公开的一些实施例的使用图4到5中描述的方法实施的实例变换的框图。
图3A是说明根据本公开的一些实施例的使用图4到5中描述的方法实施的实例变换的另一框图。
图3B是说明根据本公开的一些实施例的使用图4到5中描述的方法实施的实例变换的另一框图。
图4是说明根据本公开的一些实施例的管理用于检验电路设计的仿真系统的高性能模拟表示的方法的流程图。
图5是说明根据本公开的一些实施例的管理用于检验电路设计的仿真系统的高性能模拟表示的方法的另一流程图。
图6描绘根据本公开的一些实施例的在集成电路的设计及制造期间使用的各种过程的流程图。
图7描绘根据本公开的一些实施例的实例仿真系统的图。
图8描绘本公开的实施例可在其中操作的实例计算机系统的图。
具体实施方式
本公开的方面涉及管理仿真系统的高性能模拟表示。设计检验是集成电路的设计规划流程的一部分。设计检验可使用模拟或基于硬件的仿真来执行。模拟是基于软件的基础设施,其在设计检验中使用的测试平台的可编程性、跟踪及监测方面具有灵活性。然而,模拟通常以非常慢的速度运行。为了处置模拟性能带来的挑战,可使用基于硬件的仿真来检验大型电路设计配置及复杂的用例,而用基于模拟的设计检验通常是不可能的。例如,用户/客户可构建大小为数十亿个门的基于硬件的仿真模型,归因于模拟运行速度慢,模拟可能无法处置这些模型。因而,需要在项目的早期设计提出期间提供超越模拟的显著性能提升的解决方案。
在项目的早期设计提出期间,周转时间(例如,总编译时间加上运行时间)也成为基于硬件的仿真检验的挑战,因为重点仍然是基本设计缺陷、寄存器传送级(RTL)问题及连接性问题。特定来说,总周转时间可能受到在基于硬件的仿真期间存在的长编译时间的影响。此外,归因于小型RTL修复需要多次重新编译,因此对总周转时间的影响可为显著的。因而,需要具有更快总周转时间的解决方案。
与模拟相比,基于硬件的仿真也与经增加成本相关联。例如,使用基于硬件的仿真,用户可能需要长达四分之一的时间来启用第一功能模型。由于仿真可能成本高昂,客户/用户经常出于财务原因而限制仿真窗口及/或仿真资源。因而,需要可在启用且运行第一个功能模型之后无缝转变到仿真设置的以软件为中心的解决方案。
当使用基于硬件的仿真时,用户/客户可寻求以仿真为中心的功能检查,在新的RTL更改被检入之前,他们的设计团队可在回归测试中使用这些以仿真为中心的功能检查。然而,设计工程师最熟悉模拟。此外,如上文所描述,归因于与仿真相关联的经增加成本,仿真资源的数量通常过于有限,无法支持用户/客户对以仿真为中心的功能检查的要求。由于设计团队通常必须快速交付高质量的RTL,因此此类功能检查通常可能需要基于模拟且具有用于回归测试的快速周转时间。
本公开描述一种系统及方法,所述系统及方法更具成本效益,能够以更快的周转时间执行设计检验,且提供比模拟更高的性能。
本公开的方面通过在电路设计中管理仿真系统的高性能模拟表示来解决上述及其它不足。代替使用仿真系统来执行硬件检验,处理装置可使用模拟编译器来执行硬件检验,同时根据仿真系统的语义来修改模拟编译器。
在一个实施例中,处理装置可接收将在仿真编译器中使用的用于设计检验的一或多个输入。处理装置可基于在所述一或多个输入中指定的指示(例如,由提供所述一或多个输入的用户)来确定用于处理所述一或多个输入的编译器的类型是模拟编译器,而不是仿真编译器。处理装置可根据所述一或多个输入来修改模拟编译器,以便能够使用仿真特定语义来执行设计检验。处理装置然后可使用模拟编译器来执行设计检验。
本文中所描述的方法的技术优势包含电路设计系统的性能改进及周转时间更快。通过根据仿真特定的输入修改模拟编译器,可创建编译器,所述编译器是基于模拟的且因此具有模拟系统的快速周转时间及灵活性优势,同时还具有仿真系统的高性能优势。基于模拟及仿真的检验流程对于签收任何现代单片系统(SoC)设计都至关重要。另外,通过能够使用共同输入,可在仿真环境与模拟环境之间存在共同性,这可允许基于用户(例如,客户)或系统设计规范的环境之间的无缝转变。因此,在维持仿真环境与模拟环境之间的共同性的同时,可在性能及周转时间方面得到总体改进。
图1是说明根据本公开的一些实施例的用于管理仿真系统的高性能模拟表示的本系统的框图。如所说明,模拟表示100可包含多个组件。每一组件可为离散组件,其最终被一起封装成模拟表示100。每一组件可具有多个内部子组件(图1中未展示)。在一些实施例中,模拟表示100可包含模拟编译组件110、仿真编译组件120、模拟实施组件160、模拟运行组件165、仿真运行组件170、仿真测试用例175、一或多个仿真特定用户命令130、待测设计(DUT)及/或寄存器传送级(RTL)数据140以及仿真测试平台及/或事务处理器150。
在一些实施例中,模拟编译组件120、模拟实施组件160及模拟运行组件165是基于软件的指令,其可由执行指令的一或多个处理装置(例如,图8的处理装置802)来实施。
在一些实施例中,一或多个仿真特定用户命令130、待测设计(DUT)及/或寄存器传送级(RTL)数据140、仿真测试平台及/或事务处理器150以及仿真测试用例175可用作模拟编译组件110或仿真编译组件120的一或多个输入。仿真特定用户命令130、DUT及RTL数据140、仿真测试平台/事务处理器150及/或仿真测试用例175中的每一者可存储在耦合到本系统的数据库中。
在要执行模拟编译的情况下,模拟实施组件160可接收仿真测试用例175,其中仿真测试用例175是例如由用户编写以创建经运行以确保设计具功能性的特定测试程序的命令序列。模拟实施组件160可执行对仿真测试用例175的修改,以将仿真测试用例175从仿真语义转换为模拟语义,使得仿真测试用例可在模拟运行组件165处使用模拟编译组件110来运行。在一些实施例中,模拟编译组件110是表示编译器(例如,图7的编译器710)的一组软件代码。除了仿真测试用例175之外,模拟编译组件110还可接收来自以下的一或多个输入:一或多个仿真特定用户命令130、待测设计(DUT)及/或寄存器传送级(RTL)数据140、以及仿真测试平台及/或事务处理器150。
在要执行仿真的情况下,仿真编译组件160可接收仿真测试用例175。由于仿真测试用例175已经被编写为支持仿真语义,因此可能不会对仿真测试用例进行修改。仿真运行组件170可使用仿真编译组件120来运行仿真测试用例175。在一些实施例中,仿真编译组件120是表示编译器(例如,图7的编译器710)的一组软件。除了仿真测试用例175之外,仿真编译组件120还可接收来自以下的一或多个输入:一或多个仿真特定用户命令130、待测设计(DUT)及/或寄存器传送级(RTL)数据140以及仿真测试平台及/或事务处理器150。
关于每一组件的进一步细节将关于本文中的图4到5进行描述。
图2、3A、3B各自是说明根据本公开的一些实施例的使用图4到5中描述的方法实施的实例变换的框图。将结合图4到5来描述关于图2、3A、3B的进一步细节。
图4是说明根据本公开的一些实施例的管理用于检验电路设计的仿真系统的高性能模拟表示的方法的流程图。方法400可由包含硬件(例如,电路系统、专用逻辑、可编程逻辑、微码等)、软件(例如,在处理器上运行以执行硬件模拟的指令)或其组合的处理逻辑来执行。在一个实施例中,方法400由图1的模拟编译组件110执行。
再次参考图4,在405,处理逻辑接收一或多个输入。在一些实施例中,一或多个输入将用于集成电路的设计检验。在一些实施例中,一或多个输入可包含用于在仿真环境(例如,图1的仿真测试平台及/或事务处理器150)中执行设计检验的测试平台模块及一或多个事务处理器。一或多个事务处理器可包含用于实施测试平台模块的数据。在一些实施例中,测试平台模块可包含用于执行设计检验的一或多个命令(例如,来自用户)。在一些实施例中,一或多个输入包含待测设计(DUT)/寄存器传送级(RTL)数据(例如,图1的DUT/RTL数据140)及/或用户指定的命令(例如图1的仿真特定用户命令130)。处理逻辑可从一或多个用户及/或用户装置接收一或多个输入。
在410,处理逻辑确定用于处理在405接收的一或多个输入的编译器的类型。在一些实施例中,处理逻辑基于由一或多个输入指定的指示来确定编译器的类型。例如,处理逻辑可从一或多个输入识别用户指定的命令,其中所述用户指定的命令是使用模拟编译器或仿真编译器来执行设计检验的命令。在一些实施例中,处理逻辑可从一或多个输入识别用户特定命令,其中所述用户指定的命令是性能及/或周转时间要求的指示。在一些实施例中,处理逻辑可通过比较模拟编译器与仿真编译器且确定满足用户指定的性能及/或周转时间要求的编译器的类型来确定编译器的类型。响应于确定要用于处理一或多个输入的编译器的类型是模拟编译器,处理逻辑如参考420所描述般进行。在一些实施例中,响应于确定要用于处理一或多个输入的编译器的类型是仿真编译器,处理逻辑使用仿真编译器执行设计检验。
在420,处理逻辑根据一或多个输入来修改模拟编译器以将4态逻辑状态转换为2态逻辑状态,以匹配仿真编译器的一或多个仿真语义。在一些实施例中,响应于在410确定要用于处理一或多个输入的编译器的类型是模拟编译器,处理逻辑根据一或多个输入来修改模拟编译器。
在一些实施例中,根据一或多个输入来修改模拟编译器以将4态逻辑状态转换为2态逻辑状态可包含使用一或多个输入执行一或多个变换。执行一或多个变换可将4态逻辑状态转换为2态逻辑状态,以便实现行为等效性。行为等效性可能意味着DUT应在模拟及仿真两者中在功能上通过。行为等效性的挑战是解决模拟与仿真之间的平台级差异。仿真作为基于硬件的平台,是2态平台,其中“0”及“1”是映射在仿真器上的DUT内部的有效逻辑状态。模拟是4态平台,其中支持“0”、“1”、“x”及“z”逻辑状态。“z”状态是指高阻抗状态,且“x”状态是指不关注状态。模拟与仿真之间的功能行为可归因于x/z传播而变化。4态模拟的另一挑战是,4态平台也影响模拟性能,其中运行时间可能较慢且可能消耗更多存储器。本公开支持模拟编译器,所述模拟编译器是4态的,但在特定情况下可支持x及z的类仿真2态建模,以便实现具有更高性能的行为等效性。
在4态模拟中,网络可从驱动常数“z”的驱动程序接收“z”的值。在一些实施例中,网络可从产生“z”的三态构造的输出接收“z”的值。在一些实施例中,如果网络未经初始化,那么网络可隐式地接收来自“z”的值。参考图2,处理逻辑例如使用直接指派来为导线“a”指派“z”状态值。处理逻辑进一步为导线“b”指派“z”状态值,例如,使用间接指派(即,通过将导线“b”指派给直接被指派“z”的导线“a”,如图2中说明)。如果“en”的值被确定为1,那么处理逻辑为导线“c”指派“z”状态值。为了校正功能行为以实现如上文所描述的行为等效性,处理逻辑可根据具体情况将“z”值传播到下游逻辑。例如,如图2中说明,导线“e”由导线“b”及导线“d”多重驱动。为了获得正确的多驱动程序分辨率,处理逻辑使“z”值传播通过导线“a”及导线“b”。在上述实例中,如果将“a”或“b”转换为2态值,那么多驱动程序分辨率可对导线“e”产生错误值。在一些实施例中,对于多驱动程序以外的情况,处理逻辑用恒定的2态值替换(例如,指派、替代等)“z”值。图2中说明的最后语句是指使用“b”及“d”作为输入且使用“o2”作为输出建模的与(AND)门。在此语句中,处理逻辑可用2态常数值替换(例如,指派、替代等)“b”的“1’bz”值。2态常数值可基于用户对上拉、下拉、保持器等的选择来确定。在上述语句中,执行所描述变换以用2态常数值替换“b”的值使模拟行为能够在功能上等效于仿真行为。在无变换的情况下,AND门可产生“X”值,这与仿真行为不同。
在一些实施例中,处理逻辑可实施对“reg”数据类型的一或多个变换,以确保模拟与仿真之间的一致功能行为,如本文中所描述。数据类型定义信号可保持的值的类型。“reg”数据类型是指寄存器数据类型。模拟中的“reg”数据类型声明确定寄存器。在模拟中,寄存器被初始化为“X”值或RTL中的特定值。在基于硬件的仿真流程中,“reg”数据类型是处于两种逻辑状态(0或1)的库单元的输出。在一些实施例中,处理逻辑可对“reg”数据类型执行一或多个变换。在一些实施例中,处理逻辑确定“reg”数据类型是否经初始化(例如,被指派初始值)或未经初始化(如,未被指派初始值)。处理逻辑可基于405处的一或多个输入来确定“reg”数据类型是否经初始化或未经初始化。响应于确定“reg”未经初始化,处理逻辑可初始化“reg”。在一些实施例中,处理逻辑可基于“reg”数据类型的编码风格来确定异步设置/复位,所述编码风格可用于确定“reg”数据类型的正确初始化。在一些实施例中,处理逻辑可确定“reg”数据类型(例如,如在组合逻辑中所使用)是否未经初始化。如果“reg”数据类型未经初始化,那么处理逻辑可将“reg”初始化为“X”值,而在仿真中,未经初始化的“reg”数据类型用“z”值初始化。在一些实施例中,处理逻辑可通过未经初始化网络的用户指定的选项(例如,来自405处的一或多个输入)来确定驱动值,例如0或1,这取决于用户的偏好。
例如,参考图3A,在一些实施例中,处理逻辑可确定“reg”经初始化(例如,如图3A中说明的“explicitly_initialized_reg”)。如果处理逻辑确定“reg”经初始化,那么处理逻辑不变换reg,例如,处理逻辑忽略“reg”数据类型。响应于确定“reg”数据类型未经初始化(例如,如图3A中说明的“un_initialized_reg”),处理逻辑可将初始值(例如,0)指派给“reg”数据类型。在一些实施例中,处理逻辑可将“undriven_reg”数据类型(例如,未在RTL中的任何地方驱动的寄存器)初始化为初始值,例如“1’bz”。在一些实施例中,处理逻辑可识别“flop_initialized_reg”(例如,其中通过always块定义翻转(flop)行为的寄存器)。处理逻辑确定复位“rst”是否处于活动状态。如果复位“rst”处于活动状态,那么处理逻辑将“flop_initialized_reg”指派给初始值(例如,1’b1)。如果复位“rst”不处于活动状态,那么处理逻辑在时钟的正沿上使数据翻转。在一些实施例中,可执行其它类型的变换,以便将仿真系统的4态基础设施转换为模拟系统的2态基础设施。
参考图3B,处理逻辑可解析来自一或多个输入的RTL语句。处理逻辑可识别未经初始化的reg(例如,如图3B中说明的“undriven_reg_”)。响应于识别未经初始化的reg,处理逻辑可将未经初始化的reg初始化为0或1逻辑状态。在一些实施例中,处理逻辑可通过识别用户指定的值(例如,来自405处的一或多个输入)来初始化未经初始化的reg。
在一些实施例中,处理逻辑可通过解析来自一或多个输入的RTL语句且识别z逻辑状态的值来处置“z”状态以实现功能等效。处理逻辑可用2态值(例如,上拉、下拉等)替换(例如,替代)z逻辑状态的值(“b1”被指派给其),且评估图3B中说明的AND门。
在一些实施例中,处理逻辑可处置多驱动程序情况的“z”状态。例如,在图3B中,处理逻辑可确定“a”经多重驱动。处理逻辑可解析来自一或多个输入的RTL语句且识别z逻辑状态的值。处理逻辑可将z逻辑状态的值指派给一或多个值或导线。例如,处理逻辑可将a1指派为等于b1,以便处置“z”状态。
在一些实施例中,在其中“reg”未经初始化的情况下,处理逻辑可处置“x”状态。处理逻辑可解析来自一或多个输入的RTL语句且识别未经初始化寄存器。处理逻辑可通过识别用户指定的值(例如,来自405处的一或多个输入)来初始化未经初始化的reg。例如,在图3B中,处理逻辑可将“un_initialized_reg”初始化为0或用户特定值(例如,来自405处的一或多个输入)。
图5是说明根据本公开的一些实施例的管理用于检验电路设计的仿真系统的高性能模拟表示的方法的另一流程图。方法500可由包含硬件(例如,电路系统、专用逻辑、可编程逻辑、微码等)、软件(例如,在处理器上运行以执行硬件模拟的指令)或其组合的处理逻辑来执行。在一个实施例中,方法500由图1的模拟编译组件110执行。
再次参考图5,在505,处理逻辑接收一或多个输入。在一些实施例中,一或多个输入将用于集成电路的设计检验。在一些实施例中,一或多个输入可包含用于在仿真环境(例如,图1的仿真测试平台及/或事务处理器150)中执行设计检验的测试平台模块及一或多个事务处理器。一或多个事务处理器可包含用于实施测试平台模块的数据。在一些实施例中,测试平台模块可包含用于执行设计检验的一或多个命令(例如,来自用户)。在一些实施例中,一或多个输入包含待测设计(DUT)/寄存器传送级(RTL)数据(例如,图1的DUT/RTL数据140)及/或用户指定的命令(例如,图1的仿真特定用户命令130)。处理逻辑可从一或多个用户及/或用户装置接收一或多个输入。
在510,处理逻辑确定用于处理在505接收的一或多个输入的编译器的类型。在一些实施例中,处理逻辑基于由一或多个输入指定的指示来确定编译器的类型。例如,处理逻辑可从一或多个输入识别用户指定的命令,其中所述用户指定的命令是使用模拟编译器或仿真编译器来执行设计检验的命令。在一些实施例中,处理逻辑可从一或多个输入识别用户特定命令,其中所述用户指定的命令是性能及/或周转时间要求的指示。在一些实施例中,处理逻辑可通过比较模拟编译器与仿真编译器且确定满足用户指定的性能及/或周转时间要求的编译器的类型来确定编译器的类型。
在515,响应于确定要用于处理一或多个输入的编译器的类型是模拟编译器,处理逻辑如参考520所描述般进行。在一些实施例中,响应于确定要用于处理一或多个输入的编译器的类型是仿真编译器,处理逻辑在530使用仿真编译器执行设计检验。在520,处理逻辑根据一或多个输入来修改模拟编译器以形成经修改的模拟编译器。在一些实施例中,响应于在510确定要用于处理一或多个输入的编译器的类型是模拟编译器,处理逻辑根据一或多个输入来修改模拟编译器。
在一些实施例中,根据一或多个输入来修改模拟编译器可包含从一或多个输入识别寄存器传送级(RTL)语句。处理逻辑可针对一或多个事件解析RTL语句,例如一或多个时钟生成事件及/或一或多个非时钟生成事件。处理逻辑可通过识别其中在语句的任一侧上信号是相同的语句来识别时钟生成事件。处理逻辑可通过识别其中在语句的任一侧上信号是不相同的语句来识别非时钟生成事件。在一些实施例中,处理逻辑可对一或多个不可合成的构造解析RTL语句,例如“#delay”。例如,RTL语句可为如下:“assign clock=#5~clock;”,其描述产生具有5个时间单位(例如,纳秒)延迟(由#5指示)的时钟。在上述实例中,处理逻辑可将RTL语句识别为时钟生成事件,因为指派语句的任一侧上的信号是相同的(即,时钟信号)。非时钟生成事件的另一实例可为如下:“assign sig_a=#5sig_b;”,其描述在5个时间单位延迟之后将sig_b的值指派给sig_a。在上述实例中,处理逻辑可将RTL语句识别为非时钟生成事件,因为指派语句的任一侧上的信号是不同的(即,sig_a及sig_b是不同的信号)。在一些实施例中,处理逻辑可处理一或多个时钟生成事件。在一些实施例中,处理逻辑可忽略一或多个非时钟生成事件。例如,在上述实例中,处理逻辑可处理与时钟生成事件相关联的延迟且忽略与非时钟生成事件相关联的时间延迟。在一些实施例中,忽略#delay可导致不正确的行为。例如,RTL语句可为如下:“always#10clock=~clock;”。通过忽略10个时间单位的延迟,这将表现为模拟中的无限0延迟循环。处理逻辑识别具有缺失或不完整敏感度列表的此RTL编码且将always块转换为组合逻辑。通过尽可能消除#delay,减少模拟流程中的事件数目,此继而提高事件驱动的模拟系统(例如图1的模拟编译组件110)的性能。
在一些实施例中,根据一或多个输入来修改模拟编译器可包含移除编译器对快速时钟的相依性,这在基于硬件的仿真中实施。例如,在基于硬件的仿真中,时钟生成从内部快速时钟源发生。此快速时钟可用于对大多数仿真测试平台运行时间基础设施以及仿真器与在主机系统上运行的仿真测试平台之间的硬件/软件接口进行建模。然而,当在模拟编译器中使用时,快速时钟可阻碍性能。因此,修改模拟编译器可包含移除编译器对内部时钟源(例如,快速时钟)的相依性。在一些实施例中,处理逻辑可从一或多个输入(例如,从仿真测试平台/事务处理器)识别与快速时钟相关联的以仿真为中心的定制实施方案,且使用语言参考手册的标准直接编程接口(DPI)语义滤除(例如,移除及/或忽略)所识别的以仿真为中心的定制实施方案,从而消除归因于对快速时钟的相依性而导致的性能瓶颈。例如,处理逻辑可从一或多个输入(例如,仿真测试平台及/或事务处理器)识别使用快速时钟源的一或多个RTL块。处理逻辑可滤除(例如,移除及/或忽略)使用快速时钟源的RTL块。
在一些实施例中,根据一或多个输入来修改模拟编译器可包含基于一或多个输入确定调试特征被启用。在一些实施例中,基于一或多个输入确定调试特征被启用可包含识别指定调试特征被启用及/或被禁用的一或多个输入中的输入。响应于确定调试特征未被启用,处理逻辑可禁用模拟编译器中的调试特征。通过对模型进行压缩,此产生仿真系统的高性能模拟表示。
在基于硬件的仿真流程中,集成电路的设计经合成、放置且定时在例如FGPA芯片内部。类似于ASIC流程,可在仿真编译器流程的不同阶段在设计中执行一或多个优化,其中仿真编译器的最终目标是产生设计的高度紧凑的硬件表示,使得可将其放置在最小数目个例如FGPA芯片内。相反地,模拟流程可建立整个设计的软件计算模型。在一些实施例中,模拟编译器经修改以产生最优DUT模型以获得最高性能。这些修改可包含黑盒移除、未经初始化初始化、常数传播等。例如,在一些实施例中,处理逻辑可通过常数值驱动设计中的任何未经初始化网络。在一些实施例中,处理逻辑可将空(例如,黑盒)模块的输出驱动到常数值。在一些实施例中,处理逻辑可向下游传播一或多个常数值,从而最大化设计优化且在模拟中产生高度紧凑的设计视图,从而提升性能。
在一些实施例中,根据一或多个输入来修改模拟编译器可包含识别预加载的存储器文件。处理逻辑可将预加载的存储器文件的一或多个值永久地编程到用于DUT内部的存储器的基于多维阵列的软件模型中。处理逻辑可使用存储在基于多维阵列的软件模型中的一或多个值来执行常数传播。在一些实施例中,此动作可移除用户在测试执行期间对DUT存储器执行读取及/或写入操作的能力。在一些实施例中,处理逻辑可识别在来自一或多个输入的RTL中定义的只写存储器且可滤除(例如,移除及/或忽略)DUT中的所识别只写存储器。此类存储器优化可产生仿真模型的高性能模拟表示。
在一些实施例中,根据一或多个输入来修改模拟编译器可包含使用一或多个输入执行一或多个变换。执行一或多个变换可将4态基础设施平台转换为2态基础设施平台,以便实现行为等效性。行为等效性可能意味着DUT应在模拟及仿真两者中在功能上通过。行为等效性的挑战是解决模拟与仿真之间的平台级差异。仿真作为基于硬件的平台,是2态平台,其中“0”及“1”是映射在仿真器上的DUT内部的有效逻辑状态。模拟是4态平台,其中支持“0”、“1”、“x”及“z”逻辑状态。“z”状态是指高阻抗状态,且“x”状态是指不关注状态。模拟与仿真之间的功能行为可归因于x/z传播而变化。4态模拟的另一挑战是,4态平台也影响模拟性能,其中运行时间可能较慢且可能消耗更多存储器。本公开支持模拟编译器,所述模拟编译器是4态的,但在特定情况下可支持x及z的类仿真2态建模,以便实现具有更高性能的行为等效性。
在4态模拟中,网络可从驱动常数“z”的驱动程序接收“z”的值。在一些实施例中,网络可从产生“z”的三态构造的输出接收“z”的值。在一些实施例中,如果网络未经初始化,那么网络可隐式地接收来自“z”的值。参考图2,处理逻辑例如使用直接指派来为导线“a”指派“z”状态值”。处理逻辑进一步为导线“b”指派“z”状态值,例如,使用间接指派(即,通过将导线“b”指派给直接被指派“z”的导线“a”,如图2中说明)。如果“en”的值被确定为1,那么处理逻辑为导线“c”指派“z”状态值。为了校正功能行为以实现如上文所描述的行为等效性,处理逻辑可根据具体情况将“z”值传播到下游逻辑。例如,如图2中说明,导线“e”由导线“b”及导线“d”多重驱动。为了获得正确的多驱动程序分辨率,处理逻辑使“z”值传播通过导线“a”及导线“b”。在上述实例中,如果将“a”或“b”转换为2态值,那么多驱动程序分辨率可对导线“e”产生错误值。在一些实施例中,对于多驱动程序以外的情况,处理逻辑用恒定的2态值替换(例如,指派、替代等)“z”值。图2中说明的最后语句是指使用“b”及“d”作为输入且使用“o2”作为输出建模的AND门。在此语句中,处理逻辑可用2态常数值替换(例如,指派、替代等)“b”的“1’bz”值。2态常数值可基于用户对上拉、下拉、保持器等的选择来确定。在上述语句中,执行所描述变换以用2态常数值替换“b”的值使模拟行为能够在功能上等效于仿真行为。在无变换的情况下,AND门可产生“X”值,这与仿真行为不同。
在一些实施例中,处理逻辑可实施对“reg”数据类型的一或多个变换,以确保模拟与仿真之间的一致功能行为,如本文中所描述。数据类型定义信号可保持的值的类型。“reg”数据类型是指寄存器数据类型。模拟中的“reg”数据类型声明确定寄存器。在模拟中,寄存器被初始化为“X”值或RTL中的特定值。在基于硬件的仿真流程中,“reg”数据类型是处于两种逻辑状态(0或1)的库单元的输出。在一些实施例中,处理逻辑可对“reg”数据类型执行一或多个变换。在一些实施例中,处理逻辑确定“reg”数据类型是否经初始化(例如,被指派初始值)或未经初始化(如,未被指派初始值)。处理逻辑可基于505处的一或多个输入来确定“reg”数据类型是否经初始化或未经初始化。响应于确定“reg”未经初始化,处理逻辑可初始化“reg”。在一些实施例中,处理逻辑可基于“reg”数据类型的编码风格来确定异步设置/复位,所述编码风格可用于确定“reg”数据类型的正确初始化。在一些实施例中,处理逻辑可确定“reg”数据类型(例如,如在组合逻辑中所使用)是否未经初始化。如果“reg”数据类型未经初始化,那么处理逻辑可将“reg”初始化为“X”值,而在仿真中,未经初始化的“reg”数据类型用“z”值初始化。在一些实施例中,处理逻辑可通过未经初始化网络的用户指定的选项(例如,来自505处的一或多个输入)来确定驱动值,例如0或1,这取决于用户的偏好。
例如,参考图3A,在一些实施例中,处理逻辑可确定“reg”经初始化(例如,如图3A中说明的“explicitly_initialized_reg”)。如果处理逻辑确定“reg”经初始化,那么处理逻辑不变换reg,例如,处理逻辑忽略“reg”数据类型。响应于确定“reg”数据类型未经初始化(例如,如图3A中说明的“un_initialized_reg”),处理逻辑可将初始值(例如,0)指派给“reg”数据类型。在一些实施例中,处理逻辑可将“undriven_reg”数据类型(例如,未在RTL中的任何地方驱动的寄存器)初始化为初始值,例如“1’bz”。在一些实施例中,处理逻辑可识别“flop_initialized_reg”(例如,其中通过always块定义翻转行为的寄存器)。处理逻辑确定复位“rst”是否处于活动状态。如果复位“rst”处于活动状态,那么处理逻辑将“flop_initialized_reg”指派给初始值(例如,1’b1)。如果复位“rst”不处于活动状态,那么处理逻辑在时钟的正沿上使数据翻转。在一些实施例中,可执行其它类型的变换,以便将仿真系统的4态基础设施转换为模拟系统的2态基础设施。
参考图3B,处理逻辑可识别未经初始化的reg(例如,如图3B中说明的“undriven_reg_”)。响应于识别未经初始化的reg,处理逻辑可将未经初始化的reg初始化为0或1逻辑状态。在一些实施例中,处理逻辑可基于用户指定的值(例如,来自505处的一或多个输入)来初始化未经初始化的reg。在一些实施例中,处理逻辑可通过用2态值(例如,上拉、下拉等)替代“b1”且评估图3B中说明的AND门来处置“z”状态以实现功能等效。在一些实施例中,处理逻辑可处置多驱动程序情况的“z”状态。例如,在图3B中,“a”经多重驱动。处理逻辑可将a1指派为等于b1,以便处置“z”状态。在一些实施例中,在其中“reg”经初始化的情况下,处理逻辑可处置“x”状态。例如,在图3B中,处理逻辑可将“un_initialized_reg”初始化为0或用户特定值(例如,来自505处的一或多个输入)。
在525,处理逻辑可使用经修改的模拟编译器来执行设计检验。在一些实施例中,执行设计检验可包含使用在520修改的模拟编译器中的一或多个输入。
图6说明在设计、检验及制作制品(例如集成电路)期间使用以变换及检验表示集成电路的设计数据及指令的一组实例过程600。这些过程中的每一者可作为多个模块或操作结构化及启用。术语‘EDA’表示术语‘电子设计自动化’。这些过程以用由设计者供应的信息创建产品理念610开始,信息经变换以创建使用一组EDA过程612的制品。当设计完成时,对设计进行流片634,这是在将集成电路的原图(例如,几何图案)发送到制作设施以制造掩模组时,接着使用所述掩模组来制造集成电路。在流片之后,制作636半导体裸片且执行封装及组装过程638以产生成品集成电路640。
电路或电子结构的规范的范围可从低级晶体管材料布局到高级描述语言。高级表示可用于使用例如VHDL、Verilog、SystemVerilog、SystemC、MyHDL或OpenVera的硬件描述语言(‘HDL’)来设计电路及系统。可将HDL描述变换为逻辑级寄存器传送级(‘RTL’)描述、门级描述、布局级描述或掩模级描述。每一较低表示级(其是更详细的描述)将更有用的细节(例如,包含描述的模块的更多细节)添加到设计描述中。较低级表示(其是更详细的描述)可由计算机产生、从设计库导出或由另一设计自动化过程创建。用于指定更详细描述的处于较低表示语言级的规范语言的实例是SPICE,其用于详细描述具有许多模拟组件的电路。启用每一表示级的描述以供那层的对应工具(例如,形式检验工具)使用。设计过程可使用图6中所描绘的序列。所描述的过程可由EDA产品(或工具)启用。
在系统设计614期间,指定待制造的集成电路的功能性。可针对所要特性(例如功耗、性能、面积(物理及/或代码行)及成本降低等)来优化设计。将设计分割成不同类型的模块或组件可在此阶段发生。
在逻辑设计和功能检验616期间,以一或多种描述语言指定电路中的模块或组件,且检查规范的功能准确度。例如,可检验电路的组件以产生匹配所设计的电路或系统的规范的要求的输出。功能检验可使用模拟器及其它程序(例如测试平台产生器、静态HDL检查器及形式检验器)。在一些实施例中,使用被称为‘仿真器’或‘原型设计系统’的组件的特殊系统来加速功能检验。在本公开的一些实施例中,参考图1所描述的本系统是逻辑设计和功能检验616阶段的一部分。
在合成和测试设计618期间,将HDL代码变换为网表。在一些实施例中,网表可为图形结构,其中所述图形结构的边缘表示电路的组件且其中图形结构的节点表示组件如何互连。HDL代码及网表两者都是层级式制品,其可由EDA产品使用以检验集成电路在已制造时根据经指定设计执行。可针对目标半导体制造技术优化网表。此外,可测试成品集成电路以检验集成电路满足规范的要求。
在网表检验620期间,检查网表与时序约束的依从性及与HDL代码的对应性。在设计规划622期间,构造集成电路的总体平面图且针对时序及顶级布线对其进行分析。
在布局或物理实施624期间,发生物理放置(例如晶体管或电容器的电路组件的定位)及布线(通过多个导体连接电路组件),且可执行从库选择单元以启用特定逻辑功能。如本文中所使用,术语‘单元’可指定提供布尔逻辑功能(例如,AND、OR、NOT、XOR)或存储功能(例如触发器或锁存器)的一组晶体管、其它组件及互连件。如本文中所使用,电路‘块’可指两个或更多个单元。单元及电路块两者可被称为模块或组件且均作为物理结构及在模拟中启用。针对选定单元(基于‘标准单元’)指定参数(例如大小)且使所述参数可在数据库中存取以供EDA产品使用。
在分析和提取626期间,可在布局级检验电路功能,此允许精细化布局设计。在物理检验628期间,检查布局设计以确保制造约束(例如DRC约束、电气约束、光刻约束)是正确的且电路系统功能匹配HDL设计规范。在分辨率增强630期间,变换布局的几何结构以改进制造电路设计的方式。
在流片期间,创建用于(如果适当,那么在应用光刻增强之后)生产光刻掩模的数据。在掩模数据准备632期间,将‘流片’数据用于生产光刻掩模,使用所述光刻掩模来生产成品集成电路。
计算机系统(例如图8的计算机系统800,或主机系统)的存储子系统可用于存储由本文中所描述的一些或所有EDA产品以及用于开发库的单元及用于使用所述库的物理及逻辑设计的产品所使用的程序及数据结构。
图7描绘实例仿真环境700的图。仿真环境700可经配置以检验电路设计的功能性。仿真环境700可包含主机系统707(例如,作为EDA系统的部分的计算机)及仿真系统702(例如,一组可编程装置,例如现场可编程门阵列(FPGA)或处理器)。主机系统通过使用编译器710结构化仿真系统以仿真电路设计来产生数据及信息。要仿真的电路设计也被称为待测设计(‘DUT’),其中来自仿真的数据及信息用于检验DUT的功能性。
主机系统707可包含一或多个处理器。在其中主机系统包含多个处理器的实施例中,在本文中描述为由主机系统执行的功能可分布在所述多个处理器当中。主机系统707可包含用以变换以表示DUT的描述语言编写的规范及产生用于结构化仿真系统702以仿真所述DUT的数据(例如,二进制数据)及信息的编译器710。编译器710可变换、改变、重新结构化DUT、将新功能添加到DUT及/或控制DUT的时序。
主机系统707及仿真系统702使用由仿真连接载送的信号来交换数据及信息。连接可为但不限于一或多个电缆,例如具有与推荐标准232(RS232)或通用串行总线(USB)协议兼容的引脚结构的缆线。连接可为有线通信介质或网络,例如局域网络或广域网,例如因特网。连接可为使用无线协议(例如蓝牙(BLUETOOTH)或IEEE 802.11)的无线通信介质或具有一或多个存取点的网络。主机系统707及仿真系统702可通过第三装置(例如网络服务器)交换数据及信息。
仿真系统702包含多个FPGA(或其它模块),例如FPGA7041及7042以及额外的FPGA到704N。每一FPGA可包含一或多个FPGA接口,FPGA通过所述一或多个FPGA接口连接到其它FPGA(及潜在地其它仿真组件)以使FPGA交换信号。FPGA接口可被称为输入/输出引脚或FPGA垫。虽然仿真器可包含FPGA,但仿真器的实施例可包含其它类型的逻辑块以代替FPGA或连同FPGA一起用于仿真DUT。例如,仿真系统702可包含定制FPGA、用于仿真或原型设计的专用ASIC、存储器及输入/输出装置。
可编程装置可包含可编程逻辑块阵列及可使可编程逻辑块能够根据HDL代码中的描述互连的互连件层级。可编程逻辑块中的每一者可实现复杂的组合功能或启用例如AND及XOR逻辑块的逻辑门。在一些实施例中,逻辑块也可包含可为简单锁存器、触发器或其它存储器块的存储器元件/装置。取决于不同逻辑块之间的互连件的长度,信号可在不同时间到达逻辑块的输入端子且因此可暂时存储在存储器元件/装置中。
FPGA 7041到704N可放置到一或多个板7121及7122以及额外的板到712M上。多个板可放置到仿真单元7141中。仿真单元内的板可使用仿真单元的背板或任何其它类型的连接件来连接。另外,多个仿真单元(例如,7141及7142到714K)可由缆线或任何其它构件彼此连接以形成多仿真单元系统。
针对要仿真的DUT,主机系统707将一或多个位文件传输到仿真系统702。位文件可指定DUT的描述且可进一步指定由主机系统707运用跟踪及注入逻辑创建的DUT的分区、所述分区到仿真器的FPGA的映射以及设计约束。使用位文件,仿真器结构化FPGA以执行DUT的功能。在一些实施例中,仿真器的一或多个FPGA可具有内建到FPGA的硅中的跟踪及注入逻辑。在此实施例中,FPGA可不由主机系统结构化以仿真跟踪及注入逻辑。
主机系统707接收要仿真的DUT的描述。在一些实施例中,DUT描述是采用描述语言(例如,寄存器传送语言(RTL))。在一些实施例中,DUT描述是采用网表级文件或网表级文件及HDL文件的混合。如果DUT描述的部分或整个DUT描述是采用HDL,那么主机系统可合成DUT描述以使用DUT描述创建门级网表。主机系统可使用DUT的网表来将DUT分割成多个分区,其中分区中的一或多者包含跟踪及注入逻辑。跟踪及注入逻辑跟踪经由FPGA的接口交换的接口信号。此外,跟踪及注入逻辑可将经跟踪的接口信号注入到FPGA的逻辑中。主机系统将每一分区映射到仿真器的FPGA。在一些实施例中,跟踪及注入逻辑包含在用于FPGA群组的选择分区中。跟踪及注入逻辑可内建到仿真器的FPGA中的一或多者中。主机系统可合成要映射到FPGA中的多路复用器。多路复用器可由跟踪及注入逻辑使用以将接口信号注入到DUT逻辑中。
主机系统创建描述DUT的每一分区及分区到FPGA的映射的位文件。针对其中包含跟踪及注入逻辑的分区,位文件也描述所包含的逻辑。位文件可包含位置及路线信息及设计约束。主机系统存储描述哪些FPGA将仿真DUT的每一组件(例如,每一组件映射到哪些FPGA)的位文件及信息。
在请求时,主机系统将位文件传输到仿真器。主机系统发信号通知仿真器开始DUT的仿真。在DUT的仿真期间或在仿真结束时,主机系统通过仿真连接从仿真器接收仿真结果。仿真结果是由仿真器在DUT的仿真期间产生的数据及信息,其包含已由每一FPGA的跟踪及注入逻辑跟踪的接口信号及接口信号状态。主机系统可存储仿真结果及/或将仿真结果传输到另一处理系统。
在DUT的仿真之后,电路设计者可请求对DUT的组件进行调试。如果作出此请求,那么电路设计者可指定调试仿真的时段。主机系统使用经存储信息识别哪些FPGA正在仿真组件。主机系统检索与所述时段相关联且由每一经识别FPGA的跟踪及注入逻辑跟踪的经存储接口信号。主机系统发信号通知仿真器再仿真经识别FPGA。主机系统将经检索的接口信号传输到仿真器以在经指定时段内再仿真组件。每一经识别FPGA的跟踪及注入逻辑将其从主机系统接收的相应接口信号注入到映射到FPGA的DUT的逻辑中。在对FPGA进行多次再仿真的情况下,合并结果产生完整调试视图。
主机系统从仿真系统接收由经识别FPGA的逻辑在组件的再仿真期间跟踪的信号。主机系统存储从仿真器接收的信号。在再仿真期间跟踪的信号可具有比初始仿真期间的采样率更高的采样率。例如,在初始仿真中,经跟踪信号可包含每X毫秒保存的组件的状态。然而,在再仿真中,经跟踪信号可包含每Y毫秒保存的状态,其中Y小于X。如果电路设计者请求观看在再仿真期间跟踪的信号的波形,那么主机系统可检索经存储信号且显示信号的绘图。例如,主机系统可产生信号的波形。之后,电路设计者可请求在不同时段内再仿真相同组件或再仿真另一组件。
主机系统707及/或编译器710可包含子系统,例如但不限于设计合成器子系统、映射子系统、运行时间子系统、结果子系统、调试子系统、波形子系统及存储子系统。子系统可经结构化及启用为个别或多个模块,或两个或更多个子系统可结构化为模块。这些子系统一起结构化仿真器且监测仿真结果。
设计合成器子系统将表示DUT 705的HDL变换成门级逻辑。针对要仿真的DUT,设计合成器子系统接收DUT的描述。如果DUT的描述完全或部分采用HDL(例如,RTL或其它表示级),那么设计合成器子系统合成DUT的HDL以依据门级逻辑创建具有DUT的描述的门级网表。
映射子系统分割DUT且将分区映射到仿真器FPGA中。映射子系统使用DUT的网表将门级下的DUT分割成若干分区。针对每一分区,映射子系统检索跟踪及注入逻辑的门级描述且将逻辑添加到分区。如上文所描述,包含在分区中的跟踪及注入逻辑用于跟踪经由分区所映射到的FPGA的接口交换的信号(跟踪接口信号)。可在分割之前将跟踪及注入逻辑添加到DUT。例如,可在合成DUT的HDL之前或之后由设计合成器子系统添加跟踪及注入逻辑。
除包含跟踪及注入逻辑之外,映射子系统还可在分区中包含额外跟踪逻辑以跟踪未由跟踪及注入跟踪的特定DUT组件的状态。映射子系统可在分割之前在DUT中或在分割之后在分区中包含额外跟踪逻辑。设计合成器子系统可在合成HDL描述之前在DUT的HDL描述中包含额外跟踪逻辑。
映射子系统将DUT的每一分区映射到仿真器的FPGA。对于分割及映射,映射子系统使用设计规则、设计约束(例如,时序或逻辑约束)及关于仿真器的信息。针对DUT的组件,映射子系统将描述哪些FPGA将仿真每一组件的信息存储在存储子系统中。
使用分割及映射,映射子系统产生描述经创建分区及逻辑到仿真器的每一FPGA的映射的一或多个位文件。位文件可包含额外信息,例如DUT的约束以及FPGA之间的连接及每一FPGA内的连接的布线信息。映射子系统可针对DUT的每一分区产生位文件且可将所述位文件存储在存储子系统中。根据电路设计者请求,映射子系统将位文件传输到仿真器,且仿真器可使用位文件来结构化FPGA以仿真DUT。
如果仿真器包含含有跟踪及注入逻辑的专用ASIC,那么映射子系统可产生将专用ASIC连接到DUT的特定结构。在一些实施例中,映射子系统可保存经跟踪/经注入的信号的信息且其中所述信息经存储在专用ASIC上。
运行时间子系统控制由仿真器执行的仿真。运行时间子系统可引起仿真器开始或停止执行仿真。此外,运行时间子系统可将输入信号及数据提供到仿真器。输入信号可通过连接直接提供到仿真器或通过其它输入信号装置间接提供到仿真器。例如,主机系统可控制输入信号装置以将输入信号提供到仿真器。例如,输入信号装置可为测试板(直接或通过缆线)、信号生成器、另一仿真器或另一主机系统。
结果子系统处理由仿真器产生的仿真结果。在仿真期间及/或在完成仿真之后,结果子系统从仿真器接收在仿真期间产生的仿真结果。仿真结果包含在仿真期间跟踪的信号。明确来说,仿真结果包含通过由每一FPGA仿真的跟踪及注入逻辑跟踪的接口信号且可包含通过DUT中所包含的额外逻辑跟踪的信号。每一经跟踪信号可跨越仿真的多个循环。经跟踪信号包含多个状态且每一状态与仿真的时间相关联。结果子系统将经跟踪信号存储在存储子系统中。针对每一经存储信号,结果子系统可存储指示哪一FPGA产生经跟踪信号的信息。
调试子系统允许电路设计者对DUT组件进行调试。在仿真器已仿真DUT且结果子系统已接收在仿真期间由跟踪及注入逻辑跟踪的接口信号之后,电路设计者可请求通过在特定时段内再仿真DUT的组件来对所述组件进行调试。在对组件进行调试的请求中,电路设计者识别所述组件且指示调试仿真的时段。电路设计者的请求可包含指示跟踪信号的逻辑应保存经调试组件的状态的频率的采样率。
调试子系统使用由映射子系统存储在存储子系统中的信息来识别正在仿真组件的仿真器的一或多个FPGA。针对每一经识别FPGA,调试子系统从存储子系统检索在由电路设计者指示的时段期间由FPGA的跟踪及注入逻辑跟踪的接口信号。例如,调试子系统检索由跟踪及注入逻辑跟踪的与时段相关联的状态。
调试子系统将经检索的接口信号传输到仿真器。调试子系统指示调试子系统使用经识别FPGA且针对每一经识别FPGA的跟踪及注入逻辑将其相应经跟踪信号注入到FPGA的逻辑中,以在所请求的时段内再仿真组件。调试子系统可进一步将由电路设计者提供的采样率传输到仿真器使得跟踪逻辑以适当时间间隔跟踪状态。
为了对组件进行调试,仿真器可使用组件已映射到的FPGA。另外,组件的再仿真可在由电路设计者指定的任何时间点执行。
针对经识别FPGA,调试子系统可将指令传输到仿真器以加载具有经识别FPGA的相同配置的多个仿真器FPGA。另外,调试子系统发信号通知仿真器并行使用多个FPGA。来自多个FPGA的每一FPGA与接口信号的不同时间窗一起使用以在较短时间量内产生较大时间窗。例如,经识别FPGA可需要一小时或更久来使用一定量的循环。然而,如果多个FPGA具有经识别FPGA的相同数据及结构且这些FPGA中的每一者运行循环的子集,那么仿真器可需要几分钟以使FPGA共同使用所有循环。
电路设计者可识别用以再仿真的DUT信号的层级或列表。为实现此,调试子系统确定仿真信号的层级或列表所需的FPGA,检索必要的接口信号,且将经检索的接口信号传输到仿真器以进行再仿真。因此,电路设计者可识别用以调试/再仿真的DUT的任何元件(例如,组件、装置或信号)。
波形子系统使用经跟踪信号产生波形。如果电路设计者请求观看在仿真运行期间跟踪的信号的波形,那么主机系统从存储子系统检索信号。波形子系统显示信号的绘图。对于一或多个信号,当从仿真器接收信号时,波形子系统可自动产生所述信号的绘图。
图8说明计算机系统800的实例机器,可在所述机器内执行用于引起所述机器执行本文中所论述的方法论中的任一或多者的一组指令。在替代实施方案中,机器可连接(例如,联网)到LAN、内部网、外部网及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器,或在云计算基础设施或环境中作为服务器或客户端机器。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络设备、服务器、网络路由器、交换机或网桥,或能够执行指定待由所述机器采取的动作的一组指令(连续的或以其它方式)的任何机器。此外,虽然说明单一机器,但术语“机器”也应被视为包含个别或联合执行一组(或多组)指令以执行本文中所论述的方法论中的任一或多者的任何机器集合。
实例计算机系统800包含处理装置802、主存储器804(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM))、静态存储器806(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储装置818,其经由总线830彼此通信。
处理装置802表示一或多个处理器,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置802也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置802可经配置以执行用于执行本文中所描述的操作及步骤的指令826。
计算机系统800可进一步包含用以经由网络820进行通信的网络接口装置808。计算机系统800还可包含视频显示单元810(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置812(例如,键盘)、光标控制装置814(例如,鼠标)、图形处理单元822、信号生成装置816(例如,扬声器)、图形处理单元822、视频处理单元828及音频处理单元832。
数据存储装置818可包含其上存储体现本文中所描述的方法论或功能中的任一或多者的一或多组指令826或软件的机器可读存储介质824(也被称为非暂时性计算机可读介质)。指令826还可完全或至少部分驻留在主存储器804内及/或在其由计算机系统800执行期间驻留在处理装置802内,主存储器804及处理装置802也构成机器可读存储介质。
在一些实施方案中,指令826包含用以实施对应于本公开的功能性的指令。虽然机器可读存储介质824在实例实施方案中被展示为单一介质,但术语“机器可读存储介质”应被视为包含存储一或多组指令的单一介质或多个介质(例如,集中式或分布式数据库,及/或相关联高速缓存及服务器)。术语“机器可读存储介质”也应被视为包含能够存储或编码供机器执行且引起机器及处理装置802执行本公开的方法论中的任一或多者的一组指令的任何介质。术语“机器可读存储介质”应相应地被视为包含但不限于固态存储器、光学介质及磁性介质。
已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前文详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员用于最有效地向所属领域的其他技术人员传达其工作实质的方式。算法可为导致所要结果的操作序列。所述操作是需要物理操纵物理量的操作。此类量可采取能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。此类信号可被称为位、值、元件、符号、字符、项目、数字或类似物。
然而,应牢记,所有这些及类似术语应与适当物理量相关联且仅是应用于这些量的方便标签。除非另有明确陈述,否则如从本公开明白,应了解,在整个描述中,特定术语是指计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储装置内的物理量的其它数据的动作及过程。
本公开也涉及一种用于执行本文中的操作的设备。此设备可专门为预期目的而构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重配置的计算机。此计算机程序可存储在计算机可读存储介质中,例如但不限于任何类型的磁盘(包含软盘、光盘、CD-ROM及磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁性或光学卡,或适于存储电子指令的任何类型的介质,其各自耦合到计算机系统总线。
本文中呈现的算法及显示并非固有地与任何特定计算机或其它设备有关。根据本文中的教示,各种其它系统可与程序一起使用,或可证实构造更专门设备以执行方法是方便的。另外,本公开并非参考任何特定编程语言进行描述。将了解,多种编程语言可用于实施如本文中所描述的本公开的教示。
本公开可被提供为可包含具有存储在其上的指令的机器可读介质的计算机程序产品或软件,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读介质包含用于存储呈可由机器(例如,计算机)读取的形式的信息的任何机构。例如,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、快闪存储器装置等。
在前述揭示内容中,本公开的实施方案已参考其特定实例实施方案进行描述。将显而易见的是,可在不脱离如在随附权利要求书中所阐述的本公开的实施方案的更宽广精神及范围的情况下对本公开进行各种修改。在本公开以单数形式引用一些元件的情况下,可在图中描绘多于一个元件且用相同元件符号标记相同元件。因此,本公开及图式应被视为具说明性意义而非限制性意义。

Claims (20)

1.一种方法,其包括:
由处理装置接收一或多个输入以用于使用仿真编译器对集成电路进行设计检验;
由所述处理装置确定用于处理所述一或多个输入的编译器的类型;
响应于确定所述编译器类型是模拟编译器,根据所述一或多个输入来修改所述模拟编译器,以形成经修改的模拟编译器以匹配与所述仿真编译器相关联的一或多个仿真语义;及
使用所述经修改的模拟编译器来执行设计检验。
2.根据权利要求1所述的方法,其中根据所述一或多个输入来修改所述模拟编译器包括:
从所述一或多个输入识别寄存器传送级RTL语句;
针对一或多个时钟生成事件及一或多个非时钟生成事件解析所述RTL语句;
处理所述一或多个时钟生成事件;及
忽略所述一或多个非时钟生成事件。
3.根据权利要求1所述的方法,其中根据所述一或多个输入来修改所述模拟编译器包括:
基于所述一或多个输入确定调试特征被启用;及
响应于基于所述一或多个输入确定所述调试特征未被启用,禁用所述模拟编译器中的所述调试特征。
4.根据权利要求1所述的方法,其中根据所述一或多个输入来修改所述模拟编译器包括:
使用所述一或多个输入执行一或多个变换以将4态逻辑状态转换为2态逻辑状态,以匹配与所述仿真编译器相关联的一或多个仿真语义。
5.根据权利要求4所述的方法,其中执行所述一或多个变换以将所述4态逻辑状态转换为所述2态逻辑状态包括:
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的未经初始化寄存器;
从所述一或多个输入识别初始值,其中所述初始值由用户指定;及
将所述未经初始化寄存器指派给所述初始值。
6.根据权利要求4所述的方法,其中执行所述一或多个变换以将所述4态逻辑状态转换为所述2态逻辑状态包括:
确定所述集成电路是多驱动器电路;
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的z逻辑状态的值;及
将所述z逻辑状态的所述值指派给所述集成电路的导线的一或多个值。
7.根据权利要求4所述的方法,其中执行所述一或多个变换以将所述4态逻辑状态转换为所述2态逻辑状态包括:
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的未经初始化寄存器;
从所述一或多个输入识别初始值,其中所述初始值由用户指定;及
将所述未经初始化寄存器指派给所述初始值。
8.根据权利要求1所述的方法,其中根据所述一或多个输入来修改所述模拟编译器包括:
识别预加载的存储器文件;
执行永久编程操作,以将所述预加载的存储器文件的一或多个值存储到与所述模拟编译器相关联的基于多维阵列的软件模型中;
使用存储在所述基于多维阵列的软件模型中的所述一或多个值来执行常数传播;
从所述一或多个输入识别只写存储器;及
忽略所述只写存储器。
9.根据权利要求1所述的方法,其中根据所述一或多个输入来修改所述模拟编译器包括:
从所述一或多个输入识别使用时钟源的一或多个RTL块;及
忽略使用所述时钟源的所述一或多个RTL块。
10.一种系统,其包括:
存储器,其存储指令;及
处理器,其与所述存储器耦合且执行所述指令,所述指令在经执行时引起所述处理器:
由处理装置接收一或多个输入以用于使用仿真编译器对集成电路进行设计检验;
由所述处理装置确定用于处理所述一或多个输入的编译器的类型;
响应于确定所述编译器类型是模拟编译器,根据所述一或多个输入来修改所述模拟编译器,以形成经修改的模拟编译器以匹配与所述仿真编译器相关联的一或多个仿真语义;及
使用所述经修改的模拟编译器来执行设计检验。
11.根据权利要求10所述的系统,其中根据所述一或多个输入来修改所述模拟编译器包括:
从所述一或多个输入识别寄存器传送级RTL语句;
针对一或多个时钟生成事件及一或多个非时钟生成事件解析所述RTL语句;
处理所述一或多个时钟生成事件;及
忽略所述一或多个非时钟生成事件。
12.根据权利要求10所述的系统,其中根据所述一或多个输入来修改所述模拟编译器包括:
基于所述一或多个输入确定调试特征被启用;及
响应于基于所述一或多个输入确定所述调试特征未被启用,禁用所述模拟编译器中的所述调试特征。
13.根据权利要求10所述的系统,其中根据所述一或多个输入来修改所述模拟编译器包括:
使用所述一或多个输入执行一或多个变换以将4态逻辑状态转换为2态逻辑状态,以匹配与所述仿真编译器相关联的一或多个仿真语义。
14.根据权利要求13所述的系统,其中执行所述一或多个变换以将所述4态逻辑状态转换为所述2态逻辑状态包括:
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的未经初始化寄存器;
从所述一或多个输入识别初始值,其中所述初始值由用户指定;及
将所述未经初始化寄存器指派给所述初始值。
15.根据权利要求13所述的系统,其中执行所述一或多个变换以将所述4态逻辑状态转换为所述2态逻辑状态包括:
确定所述集成电路是多驱动器电路;
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的z逻辑状态的值;及
将所述z逻辑状态的所述值指派给所述集成电路的导线的一或多个值。
16.一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时,引起所述处理器:
接收一或多个输入以用于使用仿真编译器对集成电路进行设计检验;
由处理器确定用于处理所述一或多个输入的编译器的类型;及
响应于确定所述编译器类型是模拟编译器,根据所述一或多个输入来修改所述模拟编译器以将4态逻辑状态转换为2态逻辑状态,以匹配与所述仿真编译器相关联的一或多个仿真语义。
17.根据权利要求16所述的非暂时性计算机可读存储介质,其中根据所述一或多个输入来修改所述模拟编译器以将所述4态逻辑状态转换为所述2态逻辑状态进一步包括:
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的未经初始化寄存器;
从所述一或多个输入识别初始值,其中所述初始值由用户指定;及
将所述未经初始化寄存器指派给所述初始值。
18.根据权利要求16所述的非暂时性计算机可读存储介质,其中根据所述一或多个输入来修改所述模拟编译器以将所述4态逻辑状态转换为所述2态逻辑状态进一步包括:
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的z逻辑状态的值;
用恒定2态值替换所述z逻辑状态的所述值;及
至少使用所述恒定2态值来评估AND逻辑门。
19.根据权利要求16所述的非暂时性计算机可读存储介质,其中根据所述一或多个输入来修改所述模拟编译器以将所述4态逻辑状态转换为所述2态逻辑状态进一步包括:
确定所述集成电路是多驱动器电路;
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的z逻辑状态的值;及
将所述z逻辑状态的所述值指派给所述集成电路的导线的一或多个值。
20.根据权利要求16所述的非暂时性计算机可读存储介质,其中根据所述一或多个输入来修改所述模拟编译器以将所述4态逻辑状态转换为所述2态逻辑状态进一步包括:
解析来自所述一或多个输入的寄存器传送级RTL语句;
响应于解析所述RTL语句,识别所述RTL语句中的未经初始化寄存器;
从所述一或多个输入识别初始值,其中所述初始值由用户指定;及
将所述未经初始化寄存器指派给所述初始值。
CN202311265403.4A 2022-10-03 2023-09-27 管理仿真系统的高性能模拟表示 Pending CN117829042A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/958,994 2022-10-03
US17/958,994 US20240111660A1 (en) 2022-10-03 2022-10-03 Managing high performance simulation representation of an emulation system

Publications (1)

Publication Number Publication Date
CN117829042A true CN117829042A (zh) 2024-04-05

Family

ID=90470613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311265403.4A Pending CN117829042A (zh) 2022-10-03 2023-09-27 管理仿真系统的高性能模拟表示

Country Status (2)

Country Link
US (1) US20240111660A1 (zh)
CN (1) CN117829042A (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447621B1 (en) * 2003-09-29 2008-11-04 Sun Microsystems, Inc. PLI-less co-simulation of ISS-based verification systems in hardware simulators
US7934183B2 (en) * 2008-04-25 2011-04-26 Synopsys, Inc. Method and apparatus for simulating behavioral constructs using indeterminate values
US9183329B2 (en) * 2009-03-19 2015-11-10 Synopsys, Inc. Debugging simulation with partial design replay
US9032266B2 (en) * 2011-06-28 2015-05-12 Terence Wai-kwok Chan Multithreaded, mixed-HDL/ESL concurrent fault simulator for large-scale integrated circuit designs

Also Published As

Publication number Publication date
US20240111660A1 (en) 2024-04-04

Similar Documents

Publication Publication Date Title
US5933356A (en) Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models
US6470482B1 (en) Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation
CN113255267B (zh) 使用现场可编程门阵列fpga重新编程检测仿真中的时序违规
US11526641B2 (en) Formal gated clock conversion for field programmable gate array (FPGA) synthesis
CN117461259A (zh) 可测试的时间到数字转换器
US20210374314A1 (en) Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views
US11023635B1 (en) Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames
US11022634B1 (en) Rail block context generation for block-level rail voltage drop analysis
US11080446B2 (en) Method to regulate clock frequencies of hybrid electronic systems
US11200127B2 (en) Automated self-check of a closed loop emulation replay
US11797742B1 (en) Power aware real number modeling in dynamic verification of mixed-signal integrated circuit design
US11847396B1 (en) Integrated circuit design using multi-bit combinational cells
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
Choi et al. Early HW/SW Co-Verification Using Virtual Platforms
US20240028812A1 (en) Waveform capture using multicycle path properties
US20230244512A1 (en) Fast waveform capture with low hardware footprint enabling full visibility
US12014205B2 (en) Advanced register merging
US20230195982A1 (en) Transformations for multicycle path prediction of clock signals
US20230071521A1 (en) Detecting simulation, emulation and prototyping issues using static analysis tools
US20230409788A1 (en) Synchronizing distributed simulations of a circuit design
US11816409B1 (en) Strongly connected component (SCC) graph representation for interactive analysis of overlapping loops in emulation and prototyping
US20220300690A1 (en) Incremental compilation for fpga-based systems
US11403450B2 (en) Convergence centric coverage for clock domain crossing (CDC) jitter in simulation
US20240104279A1 (en) Multicycle path prediction of reset signals
US20240303403A1 (en) Balanced subdivision of circuits for hardware emulation assisted simulation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication