CN115293084A - 一种门级网表跨时钟域自动化分析方法及系统 - Google Patents
一种门级网表跨时钟域自动化分析方法及系统 Download PDFInfo
- Publication number
- CN115293084A CN115293084A CN202210759348.3A CN202210759348A CN115293084A CN 115293084 A CN115293084 A CN 115293084A CN 202210759348 A CN202210759348 A CN 202210759348A CN 115293084 A CN115293084 A CN 115293084A
- Authority
- CN
- China
- Prior art keywords
- clock
- clock domain
- register
- gate
- domain
- 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
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/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- 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/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- 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
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
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)
Abstract
一种门级网表跨时钟域自动化分析方法及系统,通过包括仿真库自动抽象模块、Verilog程序分析模块、门级网表时钟树和复位树推断模块、跨时钟域特征识别模块、违规显示模块,进行Verilog语言解析、仿真库自动抽象、门级网表时钟树推断、门级网表复位树推断、跨时钟域特征电路识别和违规显示步骤,能够通过静态分析的方法分析可编程逻辑设计门级网表的跨时钟域风险并且对设计缺陷进行精确定位,提高了可编程逻辑设计可靠性。
Description
技术领域
本发明涉及一种门级网表跨时钟域自动化分析方法及系统,属于FPGA或集成电路设计领域的跨时钟域分析领域。
背景技术
当前数字电路设计中通常都包含多个时钟域(平均4-7个时钟域),这些时钟要么从外部管脚直接引入,要么是主时钟在FPGA等数字电路芯片内部用RTL代码分频倍频或者直接使用FPGA芯片内部的PLL/DLL/DCM/CMT/MMCM等时钟管理组件进行分频倍频及移相。这些不同的时钟将作用于芯片内部不同功能区域,同时在不同的功能区域之间会有较多的控制信号以及数据信号的传输,如何保证高频率时钟域的信号完整、正确、及时地传递到低频率时钟域,这就需要设计人员在每个信号交叉处正确地添加同步电路。如果添加的同步电路不正确或者没有添加同步电路,那么就会导致信号亚稳态的问题,亚稳态问题在通常的功能仿真、静态时序仿真过程中很难被暴露出来,它将一直遗留在设计之中直至加载到FPGA器件中,器件运行时则会出现较频繁且难以理解的功能异常现象,导致设计人员不得不花大量时间进行问题定位和修复。利用CDC检查及修复建议技术则能够快速、自动、全面地检查RTL代码的结构,分析跨时钟域信号传递问题,设计者可以更早的定位、验证、修复设计中的CDC缺陷,加快项目进度,真正提高产品的可靠性。
门级逻辑电路是数字集成电路设计的最终工作形态,包含了整个设计的所有信息,将CDC分析的对象拓展到门级逻辑电路,能够针对设计最终结果确认设计正确性。
大规模数字集成电路设计按照抽象程度从高到低分为功能设计、算法级/微体系结构设计、寄存器传输级设计、门级设计和物理级设计。其中,门级设计是传统数字器件的主要设计层次,产物是大规模数字集成电路门级逻辑,包含设计所有的功能信息,也是可编程逻辑器件(FPGA、CPLD)承载的逻辑设计最终表示形式。
目前,针对可编程逻辑设计门级网表跨时钟域自动化分析方法国内外无相同方向专利和文章,但是存在相关专利和文章。
浪潮电子信息产业股份有限公司CN201510015597.1,公开一种基于亚稳态注入的跨时钟域逻辑ASIC验证系统及方法,其特征在于,其结构包括:单独模块化设计在片上系统的跨时钟域逻辑;参数化配置单元,实现对亚稳态信号以及同步逻辑的参数的灵活配置,所述的参数包括:跨时钟信号的触发时钟周期、相移,亚稳态信号错误阈值、随机化,同步寄存器的建立保持时间、初始化参数;同时该参数化配置单元集成的逻辑结构根据设定的参数值对跨时钟域逻辑进行有效的异步信号和逻辑因子调整;ASIC逻辑分析单元,通过分析ASIC逻辑中跨时钟域信号的传播,确定易发生逻辑错误的网络节点,把其列为功能验证关键节点,实现对跨时钟域逻辑信号的逻辑追踪;关键节点验证单元,验证的要素包括模块化的激励数据、验证结果、信号属性、断言,实现对跨时钟域信号的数据监测、结果记录;验证配套文件,将参数化配置单元、关键节点验证单元与片上系统的跨时钟域逻辑实现关联,并用于对跨时钟域逻辑进行嵌入式验证。
《面向模型检验的跨时钟域设计电路特性生成方法》公开了一种面向模型检验的跨时钟域设计电路特性生成方法,包对跨时钟域设计进行功能验证是SoC验证中的难点问题.传统的面向跨时钟域设计的模型检验方法并没有充分考虑电路特性描述的完整性问题,然而制订完整的电路特性是模型检验有效性的基础,不全面的电路特性描述将可能隐藏设计错误.为生成完整的描述跨时钟域设计的电路特性,本文首先提出基于有限状态自动机的电路特性生成方法;然后为缓解状态空间爆炸问题,提出基于亚稳态的数值化简策略.通过对两个典型的跨时钟域设计进行实验的结果表明,采用本文方法不仅能够达到100%的电路特性覆盖率,而且可以发现被传统方法隐藏的功能错误.同时模型检验的时间代价也能够得到大幅度降低。
综上所述,一方面,只有通过针对最终门级电路进行跨时钟域分析,才能够确定设计是否存在跨时钟域问题;另一方面,针对可编程逻辑设计门级网表跨时钟域自动化分析方法还处于空白。
发明内容
本发明解决的技术问题是:针对目前现有技术中,在代码设计阶段和产品出厂测试、试验环节均不易发现的跨时钟域问题,提出了一种门级网表跨时钟域自动化分析方法及系统。
本发明解决上述技术问题是通过如下技术方案予以实现的:
一种门级网表跨时钟域自动化分析方法,包括:
对仿真库文件进行抽象处理;
根据抽象处理结果获取门级网表设计结构;
对门级网表设计结构中的门级网表时钟树、复位树进行提取;
依据提取结果进行跨时钟域行为分析;
将分析结果与常用跨时钟域的故障模式、同步化模式信息进行匹配,获得设计的违规信息,对违规设计信息进行显示。
抽象处理的具体步骤如下:
加载可编程逻辑设计门级网表所设计器件的仿真库文件,分别针对Verilog、VHDL仿真库进行语言解析,将相应解析结果存入符号表,供后续跨时钟域自动化分析使用;
根据仿真库文件描述,提取出仿真库文件中对应各模块属性,针对寄存器驱动时钟、复位信号、使能信号、输出输入端口,根据逻辑组合进行确认,抽象处理仿真库中的基本元器件管脚;
根据基本元器件功能进行分类,存储基本元器件信息,通过语句特点识别基本元器件的设计端口,将输入端口、输出端口存入输入输出端口列表,根据层次结构对基本元器件进行标识,并通过基本元器件标识名称识别器件类型,提取寄存并存入寄存器列表,同时提取基本元器件中的逻辑组合器件存入逻辑连接列表,识别寄存器列表及逻辑连接列表外的器件,识别其他器件类型并将识别结果按照端口、寄存器、逻辑分类存入至对应列表中。
获取门级网表设计结构的具体步骤如下:
针对Verilog设计文件进行筛选,防止错误文件输入,对Verilog设计文件进行语法分析,建立模块映射模型,对Verilog设计文件中连接方式的表述进行确认,根据Verilog设计文件解析结果建立模块连接模型,用于表述端口与器件、器件与器件间的连接关系。
通过门级网表时钟树和复位树推断模块对门级网表的时钟树进行推断的具体步骤如下:
根据Verilog程序分析模块、仿真库自动抽象模块输出的数据结果,通过门级网表时钟树和复位树推断模块针对时钟树进行推断,遍历所有寄存器、锁存器的时钟管脚,应用存储的逻辑连接关系,追溯任意管脚能够连接的最末端,针对任意寄存器输入时钟管脚,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;
判定任意管脚末端信号的性质,若该管脚的终端为设计外部接口则该接口为一个时钟域的输入;若该终端为寄存器的输出端,追溯该寄存器的输入时钟;若该终端为半锁存器,舍弃该时钟路径;
将该终端的时钟域按照端口名称索引形成列表。
通过门级网表时钟树和复位树推断模块对门级网表的复位树进行推断的具体步骤如下:
遍历所有寄存器及锁存器的复位管脚,通过存储的逻辑连接关系列表,追溯任意管脚能够连接到的最末端,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;
判定末端信号的性质,若该终端为设计外部接口则认为该接口为一个复位信号控制的输入;若该终端为寄存器的输出端,追溯该寄存器的输入复位;若该终端为半锁存器,舍弃该复位路径;
将该终端的复位信号影响域按照端口名称索引形成列表。
使用跨时钟域特征识别模块对跨时钟域行为进行分析的具体方法为:
利用时钟树和复位树推断模块输出的数据,使用跨时钟域特征识别模块对跨时钟域行为进行分析,分析时钟域信号交叉,推断出寄存器所在时钟域与输入信号时钟域不相同的寄存器,以该寄存器的输入为初步预判的跨时钟域路径;
识别跨时钟域路径存在组合逻辑、第一级同步化器之后存在组合逻辑、跨时钟路径进行了正确优化处理后的特征电路;
记录检索特征电路路径,将违规路径进行存储。
所述特征电路具体为:
包括二级同步化电路、跨时钟域电路路径、跨时钟域同步化寄存器间路径组合逻辑电路,其中:
所述二级同步化电路包括3个寄存器,Clk1时钟域寄存器输入时钟域信号,经过2级寄存器以消除亚稳态影响,由最后一级时钟域寄存器获取,无逻辑组合,所述时钟域信号于Clk2时钟域经过两级寄存器同步化处理后使用,时钟域信号经过第一级同步化后为单bit信号。
所述跨时钟域电路路径具体为:
包括3个寄存器、组合逻辑门,时钟域信号产生后,由另一个时钟域寄存器获取,经过至少一级逻辑门,逻辑门存在逻辑组合,于Clk2时钟域经过至少两级时钟域寄存器同步化处理后输出。
所述跨时钟域同步化寄存器间路径组合逻辑电路包括:
3个寄存器、组合逻辑门,时钟域信号产生后,由另一个时钟域寄存器获取后输出至另一个时钟域寄存器,经过至少一级逻辑门,逻辑门存在逻辑组合,于Clk2时钟域经过至少两级时钟域寄存器同步化处理后输出。
一种门级网表跨时钟域自动化分析系统,包括仿真库自动抽象模块、Verilog程序分析模块、门级网表时钟树和复位树推断模块、跨时钟域特征识别模块、违规显示模块,其中:
仿真库自动抽象模块加载可编程逻辑设计门级网表所设计器件的仿真库文件,分别针对Verilog、VHDL仿真库进行语言解析,将相应解析结果存入符号表,供后续跨时钟域自动化分析使用;根据仿真库文件描述,提取出仿真库文件中对应各模块属性,针对寄存器驱动时钟、复位信号、使能信号、输出输入端口,根据逻辑组合进行确认,抽象处理仿真库中的基本元器件管脚;根据基本元器件功能进行分类,存储基本元器件信息,通过语句特点识别基本元器件的设计端口,将输入端口、输出端口存入输入输出端口列表,根据层次结构对基本元器件进行标识,并通过基本元器件标识名称识别器件类型,提取寄存并存入寄存器列表,同时提取基本元器件中的逻辑组合器件存入逻辑连接列表,识别寄存器列表及逻辑连接列表外的器件,识别其他器件类型并将识别结果按照端口、寄存器、逻辑分类存入至对应列表中;
Verilog程序分析模块针对Verilog设计文件进行筛选,防止错误文件输入,对Verilog设计文件进行语法分析,建立模块映射模型,对Verilog设计文件中连接方式的表述进行确认,根据Verilog设计文件解析结果建立模块连接模型,用于表述端口与器件、器件与器件间的连接关系;
门级网表时钟树和复位树推断模块根据Verilog程序分析模块、仿真库自动抽象模块输出的数据结果,通过门级网表时钟树和复位树推断模块针对时钟树进行推断,遍历所有寄存器、锁存器的时钟管脚,应用存储的逻辑连接关系,追溯任意管脚能够连接的最末端,针对任意寄存器输入时钟管脚,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;判定任意管脚末端信号的性质,若该管脚的终端为设计外部接口则该接口为一个时钟域的输入;若该终端为寄存器的输出端,追溯该寄存器的输入时钟;若该终端为半锁存器,舍弃该时钟路径;将该终端的时钟域按照端口名称索引形成列表;同时遍历所有寄存器及锁存器的复位管脚,通过存储的逻辑连接关系列表,追溯任意管脚能够连接到的最末端,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;判定末端信号的性质,若该终端为设计外部接口则认为该接口为一个复位信号控制的输入;若该终端为寄存器的输出端,追溯该寄存器的输入复位;若该终端为半锁存器,舍弃该复位路径;将该终端的复位信号影响域按照端口名称索引形成列表;
跨时钟域特征识别模块利用时钟树和复位树推断模块输出的数据,使用跨时钟域特征识别模块对跨时钟域行为进行分析,分析时钟域信号交叉,推断出寄存器所在时钟域与输入信号时钟域不相同的寄存器,以该寄存器的输入为初步预判的跨时钟域路径;识别跨时钟域路径存在组合逻辑、第一级同步化器之后存在组合逻辑、跨时钟路径进行了正确优化处理后的特征电路;记录检索特征电路路径,将违规路径进行存储;
违规显示模块对违规路径进行显示。
本发明与现有技术相比的优点在于:
(1)本发明提供的一种门级网表跨时钟域自动化分析方法及系统,能够检查使用传统的跨时钟域检查工具仅进行针对RTL代码的CDC检查无法发现跨时钟风险的问题。由于这些问题在代码设计阶段和产品出厂测试、试验环节均不易发现,本发明可以避免导致产品在应用时发生亚稳态传播造成设备工作异常产生严重后果;
(2)本发明通过门级网表跨时钟域二级同步化电路自动化分析方法,能够检查现有技术无法判定RTL设计跨时钟域同步化设计在综合布局布线后对同步化器进行了寄存器复制从而导致亚稳态采样窗口扩大问题,实现针对布局布线后RTL代码中设计的同步化器有效性检查;
(3)通过门级网表跨时钟域跨时钟域电路路径自动化分析方法,能够检查现有技术无法判定RTL代码中将状态机编码设置为one-hot模式状态机寄存器中某一位作为输出进行跨时钟域处理而综合后随着编码方式变为gray模式导致跨时钟域路径存在组合逻辑问题,实现针对布局布线后RTL代码中设计的跨时钟域电路路径判定;
(4)通过门级网表跨时钟域跨时钟域跨时钟域同步化寄存器间路径组合逻辑电路自动化分析方法,能够检查现有技术无法判定综合器的优化设置为retiming将沿判断逻辑由同步化器后挪到同步化器之前导致跨时钟错误处理错误问题,实现综合器优化选项导致跨时钟域失效情况检测。
附图说明
图1为发明提供的可编程逻辑设计门级网表跨时钟域自动化分析方法原理流程图;
图2为发明提供的仿真库自动抽象原理流程图;
图3为发明提供的门级网表时钟树推断原理流程图;
图4为发明提供的二级同步化电路示意图;
图5为发明提供的跨时钟域电路路径示意图;
图6为发明提供的跨时钟域同步化寄存器间路径组合逻辑电路示意图;
具体实施方式
一种门级网表跨时钟域自动化分析方法及系统,通过静态分析的方法分析可编程逻辑设计门级网表的跨时钟域风险并且对设计缺陷进行精确定位,提高了可编程逻辑设计可靠性,系统组成包括仿真库自动抽象模块、Verilog程序分析模块、门级网表时钟树和复位树推断模块、跨时钟域特征识别模块、违规显示模块,具体为:
仿真库自动抽象模块加载可编程逻辑设计门级网表所设计器件的仿真库文件,分别针对Verilog、VHDL仿真库进行语言解析,将相应解析结果存入符号表,供后续跨时钟域自动化分析使用;根据仿真库文件描述,提取出仿真库文件中对应各模块属性,针对寄存器驱动时钟、复位信号、使能信号、输出输入端口,根据逻辑组合进行确认,抽象处理仿真库中的基本元器件管脚;根据基本元器件功能进行分类,存储基本元器件信息,通过语句特点识别基本元器件的设计端口,将输入端口、输出端口存入输入输出端口列表,根据层次结构对基本元器件进行标识,并通过基本元器件标识名称识别器件类型,提取寄存并存入寄存器列表,同时提取基本元器件中的逻辑组合器件存入逻辑连接列表,识别寄存器列表及逻辑连接列表外的器件,识别其他器件类型并将识别结果按照端口、寄存器、逻辑分类存入至对应列表中;
Verilog程序分析模块针对Verilog设计文件进行筛选,防止错误文件输入,对Verilog设计文件进行语法分析,建立模块映射模型,对Verilog设计文件中连接方式的表述进行确认,根据Verilog设计文件解析结果建立模块连接模型,用于表述端口与器件、器件与器件间的连接关系;
门级网表时钟树和复位树推断模块根据Verilog程序分析模块、仿真库自动抽象模块输出的数据结果,通过门级网表时钟树和复位树推断模块针对时钟树进行推断,遍历所有寄存器、锁存器的时钟管脚,应用存储的逻辑连接关系,追溯任意管脚能够连接的最末端,针对任意寄存器输入时钟管脚,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;判定任意管脚末端信号的性质,若该管脚的终端为设计外部接口则该接口为一个时钟域的输入;若该终端为寄存器的输出端,追溯该寄存器的输入时钟;若该终端为半锁存器,舍弃该时钟路径;将该终端的时钟域按照端口名称索引形成列表;同时遍历所有寄存器及锁存器的复位管脚,通过存储的逻辑连接关系列表,追溯任意管脚能够连接到的最末端,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;判定末端信号的性质,若该终端为设计外部接口则认为该接口为一个复位信号控制的输入;若该终端为寄存器的输出端,追溯该寄存器的输入复位;若该终端为半锁存器,舍弃该复位路径;将该终端的复位信号影响域按照端口名称索引形成列表;
跨时钟域特征识别模块利用时钟树和复位树推断模块输出的数据,使用跨时钟域特征识别模块对跨时钟域行为进行分析,分析时钟域信号交叉,推断出寄存器所在时钟域与输入信号时钟域不相同的寄存器,以该寄存器的输入为初步预判的跨时钟域路径;识别跨时钟域路径存在组合逻辑、第一级同步化器之后存在组合逻辑、跨时钟路径进行了正确优化处理后的特征电路;记录检索特征电路路径,将违规路径进行存储;
违规显示模块对违规路径进行显示。
根据门级网表跨时钟域自动化分析系统,进行分析步骤如下:
(1)针对仿真库文件通过仿真库自动抽象模块对仿真库文件进行抽象处理;
抽象处理的具体步骤如下:
加载可编程逻辑设计门级网表所设计器件的仿真库文件,分别针对Verilog、VHDL仿真库进行语言解析,将相应解析结果存入符号表,供后续跨时钟域自动化分析使用;
根据仿真库文件描述,提取出仿真库文件中对应各模块属性,针对寄存器驱动时钟、复位信号、使能信号、输出输入端口,根据逻辑组合进行确认,抽象处理仿真库中的基本元器件管脚;
根据基本元器件功能进行分类,存储基本元器件信息,通过语句特点识别基本元器件的设计端口,将输入端口、输出端口存入输入输出端口列表,根据层次结构对基本元器件进行标识,并通过基本元器件标识名称识别器件类型,提取寄存并存入寄存器列表,同时提取基本元器件中的逻辑组合器件存入逻辑连接列表,识别寄存器列表及逻辑连接列表外的器件,识别其他器件类型并将识别结果按照端口、寄存器、逻辑分类存入至对应列表中;
(2)针对门级网表文件通过Verilog程序分析模块获取门级网表设计结构;
获取门级网表设计结构的具体步骤如下:
针对Verilog设计文件进行筛选,防止错误文件输入,对Verilog设计文件进行语法分析,建立模块映射模型,对Verilog设计文件中连接方式的表述进行确认,根据Verilog设计文件解析结果建立模块连接模型,用于表述端口与器件、器件与器件间的连接关系;
(3)对Verilog程序分析模块、仿真库自动抽象模块的输出结果,通过门级网表时钟树和复位树推断模块对门级网表的时钟树、复位树进行提取;
通过门级网表时钟树和复位树推断模块对门级网表的时钟树进行推断的具体步骤如下:
根据Verilog程序分析模块、仿真库自动抽象模块输出的数据结果,通过门级网表时钟树和复位树推断模块针对时钟树进行推断,遍历所有寄存器、锁存器的时钟管脚,应用存储的逻辑连接关系,追溯任意管脚能够连接的最末端,针对任意寄存器输入时钟管脚,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;
判定任意管脚末端信号的性质,若该管脚的终端为设计外部接口则该接口为一个时钟域的输入;若该终端为寄存器的输出端,追溯该寄存器的输入时钟;若该终端为半锁存器,舍弃该时钟路径;
将该终端的时钟域按照端口名称索引形成列表;
通过门级网表时钟树和复位树推断模块对门级网表的复位树进行推断的具体步骤如下:
遍历所有寄存器及锁存器的复位管脚,通过存储的逻辑连接关系列表,追溯任意管脚能够连接到的最末端,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;
判定末端信号的性质,若该终端为设计外部接口则认为该接口为一个复位信号控制的输入;若该终端为寄存器的输出端,追溯该寄存器的输入复位;若该终端为半锁存器,舍弃该复位路径;
将该终端的复位信号影响域按照端口名称索引形成列表;
(4)根据步骤(3)所得提取结果使用跨时钟域特征识别模块对跨时钟域行为进行分析;
使用跨时钟域特征识别模块对跨时钟域行为进行分析的具体方法为:
利用时钟树和复位树推断模块输出的数据,使用跨时钟域特征识别模块对跨时钟域行为进行分析,分析时钟域信号交叉,推断出寄存器所在时钟域与输入信号时钟域不相同的寄存器,以该寄存器的输入为初步预判的跨时钟域路径;
识别跨时钟域路径存在组合逻辑、第一级同步化器之后存在组合逻辑、跨时钟路径进行了正确优化处理后的特征电路;
记录检索特征电路路径,将违规路径进行存储;
特征电路具体为:
包括二级同步化电路、跨时钟域电路路径、跨时钟域同步化寄存器间路径组合逻辑电路,其中:
所述二级同步化电路包括3个寄存器,Clk1时钟域寄存器输入时钟域信号,经过2级寄存器以消除亚稳态影响,由最后一级时钟域寄存器获取,无逻辑组合,所述时钟域信号于Clk2时钟域经过两级寄存器同步化处理后使用,时钟域信号经过第一级同步化后为单bit信号;
跨时钟域电路路径具体为:
包括3个寄存器、组合逻辑门,时钟域信号产生后,由另一个时钟域寄存器获取,经过至少一级逻辑门,逻辑门存在逻辑组合,于Clk2时钟域经过至少两级时钟域寄存器同步化处理后输出;
跨时钟域同步化寄存器间路径组合逻辑电路包括:
3个寄存器、组合逻辑门,时钟域信号产生后,由另一个时钟域寄存器获取后输出至另一个时钟域寄存器,经过至少一级逻辑门,逻辑门存在逻辑组合,于Clk2时钟域经过至少两级时钟域寄存器同步化处理后输出;
(5)将分析结果与常用跨时钟域的故障模式、同步化模式进行匹配,获得设计的违规信息,通过违规显示模块针对违规设计信息进行显示。
下面根据具体实施例进行进一步说明:
在当前实施例中,门级网表跨时钟域自动化分析系统主要包括Verilog语言解析模块、仿真库自动抽象模块、门级网表时钟树和复位树推断模块、跨时钟域特征电路识别模块和违规显示模块。如图1所示,在跨时钟域分析之前,仿真库自动抽象模块为结构分析提供基本模块情况列表。在跨时钟域分析中,首先,针对门级网表文件(包括但是不限于Verilog语言描述)由Verilog程序分析模块进行连接方式方面的语言解析,语言解析结果存入符号表;其次,门级网表时钟树和复位树推断模块利用符号表和基本模块情况列表对门级网表的时钟树和复位树进行提取;再次,利用提取结果与常用跨时钟域故障模式和同步化模式进行匹配,从而获得设计的违规信息;最后,违规显示模块针将违规设计信息进行显示。
具体的,针对仿真库文件通过仿真库自动抽象模块对仿真库文件进行抽象,如图2所示,具体为:
首先,加载可编程逻辑设计门级网表所设计器件的仿真库文件,分别针对Verilog和VHDL库进行语言解析,将相应解析结果存入符号表,供后续跨时钟域自动化分析使用;
其次,根据库文件描述,提取出库文件各个模块的属性,针对寄存器驱动时钟、复位信号、使能信号和输出输入端口,针对逻辑组合确认收入输出端口,最终抽象仿真库中的基本元器件管脚;
最后,按照基本元件功能分类,元器件功能分为:逻辑组合、寄存器和其它基本器件,将器件信息存入信息列表。通过语句特点识别设计的端口,将输入端口和输出端口存入输入输出端口列表,器件按照层次结构进行标识从顶层到底层的命名规则为各个模块用“:”符号分隔,模块和寄存器名用“.”分隔。通过器件名称识别器件类型,提取其中的寄存存入寄存器列表,提取其中的逻辑组合器件存入逻辑连接列表。识别出了寄存器和逻辑之外的器件表,识别其他器件类型进行分类例如DCM、PLL、DDR IP核等,将识别结果按照端口、寄存器和逻辑分类存入到各自列表中。
针对Verilog表示的门级网表文件,利用Verilog程序分析模块获取门级网表设计结构,具体为:
首先,针对Verilog设计文件筛选,防止错误文件输入导致程序崩溃;其次,针对Verilog设计文件进行语法分析,建立模块映射模型,主要关注设计针对连接方式的表述,针对语言其它的特性解析忽略;最后,按照解析结果,建立模块连接模型,即端口与器件和器件与器件之间的连接关系;
综合Verilog程序分析模块和仿真库自动抽象模块的数据结果,使用门级网表时钟树和复位树推断模块。针对时钟树推断如图3所示,具体为:
首先,遍历所有寄存器和锁存器的时钟管脚,并且应用存储的逻辑连接关系,追溯该管脚能够连接到的最末端,例如针对某一寄存器输入时钟管脚,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止。
其次,判定末端信号的性质,如果该终端为设计外部接口则认为该接口为一个时钟域的输入;如果该信号为寄存器的输出端,继续追溯该寄存器的输入时钟;如果该信号为半锁存器,舍弃该时钟路径。
最后,将时钟域按照端口名称索引形成列表,供后续分析查询。
针对复位树推断步骤与时钟树推断类似,具体为:
首先,遍历所有寄存器和锁存器的复位管脚,并且应用存储的逻辑连接关系,追溯该管脚能够连接到的最末端,例如针对某一寄存器输入复位管脚,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止。
其次,判定末端信号的性质,如果该终端为设计外部接口则认为该接口为一个复位信号控制的输入;如果该信号为寄存器的输出端,继续追溯该寄存器的输入复位;如果该信号为半锁存器,舍弃该复位路径。
最后,将复位信号影响域按照端口名称索引形成列表,供后续分析查询;
利用时钟树和复位树推断数据,使用跨时钟域特征识别模块对跨时钟域行为进行分析,具体为:
首先,分析时钟域信号交叉,推断出寄存器所在时钟域与输入信号时钟域不相同的寄存器,该寄存器的输入为初步预判的跨时钟域路径。
其次,识别跨时钟域路径存在组合逻辑、第一级同步化器之后存在组合逻辑、和跨时钟路径进行了正确的化处理等特征电路。具体特征如下:
如图4所示,典型的二级同步化电路由3个寄存器组成,由Clk1时钟域寄存器出发,跨越CLK1和CLK2时钟域的信号经过至少两级连续寄存器,有效消除亚稳态影响。其电路特征为三点,首先,存在一路跨时钟域信号,由一个时钟域产生,被另外一个时钟域寄存器获取;其次,该路信号为单线传输,不存在逻辑组合;最后,该信号在目标时钟域(Clk2时钟域)经过了至少两级同步化处理后使用,且第一级同步化后为单bit信号。
如图5所示,典型的跨时钟域路径存在组合逻辑电路由三个寄存器和一个组合逻辑门组成,跨越异步时钟域CLk1和CLk2的信号经过了组合逻辑,会增加亚稳态风险。其电路特征为以下三点:首先,存在跨越两个时钟域的路径,由一个时钟域产生,被另外一个时钟域寄存器获取;其次,该路信号要经过至少一级逻辑门,存在逻辑组合;最后,该信号在目标时钟域(Clk2时钟域)经过了至少两级同步化处理后使用。
如图6所示,典型的跨时钟域同步化寄存器间路径组合逻辑电路由三个寄存器和一个组合逻辑门组成,跨越异步时钟域CLk1和CLk2的信号经过了组合逻辑,会增加亚稳态风险。其电路特征为以下三点:首先,存在跨越两个时钟域的路径,由一个时钟域产生,被另外一个时钟域寄存器获取;其次,第一级和第二级同步化路径存在逻辑组合;最后,两级同步化器均在目标时钟域(Clk2时钟域)。
最后,记录检索特征电路路径,将违规路径进行存储。
并通过违规显示模块对违规路径和违规方式进行显示。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
本发明说明书中未作详细描述的内容属于本领域技术人员的公知技术。
Claims (10)
1.一种门级网表跨时钟域自动化分析方法,其特征在于包括:
对仿真库文件进行抽象处理;
根据抽象处理结果获取门级网表设计结构;
对门级网表设计结构中的门级网表时钟树、复位树进行提取;
依据提取结果进行跨时钟域行为分析;
将分析结果与常用跨时钟域的故障模式、同步化模式信息进行匹配,获得设计的违规信息,对违规设计信息进行显示。
2.根据权利要求1所述的一种门级网表跨时钟域自动化分析方法,其特征在于:
抽象处理的具体步骤如下:
加载可编程逻辑设计门级网表所设计器件的仿真库文件,分别针对Verilog、VHDL仿真库进行语言解析,将相应解析结果存入符号表,供后续跨时钟域自动化分析使用;
根据仿真库文件描述,提取出仿真库文件中对应各模块属性,针对寄存器驱动时钟、复位信号、使能信号、输出输入端口,根据逻辑组合进行确认,抽象处理仿真库中的基本元器件管脚;
根据基本元器件功能进行分类,存储基本元器件信息,通过语句特点识别基本元器件的设计端口,将输入端口、输出端口存入输入输出端口列表,根据层次结构对基本元器件进行标识,并通过基本元器件标识名称识别器件类型,提取寄存并存入寄存器列表,同时提取基本元器件中的逻辑组合器件存入逻辑连接列表,识别寄存器列表及逻辑连接列表外的器件,识别其他器件类型并将识别结果按照端口、寄存器、逻辑分类存入至对应列表中。
3.根据权利要求2所述的一种门级网表跨时钟域自动化分析方法,其特征在于:
获取门级网表设计结构的具体步骤如下:
针对Verilog设计文件进行筛选,防止错误文件输入,对Verilog设计文件进行语法分析,建立模块映射模型,对Verilog设计文件中连接方式的表述进行确认,根据Verilog设计文件解析结果建立模块连接模型,用于表述端口与器件、器件与器件间的连接关系。
4.根据权利要求3所述的一种门级网表跨时钟域自动化分析方法,其特征在于:
通过门级网表时钟树和复位树推断模块对门级网表的时钟树进行推断的具体步骤如下:
根据Verilog程序分析模块、仿真库自动抽象模块输出的数据结果,通过门级网表时钟树和复位树推断模块针对时钟树进行推断,遍历所有寄存器、锁存器的时钟管脚,应用存储的逻辑连接关系,追溯任意管脚能够连接的最末端,针对任意寄存器输入时钟管脚,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;
判定任意管脚末端信号的性质,若该管脚的终端为设计外部接口则该接口为一个时钟域的输入;若该终端为寄存器的输出端,追溯该寄存器的输入时钟;若该终端为半锁存器,舍弃该时钟路径;
将该终端的时钟域按照端口名称索引形成列表。
5.根据权利要求4所述的一种门级网表跨时钟域自动化分析方法,其特征在于:
通过门级网表时钟树和复位树推断模块对门级网表的复位树进行推断的具体步骤如下:
遍历所有寄存器及锁存器的复位管脚,通过存储的逻辑连接关系列表,追溯任意管脚能够连接到的最末端,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;
判定末端信号的性质,若该终端为设计外部接口则认为该接口为一个复位信号控制的输入;若该终端为寄存器的输出端,追溯该寄存器的输入复位;若该终端为半锁存器,舍弃该复位路径;
将该终端的复位信号影响域按照端口名称索引形成列表。
6.根据权利要求5所述的一种门级网表跨时钟域自动化分析方法,其特征在于:
使用跨时钟域特征识别模块对跨时钟域行为进行分析的具体方法为:
利用时钟树和复位树推断模块输出的数据,使用跨时钟域特征识别模块对跨时钟域行为进行分析,分析时钟域信号交叉,推断出寄存器所在时钟域与输入信号时钟域不相同的寄存器,以该寄存器的输入为初步预判的跨时钟域路径;
识别跨时钟域路径存在组合逻辑、第一级同步化器之后存在组合逻辑、跨时钟路径进行了正确优化处理后的特征电路;
记录检索特征电路路径,将违规路径进行存储。
7.根据权利要求6所述的一种门级网表跨时钟域自动化分析方法,其特征在于:
所述特征电路具体为:
包括二级同步化电路、跨时钟域电路路径、跨时钟域同步化寄存器间路径组合逻辑电路,其中:
所述二级同步化电路包括3个寄存器,Clk1时钟域寄存器输入时钟域信号,经过2级寄存器以消除亚稳态影响,由最后一级时钟域寄存器获取,无逻辑组合,所述时钟域信号于Clk2时钟域经过两级寄存器同步化处理后使用,时钟域信号经过第一级同步化后为单bit信号。
8.根据权利要求7所述的一种门级网表跨时钟域自动化分析方法,其特征在于:
所述跨时钟域电路路径具体为:
包括3个寄存器、组合逻辑门,时钟域信号产生后,由另一个时钟域寄存器获取,经过至少一级逻辑门,逻辑门存在逻辑组合,于Clk2时钟域经过至少两级时钟域寄存器同步化处理后输出。
9.根据权利要求8所述的一种门级网表跨时钟域自动化分析方法,其特征在于:
所述跨时钟域同步化寄存器间路径组合逻辑电路包括:
3个寄存器、组合逻辑门,时钟域信号产生后,由另一个时钟域寄存器获取后输出至另一个时钟域寄存器,经过至少一级逻辑门,逻辑门存在逻辑组合,于Clk2时钟域经过至少两级时钟域寄存器同步化处理后输出。
10.一种根据权利要求9所述的门级网表跨时钟域自动化分析系统,其特征在于:
包括仿真库自动抽象模块、Verilog程序分析模块、门级网表时钟树和复位树推断模块、跨时钟域特征识别模块、违规显示模块,其中:
仿真库自动抽象模块加载可编程逻辑设计门级网表所设计器件的仿真库文件,分别针对Verilog、VHDL仿真库进行语言解析,将相应解析结果存入符号表,供后续跨时钟域自动化分析使用;根据仿真库文件描述,提取出仿真库文件中对应各模块属性,针对寄存器驱动时钟、复位信号、使能信号、输出输入端口,根据逻辑组合进行确认,抽象处理仿真库中的基本元器件管脚;根据基本元器件功能进行分类,存储基本元器件信息,通过语句特点识别基本元器件的设计端口,将输入端口、输出端口存入输入输出端口列表,根据层次结构对基本元器件进行标识,并通过基本元器件标识名称识别器件类型,提取寄存并存入寄存器列表,同时提取基本元器件中的逻辑组合器件存入逻辑连接列表,识别寄存器列表及逻辑连接列表外的器件,识别其他器件类型并将识别结果按照端口、寄存器、逻辑分类存入至对应列表中;
Verilog程序分析模块针对Verilog设计文件进行筛选,防止错误文件输入,对Verilog设计文件进行语法分析,建立模块映射模型,对Verilog设计文件中连接方式的表述进行确认,根据Verilog设计文件解析结果建立模块连接模型,用于表述端口与器件、器件与器件间的连接关系;
门级网表时钟树和复位树推断模块根据Verilog程序分析模块、仿真库自动抽象模块输出的数据结果,通过门级网表时钟树和复位树推断模块针对时钟树进行推断,遍历所有寄存器、锁存器的时钟管脚,应用存储的逻辑连接关系,追溯任意管脚能够连接的最末端,针对任意寄存器输入时钟管脚,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;判定任意管脚末端信号的性质,若该管脚的终端为设计外部接口则该接口为一个时钟域的输入;若该终端为寄存器的输出端,追溯该寄存器的输入时钟;若该终端为半锁存器,舍弃该时钟路径;将该终端的时钟域按照端口名称索引形成列表;同时遍历所有寄存器及锁存器的复位管脚,通过存储的逻辑连接关系列表,追溯任意管脚能够连接到的最末端,通过查询连接表的方式,获取时钟输入相关路径,直至到达相关的输入端口或者寄存器输出端口为止;判定末端信号的性质,若该终端为设计外部接口则认为该接口为一个复位信号控制的输入;若该终端为寄存器的输出端,追溯该寄存器的输入复位;若该终端为半锁存器,舍弃该复位路径;将该终端的复位信号影响域按照端口名称索引形成列表;
跨时钟域特征识别模块利用时钟树和复位树推断模块输出的数据,使用跨时钟域特征识别模块对跨时钟域行为进行分析,分析时钟域信号交叉,推断出寄存器所在时钟域与输入信号时钟域不相同的寄存器,以该寄存器的输入为初步预判的跨时钟域路径;识别跨时钟域路径存在组合逻辑、第一级同步化器之后存在组合逻辑、跨时钟路径进行了正确优化处理后的特征电路;记录检索特征电路路径,将违规路径进行存储;
违规显示模块对违规路径进行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210759348.3A CN115293084A (zh) | 2022-06-29 | 2022-06-29 | 一种门级网表跨时钟域自动化分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210759348.3A CN115293084A (zh) | 2022-06-29 | 2022-06-29 | 一种门级网表跨时钟域自动化分析方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115293084A true CN115293084A (zh) | 2022-11-04 |
Family
ID=83821722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210759348.3A Pending CN115293084A (zh) | 2022-06-29 | 2022-06-29 | 一种门级网表跨时钟域自动化分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115293084A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115862052A (zh) * | 2023-02-24 | 2023-03-28 | 北京芯愿景软件技术股份有限公司 | 一种自动识别跨时钟电路的方法、装置、设备及存储介质 |
CN116306415A (zh) * | 2022-12-30 | 2023-06-23 | 芯耀辉科技有限公司 | 静态时序分析方法及其系统 |
CN116502578A (zh) * | 2023-06-29 | 2023-07-28 | 深圳国微晶锐技术有限公司 | 网表化简时序模型的构建方法及静态时序分析方法 |
CN118260143A (zh) * | 2024-05-30 | 2024-06-28 | 成都迪真计算机科技有限公司 | 一种fpga跨时钟分析检测方法 |
-
2022
- 2022-06-29 CN CN202210759348.3A patent/CN115293084A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116306415A (zh) * | 2022-12-30 | 2023-06-23 | 芯耀辉科技有限公司 | 静态时序分析方法及其系统 |
CN116306415B (zh) * | 2022-12-30 | 2023-10-20 | 芯耀辉科技有限公司 | 静态时序分析方法及其系统 |
CN115862052A (zh) * | 2023-02-24 | 2023-03-28 | 北京芯愿景软件技术股份有限公司 | 一种自动识别跨时钟电路的方法、装置、设备及存储介质 |
CN116502578A (zh) * | 2023-06-29 | 2023-07-28 | 深圳国微晶锐技术有限公司 | 网表化简时序模型的构建方法及静态时序分析方法 |
CN116502578B (zh) * | 2023-06-29 | 2024-04-16 | 深圳国微晶锐技术有限公司 | 网表化简时序模型的构建方法及静态时序分析方法 |
CN118260143A (zh) * | 2024-05-30 | 2024-06-28 | 成都迪真计算机科技有限公司 | 一种fpga跨时钟分析检测方法 |
CN118260143B (zh) * | 2024-05-30 | 2024-08-09 | 成都迪真计算机科技有限公司 | 一种fpga跨时钟分析检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115293084A (zh) | 一种门级网表跨时钟域自动化分析方法及系统 | |
Huang et al. | Formal equivalence checking and design debugging | |
US6964028B2 (en) | Method of simultaneously displaying schematic and timing data | |
US6148436A (en) | System and method for automatic generation of gate-level descriptions from table-based descriptions for electronic design automation | |
US20030125920A1 (en) | LSI design verification apparatus, LSI design verification method, and LSI design verification program | |
US20080008021A1 (en) | Method for recognizing and verifying fifo structures in integrated circuit designs | |
US7437701B1 (en) | Simulation of a programming language specification of a circuit design | |
JPH11328251A (ja) | モデル検査のための動作環境を自動的に生成する方法 | |
US20030221173A1 (en) | Method and apparatus for detecting connectivity conditions in a netlist database | |
US7194715B2 (en) | Method and system for performing static timing analysis on digital electronic circuits | |
JP4142176B2 (ja) | インタフェース仕様定義を記録した記憶媒体、及び接続検証方法、及び信号パタン生成方法 | |
US7237208B1 (en) | Managing formal verification complexity of designs with datapaths | |
CN117350208A (zh) | 时序逻辑元件性能检查方法及设备 | |
US10460060B2 (en) | Checking equivalence between changes made in a circuit definition language and changes in post-synthesis nets | |
US8943457B2 (en) | Simulating scan tests with reduced resources | |
US20050229127A1 (en) | Method for verifying adequate synchronisation of signals that cross clock environments and system | |
JP2917969B2 (ja) | 論理等価性検証方法および論理等価性検証装置 | |
US8156395B2 (en) | Methods for generating test patterns for sequential circuits | |
Sharma et al. | An automation methodology for amelioration of SpyGlassCDC abstract view generation process | |
Beerel et al. | Automatic synthesis of gate-level speed-independent circuits | |
US20020126581A1 (en) | Method of analyzing clock skew between signals | |
JP3171236B2 (ja) | 入力端子競合パターン検出システム | |
CN118260143B (zh) | 一种fpga跨时钟分析检测方法 | |
Torroja et al. | ARDID: A Tool for the Quality Analysis of VHDL based Designs | |
Plassan et al. | Improving the efficiency of formal verification: the case of clock-domain crossings |
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 |