CN117634384A - 在fpga上仿真ic设计的方法、系统及存储介质 - Google Patents

在fpga上仿真ic设计的方法、系统及存储介质 Download PDF

Info

Publication number
CN117634384A
CN117634384A CN202310658622.2A CN202310658622A CN117634384A CN 117634384 A CN117634384 A CN 117634384A CN 202310658622 A CN202310658622 A CN 202310658622A CN 117634384 A CN117634384 A CN 117634384A
Authority
CN
China
Prior art keywords
clock
data
terminal
data output
node
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
CN202310658622.2A
Other languages
English (en)
Inventor
池京轩
曹炯
李�诚
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.)
Shanghai Hejian Industrial Software Group Co Ltd
Original Assignee
Shanghai Hejian Industrial Software Group Co Ltd
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 Shanghai Hejian Industrial Software Group Co Ltd filed Critical Shanghai Hejian Industrial Software Group Co Ltd
Priority to PCT/CN2023/109188 priority Critical patent/WO2024041290A1/en
Publication of CN117634384A publication Critical patent/CN117634384A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Abstract

本发明涉及电子设计自动化技术领域,具体涉及一种在FPGA上仿真IC设计的方法、系统及存储介质,通过将时序单元修改为时钟模型,时钟模型的外部端口相比于IC设计中时序单元的端口新增了一个用户使能端,通过将用户时钟接入时钟模型的用户使能端且将主时钟′接入时钟模型的时钟输入端,通过时钟模型CA控制采样数据的输出时机来重现IC设计中时序单元的功能,通过时钟模型CB控制数据的采样时机来重现IC设计中时序单元的功能;并设置接入时钟模型CA和时钟模型CB的主时钟′的相位偏移,在保证原有时序单元功能的情况下解决由于用户时钟存在毛刺导致采样错误的技术问题。

Description

