CN114253524B - 一种基于脚本的用于辅助状态机逻辑代码设计的方法 - Google Patents
一种基于脚本的用于辅助状态机逻辑代码设计的方法 Download PDFInfo
- Publication number
- CN114253524B CN114253524B CN202111561133.2A CN202111561133A CN114253524B CN 114253524 B CN114253524 B CN 114253524B CN 202111561133 A CN202111561133 A CN 202111561133A CN 114253524 B CN114253524 B CN 114253524B
- Authority
- CN
- China
- Prior art keywords
- state machine
- script
- name
- variable
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 9
- 238000010586 diagram Methods 0.000 claims abstract description 8
- 230000009466 transformation Effects 0.000 claims abstract description 7
- 238000001514 detection method Methods 0.000 claims abstract description 4
- 239000000284 extract Substances 0.000 claims description 3
- 238000004904 shortening Methods 0.000 description 1
- 230000007704 transition Effects 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 CN114253524A (zh) | 2022-03-29 |
CN114253524B true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741993B (zh) * | 2022-04-18 | 2023-06-16 | 山东浪潮科学研究院有限公司 | 一种基于脚本的数据流图生成方法及装置 |
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 | 平安银行股份有限公司 | 基于语音的脚本编写方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114253524A (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101266520B (zh) | 一种可实现灵活键盘布局的系统 | |
CN114253524B (zh) | 一种基于脚本的用于辅助状态机逻辑代码设计的方法 | |
CN103049458B (zh) | 一种修正用户词库的方法和系统 | |
CN103136196A (zh) | 用于向电子设备输入文本和纠错的方法 | |
CN102768681A (zh) | 一种用于搜索输入的推荐系统及方法 | |
US5113340A (en) | Search improvements for electronic spelling machine | |
TW200401206A (en) | Enhanced multiway radix tree and related methods | |
CN111159990A (zh) | 一种基于模式拓展的通用特殊词识别方法及系统 | |
US8947272B2 (en) | Decoding encoded data | |
CN112256821B (zh) | 中文地址补全的方法、装置、设备及存储介质 | |
CN106708795A (zh) | 一种批量设置标题格式的方法及装置 | |
CN105335246A (zh) | 一种基于问答网站分析的程序崩溃缺陷自动修复方法 | |
CN113806403A (zh) | 一种在智能网卡/dpu内降低查找匹配逻辑资源的方法 | |
CN111916063A (zh) | 基于bpe编码的序列化方法、训练方法、系统及存储介质 | |
CN110489297B (zh) | 一种基于图形界面的fpga调试信号设置方法 | |
CN103197765A (zh) | 键盘布局切换方法和调整方法 | |
CN103135786A (zh) | 用于向电子设备输入文本的方法 | |
CN105242932A (zh) | 一种基于delphi工具开发的软件的自动翻译方法 | |
CN102662630B (zh) | 一种代码生成方法 | |
CN111814417A (zh) | 一种基于字符分隔值文件转换Verilog代码的方法 | |
US8626688B2 (en) | Pattern matching device and method using non-deterministic finite automaton | |
CN110750632A (zh) | 一种改进的中文alice智能问答方法及系统 | |
CN110147358B (zh) | 自动问答知识库的建设方法及建设系统 | |
CN108595584B (zh) | 一种基于数字标记的汉字输出方法和系统 | |
CN101963957B (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 |