CN110941932B - 一种面向硬件逻辑设计的需求建模与验证方法 - Google Patents

一种面向硬件逻辑设计的需求建模与验证方法 Download PDF

Info

Publication number
CN110941932B
CN110941932B CN201911200553.0A CN201911200553A CN110941932B CN 110941932 B CN110941932 B CN 110941932B CN 201911200553 A CN201911200553 A CN 201911200553A CN 110941932 B CN110941932 B CN 110941932B
Authority
CN
China
Prior art keywords
module
logic
instantiation
modules
port
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.)
Active
Application number
CN201911200553.0A
Other languages
English (en)
Other versions
CN110941932A (zh
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.)
Dalian University of Technology
Original Assignee
Dalian University of Technology
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 Dalian University of Technology filed Critical Dalian University of Technology
Priority to CN201911200553.0A priority Critical patent/CN110941932B/zh
Publication of CN110941932A publication Critical patent/CN110941932A/zh
Application granted granted Critical
Publication of CN110941932B publication Critical patent/CN110941932B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种面向硬件逻辑设计的需求建模与验证方法,包括步骤1:获取需求分析阶段划分的功能模块,并将所述功能模块代码填入对应样式的表格中;步骤2:分析填充的、以多样式描述不同功能Verilog HDL语句的表格,记录同模块间表格的嵌套关系和不同模块间端口的实例化关系;步骤3:对代码进行语法和逻辑审查;步骤4:由模块代码生成保存时序运行逻辑的文档;步骤5:在不同的时钟沿调用时序运行逻辑的文档,使用表格显示对不同时钟沿时刻代码所处的逻辑分支的具体位置;步骤6:对验证逻辑正确后的所述代码进行整合操作,生成表格填充对应的Verilog HDL代码框架。该方法能以简单的填充表格方式,自动对逻辑进行验证,达到事前验证的效果。

Description