在FPGA上仿真IC设计的方法、系统及存储介质
技术领域
本发明涉及电子设计自动化技术领域,具体涉及一种在FPGA上仿真IC设计的方法、系统及存储介质。
背景技术
集成电路设计(Integrated circuit design;IC design)是指以集成电路、超大规模集成电路为目标的设计流程。集成电路设计包括专用集成电路(ApplicationSpecific Integrated Circuit;ASIC)设计,是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。集成电路设计完成之后会进入流片阶段,流片的成本很高,一旦出问题就会导致流片失败。为了降低流片失败的风险,在流片之前需要对IC的软件和硬件进行充分的验证,及时发现设计过程中很难发现的一些问题,及时调整设计,以保证流片的顺利进行。常见的验证工具包括Simulation和Emulation,其中Emulation是指模拟用户设计芯片中实际使用的硬件,再进行仿真。Emulation大多数是基于现场可编程逻辑门阵列(Field Programmable Gate Array;FPGA)芯片进行设计的,FPGA芯片由查找表和寄存器等元器件构成,通过软件配置相应元器件的电信号能够实现不同功能。
由于IC和FPGA的物理结构不同,IC设计基于标准单元库,而FPGA基于厂商提供的宏单元模块(查找表),因此如果要在FPGA上验证IC设计,IC设计就必须做一定的转换,才能够移植到FPGA上。IC和FPGA芯片的内核之间最大的不同莫过于时钟结构。IC中的时钟结构包括至少一个时钟树,每个时钟树为由一个主时钟(primary clock)和多个生成时钟(generated clock)组成的时钟树结构。IC设计在未经过布线设计前,由于电路延时会导致组合逻辑运算生成的生成时钟中存在毛刺。若将具有毛刺的生成时钟接入时序单元的时钟输入端,由于时序单元的时钟输入端对毛刺敏感,会错误的触发时序单元对数据输入端的信号进行采样,进而导致时序单元的数据输出端输出的采样数据发生错误。为了解决毛刺问题,在IC设计中尚可通过严格的布线设计控制组合逻辑输入信号的延时,进而控制毛刺的产生。但是若将IC设计直接应用于FPGA中,由于FPGA属于预布线的半定制电路,无法通过控制布线长度控制延时的方式控制毛刺的产生,进而无法避免毛刺导致时序单元输出错误采样数据的问题。
发明内容
本发明的目标是克服这些缺点中的一些或全部。
为此目的,根据第一方面,本发明提供了一种在FPGA上仿真IC设计的方法,包括:
S2)将所述IC设计化约为有向图,包括:2.1)将所述多个时序单元化约为多个节点,包括:在每个时序单元上辨识出用户时钟输入端和数据输出端;将由所述用户时钟输入端到数据输出端之间的逻辑通路定义为一个节点。2.2)连接所述多个节点得到有向图。
S3)设置所述有向图上的节点,包括:
3.1)在所述有向图上的节点插入时钟模型,包括:
3.1.1)将所述有向图上的至少一个节点被标识为A组和至少另一个节点被标识为B组。
3.1.2)修改被标识为A组的节点,包括:i)为时钟模型CA设置数据输入端CA、数据输出端CA、用户使能端CA和时钟输入端CA。ii)修改被标识为A组的节点中的节点A,在节点A插入时钟模型CA,包括:将节点A的数据输入端和数据输出端分别修改为数据输入端CA和数据输出端CA;将节点A的用户时钟输入端修改为用户使能端CA;将主时钟′接入时钟输入端CA,其中:所述主时钟′的频率大于或等于所述主时钟的频率;设置时钟模型CA包括:在主时钟′的每个有效沿对来自数据输入端CA的信号采样,获得在以所述有效沿为起点的一个主时钟′的周期内的采样数据;当用户时钟A第N次发生有效沿时,获得主时钟′在当前周期内的采样数据,向数据输出端CA输出采样数据,直到用户时钟A第N+1次发生有效沿为止。
3.1.3)修改被标识为B组的节点,包括:i)为时钟模型CB设置数据输入端CB、数据输出端CB、用户使能端CB和时钟输入端CB。ii)修改被标识为B组的节点中的节点B,在节点B插入时钟模型CB,包括:将节点B的数据输入端和数据输出端分别接入数据输入端CB和数据输出端CB;将节点B的用户时钟输入端接入用户使能端CB;将主时钟′接入时钟输入端CB;设置时钟模型CB包括:当用户时钟B的有效沿发生时且主时钟′的有效沿发生时:对来自数据输入端CB的信号采样,获得在以主时钟′的所述有效沿为起点的一个主时钟′的周期内的采样数据;向数据输出端CB输出所述采样数据。
3.2)为主时钟′设置相位偏移。
第二方面,本发明提供了一种在FPGA上仿真IC设计的方法,包括:
S2)将所述IC设计化约为有向图,包括:2.1)将所述多个时序单元化约为多个节点,包括:在每个时序单元上辨识出用户时钟输入端和数据输出端;将由所述用户时钟输入端到数据输出端之间的逻辑通路定义为一个节点。2.2)连接所述多个节点得到有向图。
S3)设置所述有向图上的节点,包括:
3.1)在所述有向图上的节点插入时钟模型,包括:
3.1.1)将在所述有向图上的多个节点全标识为A组。
3.1.2)修改被标识为A组的节点,包括:i)为时钟模型CA设置数据输入端CA、数据输出端CA、用户使能端CA和时钟输入端CA。ii)修改被标识为A组的节点中的节点A,在节点A插入时钟模型CA,包括:将节点A的数据输入端和数据输出端分别修改为数据输入端CA和数据输出端CA;将节点A的用户时钟输入端修改为用户使能端CA;将主时钟′接入时钟输入端CA,其中:所述主时钟′的频率大于或等于所述主时钟的频率;设置时钟模型CA包括:在主时钟′的每个有效沿对来自数据输入端CA的信号采样,获得在以所述有效沿为起点的一个主时钟′的周期内的采样数据;当用户时钟A第N次发生有效沿时,获得主时钟′在当前周期内的采样数据,向数据输出端CA输出采样数据,直到用户时钟A第N+1次发生有效沿为止。
3.2)为主时钟′设置相位偏移。
第三方面,本发明提供了一种在FPGA上仿真IC设计的方法,包括:
S2)将所述IC设计化约为有向图,包括:2.1)将所述多个时序单元化约为多个节点,包括:在每个时序单元上辨识出用户时钟输入端和数据输出端;将由所述用户时钟输入端到数据输出端之间的逻辑通路定义为一个节点。2.2)连接所述多个节点得到有向图。
S3)设置所述有向图上的节点,包括:
3.1)在所述有向图上的节点插入时钟模型,包括:
3.1.1)将在所述有向图上的多个节点全标识为B组。
3.1.2)修改被标识为B组的节点,包括:i)为时钟模型CB设置数据输入端CB、数据输出端CB、用户使能端CB和时钟输入端CB。ii)修改被标识为B组的节点中的节点B,在节点B插入时钟模型CB,包括:将节点B的数据输入端和数据输出端分别接入数据输入端CB和数据输出端CB;将节点B的用户时钟输入端接入用户使能端CB;将主时钟′接入时钟输入端CB;设置时钟模型CB包括:当用户时钟B的有效沿发生时且主时钟′的有效沿发生时:对来自数据输入端CB的信号采样,获得在以主时钟′的所述有效沿为起点的一个主时钟′的周期内的采样数据;向数据输出端CB输出所述采样数据。
3.2)为主时钟′设置相位偏移。
第四方面,本发明提供了一种在FPGA上仿真IC设计的系统,包括处理器和与所述处理器通信连接的存储介质,其中:当所述处理器执行在所述存储介质内的程序时,所述系统可实施上述一种在FPGA上仿真IC设计的方法。
第五方面,本发明提供了一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现上述一种在FPGA上仿真IC设计的方法。
本发明至少具有以下有益效果:
本发明实施例提供了一种在FPGA上仿真IC设计的方法,通过识别IC设计中时序单元的逻辑通路提取有向图,并将有向图中的节点对应的时序单元修改为时钟模型,时钟模型的外部端口相比于IC设计中时序单元的端口新增了一个用户使能端,通过将时钟模型的用户使能端接入的用户时钟和将时钟模型的时钟输入端接入的主时钟′,时钟模型CA通过控制采样数据的输出时机来重现IC设计中时序单元的功能,时钟模型CB通过控制数据的采样时机来重现IC设计中时序单元的功能;并设置接入时钟模型CA和时钟模型CB的主时钟′的相位偏移,保证电路正常工作;由于主时钟′直接接入时钟模型CA和CB的时钟输入端,主时钟′中不存在毛刺;同时将用户时钟接入时钟模型CA和CB的用户使能端,但用户使能端对存在毛刺的用户时钟不敏感,因此本发明能够在保证原有时序单元功能的情况下解决由于用户时钟存在毛刺导致采样错误的技术问题。
附图说明
本发明的其它优点、目标和特征将从参照附图的遵循用于在FPGA上仿真IC设计的方法、系统及存储介质的至少一个特定实施例的非限制性描述显现,其中:
图1为本发明一个实施例提供的时钟模型CA的结构示意图;
图2为本发明一个实施例提供的时钟模型CB的结构示意图;
图3为时序单元修改为时钟模型的前后对比示意图;
图4为时钟模型CB在主时钟′移动前的时序示意图;
图5为时钟模型CB在主时钟′移动前后的时序对比示意图;
图6为现有技术中理想状态与实际生成毛刺的对比示意图;
图7为本发明实施例提供的一种在FPGA上仿真IC设计的方法流程图;
图8为本发明实施例中S2的步骤流程图;
图9为本发明实施例中S3的步骤流程图;
图10为时钟树的结构示意图;
图11为对图10进行提取得到的有向图;
图12为用时钟模型CA替换时序单元A的示意图;
图13为本发明另一个实施例提供的时钟模型CA的结构示意图;
图14为本发明另一个实施例提供的时钟模型CB的结构示意图;
图15为本发明又一个实施例提供的时钟模型CB的结构示意图;
图16为本发明又一个实施例提供的时钟模型CB的结构示意图;
图17为本发明提供的一种将时序单元替换为时钟模型之后的结构示意图;
图18为本发明提供的时钟模型CA和时钟模型CB共用时钟检测器的结构示意图;
图19为本发明提供的两个时钟模型CA共用时钟检测器的结构示意图;
图20为本发明提供的两个时钟模型CB共用时钟检测器的结构示意图;
图21为同一条路径上的两个B组节点之间的时序示意图;
图22为同一条路径上的一个A组节点和最近的一个B组节点之间的一种时序示意图;和
图23为同一条路径上的一个A组节点和最近的一个B组节点之间的另一种时序示意图。
具体实施方式
IC设计在未经过布线设计前,由于电路延时会导致组合逻辑运算生成的生成时钟中存在毛刺。为了更好的理解毛刺产生的来源,以具有两个输入端的与门电路为例来说明,请参阅附图6,图6中的a图为理想状态下与门电路中两个输入端分别输入波形信号IA和波形信号IB,则与门的输出端输出的波形信号为OC;但是在未经布线设计控制延时的情况下,由于线路的长度导致的延时或者上级电路运算导致的延时等原因,并不能保证与门电路中两个输入端的信号按照预设的时间间隔翻转,当与门电路中两个输入端分别输入的波形信号延时不一致时,如图6中的b图所示,假设与门电路输入的波形信号IB′比波形信号IA延时时间t0时,此时与门电路输出的波形信号为具有d的OC′,其中相比较理想波形信号OC,在OC′中出现了本不该出现的d,d即为毛刺。也即由于延时的作用,使應該在同一时刻输入的多个信号到达终点的时间具有先后关系,形成了竞争关系,由竞争产生的错误输出就是毛刺。若将具有毛刺的生成时钟接入时序单元的时钟输入端,由于时序单元的时钟输入端对毛刺敏感,会错误的触发时序单元对数据输入端的信号进行采样,进而无法避免毛刺导致时序单元输出错误采样数据的问题。为了解决毛刺问题,在IC设计中尚可通过严格的布线设计控制组合逻辑输入信号的延时,进而控制毛刺的产生。但是若将IC设计直接应用于FPGA中,由于FPGA属于预布线的半定制电路,无法通过控制布线长度控制延时的方式控制毛刺。
为了解决具有毛刺的生成时钟输入时序单元的时钟输入端导致采样错误的问题,并同时实现将IC设计中的时序单元应用于FPGA中,首先需要提取出IC设计中的时序单元,以时序单元中的时钟输入端到数据输出端为一个逻辑通路,提取出每个时序单元中的逻辑通路。在所述逻辑通路上定义一个节点。以当前节点的数据输出端流向下一个节点的时钟输入端为有方向的边,利用边连接节点得到有向图。有向图包括一个根节点、多个叶子节点、以及在根节点和叶子节点之间的中间节点,由根节点到每一个叶子节点之间都存在至少一条路径。有向图中的根节点对应于时钟树中的根节点,根节点接入的用户时钟为主时钟,其他节点接入的用户时钟为生成时钟。有向图中的所有节点以及节点之间的连接关系表征了IC设计中时钟树的所有时序单元中的逻辑通路以及各逻辑通路之间的关系。
在提取到有向图之后,需要将有向图中每个节点代表的时序单元作为一个整体修改为FPGA中在逻辑上功能等价的时钟模型,包括时钟模型CA和时钟模型CB。为了解决毛刺问题,引入新的主时钟′,将主时钟′直接接入时钟模型CA或者时钟模型CB的时钟输入端,在主时钟′与时钟模型CA的时钟输入端或时钟模型CB的时钟输入端之间不存在组合逻辑不会引入延时,因此时钟模型CA和CB的时钟输入端不存在毛刺,解决了毛刺问题。将用户时钟作为用户使能端接入时钟模型CA或CB,由于用户使能端的用户时钟需要满足建立时间和保持时间的要求,其中建立时间是指在主时钟′的有效沿到来之前数据保持稳定不变的时间,保持时间是指在主时钟′的有效沿到来之后数据保持稳定不变的时间,而毛刺的持续时间一般比较短,无法满足建立时间和保持时间的要求而被屏蔽,毛刺已不具备损害性,也不会影响数据采样,因此用户使能端对毛刺不敏感。通过主时钟′和用户时钟配合驱动时钟模型CA或CB进行数据采样,保证重现IC设计中时序单元的功能。本发明提出的两种类型的时钟模型:时钟模型CA为通过控制用户时钟驱动时钟模型CA在数据输出端输出采样数据来模拟IC设计中时序单元的功能;时钟模型CB通过控制用户时钟配合主时钟′对数据输入端的数据进行采样并输出来模拟IC设计中时序单元的功能。最后,为主时钟′设置合适的相位偏移能够使修改后的电路正常工作。
基于此,本发明提供了以下三种实施例,其中实施例一提供的方案中至少有一个时序单元被修改为时钟模型CA且至少另一个时序单元被修改为时钟模型CB,实施例二提供的方案中时序单元被全部替换为时钟模型CA,实施例三提供的方案中时序单元被全部修改为时钟模型CB。
实施例一
请参阅图7,下面结合图7来具体说明本发明提出的一种在FPGA上仿真IC设计的方法,该方法包括以下步骤:
S1)在IC设计中辨识出:主时钟;子电路;多個生成时钟,主时钟经过子电路运算生成多個生成时钟;和多个时序单元,接入多个时序单元的用户时钟是所述主时钟或所述多个生成时钟。
可选的,主时钟为IC设计的时钟输入源,通常表示物理时钟。
可选的,子电路为组合逻辑电路、时序逻辑电路或者组合逻辑电路与时序逻辑电路的混合电路。作为一个示例,子电路可以是分频器、门控时钟或多路复用器等,其中分频器为时序逻辑电路,门控时钟和多路复用器为组合逻辑电路。
其中,生成时钟是由主时钟或者上一级生成时钟经过子电路得到。主时钟经过不同的子电路能够分别生成不同的生成时钟,上一级的生成时钟也可以再次经过另一个子电路生成下一级生成时钟,以此类推,主时钟和生成时钟的拓扑结构构成时钟树结构。生成时钟用于接入多个时序单元的时钟输入端以驱动时序单元进行数据采样。
其中,时序单元具有用户时钟输入端、数据输入端和数据输出端,用于当用户时钟输入端接入的用户时钟的有效沿发生时,触发时序单元对数据输入端接入的数据信号进行采样,并由数据输出端输出采样数据。其中用户时钟有效沿作为驱动时序单元采样的驱动信号,在驱动信号的作用下对输入时序单元的数据进行采样并输出得到生成时钟。时序单元的数据输出端输出的采样数据可以作为另一个时序单元时钟输入端的时钟输入信号,也可以作为另一个时序单元数据输入端的数据输入信号。
其中,时序单元之间的连接方式包括级连关系和串联关系,请参阅图3,在图3中的a部分为IC设计中时序单元之间可能存在的连接结构,其中,每个时序单元都包括数据输入端D、时钟输入端C和数据输出端Q,级连关系为第i个时序单元FFi的数据输出端Q输出的数据信号Qi被接入第j个时序单元的时钟输入端C,串联关系为第i个时序单元FFi的数据输出端Q输出的数据信号Qi被接入第p个时序单元的数据输入端D。
可选的,时序单元为锁存器、触发器、寄存器、移位寄存器或者存储器,现有技术中其他具有相同功能的组合单元也落入本发明的保护范围之内。
S2)将所述IC设计化约为有向图。请参阅图8,S2包括:2.1)将所述多个时序单元化约为多个节点,2.2)连接所述多个节点得到有向图。
需要说明的是,IC设计包括组合逻辑电路和时序逻辑电路,本发明所要解决的问题是针对输入时序单元的时钟输入信号中存在毛刺进而导致的采样数据错误的问题,为了解决该问题,需要提取出时序单元进行处理。
进一步,步骤2.1还包括将所述多个时序单元中的一个时序单元化约为节点的步骤,包括:辨识出接入时序单元的用户时钟;在时序单元上辨识出:数据输入端、用户时钟输入端和数据输出端,其中用户时钟接入用户时钟输入端;将时序单元化约为节点。其中将时序单元化约为节点的步骤包括:定义一条有两端的逻辑通路,其中:用户时钟输入端为两端中的一端,数据输出端为两端中的另一端;在逻辑通路的两端之间定义一个节点。根据将一个时序单元化约为节点的步骤将多个时序单元中的其他时序单元化约为节点。通过辨识逻辑通路提取节点的方式能够将时序单元提取为一个抽象的节点,只提取相关时序单元之间的拓扑关系,避免其他无关结构的干扰。
进一步,步骤2.2中连接节点的边的步骤为:以一个节点的数据输出端流向下一个节点的时钟输入端为有方向的边对节点进行连接。通过连接节点,忽略时序单元之间的组合逻辑,得到有向图。
可选的,有向图的存储方式采用邻接矩阵或者邻接表存储。
作为一个示例,为了更好的理解本发明,以8个时序单元构成时钟树的一部分为例,请参阅图10,其示出了IC设计中的部分时钟树结构,在该时钟树中包括时序单元F1-F8和组合逻辑Lo1-Lo6,每个时序单元的外部端口相同,包括数据输入端D、用户时钟输入端C和数据输出端Q。在该时钟树中时序单元F1作为根节点,其时序单元F1的用户时钟输入端C接入的是主时钟(primary clock),对于以根节点为父节点的其中的一条包括F2-F4的路径中,主时钟驱动时序单元F1对输入数据采样得到生成时钟1(generated clock),生成时钟1经过组合逻辑Lo1驱动时序单元F2对输入数据进行采样得到生成时钟2,以此类推,得到生成时钟3和生成时钟4;同理在另一条以根节点为父节点且包括F5-F8的路径中能够得到生成时钟5-8。以每个时序单元中用户时钟输入端C到数据输出端Q形成的逻辑通路为节点,以一个时序单元数据输出端输出的数据流向下一个节点的时钟输入端为有方向的边,对图10中示出的时钟树结构进行提取得到有向图。请参阅图11,其示出了将图10中的时钟树进行提取之后得到的有向图,其中图11中有向图的根节点为图10中时钟树的根节点,图11中根节点的时钟输入端C接入主时钟,在该有向图中除了根节点之外的节点的用户时钟输入端C接入的均是生成时钟,有向图中的有方向的边为数据输出信号的流向。在图11中的每个节点分别代表所提取的时序单元,节点个时序单元之间存在一对一的映射关系。
S3)设置有向图上的节点,其中:有向图包括恰为一个根节点和多个叶子节点。将节点修改为时钟模型CA或者时钟模型CB。需要说明的是,在有向图中,根节点接入的用户时钟为主时钟;除根节点之外,在有向图中的其他节点接入的用户时钟为生成时钟。
进一步,请参阅图9,S3设置有向图上的节点的步骤还包括:3.1)在所述有向图上的节点插入时钟模型;3.2)为主时钟′设置相位偏移。
进一步,步骤3.1)包括:3.1.1)将在所述有向图上的多个节点标识为A组和B组;3.1.2)修改被标识为A组的节点;3.1.3)修改被标识为B组的节点。
需要说明的是,为了解决本发明所提出的技术问题,本发明提出了两种在功能上能够等价替换IC设计中时序单元的时钟模型,利用时钟模型解决技术问题,其中A组的节点会被替换为时钟模型CA,B组的节点会被替换为时钟模型CB,时钟模型CA通过控制采样数据的输出时机来重现IC设计中时序单元的功能。时钟模型CB通过控制数据的采样时机来重现IC设计中时序单元的功能。
可选的,步骤3.1.1中可以是根据用户指定进行分组,也可以是根据随机指定方式进行分组,或者其他方式进行分组。
其中,3.1.2)进一步包括以下步骤:
i)为时钟模型CA设置数据输入端CA、数据输出端CA、用户使能端CA和时钟输入端CA。
ii)修改被标识为A组的节点中的一个节点A,包括:
ii.1)辨识节点A所在的依S2定义的逻辑通路,其中:所述逻辑通路的一端是用户时钟输入端A;所述逻辑通路的另一端是数据输出端A;和用户时钟A被接入用户时钟输入端A。
ii.2)在节点A插入时钟模型CA,包括:将数据输入端A接入数据输入端CA;将数据输出端A接入数据输出端CA;将用户时钟输入端A接入用户使能端CA;和将主时钟′接入时钟输入端CA,其中:所述主时钟′的频率大于所述主时钟的频率,以便于利用频率较高的主时钟′模拟频率较低的主时钟或者生成时钟的行为。需要说明的是,时钟模块CA预留的数据输入端CA、数据输出端CA、用户使能端CA分别与IC设计中时序单元的数据输入端A、数据输出端A、用户时钟输入端A分别一一对应,在修改时能够实现在不改变IC设计中接入时序单元的其他电路的情况下,利用时钟模块CA直接替换时序单元A。
作为一个优选实施例,主时钟′的时钟频率为主时钟的时钟频率的两倍。
请参阅图12,为了更好的理解步骤ii.2,图12示出了将节点A对应的时序单元A修改为时钟模型CA的结构示意图,首先需要说明的是,时序单元A的外部端口包括数据输入端A、用户时钟输入端A和数据输出端A,在附图12中D表示时序单元A的数据输入端A、以C表示时序单元A的用户时钟输入端A、以Q表示时序单元A的数据输出端A,下面在叙述的过程中直接以时序单元A的数据输入端D代指时序单元A的数据输入端A、时序单元A的用户时钟输入端C代指时序单元A的用户时钟输入端A、时序单元A的数据输出端Q代指时序单元A的数据输出端A。图12中的“X”为表示断开连接,虚线表示将时序单元A修改为时钟模型CA之后的布线,将时序单元A的某一条信号线断开,并将该信号线接入时钟模型CA的相应端口,相当于用时钟模型CA的相应端口替换掉时序单元A的端口接入对应的信号线;如图12中,将接入时序单元A的用户时钟输入端C的时钟信号线断开,并将该时钟信号线接入时钟模型CA的用户使能端E,相当于用时钟模型CA的用户使能端E替换掉时序单元A的用户时钟输入端C,使时钟模型CA的用户使能端E接入用户时钟;以此类推,用时钟模型CA的数据输入端D替换掉时序单元A的数据输入端D,时钟模型CA的数据输入端D接入数据输入信号;用时钟模型CA的数据输出端Q替换掉时序单元A的数据输出端Q,使时钟模型CA的数据输出端Q接入输出的后级电路;将主时钟′直接接入时钟模型CA的时钟输入端,达到利用时钟模型CA替换掉时序单元F的目的。
由于主时钟′直接接入时钟模型CA的时钟输入端CA,在主时钟′与时钟模型CA的时钟输入端CA之间不存在组合逻辑,因此不会将延时引入时钟输入端CA,因此时钟模型CA的时钟输入端CA不存在毛刺;而具有毛刺的用户时钟被接入时钟模型CA的用户使能端CA,而用户使能端CA接入的用户时钟需要满足建立时间和保持时间的要求,其中建立时间是指在主时钟′的有效沿到来之前数据保持稳定不变的时间,保持时间是指在主时钟′的有效沿到来之后数据保持稳定不变的时间,而用户时钟中毛刺的持续时间一般比较短,无法满足建立时间和保持时间的要求而被屏蔽,在时钟模型CA的用户使能端CA的用户时钟中的毛刺已不具备损害性,不会影响数据采样,因此时钟模型CA解决了毛刺问题。
ii.3)设置时钟模型CA,包括:在主时钟′的每个有效沿对来自数据输入端CA的信号采样,获得在以所述有效沿为起点的一个主时钟′的周期内的采样数据;当用户时钟A第N次发生有效沿时:获得主时钟′在当前周期内的采样数据dataN;和向数据输出端CA输出采样数据dataN,直到用户时钟A第N+1次发生有效沿为止;和当用户时钟A第N+1次发生有效沿时:获得主时钟′在当前周期内的采样数据dataN+1;和向数据输出端CA输出采样数据dataN+1,直到用户时钟A第N+2次发生有效沿为止。需要说明的是,时钟模型CA在主时钟′的每个有效沿都进行数据采样,但是输出的采样数据由用户时钟A控制,最终达到的效果是用户时钟A有效时输出新的采样数据,否则输出上次输出的采样数据;该功能重现了时序单元的功能。需要说明的是,时钟模型CA会在主时钟′的每个有效沿都对输入的数据信号进行采样,但是其通过用户时钟A控制输出哪一个周期采样获得的采样数据,也即时钟模型CA通过控制采样数据的输出时机来重现IC设计中时序单元的功能。
作为一个优选实施例,请再次参阅图1,图1中示出了时钟模型CA的结构,时钟模型CA包括时钟检测器E1和采样单元CAs,如图1所示,D1表示接入时钟输入端CA的数据信号、C1表示接入用户使能端CA的用户时钟A、MC1表示接入时钟输入端CA的主时钟′、Q1表示数据输出端CA输出的数据信号。也即,用户使能端E1接入C1、时钟输入端E1接入MC1、有效沿输出端E1接入使能端CAs、数据输入端CAs接入D1、数据输出端CAs接入Q1。其中,S4.1.2还包括:为时钟模型CA设置时钟检测器E1和采样单元CAs;为时钟检测器E1设置用户使能端E1、时钟输入端E1和有效沿输出端E1;为采样单元CAs设置数据输入端CAs、使能端CAs、时钟输入端CAs和数据输出端CAs;将用户使能端E1接入用户使能端CA;将时钟输入端E1和时钟输入端CAs接入时钟输入端CA;将有效沿输出端E1接入使能端CAs;将数据输入端CAs接入数据输入端CA;和将数据输出端CAs接入数据输出端CA。
其中,时钟检测器E1用于检测用户时钟是否发生有效沿。采样单元CAs用于实现在主时钟′的每个有效沿对来自数据输入端CA的信号采样,获得在以所述有效沿为起点的一个主时钟′的周期内的采样数据;当用户时钟A第N次发生有效沿时:获得主时钟′在当前周期内的采样数据N;和向数据输出端CA输出采样数据N,直到用户时钟A第N+1次发生有效沿为止;和当用户时钟A第N+1次发生有效沿时:获得主时钟′在当前周期内的采样数据N+1;和向数据输出端CA输出采样数据N+1,直到用户时钟A第N+2次发生有效沿为止。其中,时钟检测器E1输出的用户时钟的有效沿用于驱动采样单元CAs输出相应的采样数据。
进一步,作为一个优选实施例,请再次参阅图1,S3.1.2还包括:为采样单元CAs设置第一基本存储单元Re1、第二基本存储单元Re2和多路选择器MUX1;为第一基本存储单元Re1设置时钟输入端Re1、数据输入端Re1和数据输出端Re1;为第二基本存储单元Re2设置时钟输入端Re2、数据输入端Re2和数据输出端Re2;为多路选择器MUX1设置第一数据输入端MUX1、第二数据输入端MUX1、信号选择端MUX1和数据输出端MUX1;将数据输入端Re1接入数据输入端CAs;将数据输出端MUX1接入数据输出端CAs;将时钟输入端Re1和时钟输入端Re2接入时钟输入端CAs;将数据输出端Re1接入第一数据输入端MUX1;将数据输入端Re2接入数据输出端MUX1;将数据输出端Re2接入第二数据输入端MUX1;和将使能端CAs接入信号选择端MUX1。
其中,多路选择器为多个数据输入且单个数据输出的组合逻辑电路,多个数据输入的多路选择器就是一个多路的数字开关,可以根据信号选择端的不同信号从多个数据输入中选择一个数据输入信号输出到公共的数据输出端。
其中,第一基本存储单元Re1用于实现在主时钟′的每个有效沿发生时对来自数据输入端CA的数据信号进行采样得到采样数据。第二基本存储单元Re2用于实现在主时钟′的每个有效沿同时对数据输出端CA的输出信号进行采样得到采样数据。其中,主时钟′的时钟频率大于用户时钟的时钟频率,Re1和Re2接入同一个主时钟′,在主时钟′的每个有效沿都会得到两种采样数据:Re1输出主时钟′当前周期获取的采样数据、以及Re2输出主时钟′上一个周期获取的采样数据。多路选择器MUX1用于当用户时钟A有效时选择输出Re1的采样数据,当用户时钟A无效时输出Re2的采样数据。也即在主时钟′的第i个有效沿到来时,Re1对输入数据进行采样得到采样数据data1,若此时用户时钟A有效,则驱动MUX1选择Re1的采样数据输出data1;在主时钟′的第i+1个有效沿到来时,Re1继续对输入数据进行采样得到新的采样数据data2,但是此时Re2是对MUX1输出的data1进行采样得到data1,若此时用户时钟A无效,则驱动MUX1选择Re2的采样数据输出data1,在主时钟′的第i+2个有效沿到来时,若用户时钟有效,则驱动MUX1输出新的采样数据data2,否则继续保持输出data1。也即达到:当用户时钟A第N次发生有效沿时:获得主时钟′在当前周期内的采样数据dataN;和向数据输出端CA输出采样数据dataN,直到用户时钟A第N+1次发生有效沿为止;和当用户时钟A第N+1次发生有效沿时:获得主时钟′在当前周期内的采样数据dataN+1;和向数据输出端CA输出采样数据dataN+1,直到用户时钟A第N+2次发生有效沿为止。
进一步,作为一个优选实施例,请再次参阅图1,为时钟检测器E1设置第三基本存储单元Re3、非门电路A0和与门电路A1,其中:为Re3设置时钟输入端Re3、数据输入端Re3和数据输出端Re3;为非门电路设置信号输入端A0和信号输出端A0;为与门电路设置第一数据输入端A1、第二数据输入端A1和数据输出端A1;将时钟输入端Re3接入时钟输入端E1;将数据输入端Re3和第一数据输入端A1接入用户使能端E1;将数据输出端Re3接入信号输入端A0;将信号输出端A0接入第二数据输入端A1;将数据输出端A1接入有效沿输出端E1。
其中,非门电路A0用于实现使信号输出端A0输出的电平与信号输入端A0输入的电平相反。与门电路A1用于实现当第一数据输入端A1和第二数据输入端A1同时为高电平时,数据输出端A1输出高电平;否则,数据输出端A1输出低电平。
可选的,非门电路A0和与门电路A1的组合电路可以是具有相同真值表的查找表,其中实现同一真值表的查找表的数字电路组合包括多种。其中,查找表为用于实现已经事先写入所有可能的逻辑组合及其对应的逻辑结果的真值表的结构,根据查找表输入端的逻辑组合能够得到对应的逻辑结果。
可选的,用户时钟的有效沿被设置为上升沿或者下降沿。
可选的,时钟模型CA和时钟模型CB的主时钟′的有效沿被设置为上升沿触发,或者被设置为下降沿触发,或者时钟模型CA被设置为上升沿触发且时钟模型CB被设置为下降沿触发,或者时钟模型CA被设置为下降沿触发,时钟模型CB被设置为上升沿触发。当有效沿被设置为上升沿触发时,时钟检测器采用检测上升沿的时钟检测器,如图1中的时钟检测器E1。当有效沿被设置为下降沿触发时,时钟检测器采样检测下降沿的时钟检测器,此时时钟检测器采样检测下降沿的时钟检测器,检测下降沿的时钟检测器与时钟检测器E1不同的是,第三基本存储单元Re3的数据输出端Re3直接接入与门电路的第二数据输入端A1,非门电路A0被设置为非门电路的非门输入端接入用户使能端E1,非门输出端接入与门电路的第一数据输入端A1。现有技术中能够实现检测上升沿、下降沿或者双边沿的时钟检测器均落入本发明的保护范围之内。
时钟模型CA不仅能够重现时序单元的功能,而且由于时钟模型CA内部结构通过在主时钟′的有效沿到来之后,直接进行数据据采样,只是选择性的输出相应的采样结果,因此时钟模型CA的采样时机不存在延时的问题。
作为一个优选实施例,当时序单元的使能端被接入电路时,请参阅图13,D1表示接入数据输入端CA的数据信号、Q1表示数据输出端CA输出的采样数据、C1表示接入用户使能端CA的用户时钟、MC1表示接入时钟输入端CA的时钟信号、EN1表示接入使能端CA的使能信号;S2.1还包括在所述时序单元上辨识出:数据输入端、用户时钟输入端、数据输出端和使能端;则S4.1.2还包括:为时钟模型CA设置数据输入端CA、数据输出端CA、用户使能端CA、时钟输入端CA和使能端CA;为时钟模型CA设置时钟检测器E1、第一基本存储单元Re1、第二基本存储单元Re2、多路选择器MUX1和多路选择器MUX2;为时钟检测器E1设置用户使能端E1、时钟输入端E1和有效沿输出端E1;为第一基本存储单元Re1设置时钟输入端Re1、数据输入端Re1和数据输出端Re1;为第二基本存储单元Re2设置时钟输入端Re2、数据输入端Re2和数据输出端Re2;为多路选择器MUX1设置第一数据输入端MUX1、第二数据输入端MUX1、信号选择端MUX1和数据输出端MUX1;为多路选择器MUX2设置第一数据输入端MUX2、第二数据输入端MUX2、信号选择端MUX2和数据输出端MUX2;将第二数据输入端MUX2接入数据输入端CA;将数据输出端MUX1接入数据输出端CA、数据输入端Re2和第一数据输入端MUX2;将时钟输入端Re1、时钟输入端Re2和时钟输入端E1接入时钟输入端CA;将用户使能端E1接入用户使能端CA;将有效沿输出端E1接入信号选择端MUX1;将数据输出端Re2接入第二数据输入端MUX1;将使能端CA接入信号选择端MUX2;将数据输出端MUX2接入数据输入端Re1;和将数据输出端Re1接入第一数据输入端MUX1。需要说明的是,MUX2用于实现当使能端CA接入的使能信号有效时,则驱动MUX2选择将数据输入端CA输入的数据信号D1输出给数据输入端Re1;否则驱动MUX2选择将数据输出端CA输出的数据信号Q1输出给数据输入端Re1。
可选的,第一基本存储单元Re1被设置为寄存器或锁存器。第二基本存储单元Re2被设置为寄存器或锁存器。
iii)修改被标识为A组的节点中的其他节点。
其中,3.1.3)进一步包括以下步骤:
i)为时钟模型CB设置数据输入端CB、数据输出端CB、用户使能端CB和时钟输入端CB。
ii)修改被标识为B组的节点中的一个节点B,包括:
ii.1)辨识节点B所在的依S2定义的逻辑通路,其中:所述逻辑通路的一端是用户时钟输入端B;所述逻辑通路的另一端是数据输出端B;和用户时钟B被接入用户时钟输入端B。
ii.2)在节点B插入时钟模型CB,包括:将数据输入端B接入数据输入端CB;将数据输出端B接入数据输出端CB;将用户时钟输入端B接入用户使能端CB;和将所述主时钟′接入时钟输入端CB。需要说明的是,与时钟模块CA的目的相同,时钟模型CB预留的数据输入端CB、数据输出端CB、用户使能端CB分别与IC设计中时序单元的数据输入端B、数据输出端B、用户时钟输入端B分别一一对应,在修改时能够实现在不改变IC设计中接入时序单元的其他电路的情况下,利用时钟模块CB直接替换时序单元B。
需要说明的是,由于时钟模型CA和时钟模型CB的外部接口相同,其替换的方法与图11所示出的方法相似,不再赘述。
由于主时钟′直接接入时钟模型CB的时钟输入端CB,并且具有毛刺的用户时钟被接入时钟模型CB的用户使能端CB,时钟模型CB与时钟模型CA解决技术问题的原理相同,时钟输入端CB接入的主时钟′中不存在毛刺,而具有毛刺的用户时钟被接入对毛刺不敏感的用户使能端CB,毛刺不会影响数据采样,因此时钟模型CB解决了毛刺问题。
ii.3)设置时钟模型CB,包括:当用户时钟B的有效沿发生时且主时钟′的有效沿发生时:对来自数据输入端CB的信号采样,获得在以主时钟′的所述有效沿为起点的一个主时钟′的周期内的采样数据,且向数据输出端CB输出所述采样数据;当用户时钟B的有效沿未发生时或当主时钟′的有效沿未发生时:不对来自数据输入端CB的信号采样,且不向数据输出端CB输出数据。需要说明的是,由于用户时钟B的频率低于主时钟′,且只有当用户时钟B的有效沿发生时且主时钟′的有效沿发生时才进行采样,也即时钟模型CB是通过控制采样数据的采样时机来重现IC设计中时序单元的功能。
作为一个优选实施例,请参阅图2,其中S3.1.3还包括:为时钟模型CB设置时钟检测器E2和采样单元CBs;为时钟检测器E2设置用户使能端E2、时钟输入端E2和有效沿输出端E2;为采样单元CBs设置时钟输入端CBs、使能端CBs、数据输入端CBs、数据输出端CBs;将数据输入端CBs接入数据输入端CB;将数据输出端CBs接入数据输出端CB;将时钟输入端E2和时钟输入端CBs接入时钟输入端CB;将用户使能端E2接入用户使能端CB;和将有效沿输出端E2接入使能端CBs。请再次参阅图2,D2表示接入数据输入端CB的数据信号、Q2表示数据输出端CB输出的采样数据、C2表示接入用户使能端CB的用户时钟、MC2表示接入时钟输入端CB的时钟信号。
其中,时钟检测器E2的作用与E1相同,用于检测用户时钟是否发生有效沿。时钟检测器E2的内部结构与E1相同,不再赘述。
其中,采样单元CBs用于实现当用户时钟B的有效沿发生时且主时钟′的有效沿发生时:对来自数据输入端CB的信号采样,获得在以主时钟′的所述有效沿为起点的一个主时钟′的周期内的采样数据;向数据输出端CB输出所述采样数据;当用户时钟B的有效沿未发生时或当主时钟′的有效沿未发生时:不对来自数据输入端CB的信号采样,不向数据输出端CB输出数据。
采样单元CBs的实现电路可以设置为多种类型,本发明实施例提供以下两种变形方法。
可选的,采样单元CBs被设置为具有使能端的寄存器ERe1。时钟模型CB的内部结构简单,而时钟模型CA需要较多的硬件组合实现,时钟模型CB相比较时钟模型CA能够节约大量的硬件资源,因此通过时钟模型CA和时钟模型CB的配合能够实现硬件资源的平衡。
作为一个优选实施例,时钟模型CB包括一个寄存器ERe1和一个时钟检测器E2,其中寄存器ERe1为具有使能端的寄存器,时钟检测器的输出端与寄存器的使能端连接。
作为一个优选实施例,请参阅图14,S3.1.3还包括:为采样单元CBs设置第四基本存储单元Re4和多路选择器MUX3;为第四基本存储单元Re4设置时钟输入端Re4、数据输入端Re4和数据输出端Re4;为多路选择器MUX3设置第一数据输入端MUX3、第二数据输入端MUX3、信号选择端MUX3和数据输出端MUX3;将第一数据输入端MUX3接入数据输入端CBs;将数据输出端Re4接入第二数据输入端MUX3和数据输出端CBs;将时钟输入端Re4接入时钟输入端CBs;将信号选择端MUX3接入使能端CBs;和将数据输出端MUX3接入数据输入端Re4。其中,MUX3和Re4的组合功能相当于具有使能端的寄存器ERe1的功能,MUX3用于实现当用户信号有效时选择数据输入端CBs输入的数据信号输出给Re4,否则选择数据输出端CBs输出的数据信号输出给Re4,当主时钟′有效时对数据输入端Re4的数据信号进行采样并输出。需要说明的是,时钟模型CB为相对于时钟模型CA具有时钟延迟的时钟模型,时钟模型CB的时钟延迟是由于时钟模型CB自身的硬件结构带来的延迟。
可选的,第四基本存储单元Re4为寄存器或锁存器。
作为一个优选实施例,时钟模型CB还可以是由其他结构构成的功能模块,请参阅图15,为时钟模型CB设置第三基本存储单元Re3、第四基本存储单元Re4和查找表LUT1;为第三基本存储单元Re3设置时钟输入端Re3、数据输入端Re3和数据输出端Re3;为第四基本存储单元Re4设置时钟输入端Re4、数据输入端Re4和数据输出端Re4;为查找表LUT1设置第一数据输入端LUT1、第二数据输入端LUT1、第三数据输入端LUT1、第四数据输入端LUT1和数据输出端LUT1;将第二数据输入端LUT1接入数据输入端CB;将数据输出端Re4接入第一数据输入端LUT1和数据输出端CB;将时钟输入端Re3和时钟输入端Re4接入时钟输入端CB;将数据输入端Re3和第三数据输入端LUT1接入用户使能端CB;将数据输出端Re3接入第四数据输入端LUT1;和将数据输出端LUT1接入数据输入端Re4。需要说明的是,其中查找表LUT1的作用相当于图14中非门电路A0、与门电路A1和多路选择器MUX3作为一个模块的组合功能,其中查找表LUT1的第一-第四数据输入端相当于信号输入端A0、第一数据输入端A1、第一数据输入端MUX3和第二数据输入端MUX3,查找表LUT1的数据输出端LUT1相当于图14中的数据输出端Re4,也即查找表LUT1预先写入的真值表的功能等价于A0、A1和MUX3的组合功能。
第三基本存储单元Re3被设置为寄存器或锁存器。
作为一个优选实施例,当时序单元的使能端被接入电路时,请参阅图16,S2.1还包括在所述时序单元上辨识出:数据输入端、用户时钟输入端、数据输出端和使能端。S4.1.3还包括:为时钟模型CB设置数据输入端CB、数据输出端CB、用户使能端CB、时钟输入端CB和使能端CB;为时序单元CB设置时钟检测器E2、存储单元ERe1和多路选择器MUX4;为时钟检测器E2设置用户使能端E2、时钟输入端E2和有效沿输出端E2;为存储单元ERe1设置时钟输入端ERe1、使能端ERe1、数据输入端ERe1、数据输出端ERe1;为多路选择器MUX4设置第一数据输入端MUX4、第二数据输入端MUX4、信号选择端MUX4和数据输出端MUX4;将第二数据输入端MUX4接入数据输入端CB;信号选择端MUX4接入使能端CB;将数据输出端ERe1接入数据输出端CB和第一数据输入端MUX4;将时钟输入端E2和时钟输入端ERe1接入时钟输入端CB;将用户使能端E2接入用户使能端CB;将有效沿输出端E2接入使能端ERe1;和将数据输出端MUX4接入数据输入端ERe1。图16中D2表示接入数据输入端CB的数据信号、Q2表示数据输出端CB输出的采样数据、C2表示接入用户使能端CB的用户时钟、MC2表示接入时钟输入端CB的时钟信号、EN2表示接入使能端CB的使能信号。需要说明的是,MUX4用于实现当使能端CB接入的使能信号有效时,则驱动MUX4选择将数据输入端CB输入的数据信号D2输出给数据输入端ERe1;否则驱动MUX4选择将数据输出端CB输出的数据信号Q2输出给数据输入端ERe1。
作为一个优选实施例,有效沿被设置为上升沿或下降沿。其中,有效沿为用户时钟的有效沿和/或主时钟′的有效沿。
在IC设计中,时序单元之间的组合逻辑中存在锚点,锚点为时序单元输出的生成时钟在经过组合逻辑电路的处理之后经过多个分支输出端口输出处理后的生成时钟,每个分支输出端口称为一个锚点,将每个锚点接入对应时钟模型的时钟输入端。由于接入同一个锚点的用户时钟完全相同,相同的用户时钟经过不同时钟模型的时钟检测器输出的用户时钟有效沿的结果相同,因此为了节约硬件资源,将接入同一个锚点的时钟模型设置为共用同一个时钟检测器检测用户时钟的有效沿。作为一个示例,为了更好的理解本发明中的锚点,请参阅图17,图17中包括4个已经修改完成的时钟模型EMU1-EMU4,其中时钟模型EMU1可以是时钟模型CA或者时钟模型CB,时钟模型CA和时钟模型CB预留的外接端口相同,在图17中以D表示数据输入端、Q表示数据输出端、Ev表示用户使能端、MC表示时钟输入端,其中,EMU1的用户使能端Ev和EMU4的用户使能端Ev接入同一个锚点anchor1,EMU2的用户使能端Ev和EMU3的用户使能端Ev接入同一个锚点anchor2,接入EMU1和EMU4的用户时钟UC1相同,接入EMU2和EMU3的用户时钟UC2相同,对于时钟检测器来说,当输入的用户时钟相同时,其时钟检测器的输出结果相同,因此接入相同用户时钟的时钟模型可以共用同一个时钟检测器,也即EMU1和EMU4共用同一个时钟检测器,EMU2和EMU3共用同一个时钟检测器。
共用时钟检测器的组合包括以下三种实施例。
作为一个优选实施例,请参阅附图18,其中在S1,所述多个时序单元包括:时序单元A1和时序单元B1;在S2,在所述有向图上:时序单元A1被化约为节点A1、时序单元B1被化约为节点B1;在S3.1.1:节点A1被标识为A组、节点B1被标识为B组;在S3.1.2:时钟模型CA1被插入节点A1,时钟模型CA1被设置为包括数据输入端CA1、数据输出端CA1、用户使能端CA1和时钟输入端CA1;在S3.1.3:时钟模型CB1被插入点节B1,时钟模型CB1被设置为包括数据输入端CB1、数据输出端CB1、用户使能端CB1和时钟输入端CB1;S3.1还包括:为时钟模型CA1设置采样单元CA1s;为采样单元CA1s设置数据输入端CA1s、使能端CA1s、时钟输入端CA1s和数据输出端CA1s;为时钟模型CB1设置采样单元CB1s;为采样单元CB1s设置数据输入端CB1s、使能端CB1s、时钟输入端CB1s和数据输出端CB1s;辨识用户使能端CA1接入的锚点和若用户使能端CB1被接入所述锚点:为时钟模型CA1和时钟模型CB1共同设置时钟检测器E12;为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;将用户使能端E12接入所述锚点、用户使能端CA1和用户使能端CB1;将时钟输入端E12接入时钟输入端CA1s、时钟输入端CA1、时钟输入端CB1s和时钟输入端CB1;将有效沿输出端E12接入使能端CA1s和使能端CB1s;将数据输入端CA1s接入数据输入端CA1;将数据输出端CA1s接入数据输出端CA1;将数据输入端CB1s接入数据输入端CB1;和将数据输出端CB1s接入数据输出端CB1。如图18所示,C1表示接入用户使能端CA1的用户时钟A、同时也表示接入用户使能端CB1的用户时钟B;MC1表示接入时钟输入端CA1的主时钟′、同时也表示接入时钟输入端CB1的主时钟′。通过使接入同一个锚点的时钟模型CA1和时钟模型CB1共用一个时钟检测器,不仅能够得到与未共享时钟检测器相同的有效沿,而且能够大幅度减少了时钟检测器的使用,减少硬件资源的消耗。作为一个优选实施例,请参阅附图19,其中在S1,所述多个时序单元包括:时序单元A1和时序单元A2;在S2,在所述有向图上:时序单元A1被化约为节点A1、时序单元A2被化约为节点A2;在S3.1.1,节点A1和节点A2都被标识为A组;在S3.1.2:时钟模型CA1被插入点节A1,时钟模型CA1被设置为包括数据输入端CA1、数据输出端CA1、用户使能端CA1和时钟输入端CA1;时钟模型CA2被插入点节A2,时钟模型CA2被设置为包括数据输入端CA2、数据输出端CA2、用户使能端CA2和时钟输入端CA2;S3.1还包括:为时钟模型CA1设置采样单元CA1s,为采样单元CAs1设置数据输入端CA1s、使能端CA1s、时钟输入端CA1s和数据输出端CA1s;为时钟模型CA2设置采样单元CA2s,为采样单元CA2s设置数据输入端CA2s、使能端CA2s、时钟输入端CA2s和数据输出端CA2s;辨识用户使能端CA1接入的锚点;若用户使能端CA2被接入所述锚点:为时钟模型CA1和时钟模型CA2共同设置时钟检测器E12;为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;将用户使能端E12接入所述锚点、用户使能端CA1和用户使能端CA2;将时钟输入端E12接入时钟输入端CA1s、时钟输入端CA1、时钟输入端CA2s和时钟输入端CA2;将有效沿输出端E12接入使能端CA1s和使能端CA2s;将数据输入端CA1s接入数据输入端CA1;将数据输出端CA1s接入数据输出端CA1;将数据输入端CA2s接入数据输入端CA2;和将数据输出端CA2s接入数据输出端CA2。如图19所示,由于时钟检测器E12共用,C1既表示接入用户使能端CA1的用户时钟A,同时也表示接入用户使能端CA2的用户时钟A;MC1既表示接入时钟输入端CA1的主时钟′,同时也表示接入时钟输入端CA2的主时钟′。通过使接入同一个锚点的两个或两个以上的时钟模型CA共用一个时钟检测器,不仅能够得到与未共享时钟检测器相同的有效沿,而且能够大幅度减少了时钟检测器的使用,减少硬件资源的消耗。作为一个优选实施例,请参阅附图20,其中在S1,所述多个时序单元包括:时序单元B1和时序单元B2;在S2,在所述有向图上:时序单元B1被化约为节点B1,时序单元B2被化约为节点B2;在S3.1.1,节点B1和节点B2都被标识为B组;在S3.1.3:时钟模型CB1被插入点节B1,时钟模型CB1被设置为包括数据输入端CB1、数据输出端CB1、用户使能端CB1和时钟输入端CB1;时钟模型CB2被插入点节B2,时钟模型CB2被设置为包括数据输入端CB2、数据输出端CB2、用户使能端CB2和时钟输入端CB2;S3.1还包括:为时钟模型CB1设置采样单元CB1s;为采样单元CB1s设置数据输入端CB1s、使能端CB1s、时钟输入端CB1s和数据输出端CB1s;为时钟模型CB2设置采样单元CB2s,为采样单元CB2s设置数据输入端CB2s、使能端CB2s、时钟输入端CB2s和数据输出端CB2s;辨识用户使能端CB1接入的锚点和若用户使能端CB2被接入所述锚点:为时钟模型CB1和时钟模型CB2共同设置缘检测器E12;为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;将用户使能端E12接入所述锚点、用户使能端CB1和用户使能端CB2;将时钟输入端E12接入时钟输入端CB1s、时钟输入端CB1、时钟输入端CB2s和时钟输入端CB2;将有效沿输出端E12接入使能端CB1s和使能端CB2s;将数据输入端CB1s接入数据输入端CB1;将数据输出端CB1s接入数据输出端CB1;将数据输入端CB2s接入数据输入端CB2;和将数据输出端CB2s接入数据输出端CB2。如图20所示,由于时钟检测器E12共用,C2既表示接入用户使能端CB1的用户时钟B,同时也表示接入用户使能端CB2的用户时钟B;MC2既表示接入时钟输入端CB1的主时钟′,同时也表示接入时钟输入端CB2的主时钟′。通过使接入同一个锚点的两个或两个以上的时钟模型CB共用一个时钟检测器,不仅能够得到与未共享时钟检测器相同的有效沿,而且能够大幅度减少了时钟检测器的使用,减少硬件资源的消耗。
iii)修改被标识为B组的节点中的其他节点。
请再次参阅图3,图3中示出了修改前后的对比图,为了使附图更好的表达替换前后之间的关系,在该附图中用相同字母表示替换前后各个端口所接入的信号不变。请参阅图3中a部分附图,其示出了在修改前的IC设计的时序单元之间的结构,对于替换前的任意一个寄存器FFi,FFi包括时钟输入端C、数据输入端D和数据输出端Q,其中Lo为组合逻辑电路,在FFi的时钟输入端C被接入用户时钟UCi、数据输入端D被接入数据信号Di和数据输出端Q输出数据信号Qi。请参阅图3中b部分附图,其示出了在修改后时钟模型的结构示意图,为了更好的表达端口之间的关系,在b部分附图中依然采用D表示时钟模型CA的数据输入端CA或者时钟模型CB的数据输入端CB、以C表示时钟模型CA的时钟输入端CA或者时钟模型CB的时钟输入端CB、以Q表示时钟模型CA的数据输出端CA或者时钟模型CB的数据输出端CB、以Ev标识时钟模型CA的用户使能端CA或者时钟模型CB的用户使能端CB,将FFi修改为时钟模型CAi,其中,Di被接入CAi的数据输入端D、UCi被接入CAi的用户使能端Ev、CAi的数据输出端Q输出数据信号Qi、CAi的时钟输入端C被接入主时钟′。采用相同的方法将FFj替换为时钟模型CAj,将FFp替换为时钟模型CBp,将CAi、CAj和CBp的时钟输入端分别接入相应的时钟信号MC。
其中,替换后的电路中包括串联的第p个时钟模型CA和第g个时钟模型CB,且第p个时钟模型CA的用户使能端CA和第g个时钟模型模型CB的用户使能端CB接入同一个用户时钟。其中,串联关系为前一级时钟模型的数据输出端连接后一级时钟模型的数据输入端。其中,替换后的电路中还包括串联的第v个时钟模型CB和第q个时钟模型CB,且第v个时钟模型CB的用户使能端CB和第q个时钟模型CB的用户使能端CB接入同一个用户时钟。其中第v个时钟模型CB和第q个时钟模型CB还可以接入同一个主时钟′。采用两个时钟模型CA能够解决级联结构中采用时钟模型CB导致的时序错乱问题。
3.2)为主时钟′设置相位偏移,包括以下步骤:
3.2.1)在所述有向图上辨识出一条路径,为接入在所述路径上的节点的主时钟′设置相位偏移。
可选的,辨识路径的算法为深度优先搜索算法(Depth First Search,DFS)或者广度优先遍历算法(Breadth First Search,BFS),现有技术中用于辨识路径的其他算法也落入本发明的保护范围之内。
3.2.2)将在所述路径上的共K个节点依序编号,其中根节点是1号节点,多个叶子节点中的一个是K号节点。
需要说明的是,在一条路径上有且仅有一个根节点和一个叶子节点,且路径的起点为根节点,终点为叶子节点。
i)为接入被标识为B组的节点的主时钟′设置相位偏移,包括:在所述路径上辨识被标识为B组的节点,包括M号节点和N号节点,其中:1≤N<M≤K;使F(x-tM)=F(x-tN)且tM>tN,其中:1≤N<M≤K;F(x-tM)是接入M号节点的主时钟′的波形,tM是其移动的相位;和F(x-tN)是接入N号节点的主时钟′的波形,tN是其移动的相位。如图21所示,相位差满足△t=tM-tN>0。
作为一个示例,请再次参阅图11,假设节点F4为叶子节点,且节点F2和节点F3被标记为B组,对图11的路径F1-F4中的节点进行顺序编号,节点F1-F4被依次标记为1-4号节点,则2号节点和3号节点满足:F(x-t3)=F(x-t2)且t3>t2
其中,由于时钟模型CB是否输出采样数据同时受到用户时钟和主时钟′的控制,而时钟模型CA是否输出采样数据完全受到用户时钟的独立控制。而用户时钟的同一个有效沿传播到一条路径中的不同节点时的时间存在先后顺序,在该路径中的时钟模型CA会随着用户时钟有效沿的发生直接输出采样数据,但是在该路径中的时钟模型CB需要等待主时钟′的有效沿发生才能输出采样数据;对于时钟模型CB,采样数据沿着路径方向传播,编号小的N号节点先输出采样数据,编号较大的M号节点后输出采样数据,因此需要设置主时钟′的有效沿到来的时间先后以保证输出采样数据的顺序,进而保证电路正常工作。因此只有当M号节点输出采样数据的时间滞后于N号节点时,M号节点才能得到正确的采样数据,因此需要设置路径中编号较大的M号节点接入的主时钟′的相位tM滞后于编号较小的N号节点接入的主时钟′的相位tN,以保证得到正确的采样数据。进一步,当tM和tN的相位差大于等于采样数据从N号节点传播到M号节点的时间时,采用数据到达M号节点的同时进行数据采样,或者等待一个微小的时间差之后再进行采样都能够得到在同一主时钟′周期内的正确采样结果。
ii)为接入被标识为A组的节点的主时钟′设置相位偏移,包括:
ii.1)在所述路径上辨识被标识为A组的节点,包括U号节点。
ii.2)当1<U<K时:辨识距离U号节点最近的且被标识为B组的节点,包括R号节点和S号节点,其中:R<U<S;恰使以下两者之一为真:F(x-tU)=F(x-tR)且tU≥tR,F(x-tU)=F(x-tS)且tS≥tU
作为一个示例,请再次参阅图11,假设节点F8为叶子节点,且节点F5和节点F7被标记为B组,F6被标记为A组,对图11中的另一条路径F1-F8中的节点进行顺序编号,节点F1被标记为1号节点,F5-F8被依次标记为2-5号节点,其中2号节点和4号节点由于被标记为B组,因此需要满足:F(x-t4)=F(x-t2)且t4>t2;3号节点被标记为A组,则3号节点需要满足:F(x-t3)=F(x-t2)且t3≥t2,或者满足:F(x-t3)=F(x-t4)且t4≥t3
其中,由于时钟模型CA输出采样数据与否并不受主时钟′的控制,因此时钟模型CA与任意一个距离最近的时钟模型CB可以使用相同相位的主时钟′。对于U号节点和R号节点,由于U号节点对应的时钟模型CA是否输出采样数据不受主时钟′的控制,因此接入U号节点的主时钟′的相位可以等于R号节点或者S号节点的主时钟′的相位,如图22所示,当接入U号节点的主时钟′的相位等于R号节点相位差时,满足△t=tU-tR=0。但是由于R号节点和S号节点均为B组节点,因此R号节点和S号节点还需要满足S号节点接入的主时钟′的相位tS滞后于R号节点接入的主时钟′的相位tR,也即R号节点和S号节点的相位不可能相等,因此U号节点的主时钟′的相位只能择一的选择等于R号节点的主时钟′的相位或者S号节点的主时钟′的相位。同时,由于采样数据从R号节点传播到U号节点需要一定的传播时间,因此,当tU和tR的相位差大于等于采样数据从N号节点传播到M号节点的时间时,U号节点也能够得到正确的采样结果。同理,当tS和tU的相位差大于等于采样数据从U号节点传播到R号节点的时间时,R号节点也能够得到正确的采样结果。如图23所示,当接入U号节点的主时钟′的相位滞后于R号节点相位差时,满足△t=tU-tR>0。
作为一个优选实施例,τ=tS-tU满足:t0<τ<T/2,或者满足:t0<τ<T。其中t0为τ的最小阈值。
可选的,t0为预设的偏移时间阈值;
优选的,t0为时钟模型CB中用户时钟在接入时钟检测器时有效沿的发生时间到时钟检测器输出用户时钟有效沿的发生时间之间的时间差,以保证偏移时间τ在时钟检测器输出的有效上升沿的时间范围内。
可以理解的是,请参阅图4,时钟模型CB是在时钟检测器的有效沿输出端E1输出并接入Ev的用户时钟有效沿发生且时钟输入端接入的主时钟′有效沿发生时才进行数据采样,也即用户时钟在接入时钟模型CB之后需要先检测用户时钟有效沿,在接入Ev之前的电路中存在延迟,也即接入Ev的用户时钟有效沿的发生时间相对于用户时钟实际的有效沿发生时间来说有一个微小的延时,因此主时钟′在T1时刻的上升沿来临时,由于Ev接入的用户时钟有效沿滞后导致此时Ev为低电平,因此主时钟′在T1时刻这个上升沿来临时无法采样;在Ev高电平期间主时钟′的下一个时刻T2的上升沿来临时,才能够进行有效的数据采样,由此可知数据采样滞后了一个主时钟′的时钟周期。请参阅图5,在将主时钟′主动向后偏移一个时间τ之后得到移动后的主时钟′,使移动后的主时钟′能够在T1+τ的时间点进行采样,当t0<τ<T时,T1+τ的采样与实际上期望的采样在同一个时钟周期内。
ii.3)当U=1时:辨识距离所述根节点最近的且被标识为B组的结点,包括S号节点;使F(x-tU)=F(x-tS),其中tS≥tU。也即当路径中的根节点为时钟模型CA时,需要满足距离根节点最近的S号节点的主时钟′相位等于或者滞后于根节点的主时钟′相位,因此需要满足:△t=tS-tU≥0。
ii.4)当U=K时:辨识距离所述叶子号节点最近的且被标识为B组的结点,包括R号节点;和使F(x-tU)=F(x-tR)且tU≥tR。也即当路径中的叶子节点为时钟模型CA时,需要满足叶子节点的时钟模型CA的主时钟′相位等于或者滞后于距离最近的R号节点的主时钟′相位,因此需要满足:△t=tU-tR≥0。
需要说明的是,ii.3和ii.4分别限定了当根节点或者叶子节点为时钟模型CA时,时钟模型CA与路径中的时钟模型CB之间的相位关系,保证路径中的各个节点能够得到正确的采样结果。
其中:F(x-tR)是接入R号节点的主时钟′的波形,tR为所述波形的相位;F(x-tU)是接入U号节点的主时钟′的波形,tU为所述波形的相位;F(x-tS)是接入S号节点的主时钟′的波形,tS为所述波形的相位。
3.2.3)在所述有向图上辨识出其他路径,为接入在所述其他路径上的节点的主时钟′设置相位偏移。
作为一个优选实施例,F(x-tM)的获取步骤包括:获取时钟信号Tc;将时钟信号Tc进行X分频,得到分频信号,所述分频信号为F(x);将分频信号延迟时间tM,得到F(x-tM)。依次类推,其他节点的主时钟′的波形均可以通过该方式获取。可以理解的是,分频之后的分频信号的时钟频率为时钟信号Tc的1/X倍。通过将时钟信号进行分频分别得到第一时钟替换模型和第二时钟替换模型的时钟信号,能够进一步的减少时钟域的引入。其中时钟信号Tc可以为晶振信号。
可选的,将时钟信号Tc进行X分频的方法为:将时钟信号Tc输入分频器得到分频信号。其中,X大于0。
可选的,将分频信号延迟时间τ的方法为:将分频信号输入延时电路。
在时钟树中包括时钟域和数据域,所述时钟域中包括X个时钟模型CA,所述数据域中包括Y个混合时钟模型;所述Y个混合时钟模型包括Y1个时钟模型CA和Y2个时钟模型CB,其中Y=Y1+Y2;所述时钟模型CA为功能与寄存器FF完全等价的时钟模型,所述时钟模型CB为相对于时钟模型CA具有时钟延迟的时钟模型;时钟模型CB的主时钟′mc2与时钟模型CA的主时钟′mc1具有相同的时钟周期T,mc2相对于mc1偏移时间τ,且t0<τ<T/2,t0为τ的最小阈值。其中,所述时钟域中第i个时钟模型CA的数据输出端的数据信号为第i+1个时钟模型CA的时钟输入信号。所述数据域中第j个混合时钟模型的数据输出端的数据信号为第j+1个时钟替换模型的数据输入信号。
需要说明的是,时钟模型CB的数量大于时钟模型CA的数量,在实际电路中,数据域中的时序单元的数量会远大于时钟域中时序单元的数量,因此在替换之后能够更多的使用时钟模型CB,进一步的降低系统的资源消耗。
其中,对于数据域中的时钟模型CB,当第j个时序单元的数据输出端的数据信号与第g个时序单元的数据输入端连接时,第j个时序单元和第g个时序单元均被修改为时钟模型CB。对于串联的两个时钟模型CB,在两者接入的主时钟′相同的情况下,这两个时钟模型CB的时序也是完全相同的,不会导致时序错乱的问题,同时减少了系统的资源消耗。
作为一个优选实施例,所述方法还包括:
优选的,所述数据域中包括第r个时钟模型CB和第r+1个时钟模型CB串联且第r+1个时钟模型CB与第q个时钟模型CA串联,在所述第r+1个时钟模型CB和第q个时钟模型CA之间的时钟信号存在偏移时间τ,所述偏移时间τ的转移步骤为:将第r+1个时钟模型CB替换为时钟模型CA,则偏移时间τ被转移到第r个时钟模型CB和第r+1个时钟模型CA之间。通过调整时钟替换模型的类型转移偏移时间,进一步增大系统的最大时钟频率,提高系统的性能。
需要说明的是,时钟域中所有时钟模型CA为同一个时钟域。时钟域引入的越少,所需BUFG的资源越少,能够进一步的节约系统的资源消耗,通过控制一个主时钟′就可以使整个系统同时启动和暂停。
需要说明的是,数据域中所有时钟模型CB接入的主时钟′相同。
S4)得到修改后的IC设计。
S5)将所述修改后的IC设计写入所述FPGA。
S6)在被写入所述修改后的IC设计的所述FPGA上验证所述IC设计。
综上所述,本发明实施例提供了一种在FPGA上仿真IC设计的方法,通过识别IC设计中时序单元的逻辑通路提取有向图,并将有向图中的节点对应的时序单元替换为时钟模型CA或者时钟模型CB,时钟模型CA和时钟模型CB的外部端口相比于IC设计中时序单元的端口新增了一个用户使能端,通过将时钟模型CA或CA的用户使能端接入的用户时钟和时钟输入端接入的主时钟′之间的配合,使时钟模型CA通过控制采样数据的输出时机来重现IC设计中时序单元的功能,使时钟模型CB通过控制数据的采样时机来重现IC设计中时序单元的功能;并设置接入时钟模型CA和时钟模型CB的主时钟′的相位偏移,保证电路正常工作;由于主时钟′直接接入时钟模型CA和CB的时钟输入端,主时钟′中不存在毛刺;同时将用户时钟接入时钟模型CA和CB的用户使能端,但用户使能端对存在毛刺的用户时钟不敏感,因此本发明能够在保证原有时序单元功能的情况下解决由于用户时钟存在毛刺导致采样错误的技术问题。
实施例一相对于实施例二和实施例三的有益效果在于,平衡了全部使用时钟模型CA导致硬件资源消耗大和全部使用时钟模型CB会导致时钟域数量庞大的问题。
实施例二
实施例二提供了一种在FPGA上仿真IC设计的方法,该方法包括以下步骤:
S1)在所述IC设计中辨识出:主时钟、子电路、多個生成时钟和多个时序单元,所述主时钟经过所述子电路运算生成所述多個生成时钟,接入所述多个时序单元的用户时钟是所述主时钟或所述多个生成时钟。
S2)将所述IC设计化约为有向图,包括:2.1)将所述多个时序单元化约为多个节点,2.2)连接所述多个节点得到有向图。
其中,2.1)将所述多个时序单元化约为多个节点,其中将所述多个时序单元中的一个时序单元化约为节点,包括:辨识出接入所述时序单元的用户时钟;在所述时序单元上辨识出节点和连接所述多个节点得到有向图;其中在所述时序单元上辨识出节点包括:数据输入端、用户时钟输入端和数据输出端,所述用户时钟接入所述用户时钟输入端;将所述时序单元化约为节点,包括:定义一条有两端的逻辑通路,其中:所述用户时钟输入端为所述两端的一端,所述数据输出端为所述两端的另一端;在所述逻辑通路的两端之间定义一个节点;定义其他逻辑通路,在所述其他逻辑通路的两端之间各定义一个节点;将所述多个时序单元中的其他时序单元化约为节点。
S3)设置所述有向图上的节点,其中:所述有向图包括恰为一个根节点和多个叶子节点,包括:3.1)在所述有向图上的节点插入时钟模型CA;3.2)为主时钟′设置相位偏移。
其中,3.1包括:3.1.1)将在所述有向图上的多个节点全标识为A组;3.1.2)修改被标识为A组的节点。
其中,3.1.2还包括:i)为时钟模型CA设置数据输入端CA、数据输出端CA、用户使能端CA和时钟输入端CA;ii)修改被标识为A组的节点中的一个节点A;iii)修改被标识为A组的节点中的其他节点。
其中,3.1.2.ii包括:
ii.1)辨识节点A所在的依S2定义的逻辑通路,其中:所述逻辑通路的一端是用户时钟输入端A,所述逻辑通路的另一端是数据输出端A;用户时钟A被接入用户时钟输入端A。
ii.2)在节点A插入时钟模型CA,包括:将数据输入端A接入数据输入端CA、将数据输出端A接入数据输出端CA、用户时钟输入端A接入用户使能端CA、将主时钟′接入时钟输入端CA,其中:所述主时钟′的频率大于或等于所述主时钟的频率。
ii.3)设置时钟模型CA,包括:在主时钟′的每个有效沿对来自数据输入端CA的信号采样,获得在以所述有效沿为起点的一个主时钟′的周期内的采样数据;当用户时钟A第N次发生有效沿时:获得主时钟′在当前周期内的采样数据dataN,向数据输出端CA输出采样数据dataN,直到用户时钟A第N+1次发生有效沿为止;当用户时钟A第N+1次发生有效沿时:获得主时钟′在当前周期内的采样数据dataN+1,向数据输出端CA输出采样数据dataN+1,直到用户时钟A第N+2次发生有效沿为止。
其中,3.2包括:
3.2.1)在所述有向图上辨识出一条路径,为接入在所述路径上的节点的主时钟′设置相位偏移。
3.2.2)将在所述路径上的共K个节点依序编号,所述共K个节点包括:1号节点、H号节点、U号节点和K号节点,其中1号节点即所述根节点,K号节点为所述多个叶子节点中的一个,其中:1≤H≤U≤K。
3.2.3)使F(x–tU)=F(x-tH)且tU≥tH,其中:F(x–tU)是接入U号节点的主时钟′的波形,tU是其移动的相位;F(x-tH)是接入H号节点的主时钟′的波形,tH是其移动的相位。
3.2.4)在所述有向图上辨识出其他路径,为接入在所述其他路径上的节点的主时钟′设置相位偏移。
作为一个优选实施例,S3.1还包括:为时钟模型CA设置时钟检测器E1和采样单元CAs;为时钟检测器E1设置用户使能端E1、时钟输入端E1和有效沿输出端E1;为采样单元CAs设置数据输入端CAs、使能端CAs、时钟输入端CAs和数据输出端CAs;将用户使能端E1接入用户使能端CA;将时钟输入端E1和时钟输入端CAs接入时钟输入端CA;将有效沿输出端E1接入使能端CAs;将数据输入端CAs接入数据输入端CA;将数据输出端CAs接入数据输出端CA。
作为一个优选实施例,其中,S3.1还包括:为采样单元CAs设置第一基本存储单元Re1、第二基本存储单元Re2和多路选择器MUX1;为第一基本存储单元Re1设置时钟输入端Re1、数据输入端Re1和数据输出端Re1;为第二基本存储单元Re2设置时钟输入端Re2、数据输入端Re2和数据输出端Re2;为多路选择器MUX1设置第一数据输入端MUX1、第二数据输入端MUX1、信号选择端MUX1和数据输出端MUX1;将数据输入端Re1接入数据输入端CAs;将数据输出端MUX1接入数据输出端CAs;将时钟输入端Re1和时钟输入端Re2接入时钟输入端CAs;将数据输出端Re1接入第一数据输入端MUX1;将数据输入端Re2接入数据输出端MUX1;将数据输出端Re2接入第二数据输入端MUX1;将使能端CAs接入信号选择端MUX1。
作为一个优选实施例,其中,在S1,所述多个时序单元包括:时序单元A1和时序单元A2;在S2,在所述有向图上:时序单元A1被化约为节点A1、时序单元A2被化约为节点A2;在S3.1.1,节点A1和节点A2都被标识为A组;在S3.1.2:时钟模型CA1被插入点节A1,时钟模型CA1被设置为包括数据输入端CA1、数据输出端CA1、用户使能端CA1和时钟输入端CA1;时钟模型CA2被插入点节A2,时钟模型CA2被设置为包括数据输入端CA2、数据输出端CA2、用户使能端CA2和时钟输入端CA2;S3.1还包括:为时钟模型CA1设置采样单元CA1s,为采样单元CAs1设置数据输入端CA1s、使能端CA1s、时钟输入端CA1s和数据输出端CA1s;为时钟模型CA2设置采样单元CA2s,为采样单元CA2s设置数据输入端CA2s、使能端CA2s、时钟输入端CA2s和数据输出端CA2s;辨识用户使能端CA1接入的锚点;若用户使能端CA2被接入所述锚点:为时钟模型CA1和时钟模型CA2共同设置时钟检测器E12;为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;将用户使能端E12接入所述锚点、用户使能端CA1和用户使能端CA2;将时钟输入端E12接入时钟输入端CA1s、时钟输入端CA1、时钟输入端CA2s和时钟输入端CA2;将有效沿输出端E12接入使能端CA1s和使能端CA2s;将数据输入端CA1s接入数据输入端CA1;将数据输出端CA1s接入数据输出端CA1;将数据输入端CA2s接入数据输入端CA2;将数据输出端CA2s接入数据输出端CA2。
实施例二的有益效果在于,所有的时钟模型CA的相位偏移可以相同,当相位偏移相同时,所有的时钟模型CA处于同一个时钟域,不仅能够节约时钟低偏移缓冲器(BUFG)的硬件资源,而且能够达到同时启动或者暂停电路的目的。
实施例三
实施例三提供了一种在FPGA上仿真IC设计的方法,该方法包括以下步骤:
S1)在所述IC设计中辨识出:主时钟、子电路、多個生成时钟和多个时序单元,所述主时钟经过所述子电路运算生成所述多個生成时钟,接入所述多个时序单元的用户时钟是所述主时钟或所述多个生成时钟。
S2)将所述IC设计化约为有向图,包括:2.1)将所述多个时序单元化约为多个节点,2.2)连接所述多个节点得到有向图。
其中,2.1)将所述多个时序单元化约为多个节点,其中将所述多个时序单元中的一个时序单元化约为节点,包括:辨识出接入所述时序单元的用户时钟;在所述时序单元上辨识出节点和连接所述多个节点得到有向图;其中在所述时序单元上辨识出节点包括:数据输入端、用户时钟输入端和数据输出端,所述用户时钟接入所述用户时钟输入端;将所述时序单元化约为节点,包括:定义一条有两端的逻辑通路,其中:所述用户时钟输入端为所述两端的一端,所述数据输出端为所述两端的另一端;在所述逻辑通路的两端之间定义一个节点;定义其他逻辑通路,在所述其他逻辑通路的两端之间各定义一个节点;将所述多个时序单元中的其他时序单元化约为节点。
S3)设置所述有向图上的节点,其中:所述有向图包括恰为一个根节点和多个叶子节点,包括:3.1)在所述有向图上的节点插入时钟模型CB;3.2)为主时钟′设置相位偏移。
其中,3.1包括:3.1.1)将在所述有向图上的多个节点全标识为B组;3.1.2)修改被标识为B组的节点。
其中,3.1.2包括:i)为时钟模型CB设置数据输入端CB、数据输出端CB、用户使能端CB和时钟输入端CB;ii)修改被标识为B组的节点中的一个节点B;iii)修改有向图中的其他节点。
其中,3.1.2.ii包括:
ii.1)辨识节点B所在的依S2定义的逻辑通路,其中:所述逻辑通路的一端是用户时钟输入端B;所述逻辑通路的另一端是数据输出端B;用户时钟B被接入用户时钟输入端B。
ii.2)在节点B插入时钟模型CB,包括:将数据输入端B接入数据输入端CB、将数据输出端B接入数据输出端CB、将用户时钟输入端B接入用户使能端CB、将所述主时钟′接入时钟输入端CB。
ii.3)设置时钟模型CB,包括:当用户时钟B的有效沿发生时且主时钟′的有效沿发生时:对来自数据输入端CB的信号采样,获得在以主时钟′的所述有效沿为起点的一个主时钟′的周期内的采样数据,向数据输出端CB输出所述采样数据;当用户时钟B的有效沿未发生时或当主时钟′的有效沿未发生时:不对来自数据输入端CB的信号采样,不向数据输出端CB输出数据。
其中,3.2包括:3.2.1)在所述有向图上辨识出一条路径,为接入在所述路径上的节点的主时钟′设置相位偏移;3.2.2)将在所述路径上的共K个节点依序编号,所述共K个节点包括:1号节点、N号节点、M号节点和K号节点,1号节点即所述根节点,K号节点是所述多个叶子节点中的一个,其中:1≤N≤M≤K;3.2.3)使F(x-tM)=F(x-tN)且tM>tN,其中:F(x-tM)是接入M号节点的主时钟′的波形,tM是其移动的相位;和F(x-tN)是接入N号节点的主时钟′的波形,tN是其移动的相位;3.2.4)在所述有向图上辨识出其他路径,为接入在所述其他路径上的节点的主时钟′设置相位偏移。
作为一个优选实施例,其中S3.1还包括:为时钟模型CB设置时钟检测器E2和采样单元CBs;为时钟检测器E2设置用户使能端E2、时钟输入端E2和有效沿输出端E2;为采样单元CBs设置时钟输入端CBs、使能端CBs、数据输入端CBs、数据输出端CBs;将数据输入端CBs接入数据输入端CB;将数据输出端CBs接入数据输出端CB;将时钟输入端E2和时钟输入端CBs接入时钟输入端CB;将用户使能端E2接入用户使能端CB;将有效沿输出端E2接入使能端CBs。
作为一个优选实施例,采样单元CBs被设置为具有使能端的寄存器。
作为一个优选实施例,其中,在S1,所述多个时序单元包括:时序单元B1和时序单元B2;在S2,在所述有向图上:时序单元B1被化约为节点B1,时序单元B2被化约为节点B2;在S3.1.1,节点B1和节点B2都被标识为B组;在S3.1.2:时钟模型CB1被插入点节B1,时钟模型CB1被设置为包括数据输入端CB1、数据输出端CB1、用户使能端CB1和时钟输入端CB1;时钟模型CB2被插入点节B2,时钟模型CB2被设置为包括数据输入端CB2、数据输出端CB2、用户使能端CB2和时钟输入端CB2;S3.1还包括:为时钟模型CB1设置采样单元CB1s,为采样单元CB1s设置数据输入端CB1s、使能端CB1s、时钟输入端CB1s和数据输出端CB1s;为时钟模型CB2设置采样单元CB2s,为采样单元CB2s设置数据输入端CB2s、使能端CB2s、时钟输入端CB2s和数据输出端CB2s;辨识用户使能端CB1接入的锚点;若用户使能端CB2被接入所述锚点:为时钟模型CB1和时钟模型CB2共同设置缘检测器E12;为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;将用户使能端E12接入所述锚点、用户使能端CB1和用户使能端CB2;将时钟输入端E12接入时钟输入端CB1s、时钟输入端CB1、时钟输入端CB2s和时钟输入端CB2;将有效沿输出端E12接入使能端CB1s和使能端CB2s;将数据输入端CB1s接入数据输入端CB1;将数据输出端CB1s接入数据输出端CB1;将数据输入端CB2s接入数据输入端CB2;将数据输出端CB2s接入数据输出端CB2。
实施例三的有益效果在于,由于时钟模型CB的结构简单,相比较实施例一和实施例二都能够更大幅度的降低FPGA硬件资源的消耗。
基于与上述方法实施例相同的发明构思,本发明实施例还提供了一种在FPGA上仿真IC设计的系统,包括处理器和与所述处理器通信连接的存储介质,其中:当所述处理器执行在所述存储介质内的程序时,所述系统可实施上述任意一种实施例提供的一种在FPGA上仿真IC设计的方法。
其中,处理器可以包括一个或多个处理核心,比如4核心处理器、12核心处理器等。处理器可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示器所需要显示的内容的渲染和绘制。一些实施例中,处理器还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
其中,存储介质是计算机设备中的记忆设备,用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息。可以理解的是,此处的存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。存储介质提供存储空间,在该存储空间中还存放了适于被处理器加载并执行的一条或多条计算机指令,这些计算机指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(Non-volatile Memory),例如存储介质包括RAM、ROM、可擦除可编程只读存储器(Erasable Programmable Read-only Memory,EPROM)、带电可擦可编程只读存储器(Electrically ErasableProgrammable Read-only Memory,EEPROM)、闪存或其他固态存储其技术,CD-ROM、数字多功能光盘(Digital Video Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备等。当然,本领域技术人员可知计算机存储介质不局限于上述几种。
基于与上述方法实施例相同的发明构思,本发明实施例提供了一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现上述任意一个方法实施例所提供的一种在FPGA上仿真IC设计的方法,其中一种在FPGA上仿真IC设计的方法在上述方法实施例中已经详细说明,不再赘述。

Claims (28)

1.一种在FPGA上仿真IC设计的方法,包括:
S2)将所述IC设计化约为有向图,包括:
2.1)将所述多个时序单元化约为多个节点,包括:在每个时序单元上辨识出用户时钟输入端和数据输出端;将由所述用户时钟输入端到数据输出端之间的逻辑通路定义为一个节点;
2.2)连接所述多个节点得到有向图;
S3)设置所述有向图上的节点,包括:
3.1)在所述有向图上的节点插入时钟模型,包括:
3.1.1)将所述有向图上的至少一个节点被标识为A组和至少另一个节点被标识为B组;
3.1.2)修改被标识为A组的节点,包括:
i)为时钟模型CA设置数据输入端CA、数据输出端CA、用户使能端CA和时钟输入端CA;
ii)修改被标识为A组的节点中的节点A,在节点A插入时钟模型CA,包括:
将节点A的数据输入端和数据输出端分别修改为数据输入端CA和数据输出端CA;
将节点A的用户时钟输入端修改为用户使能端CA;将主时钟′接入时钟输入端CA,其中:所述主时钟′的频率大于或等于所述主时钟的频率;设置时钟模型CA包括:
在主时钟′的每个有效沿对来自数据输入端CA的信号采样,获得在以所述有效沿为起点的一个主时钟′的周期内的采样数据;当用户时钟A第N次发生有效沿时,获得主时钟′在当前周期内的采样数据,向数据输出端CA输出采样数据,直到用户时钟A第N+1次发生有效沿为止;
3.1.3)修改被标识为B组的节点,包括:
i)为时钟模型CB设置数据输入端CB、数据输出端CB、用户使能端CB和时钟输入端CB;
ii)修改被标识为B组的节点中的节点B,在节点B插入时钟模型CB,包括:
将节点B的数据输入端和数据输出端分别接入数据输入端CB和数据输出端CB;将节点B的用户时钟输入端接入用户使能端CB;将主时钟′接入时钟输入端CB;设置时钟模型CB包括:当用户时钟B的有效沿发生时且主时钟′的有效沿发生时:对来自数据输入端CB的信号采样,获得在以主时钟′的所述有效沿为起点的一个主时钟′的周期内的采样数据;向数据输出端CB输出所述采样数据;
3.2)为主时钟′设置相位偏移。
2.根据权利要求1所述的方法,其中S3.1.2还包括:
为时钟模型CA设置时钟检测器E1和采样单元CAs;
为时钟检测器E1设置用户使能端E1、时钟输入端E1和有效沿输出端E1;
为采样单元CAs设置数据输入端CAs、使能端CAs、时钟输入端CAs和数据输出端CAs;
将用户使能端E1接入用户使能端CA;
将时钟输入端E1和时钟输入端CAs接入时钟输入端CA;
将有效沿输出端E1接入使能端CAs;
将数据输入端CAs接入数据输入端CA;和
将数据输出端CAs接入数据输出端CA。
3.根据权利要求2所述的方法,其中S3.1.2还包括:
为采样单元CAs设置第一基本存储单元Re1、第二基本存储单元Re2和多路选择器MUX1;
为第一基本存储单元Re1设置时钟输入端Re1、数据输入端Re1和数据输出端Re1;
为第二基本存储单元Re2设置时钟输入端Re2、数据输入端Re2和数据输出端Re2;
为多路选择器MUX1设置第一数据输入端MUX1、第二数据输入端MUX1、信号选择端MUX1和数据输出端MUX1;
将数据输入端Re1接入数据输入端CAs;
将数据输出端MUX1接入数据输出端CAs;
将时钟输入端Re1和时钟输入端Re2接入时钟输入端CAs;
将数据输出端Re1接入第一数据输入端MUX1;
将数据输入端Re2接入数据输出端MUX1;
将数据输出端Re2接入第二数据输入端MUX1;和
将使能端CAs接入信号选择端MUX1。
4.根据权利要求1所述的方法,其中:
S2.1还包括在所述时序单元上辨识出:
数据输入端;
用户时钟输入端;
数据输出端;和
使能端;和
S3.1.2还包括:
为时钟模型CA设置数据输入端CA、数据输出端CA、用户使能端CA、时钟输入端CA和使能端CA;
为时钟模型CA设置时钟检测器E1、第一基本存储单元Re1、第二基本存储单元Re2、多路选择器MUX1和多路选择器MUX2;
为时钟检测器E1设置用户使能端E1、时钟输入端E1和有效沿输出端E1;
为第一基本存储单元Re1设置时钟输入端Re1、数据输入端Re1和数据输出端Re1;
为第二基本存储单元Re2设置时钟输入端Re2、数据输入端Re2和数据输出端Re2;
为多路选择器MUX1设置第一数据输入端MUX1、第二数据输入端MUX1、信号选择端MUX1和数据输出端MUX1;
为多路选择器MUX2设置第一数据输入端MUX2、第二数据输入端MUX2、信号选择端MUX2和数据输出端MUX2;
将第二数据输入端MUX2接入数据输入端CA;
将数据输出端MUX1接入数据输出端CA、数据输入端Re2和第一数据输入端MUX2;
将时钟输入端Re1、时钟输入端Re2和时钟输入端E1接入时钟输入端CA;
将用户使能端E1接入用户使能端CA;
将有效沿输出端E1接入信号选择端MUX1;
将数据输出端Re2接入第二数据输入端MUX1;
将使能端CA接入信号选择端MUX2;
将数据输出端MUX2接入数据输入端Re1;和
将数据输出端Re1接入第一数据输入端MUX1。
5.根据权利要求3或4所述的方法,其中:
第一基本存储单元Re1被设置为寄存器或锁存器;和
第二基本存储单元Re2被设置为寄存器或锁存器。
6.根据权利要求1所述的方法,其中S3.1.3还包括:
为时钟模型CB设置时钟检测器E2和采样单元CBs;
为时钟检测器E2设置用户使能端E2、时钟输入端E2和有效沿输出端E2;
为采样单元CBs设置时钟输入端CBs、使能端CBs、数据输入端CBs、数据输出端CBs;
将数据输入端CBs接入数据输入端CB;
将数据输出端CBs接入数据输出端CB;
将时钟输入端E2和时钟输入端CBs接入时钟输入端CB;
将用户使能端E2接入用户使能端CB;和
将有效沿输出端E2接入使能端CBs。
7.根据权利要求6所述的方法,其中:采样单元CBs被设置为具有使能端的寄存器。
8.根据权利要求6所述的方法,其中S3.1.3还包括:
为采样单元CBs设置第四基本存储单元Re4和多路选择器MUX3;
为第四基本存储单元Re4设置时钟输入端Re4、数据输入端Re4和数据输出端Re4;
为多路选择器MUX3设置第一数据输入端MUX3、第二数据输入端MUX3、信号选择端MUX3和数据输出端MUX3;
将第一数据输入端MUX3接入数据输入端CBs;
将数据输出端Re4接入第二数据输入端MUX3和数据输出端CBs;
将时钟输入端Re4接入时钟输入端CBs;
将信号选择端MUX3接入使能端CBs;和
将数据输出端MUX3接入数据输入端Re4。
9.根据权利要求1所述的方法,其中S3.1.3还包括:
为时钟模型CB设置第三基本存储单元Re3、第四基本存储单元Re4和查找表LUT1;
为第三基本存储单元Re3设置时钟输入端Re3、数据输入端Re3和数据输出端Re3;
为第四基本存储单元Re4设置时钟输入端Re4、数据输入端Re4和数据输出端Re4;
为查找表LUT1设置第一数据输入端LUT1、第二数据输入端LUT1、第三数据输入端LUT1、第四数据输入端LUT1和数据输出端LUT1;
将第二数据输入端LUT1接入数据输入端CB;
将数据输出端Re4接入第一数据输入端LUT1和数据输出端CB;
将时钟输入端Re3和时钟输入端Re4接入时钟输入端CB;
将数据输入端Re3和第三数据输入端LUT1接入用户使能端CB;
将数据输出端Re3接入第四数据输入端LUT1;和
将数据输出端LUT1接入数据输入端Re4。
10.根据权利要求1所述的方法,其中:
S2.1还包括在所述时序单元上辨识出:
数据输入端;
用户时钟输入端;
数据输出端;和
使能端;和
S3.1.3还包括:
为时钟模型CB设置数据输入端CB、数据输出端CB、用户使能端CB、时钟输入端CB和使能端CB;
为时钟模型CB设置时钟检测器E2、存储单元ERe1和多路选择器MUX4;
为时钟检测器E2设置用户使能端E2、时钟输入端E2和有效沿输出端E2;
为存储单元ERe1设置时钟输入端ERe1、使能端ERe1、数据输入端ERe1、数据输出端ERe1;
为多路选择器MUX4设置第一数据输入端MUX4、第二数据输入端MUX4、信号选择端MUX4和数据输出端MUX4;
将第二数据输入端MUX4接入数据输入端CB;
将信号选择端MUX4接入使能端CB;
将数据输出端ERe1接入数据输出端CB和第一数据输入端MUX4;
将时钟输入端E2和时钟输入端ERe1接入时钟输入端CB;
将用户使能端E2接入用户使能端CB;
将有效沿输出端E2接入使能端ERe1;和
将数据输出端MUX4接入数据输入端ERe1。
11.根据权利要求9所述的方法,其中:第三基本存储单元Re3被设置为寄存器或锁存器。
12.根据权利要求8或9所述的方法,其中:第四基本存储单元Re4被设置为寄存器或锁存器。
13.根据权利要求1所述的方法,其中:所述有效沿被设置为上升沿或下降沿。
14.根据权利要求1所述的方法,所述方法还包括:
S1,识别多个时序单元包括:
时序单元A1;和
时序单元B1;
在S2,在所述有向图上:
时序单元A1被化约为节点A1;
时序单元B1被化约为节点B1;
在S3.1.1:
节点A1被标识为A组;
节点B1被标识为B组;
在S3.1.2:
时钟模型CA1被插入点节A1;和
时钟模型CA1被设置为包括数据输入端CA1、数据输出端CA1、用户使能端CA1和时钟输入端CA1;
在S3.1.3:
时钟模型CB1被插入点节B1;和
时钟模型CB1被设置为包括数据输入端CB1、数据输出端CB1、用户使能端CB1和时钟输入端CB1;
S3.1还包括:
为时钟模型CA1设置采样单元CA1s;
为采样单元CA1s设置数据输入端CA1s、使能端CA1s、时钟输入端CA1s和数据输出端CA1s;
为时钟模型CB1设置采样单元CB1s;
为采样单元CB1s设置数据输入端CB1s、使能端CB1s、时钟输入端CB1s和数据输出端CB1s;
辨识用户使能端CA1接入的锚点;和
若用户使能端CB1被接入所述锚点:
为时钟模型CA1和时钟模型CB1共同设置时钟检测器E12;
为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;
将用户使能端E12接入所述锚点、用户使能端CA1和用户使能端CB1;
将时钟输入端E12接入时钟输入端CA1s、时钟输入端CA1、时钟输入端CB1s和时钟输入端CB1;
将有效沿输出端E12接入使能端CA1s和使能端CB1s;
将数据输入端CA1s接入数据输入端CA1;
将数据输出端CA1s接入数据输出端CA1;
将数据输入端CB1s接入数据输入端CB1;和
将数据输出端CB1s接入数据输出端CB1。
15.根据权利要求1所述的方法,所述方法还包括:
S1,识别多个时序单元包括:
时序单元A1;和
时序单元A2;
在S2,在所述有向图上:
时序单元A1被化约为节点A1;
时序单元A2被化约为节点A2;
在S3.1.1,节点A1和节点A2都被标识为A组;
在S3.1.2:
时钟模型CA1被插入点节A1;
时钟模型CA1被设置为包括数据输入端CA1、数据输出端CA1、用户使能端CA1和时钟输入端CA1;
时钟模型CA2被插入点节A2;和
时钟模型CA2被设置为包括数据输入端CA2、数据输出端CA2、用户使能端CA2和时钟输入端CA2;
S3.1还包括:
为钟模型CA1设置采样单元CA1s;
为采样单元CAs1设置数据输入端CA1s、使能端CA1s、时钟输入端CA1s和数据输出端CA1s;
为时钟模型CA2设置采样单元CA2s;
为采样单元CA2s设置数据输入端CA2s、使能端CA2s、时钟输入端CA2s和数据输出端CA2s;
辨识用户使能端CA1接入的锚点;和
若用户使能端CA2被接入所述锚点:
为时钟模型CA1和时钟模型CA2共同设置时钟检测器E12;
为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;
将用户使能端E12接入所述锚点、用户使能端CA1和用户使能端CA2;
将时钟输入端E12接入时钟输入端CA1s、时钟输入端CA1、时钟输入端CA2s和时钟输入端CA2;
将有效沿输出端E12接入使能端CA1s和使能端CA2s;
将数据输入端CA1s接入数据输入端CA1;
将数据输出端CA1s接入数据输出端CA1;
将数据输入端CA2s接入数据输入端CA2;和
将数据输出端CA2s接入数据输出端CA2。
16.根据权利要求1所述的方法,所述方法还包括:
S1,识别多个时序单元包括:
时序单元B1;和
时序单元B2;
在S2,在所述有向图上:
时序单元B1被化约为节点B1;
时序单元B2被化约为节点B2;
在S3.1.1,节点B1和节点B2都被标识为B组;
在S3.1.3:
时钟模型CB1被插入点节B1;
时钟模型CB1被设置为包括数据输入端CB1、数据输出端CB1、用户使能端CB1和时钟输入端CB1;
时钟模型CB2被插入点节B2;和
时钟模型CB2被设置为包括数据输入端CB2、数据输出端CB2、用户使能端CB2和时钟输入端CB2;
S3.1还包括:
为钟模型CB1设置采样单元CB1s;
为采样单元CBs1设置数据输入端CB1s、使能端CB1s、时钟输入端CB1s和数据输出端CB1s;
为时钟模型CB2设置采样单元CB2s;
为采样单元CB2s设置数据输入端CB2s、使能端CB2s、时钟输入端CB2s和数据输出端CB2s;
辨识用户使能端CB1接入的锚点;和
若用户使能端CB2被接入所述锚点:
为时钟模型CB1和时钟模型CB2共同设置时钟检测器E12;
为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;
将用户使能端E12接入所述锚点、用户使能端CB1和用户使能端CB2;
将时钟输入端E12接入时钟输入端CB1s、时钟输入端CB1、时钟输入端CB2s和时钟输入端CB2;
将有效沿输出端E12接入使能端CB1s和使能端CB2s;
将数据输入端CB1s接入数据输入端CB1;
将数据输出端CB1s接入数据输出端CB1;
将数据输入端CB2s接入数据输入端CB2;和
将数据输出端CB2s接入数据输出端CB2。
17.根据权利要求1所述的方法,还包括:
S4)得到修改后的IC设计;
S5)将所述修改后的IC设计写入所述FPGA;和
S6)在被写入所述修改后的IC设计的所述FPGA上验证所述IC设计。
18.根据权利要求1所述的方法,其特征在于,S3.2还包括:
3.2.1)在所述有向图上辨识出一条路径,为接入在所述路径上的节点的主时钟′设置相位偏移;
3.2.2)将在所述路径上的共K个节点依序编号,所述根节点是1号节点,所述多个叶子节点中的一个是K号节点;
在所述路径上辨识被标识为B组的节点,包括M号节点和N号节点,且1≤N<M≤K;设置M号节点接入的主时钟′的相位tM滞后于N号节点接入的主时钟′的相位tN
在所述路径上辨识被标识为A组的节点,包括U号节点;辨识距离U号节点最近的且被标识为B组的节点,包括R号节点和S号节点,其中:R<U<S;设置U号节点的主时钟′的相位滞后于或等于R号节点的主时钟′的相位;设置U号节点的主时钟′的相位超前于或等于S号节点的主时钟′的相位;
3.2.3)在所述有向图上辨识出其他路径,为接入在所述其他路径上的节点的主时钟′设置相位偏移。
19.一种在FPGA上仿真IC设计的方法,包括:
S2)将所述IC设计化约为有向图,包括:
2.1)将所述多个时序单元化约为多个节点,包括:在每个时序单元上辨识出用户时钟输入端和数据输出端;将由所述用户时钟输入端到数据输出端之间的逻辑通路定义为一个节点;
2.2)连接所述多个节点得到有向图;
S3)设置所述有向图上的节点,包括:
3.1)在所述有向图上的节点插入时钟模型,包括:
3.1.1)将在所述有向图上的多个节点全标识为A组;
3.1.2)修改被标识为A组的节点,包括:
i)为时钟模型CA设置数据输入端CA、数据输出端CA、用户使能端CA和时钟输入端CA;
ii)修改被标识为A组的节点中的节点A,在节点A插入时钟模型CA,包括:
将节点A的数据输入端和数据输出端分别修改为数据输入端CA和数据输出端CA;将节点A的用户时钟输入端修改为用户使能端CA;将主时钟′接入时钟输入端CA,其中:所述主时钟′的频率大于或等于所述主时钟的频率;设置时钟模型CA包括:在主时钟′的每个有效沿对来自数据输入端CA的信号采样,获得在以所述有效沿为起点的一个主时钟′的周期内的采样数据;当用户时钟A第N次发生有效沿时,获得主时钟′在当前周期内的采样数据,向数据输出端CA输出采样数据,直到用户时钟A第N+1次发生有效沿为止;
3.2)为主时钟′设置相位偏移。
20.根据权利要求19所述的方法,其中S3.1还包括:
为时钟模型CA设置时钟检测器E1和采样单元CAs;
为时钟检测器E1设置用户使能端E1、时钟输入端E1和有效沿输出端E1;
为采样单元CAs设置数据输入端CAs、使能端CAs、时钟输入端CAs和数据输出端CAs;
将用户使能端E1接入用户使能端CA;
将时钟输入端E1和时钟输入端CAs接入时钟输入端CA;
将有效沿输出端E1接入使能端CAs;
将数据输入端CAs接入数据输入端CA;和
将数据输出端CAs接入数据输出端CA。
21.根据权利要求20所述的方法,其中S3.1还包括:
为采样单元CAs设置第一基本存储单元Re1、第二基本存储单元Re2和多路选择器MUX1;
为第一基本存储单元Re1设置时钟输入端Re1、数据输入端Re1和数据输出端Re1;
为第二基本存储单元Re2设置时钟输入端Re2、数据输入端Re2和数据输出端Re2;
为多路选择器MUX1设置第一数据输入端MUX1、第二数据输入端MUX1、信号选择端MUX1和数据输出端MUX1;
将数据输入端Re1接入数据输入端CAs;
将数据输出端MUX1接入数据输出端CAs;
将时钟输入端Re1和时钟输入端Re2接入时钟输入端CAs;
将数据输出端Re1接入第一数据输入端MUX1;
将数据输入端Re2接入数据输出端MUX1;
将数据输出端Re2接入第二数据输入端MUX1;和
将使能端CAs接入信号选择端MUX1。
22.根据权利要求19所述的方法,所述方法还包括:
S1,识别多个时序单元包括:
时序单元A1;和
时序单元A2;
在S2,在所述有向图上:
时序单元A1被化约为节点A1;
时序单元A2被化约为节点A2;
在S3.1.1,节点A1和节点A2都被标识为A组;
在S3.1.2:
时钟模型CA1被插入点节A1;
时钟模型CA1被设置为包括数据输入端CA1、数据输出端CA1、用户使能端CA1和时钟输入端CA1;
时钟模型CA2被插入点节A2;和
时钟模型CA2被设置为包括数据输入端CA2、数据输出端CA2、用户使能端CA2和时钟输入端CA2;
S3.1还包括:
为钟模型CA1设置采样单元CA1s;
为采样单元CAs1设置数据输入端CA1s、使能端CA1s、时钟输入端CA1s和数据输出端CA1s;
为时钟模型CA2设置采样单元CA2s;
为采样单元CA2s设置数据输入端CA2s、使能端CA2s、时钟输入端CA2s和数据输出端CA2s;
辨识用户使能端CA1接入的锚点;和
若用户使能端CA2被接入所述锚点:
为时钟模型CA1和时钟模型CA2共同设置时钟检测器E12;
为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;
将用户使能端E12接入所述锚点、用户使能端CA1和用户使能端CA2;
将时钟输入端E12接入时钟输入端CA1s、时钟输入端CA1、时钟输入端CA2s和时钟输入端CA2;
将有效沿输出端E12接入使能端CA1s和使能端CA2s;
将数据输入端CA1s接入数据输入端CA1;
将数据输出端CA1s接入数据输出端CA1;
将数据输入端CA2s接入数据输入端CA2;和
将数据输出端CA2s接入数据输出端CA2。
23.一种在FPGA上仿真IC设计的方法,包括:
S2)将所述IC设计化约为有向图,包括:
2.1)将所述多个时序单元化约为多个节点,包括:在每个时序单元上辨识出用户时钟输入端和数据输出端;将由所述用户时钟输入端到数据输出端之间的逻辑通路定义为一个节点;
2.2)连接所述多个节点得到有向图;
S3)设置所述有向图上的节点,包括:
3.1)在所述有向图上的节点插入时钟模型,包括:
3.1.1)将在所述有向图上的多个节点全标识为B组;
3.1.2)修改被标识为B组的节点,包括:
i)为时钟模型CB设置数据输入端CB、数据输出端CB、用户使能端CB和时钟输入端CB;
ii)修改被标识为B组的节点中的节点B,在节点B插入时钟模型CB,包括:
将节点B的数据输入端和数据输出端分别接入数据输入端CB和数据输出端CB;
将节点B的用户时钟输入端接入用户使能端CB;将主时钟′接入时钟输入端CB;
设置时钟模型CB包括:当用户时钟B的有效沿发生时且主时钟′的有效沿发生时:
对来自数据输入端CB的信号采样,获得在以主时钟′的所述有效沿为起点的一个主时钟′的周期内的采样数据;向数据输出端CB输出所述采样数据;
3.2)为主时钟′设置相位偏移。
24.根据权利要求23所述的方法,其中S3.1还包括:
为时钟模型CB设置时钟检测器E2和采样单元CBs;
为时钟检测器E2设置用户使能端E2、时钟输入端E2和有效沿输出端E2;
为采样单元CBs设置时钟输入端CBs、使能端CBs、数据输入端CBs、数据输出端CBs;
将数据输入端CBs接入数据输入端CB;
将数据输出端CBs接入数据输出端CB;
将时钟输入端E2和时钟输入端CBs接入时钟输入端CB;
将用户使能端E2接入用户使能端CB;和
将有效沿输出端E2接入使能端CBs。
25.根据权利要求24所述的方法,其中:采样单元CBs被设置为具有使能端的寄存器。
26.根据权利要求24所述的方法,所述方法还包括:
S1,识别多个时序单元包括:
时序单元B1;和
时序单元B2;
在S2,在所述有向图上:
时序单元B1被化约为节点B1;
时序单元B2被化约为节点B2;
在S3.1.1,节点B1和节点B2都被标识为B组;
在S3.1.2:
时钟模型CB1被插入点节B1;
时钟模型CB1被设置为包括数据输入端CB1、数据输出端CB1、用户使能端CB1和时钟输入端CB1;
时钟模型CB2被插入点节B2;和
时钟模型CB2被设置为包括数据输入端CB2、数据输出端CB2、用户使能端CB2和时钟输入端CB2;
S3.1还包括:
为钟模型CB1设置采样单元CB1s;
为采样单元CBs1设置数据输入端CB1s、使能端CB1s、时钟输入端CB1s和数据输出端CB1s;
为时钟模型CB2设置采样单元CB2s;
为采样单元CB2s设置数据输入端CB2s、使能端CB2s、时钟输入端CB2s和数据输出端CB2s;
辨识用户使能端CB1接入的锚点;和
若用户使能端CB2被接入所述锚点:
为时钟模型CB1和时钟模型CB2共同设置时钟检测器E12;
为时钟检测器E12设置用户使能端E12、时钟输入端E12和有效沿输出端E12;
将用户使能端E12接入所述锚点、用户使能端CB1和用户使能端CB2;
将时钟输入端E12接入时钟输入端CB1s、时钟输入端CB1、时钟输入端CB2s和时钟输入端CB2;
将有效沿输出端E12接入使能端CB1s和使能端CB2s;
将数据输入端CB1s接入数据输入端CB1;
将数据输出端CB1s接入数据输出端CB1;
将数据输入端CB2s接入数据输入端CB2;和
将数据输出端CB2s接入数据输出端CB2。
27.一种在FPGA上仿真IC设计的系统,包括处理器和与所述处理器通信连接的存储介质,其中:当所述处理器执行在所述存储介质内的程序时,所述系统可实施根据权利要求1~26中任一项所述的方法。
28.一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,其中:所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-26中任意一项的所述方法。
CN202310658622.2A 2022-08-24 2023-06-05 在fpga上仿真ic设计的方法、系统及存储介质 Pending CN117634384A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2023/109188 WO2024041290A1 (en) 2022-08-24 2023-07-25 Method and system for emulating ic design with fpga, and storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202211018303 2022-08-24
CN2022110183037 2022-08-24

