CN114253524A - 一种基于脚本的用于辅助状态机逻辑代码设计的方法 - Google Patents
一种基于脚本的用于辅助状态机逻辑代码设计的方法 Download PDFInfo
- Publication number
- CN114253524A CN114253524A CN202111561133.2A CN202111561133A CN114253524A CN 114253524 A CN114253524 A CN 114253524A CN 202111561133 A CN202111561133 A CN 202111561133A CN 114253524 A CN114253524 A CN 114253524A
- Authority
- CN
- China
- Prior art keywords
- state machine
- script
- variable
- name
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 10
- 238000010586 diagram Methods 0.000 claims abstract description 8
- 230000009466 transformation Effects 0.000 claims abstract description 8
- 238000001514 detection method Methods 0.000 claims abstract description 3
- 239000000284 extract Substances 0.000 claims abstract description 3
- 238000004519 manufacturing process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
- G06F8/355—Round-trip engineering
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Programmable Controllers (AREA)
Abstract
本发明提供了一种本发明涉及FPGA设计领域,具体涉及一种基于脚本的用于辅助状态机逻辑代码设计的方法。用户根据需求编写状态机的非初始化部分代码,在编写状态机时应编写二段式或三段式状态机,用户编写变量列表检索脚本将符号序列左侧的变量名提取出来后检索当前状态机已保存变量列表,用户编写状态机“case”语句分支完整性检测脚本,该脚本将根据“case”语句敏感变量的位宽自动计算应该有多少分支;用户编写状态机状态变换图生成脚本,该脚本将检索状态机的“case”语句;当更改设计时,只需要重新调用上述脚本就可以获得新状态机的相关辅助设计信息。该方法实施方便,高效稳定,可以大幅缩短人工编写状态机的时间,提高数字逻辑设计开发效率。
Description
技术领域
本发明涉及一种基于脚本的用于辅助状态机逻辑代码设计的方法,属于数字逻辑设计技术领域。
背景技术
目前,电子信息技术产业发展迅速,对于专用芯片的性能要求越来越高,在集成电路制技术迅速进步的同时,集成电路的复杂度呈指数增加,数字逻辑设计规模越来越大,状态机设计越来越复杂,包含大量的输出变量和变化状态,因此,人工编写状态机初始化变量列表变得费时费力,非常容易出现遗漏等问题,同时由于状态空间庞大,在设计时容易因考虑不周全出现代码逻辑错误等问题。
发明内容
本发明目的是提供了一种基于脚本的用于辅助状态机逻辑代码设计的方法,实施方便,流程简单,高效稳定,可以大幅缩短人工编写状态机的时间,提高数字逻辑设计开发效率。
本发明为实现上述目的,通过以下技术方案实现:
一种基于脚本的用于辅助状态机逻辑代码设计的方法,其特征在于,具体步骤如下:
1)用户根据需求编写状态机的非初始化部分代码,将状态机编写为二段式或三段式状态机,且在变量输出代码段应使用时序逻辑设计,在对状态信号命名时应遵循特定规律,当前状态信号名应添加“_cur”后缀,下一状态信号名应添加“_nex”后缀;
2)用户编写变量列表检索脚本,将符号序列左侧的变量名提取出来后检索当前状态机已保存变量列表,如果是新变量名就保存至变量名列表结构体中,如果是已保存变量就丢弃该变量名,当扫描完成当前状态机代码后,脚本打印输出当前状态机所有被赋值变量列表;
3)用户编写状态机“case”语句分支完整性检测脚本,该脚本将根据“case”语句敏感变量的位宽自动计算应该有多少分支,并以“:”符合序列为标志位,将符号序列左侧分支名保存在分支名结构体中,检索结构体中是否有“default”,若没有该分支就统计结构体中分支名个数是否与目标分支个数一直,并将结果打印输出;
4)用户编写状态机状态变换图生成脚本,该脚本将检索状态机的“case”语句,获取各分支名及其中“_nex”标志序列右侧分支名,建立状态跳转结构体,结构体中存储当前状态的父状态名、子状态名和当前状态内输出变量名等信息,将结构体内容打印输出为状态机状态变换图;
5)当更改设计时,只需要重新调用上述脚本就可以获得新状态机的相关辅助设计信息。
优选的,所述步骤2中脚本以状态机代码中的赋值符号序列“ = ”或“ <= ”为标志位。
本发明的优点在于:本发明通过使用自动化脚本,自动化生成状态机初始化变量列表和状态变换图。当设计修改前端设计代码,只需要重新调用自动化脚本,即可获得新状态机的相关辅助设计信息。大幅提高了数字逻辑设计开发的效率,加快项目进度。
具体实施方式
下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,用户根据需求编写状态机的非初始化部分代码,在编写状态机时应编写二段式或三段式状态机,且在变量输出代码段应使用时序逻辑设计,在对状态信号命名时应遵循特定规律,当前状态信号名应添加“_cur”后缀,下一状态信号名应添加“_nex”后缀;
然后,用户编写变量列表检索脚本,该脚本以状态机代码中的赋值符号序列“ = ”或“ <= ”为标志位,将符号序列左侧的变量名提取出来后检索当前状态机已保存变量列表,如果是新变量名就保存至变量名列表结构体中,如果是已保存变量就丢弃该变量名,当扫描完成当前状态机代码后,脚本打印输出当前状态机所有被赋值变量列表;
然后,用户编写状态机“case”语句分支完整性检测脚本,该脚本将根据“case”语句敏感变量的位宽自动计算应该有多少分支,并以“:”符合序列为标志位,将符号序列左侧分支名保存在分支名结构体中,检索结构体中是否有“default”,若没有该分支就统计结构体中分支名个数是否与目标分支个数一直,并将结果打印输出;
然后,用户编写状态机状态变换图生成脚本,该脚本将检索状态机的“case”语句,获取各分支名及其中“_nex”标志序列右侧分支名,建立状态跳转结构体,结构体中存储当前状态的父状态名、子状态名和当前状态内输出变量名等信息,将结构体内容打印输出为状态机状态变换图;
最后,当更改设计时,只需要重新调用上述脚本就可以获得新状态机的相关辅助设计信息。
Claims (2)
1.一种基于脚本的用于辅助状态机逻辑代码设计的方法,其特征在于,具体步骤如下:
1)用户根据需求编写状态机的非初始化部分代码,将状态机编写为二段式或三段式状态机,且在变量输出代码段应使用时序逻辑设计,在对状态信号命名时应遵循特定规律,当前状态信号名应添加“_cur”后缀,下一状态信号名应添加“_nex”后缀;
2)用户编写变量列表检索脚本,将符号序列左侧的变量名提取出来后检索当前状态机已保存变量列表,如果是新变量名就保存至变量名列表结构体中,如果是已保存变量就丢弃该变量名,当扫描完成当前状态机代码后,脚本打印输出当前状态机所有被赋值变量列表;
3)用户编写状态机“case”语句分支完整性检测脚本,该脚本将根据“case”语句敏感变量的位宽自动计算应该有多少分支,并以“ :”符合序列为标志位,将符号序列左侧分支名保存在分支名结构体中,检索结构体中是否有“default”,若没有该分支就统计结构体中分支名个数是否与目标分支个数一直,并将结果打印输出;
4)用户编写状态机状态变换图生成脚本,该脚本将检索状态机的“case”语句,获取各分支名及其中“_nex”标志序列右侧分支名,建立状态跳转结构体,结构体中存储当前状态的父状态名、子状态名和当前状态内输出变量名等信息,将结构体内容打印输出为状态机状态变换图;
5)当更改设计时,只需要重新调用上述脚本就可以获得新状态机的相关辅助设计信息。
2.根据权利要求1所述的基于脚本的用于辅助状态机逻辑代码设计的方法,其特征在于,所述步骤2中脚本以状态机代码中的赋值符号序列“ = ”或“ <= ”为标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111561133.2A CN114253524B (zh) | 2021-12-20 | 2021-12-20 | 一种基于脚本的用于辅助状态机逻辑代码设计的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111561133.2A CN114253524B (zh) | 2021-12-20 | 2021-12-20 | 一种基于脚本的用于辅助状态机逻辑代码设计的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114253524A true CN114253524A (zh) | 2022-03-29 |
CN114253524B CN114253524B (zh) | 2024-05-24 |
Family
ID=80795887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111561133.2A Active CN114253524B (zh) | 2021-12-20 | 2021-12-20 | 一种基于脚本的用于辅助状态机逻辑代码设计的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114253524B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741993A (zh) * | 2022-04-18 | 2022-07-12 | 山东浪潮科学研究院有限公司 | 一种基于脚本的数据流图生成方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404167A (zh) * | 2011-11-03 | 2012-04-04 | 清华大学 | 基于变量依赖的并行扩展有限状态机的协议测试生成方法 |
CN103955426A (zh) * | 2014-04-21 | 2014-07-30 | 中国科学院计算技术研究所 | 一种检测c代码空指针引用的方法及系统 |
CN109542783A (zh) * | 2018-11-19 | 2019-03-29 | 北京航空航天大学 | 一种基于变量分割的扩展有限状态机测试数据生成方法 |
CN111814417A (zh) * | 2020-06-11 | 2020-10-23 | 杭州电子科技大学 | 一种基于字符分隔值文件转换Verilog代码的方法 |
CN111949255A (zh) * | 2020-09-03 | 2020-11-17 | 平安银行股份有限公司 | 基于语音的脚本编写方法、装置、设备及存储介质 |
CN112346726A (zh) * | 2020-03-16 | 2021-02-09 | 成都华微电子科技有限公司 | 一种基于表单信息自动化生成设计代码的方法 |
-
2021
- 2021-12-20 CN CN202111561133.2A patent/CN114253524B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404167A (zh) * | 2011-11-03 | 2012-04-04 | 清华大学 | 基于变量依赖的并行扩展有限状态机的协议测试生成方法 |
CN103955426A (zh) * | 2014-04-21 | 2014-07-30 | 中国科学院计算技术研究所 | 一种检测c代码空指针引用的方法及系统 |
CN109542783A (zh) * | 2018-11-19 | 2019-03-29 | 北京航空航天大学 | 一种基于变量分割的扩展有限状态机测试数据生成方法 |
CN112346726A (zh) * | 2020-03-16 | 2021-02-09 | 成都华微电子科技有限公司 | 一种基于表单信息自动化生成设计代码的方法 |
CN111814417A (zh) * | 2020-06-11 | 2020-10-23 | 杭州电子科技大学 | 一种基于字符分隔值文件转换Verilog代码的方法 |
CN111949255A (zh) * | 2020-09-03 | 2020-11-17 | 平安银行股份有限公司 | 基于语音的脚本编写方法、装置、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741993A (zh) * | 2022-04-18 | 2022-07-12 | 山东浪潮科学研究院有限公司 | 一种基于脚本的数据流图生成方法及装置 |
WO2023202290A1 (zh) * | 2022-04-18 | 2023-10-26 | 山东浪潮科学研究院有限公司 | 一种基于脚本的数据流图生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114253524B (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5966673B2 (ja) | 符号処理のためのプログラム及びデータ構造 | |
US9378126B2 (en) | Decompression apparatus and decompression method | |
CN114253524A (zh) | 一种基于脚本的用于辅助状态机逻辑代码设计的方法 | |
US8947272B2 (en) | Decoding encoded data | |
CN103283149B (zh) | 用于处理数据元素序列的装置和方法 | |
US20110035178A1 (en) | System and method for generating a test file of a printed circuit board | |
EP3893400A1 (en) | Sorting method and apparatus, and electronic device and medium | |
CN106227821A (zh) | 一种命令行命令的处理方法和装置 | |
CN111814417A (zh) | 一种基于字符分隔值文件转换Verilog代码的方法 | |
CN106557553B (zh) | 数据匹配的方法及装置 | |
CN110110149B (zh) | 一种scpi命令的解析方法及装置 | |
CN116107800B (zh) | 一种校验码生成方法、数据恢复方法、介质、电子设备 | |
US8626688B2 (en) | Pattern matching device and method using non-deterministic finite automaton | |
CN114124106B (zh) | 一种lz4解压缩方法、系统、存储介质及设备 | |
CN114741993B (zh) | 一种基于脚本的数据流图生成方法及装置 | |
JPH0936747A (ja) | データ圧縮方法及びデータ圧縮装置 | |
JPH09246995A (ja) | 符号誤り検出回路 | |
JP3346626B2 (ja) | データ圧縮装置 | |
CN112367206B (zh) | 配置数据处理方法、装置和系统 | |
CN111930413B (zh) | 一种补丁自动生成方法、装置及系统 | |
JPH10260980A (ja) | 圧縮検索方式 | |
CN113220307B (zh) | 一种代码覆盖分析的优化方法、装置及电子设备 | |
CN112214212A (zh) | 一种根据json格式数据生成c#语言源代码的方法 | |
CN114022660A (zh) | 一种标签处理方法、装置及计算机可读存储介质 | |
JP2985265B2 (ja) | 回路図変換装置 |
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 |