一种面向硬件逻辑设计的需求建模与验证方法
技术领域
本发明属于集成电路验证技术领域,具体说是一种面向硬件逻辑设计的需求建模与验证方法。
背景技术
对于日趋复杂的集成电路,任何细小的设计错误都可能导致电路的瘫痪。通过验证工作可以发现集成电路设计过程中的缺陷,减小设计错误出现的可能性。目前针对集成电路的验证主要分为形式化验证和仿真验证。形式化验证使用数学定理验证集成电路设计阶段代码功能的一致性,采用穷举的方法对所有可能的结果进行完备的搜索。仿真验证需将激励信号输入到待检验系统中,通过仿真反馈的结果验证电路功能的正确性。
以上列出的两种集成电路的验证方法,都是针对RTL级以上的电路,因为RTL级以上的代码具有可综合性,代码的完备性可保证其验证结果的全面性。但是,这两种方法都受限于模型需要具备可综合特性的缺点,不能满足需求分析阶段工作的验证。在开发的前期阶段,其更容易发现错误并进行重新验证。若未能验证电路设计前期的缺陷,会对自顶向下验证工作造成困难,使电路设计周期大大增长。
发明内容
本申请针对目前集成电路在设计过程中,不能在需求分析阶段进行验证的缺陷,提供一种面向硬件逻辑设计的需求建模与验证方法,该方法能以简单的填充表格方式,自动对逻辑进行验证,达到事前验证的效果。
为实现上述目的,本申请的技术方案为:一种面向硬件逻辑设计的需求建模与验证方法,采取的技术方案如下:
步骤1:获取需求分析阶段划分的功能模块,并将所述功能模块代码填入对应样式的表格中;
步骤2:分析填充的、以多样式描述不同功能Verilog HDL语句的表格,记录同模块间表格的嵌套关系和不同模块间端口的实例化关系;
步骤3:根据Verilog HDL语法规则,对代码进行语法和逻辑审查,以免出现不完整的语句、未定义的变量、例化端口位宽不一致的设计遗漏;
步骤4:根据模块实例化关系,由模块代码生成保存时序运行逻辑的文档;
步骤5:在不同的时钟沿调用时序运行逻辑的文档,使用表格显示对不同时钟沿时刻代码所处的逻辑分支的具体位置;
步骤6:对验证逻辑正确后的所述代码进行整合操作,生成表格填充对应的Verilog HDL代码框架。
进一步的,步骤1的具体实现方法为:所述表格包括端口变量列表、顶层模块表格、例化模块表格、嵌套模块表格;所述端口变量列表,模块中所有的端口变量和定义变量都要声明在此列表;所述的顶层模块表格,用于描述顶层模块的功能,是所有模块的入口,顶层模块与例化模块相连;所述的例化模块表格,用于描述子模块的功能,例化模块再与子例化模块相连;所述的嵌套模块表格,用于描述功能复杂模块的子分支,嵌套在当前模块中,避免逻辑混乱。
进一步的,步骤2的具体实现方法为:
步骤2.1,若填充端口变量列表,首先设置列表中第一行的一列作为标识列,此标识列中每行的数值决定此行的端口或变量是否需进行例化;若单元格的内容填充值为Y,则属于例化端口或变量,若单元格内容为N,则不属于例化端口和变量;
步骤2.2,所有模块表格用相应的模块名进行表示,若是顶层模块和例化模块则直接命名,若是嵌套模块则采用主模块名_嵌套模块的命名方式。
进一步的,步骤3的具体实现方法为:
步骤3.1,从所述端口变量列表中查找变量并记录类型,根据Verilog HDL语法规则在对应模块表中进行搜索,输出不符合语法规则的审查结果;
步骤3.2,所述的模块表格中,若存在if分支,则使用N-S图形式,强制填写T和F分支;若存在case分支,则默认最后一个条件为default,防止出现锁存器的问题;
进一步的,步骤4的具体实现方法为:
步骤4.1,根据端口变量列表的例化端口来反推各模块间的例化关系,生成以顶层模块为首的自顶向下的模块间例化关系;
步骤4.2,将同一模块的所有表格数据进行封装,使模块代码结构顺序化;
步骤4.3,根据步骤4.1的例化关系和步骤4.2的封装数据,生成保存模块间时序运行逻辑的文档。
进一步的,步骤5的具体实现方法为:在不同的时钟沿调用步骤4.3生成的模块间时序运行逻辑文档,根据不同时钟沿时刻代码所处的逻辑分支,在相应单个表格或多个表格中高亮显示,对不同时钟沿时刻代码逻辑分支走向进行直观显示与预判。
进一步的,步骤6的具体实现方法为:根据Verilog HDL语法规则,对验证逻辑正确后的表格以及模块间例化关系,进行整合操作,建立一个与表格填充内容对应的VerilogHDL代码,得到满足需求分析阶段设计的代码框架。
本发明利用表格填充的方式,首先将需求分析阶段划分的功能模块代码填入表格,得到端口、变量、模块间例化的关系,采用表格高亮形式显示模块间代码运行逻辑的分支走向,判定不同时钟沿时刻分支的走向是否符合预期或是否存在未覆盖到的分支。通过所述方法使模块内部逻辑更清晰,代码分支走向展现更直观,可以有效检验模型思维的准确性。
本发明在需求分析阶段进行集成电路设计的逻辑验证,用户仅需要按照VerilogHDL代码规范对表格内容进行填充,可直观展现模块间端口的调用关系,代码运行的逻辑顺序,有效避免语法缺陷影响验证的结果。同时,本发明中表格填充的内容只需是满足设计规则的逻辑代码框架,无需是全部功能逻辑代码,这种方法能有效简化开发和繁琐的调试。由于事前验证可以在开发早期发现设计缺陷,以便及时修改缺陷并重新验证,可以极大的缩短电路设计周期。
附图说明
图1是表格填充Verilog HDL进行逻辑验证的流程示意图。
图2是本实施例顶层模块端口变量表填充示意图。
图3是本实施例顶层模块表格填充示意图。
图4是本实施例例化模块表格填充示意图。
图5是本实施例例化模块嵌套表格填充示意图。
图6是语法审查流程示意图。
图7是本实施例代码逻辑分支走向示意图。
具体实施方式
下面参照附图,对本发明的具体实施方式进行详细叙述。所述实施例仅为本发明的一部分实施例,而不是全部的实施例。
一种面向硬件逻辑设计的需求建模与验证方法,如图1所示,详细实施步骤如下:
11,获取需求分析阶段划分的功能模块,并将所述模块代码填入对应样式的表格中。本实施例为串口通信控制器的设计,功能模块由顶层模块、接收模块和发送模块三个模块构成。
12,分析填充的、以多样式描述不同功能Verilog HDL语句的表格,记录同模块间表格的嵌套关系和不同模块间端口的实例化关系。
顶层模块的部分端口变量列表参照图2,模块中的变量包括端口、中间变量和参数。模块端口需要指明方向,包括input、output、inout三种方向;中间变量和参数不需要指明方向,用“/”表示。标识列为“是否例化”,此标识列中每行的数值决定此行的端口或变量是否需进行例化。若单元格的填充内容为Y,则属于例化端口或变量,若单元格内容为N,则不属于例化端口和变量。若是例化的端口或变量需填写对应的例化模块名以及对应例化模块中的对应端口名;如不是例化的端口和变量则不需要继续填写。
顶层模块的部分代码表格参照图3,第一行需要设定模块的名称,用于标识唯一的模块。“posedge clk”用于标识每个always块,遇到下一个“posedge clk”标识或assign语句截止,中间填写的表格内容为每个always块对应的内部代码逻辑。Verilog HDL语言是并行执行,每个always块和assign语句的顺序不需要固定。
如图4、5所示,填充例化模块表格,描述模块的功能。本实施例是顶层模块对发送模块进行例化。所述的所有模块表格用相应的模块名进行表示,若是顶层模块和例化模块则直接命名,若是嵌套模块则采用主模块名_嵌套模块的命名方式,并将嵌套模块名填写在主模块中需嵌套表格的单元格中。
13,根据Verilog HDL语法规则,对代码进行语法和逻辑审查,以免出现不完整的语句、未定义的变量、例化端口位宽不一致的设计遗漏。
图6为语法审查流程图,读取端口变量列表,检验例化端口或变量位宽大小是否一致,避免出现截位现象;若存在if或case分支,则检查else分支或default分支是否填写完整,防止出现锁存器的问题;记录端口变量列表中的端口或变量,扫描每个模块的主模块表格和嵌套模块表格,若存在未定义的变量,参考图3,本实施例中button变量并未在图2端口变量列表中列出,则指出其所在的单元格的位置。
14,根据模块实例化关系,由模块代码生成保存时序运行逻辑的文档。
根据端口变量列表的例化端口来反推各模块间的例化关系,生成以顶层模块为首的自顶向下的模块间例化关系。本实例中顶层模块为uarttop,例化模块为portx,例化模块portx的运行入口为顶层模块uarttop。将同一模块的所有表格数据进行封装,本实例图2、3所示表格为同一模块,图4、5所示表格为同一模块,使模块代码结构顺序化。读取封装数据,结合Verilog HDL语法规则和模块间例化关系,生成保存模块间时序运行逻辑的文档。
15,在不同的时钟沿调用时序运行逻辑的文档,使用表格显示对不同时钟沿时刻代码所处的逻辑分支的具体位置。
在不同的时钟沿调S14生成的模块间时序运行逻辑文档,根据不同时钟沿时刻代码所处的逻辑分支,在相应单个表格或多个表格中高亮显示,对不同时钟沿时刻代码逻辑分支走向进行直观显示与预判。本实例在当前时钟沿时刻代码逻辑的分支走向参考图7中粗框线所示,直观展现了代码分支走向。
16,对验证逻辑正确后的代码进行整合操作,生成表格填充对应的Verilog HDL代码框架。
根据Verilog HDL语法规则,对验证逻辑正确后的表格以及模块间例化关系,进行整合操作,建立一个与表格填充内容对应的Verilog HDL代码,得到满足需求分析阶段设计的代码框架。
本申请方法需要的操作系统为内存8G以上及CPU 4核以上。
以上所述实例仅为本发明的优选实施例,并非因此限定本发明。基于本发明的设计思想和基础上修改与变化做同等替换,均属于本发明专利保护范围。