Publications (1)

Publication Number Publication Date
CN117634384A true CN117634384A (zh) 2024-03-01

Family

ID=90017056

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310658593.XA Active CN117634379B (zh) 2022-08-24 2023-06-05 一种ic设计的优化方法及系统
CN202310658622.2A Pending CN117634384A (zh) 2022-08-24 2023-06-05 在fpga上仿真ic设计的方法、系统及存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202310658593.XA Active CN117634379B (zh) 2022-08-24 2023-06-05 一种ic设计的优化方法及系统

Country Status (1)

Country Link
CN (2) CN117634379B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6127864A (en) * 1998-08-19 2000-10-03 Mission Research Corporation Temporally redundant latch for preventing single event disruptions in sequential integrated circuits
US20040225978A1 (en) * 2003-05-09 2004-11-11 Yong Fan Automatic clock gating insertion in an IC design
US20140325463A1 (en) * 2013-04-30 2014-10-30 Freescale Semiconductor, Inc. Integrated Circuit Design Verification Through Forced Clock Glitches
CN111370040A (zh) * 2020-03-18 2020-07-03 上海华虹宏力半导体制造有限公司 存储器读数据测试电路结构及其设计方法
US10740532B1 (en) * 2018-12-20 2020-08-11 Cadence Design Systems, Inc. Route driven placement of fan-out clock drivers

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1737806A (zh) * 2005-09-01 2006-02-22 上海交通大学 直接根据标准单元库器件生成门控时钟单元的方法
US11526641B2 (en) * 2020-08-25 2022-12-13 Synopsys, Inc. Formal gated clock conversion for field programmable gate array (FPGA) synthesis
CN113673193B (zh) * 2021-08-09 2022-11-22 东南大学 一种基于寄存器灵活时序库的电路时序优化方法
CN114386352A (zh) * 2022-03-23 2022-04-22 上海立芯软件科技有限公司 时序驱动布局方法及装置、设备、存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6127864A (en) * 1998-08-19 2000-10-03 Mission Research Corporation Temporally redundant latch for preventing single event disruptions in sequential integrated circuits
US20040225978A1 (en) * 2003-05-09 2004-11-11 Yong Fan Automatic clock gating insertion in an IC design
US20140325463A1 (en) * 2013-04-30 2014-10-30 Freescale Semiconductor, Inc. Integrated Circuit Design Verification Through Forced Clock Glitches
US10740532B1 (en) * 2018-12-20 2020-08-11 Cadence Design Systems, Inc. Route driven placement of fan-out clock drivers
CN111370040A (zh) * 2020-03-18 2020-07-03 上海华虹宏力半导体制造有限公司 存储器读数据测试电路结构及其设计方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TECHNISCHE UNIVERSITÄT DRESDEN: "EDA Environments for 3D Chip Stacks", 《MASDAR INSTITUTE OF SCIENCE & TECHN, 》, 12 May 2016 (2016-05-12), pages 175 - 194 *
易雪燕;杨斌利;牛亚莉;: "微波散射计数字接收机DDC的设计与实现", 空间电子技术, no. 02, 25 June 2009 (2009-06-25) *