Claims (6)

1.一种面向硬件逻辑设计的需求建模与验证方法,其特征在于,包括如下步骤:
步骤1:获取需求分析阶段划分的功能模块,并将所述功能模块代码填入对应样式的表格中;
所述表格包括端口变量列表、顶层模块表格、例化模块表格、嵌套模块表格;所述端口变量列表,模块中所有的端口变量和定义变量都要声明在此列表;所述的顶层模块表格,用于描述顶层模块的功能,是所有模块的入口,顶层模块与例化模块相连;所述的例化模块表格,用于描述子模块的功能,例化模块再与子例化模块相连;所述的嵌套模块表格,用于描述功能复杂模块的子分支,嵌套在当前模块中;
步骤2:分析填充的、以多样式描述不同功能Verilog HDL语句的表格,记录同模块间表格的嵌套关系和不同模块间端口的实例化关系;
步骤3:根据Verilog HDL语法规则,对代码进行语法和逻辑审查;
步骤4:根据模块实例化关系,由模块代码生成保存时序运行逻辑的文档;
步骤5:在不同的时钟沿下调用时序运行逻辑的文档,使用表格显示对不同时钟沿时刻代码所处的逻辑分支的具体位置;
步骤6:对验证逻辑正确后的所述代码进行整合操作,生成表格填充对应的VerilogHDL代码框架。
2.根据权利要求1所述一种面向硬件逻辑设计的需求建模与验证方法,其特征在于,步骤2的具体实现方法为:
步骤2.1,若填充端口变量列表,首先设置列表中第一行的一列作为标识列,此标识列中每行的数值决定此行的端口或变量是否需进行例化;若单元格的内容填充值为Y,则属于例化端口或变量,若单元格内容为N,则不属于例化端口和变量;
步骤2.2,所有模块表格用相应的模块名进行表示,若是顶层模块和例化模块则直接命名,若是嵌套模块则采用主模块名_嵌套模块的命名方式。
3.根据权利要求2所述一种面向硬件逻辑设计的需求建模与验证方法,其特征在于,步骤3的具体实现方法为:
步骤3.1,从所述端口变量列表中查找变量并记录类型,根据Verilog HDL语法规则在对应模块表中进行搜索,输出不符合语法规则的审查结果;
步骤3.2,所述的模块表格中,若存在if分支,则使用N-S图形式,强制填写T和F分支;若存在case分支,则默认最后一个条件为default。
4.根据权利要求3所述一种面向硬件逻辑设计的需求建模与验证方法,其特征在于,步骤4的具体实现方法为:
步骤4.1,根据端口变量列表的例化端口来反推各模块间的例化关系,生成以顶层模块为首的自顶向下的模块间例化关系;
步骤4.2,将同一模块的所有表格数据进行封装,使模块代码结构顺序化;
步骤4.3,根据步骤4.1的例化关系和步骤4.2的封装数据,生成保存模块间时序运行逻辑的文档。
5.根据权利要求4所述一种面向硬件逻辑设计的需求建模与验证方法,其特征在于,步骤5的具体实现方法为:在不同的时钟沿调用步骤4.3生成的模块间时序运行逻辑文档,根据不同时钟沿时刻代码所处的逻辑分支,在相应单个表格或多个表格中高亮显示,对不同时钟沿时刻代码逻辑分支走向进行直观显示与预判。
6.根据权利要求5所述一种面向硬件逻辑设计的需求建模与验证方法,其特征在于,步骤6的具体实现方法为:根据Verilog HDL语法规则,对验证逻辑正确后的表格以及模块间例化关系,进行整合操作,建立一个与表格填充内容对应的Verilog HDL代码,得到满足需求分析阶段设计的代码框架。
CN201911200553.0A 2019-11-29 2019-11-29 一种面向硬件逻辑设计的需求建模与验证方法 Active CN110941932B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911200553.0A CN110941932B (zh) 2019-11-29 2019-11-29 一种面向硬件逻辑设计的需求建模与验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911200553.0A CN110941932B (zh) 2019-11-29 2019-11-29 一种面向硬件逻辑设计的需求建模与验证方法

Publications (2)

Publication Number Publication Date
CN110941932A CN110941932A (zh) 2020-03-31
CN110941932B true CN110941932B (zh) 2021-07-20

Family

ID=69909120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911200553.0A Active CN110941932B (zh) 2019-11-29 2019-11-29 一种面向硬件逻辑设计的需求建模与验证方法

Country Status (1)

Country Link
CN (1) CN110941932B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113255272B (zh) * 2021-06-01 2021-10-01 上海国微思尔芯技术股份有限公司 语句块封装方法、装置、电子设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487483B2 (en) * 2006-05-18 2009-02-03 James Andrew Garrard Seawright Clock model for formal verification of a digital circuit description
US8397189B2 (en) * 2011-04-29 2013-03-12 International Business Machines Corporation Model checking in state transition machine verification
CN103049619B (zh) * 2012-12-31 2016-05-11 上海宇芯科技有限公司 一种利用表格完成芯片设计集成功能的方法
US9703909B2 (en) * 2014-12-16 2017-07-11 International Business Machines Corporation Verification environments utilizing hardware description languages
CN107533576B (zh) * 2016-02-25 2021-09-24 美商新思科技有限公司 针对使用电路模板的电路设计的提取的布局依赖效应的重用
CN110109658B (zh) * 2019-04-17 2022-08-23 首都师范大学 一种基于形式化模型的ros代码生成器及代码生成方法
CN110188389B (zh) * 2019-04-28 2023-01-03 上海芷锐电子科技有限公司 一种用于人工智能处理器芯片的功能验证系统

Also Published As

Publication number Publication date
CN110941932A (zh) 2020-03-31

Similar Documents

Publication Publication Date Title
CN103235759B (zh) 测试用例生成方法和装置
US20080015838A1 (en) Method And System For Designing A Structural Level Description Of An Electronic Circuit
vanCleemput An hierarchical language for the structural description of digital systems
CN111290954B (zh) 一种基于uvm的fpga构件可视化测试框架和方法
CN104809072A (zh) 基于Perl的EDIF网表级电路的自动可测性设计系统的自动可测性设计方法
CN111209203A (zh) 一种基于源代码的模型验证方法
CN110941932B (zh) 一种面向硬件逻辑设计的需求建模与验证方法
CN111400169A (zh) 一种自动化生成用于测试软硬件的网表文件的方法及系统
CN109144848B (zh) 一种Verilog HDL代码白盒测试辅助平台及其工作过程
JPH06274568A (ja) 階層図形データの展開方法
CN111624475B (zh) 大规模集成电路的测试方法及系统
CN117435483A (zh) 基于Formal工具的仿真验证激励生成方法、装置、介质及终端
CN107784185A (zh) 一种门级网表中伪路径的提取方法、装置及终端设备
US10460060B2 (en) Checking equivalence between changes made in a circuit definition language and changes in post-synthesis nets
CN106650138B (zh) 一种自动实现静态和动态时序分析对比的方法
CN111240972B (zh) 一种基于源代码的模型验证装置
CN106897504A (zh) 对ip模块进行开发形成参数化单元的方法
WO2006025412A1 (ja) 論理検証方法、論理モジュールデータ、デバイスデータおよび論理検証装置
KR101170546B1 (ko) 차종별 시스템의 사양 설계 방법
JPH09171056A (ja) テスト設計方法とその装置、並びにテスト方法とその装置
CN116522853B (zh) 一种数据处理方法、装置及介质
CN115758976B (zh) Pdk中器件差异的比较方法、电子设备和计算机可读介质
US20230205969A1 (en) Techniques for modeling and verification of convergence for hierarchical domain crossings
CN116911225A (zh) 一种硬件描述语言代码自动补全方法
CN115857890A (zh) 生成脚本命令的方法、设备及存储介质

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
GR01 Patent grant
GR01 Patent grant