Also Published As

Publication number Publication date
CN117634379B (zh) 2024-06-14
CN117634379A (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
US11047907B2 (en) Cycle accurate and cycle reproducible memory for an FPGA based hardware accelerator
KR102438702B1 (ko) 멀티 전원 도메인을 갖는 집적 회로의 임베디드 코어 기반 디지털 시스템의 테스트 모드 분리 및 파워 감소 방법
US7694242B1 (en) System and method of replacing flip-flops with pulsed latches in circuit designs
US7039887B2 (en) Method and apparatus for enhancing the performance of event driven dynamic simulation of digital circuits based on netlist partitioning techniques
CN102970013A (zh) 基于扫描链的芯片内部寄存器复位方法及复位控制装置
US20070043548A1 (en) Verifying a simulated hardware environment for a simulated device under test
US6567962B2 (en) Method, apparatus, and program for multiple clock domain partitioning through retiming
US10303833B1 (en) Parallelizing timing-based operations for circuit designs
Kwok et al. Addressing the challenges of reset verification in SoC designs
CN107844678B (zh) 包含IP/Memory时序路径的spice仿真方法
CN117634384A (zh) 在fpga上仿真ic设计的方法、系统及存储介质
US7395197B2 (en) Verification method and system for logic circuit
US6505149B1 (en) Method and system for verifying a source-synchronous communication interface of a device
CN117634385B (zh) 在fpga上仿真ic设计的方法、系统及存储介质
CN114186523B (zh) 基于异步电路的数模混合设计方法及工艺移植方法
US20220327269A1 (en) Computing device and method for detecting clock domain crossing violation in design of memory device
WO2024041290A1 (en) Method and system for emulating ic design with fpga, and storage medium
CN103678249A (zh) 基于存储器接口的扩展设备及其时钟调试方法
US8793548B2 (en) Integrated circuit, simulation apparatus and simulation method
WO2024041291A1 (en) Method and system for emulating ic design with fpga, and storage medium
US20040025073A1 (en) Method for transforming behavioral architectural and verification specifications into cycle-based compliant specifications
WO2011074044A1 (ja) 集積回路の消費電力算出方法、消費電力算出プログラム及び消費電力算出装置
US11693461B1 (en) Module reset circuit, reset unit and SoC reset architecture
US20110191735A1 (en) Semiconductor verification apparatus, method and program
CN110688811B (zh) 一种随机权重可控的加速soc模块设计验证的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination