CN117787160A - 一种生成数字电路的硬件描述语言的方法及装置 - Google Patents

一种生成数字电路的硬件描述语言的方法及装置 Download PDF

Info

Publication number
CN117787160A
CN117787160A CN202410207522.2A CN202410207522A CN117787160A CN 117787160 A CN117787160 A CN 117787160A CN 202410207522 A CN202410207522 A CN 202410207522A CN 117787160 A CN117787160 A CN 117787160A
Authority
CN
China
Prior art keywords
signal
data
digital circuit
description
clock cycles
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
Application number
CN202410207522.2A
Other languages
English (en)
Other versions
CN117787160B (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.)
Shanghai Xinlianxin Intelligent Technology Co ltd
Original Assignee
Shanghai Xinlianxin Intelligent Technology 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 Xinlianxin Intelligent Technology Co ltd filed Critical Shanghai Xinlianxin Intelligent Technology Co ltd
Priority to CN202410207522.2A priority Critical patent/CN117787160B/zh
Publication of CN117787160A publication Critical patent/CN117787160A/zh
Application granted granted Critical
Publication of CN117787160B publication Critical patent/CN117787160B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

一种生成数字电路的硬件描述语言的方法及装置,用以基于大语言模型生成准确的数字电路的硬件描述语言。该方法包括:根据数字电路的信号功能描述,生成所述数字电路对应的各信号的波形图;基于预设的转换标准,按照信号时序将所述各信号的波形图分别转换为各信号字符序列;将所述各信号字符序列及所述数字电路的非信号功能描述,输入至大语言模型,得到所述数字电路的硬件描述语言。

Description

一种生成数字电路的硬件描述语言的方法及装置
技术领域
本申请涉及人工智能技术领域,尤其涉及一种生成数字电路的硬件描述语言的方法及装置。
背景技术
GAI是目前发展最蓬勃的技术方向之一,代表性的技术突破与普及就是chatGPT等大语言模型(large language model, LLM),其应用涵盖了翻译、文章生成、文章摘要、搜寻、图像生成、图像解析、代码生成等许多领域。当大语言模型应用在芯片设计领域时,设计人员想到可以利用大语言模型来生成数字电路的硬件描述语言(hardware descriptionlanguage, HDL)。
但是在对数字电路的信号进行文字描述时,如果单纯用文字进行描述,需要非常冗长与繁琐的文字才能够将各信号的特征和功能描述地非常清楚。基于该原因导致设计人员通常输入给大语言模型的问题描述得不清晰,大语言模型无法很好地理解其描述的内容,进而无法准确地生成相应的硬件描述语言。
发明内容
本申请提供一种生成数字电路的硬件描述语言的方法及装置,用以基于大语言模型生成准确的数字电路的硬件描述语言。
第一方面,本申请提供一种生成数字电路的硬件描述语言的方法,该方法包括:
根据数字电路的信号功能描述,生成所述数字电路对应的各信号的波形图;基于预设的转换标准,按照信号时序将所述各信号的波形图分别转换为各信号字符序列;将所述各信号字符序列及所述数字电路的非信号功能描述,输入至大语言模型,得到所述数字电路的硬件描述语言。
上述技术方案中,先将数字电路的信号功能描述转换为对应的波形图,再将各信号的波形图基于预设的转换标准转换为对应的字符序列,此种通过字符序列来对信号进行描述的方式,可以以更统一、更简洁的描述方式以及最少的文字传递更清楚的信号描述,使大语言模型在没有模糊字句或是干扰信息的情况下,专注于归纳分析描述内容,进而可以更有效和准确地生成数字电路的硬件描述语言。
在一种可能的设计中,所述按照信号时序将所述各信号的波形图分别转换为各信号字符序列,包括:对于每个信号,按照信号时序将信号的变化依次用字符表示出来,其中,每个字符值代表信号在该时钟周期内的信号值;所述各信号包括输入信号的使能信号、输入信号、输出信号的使能信号和输出信号。
上述技术方案中,按照信号时序将信号的变化转换为对应的字符序列,此种通过字符序列来对信号进行描述的方式,可以以更统一、更简洁的描述方式以及最少的文字传递更清楚的信号描述。
在一种可能的设计中,所述按照信号时序将信号的变化依次用字符表示出来,包括:对于在多个时钟周期内信号值保持不变的信号,将所述多个时钟周期内的信号表示为M(Cn)M的形式,其中,M表示所述多个时钟周期内的信号值,Cn表示时钟周期数。
上述技术方案中,将多个时钟周期内信号值保持不变的信号,表示为表示为M(Cn)M的形式,可以缩短波形图的长度以及转换为字符序列的长度,表示形式更简洁。
在一种可能的设计中,所述按照信号时序将信号的变化依次用字符表示出来,包括:对于在多个时钟周期内每N个时钟周期重复一次的信号,将所述多个时钟周期内的信号表示为M1M2...MN(Cn)M1M2...MN的形式,其中,M1M2...MN表示重复信号的N个信号值,Cn表示时钟周期数。
上述技术方案中,将多个时钟周期内每N个时钟周期重复一次的信号,表示为表示为M1M2...MN(Cn)M1M2...MN的形式,可以缩短波形图的长度以及转换为字符序列的长度,表示形式更简洁。
在一种可能的设计中,所述信号功能描述包括以下至少一项:针对变化不规律的信号的功能描述、针对存在相对关系的信号的功能描述。
在一种可能的设计中,所述非信号功能描述包括以下至少一项:信号的定义、信号值的含义、规律性信号的功能描述或数字电路的功能架构的描述。
在一种可能的设计中,所述大语言模型是以作为样本的数字电路对应的各信号字符序列及非信号功能描述为问题,以作为样本的数字电路对应的硬件描述语言作为所述问题的答案进行训练得到的。
第二方面,本申请实施例提供一种生成数字电路的硬件描述语言的装置,该装置包括:
预处理模块,用于根据数字电路的信号功能描述,生成所述数字电路对应的各信号的波形图;
所述预处理模块,还用于基于预设的转换标准,按照信号时序将所述各信号的波形图分别转换为各信号字符序列;
处理模块,用于将所述各信号字符序列及所述数字电路的非信号功能描述,输入至大语言模型,得到所述数字电路的硬件描述语言。
在一种可能的设计中,所述预处理模块,在按照信号时序将所述各信号的波形图分别转换为各信号字符序列时,具体用于对于每个信号,按照信号时序将信号的变化依次用字符表示出来,其中,每个字符值代表信号在该时钟周期内的信号值;所述各信号包括输入信号的使能信号、输入信号、输出信号的使能信号和输出信号。
在一种可能的设计中,所述预处理模块,在按照信号时序将信号的变化依次用字符表示出来时,具体用于对于在多个时钟周期内信号值保持不变的信号,将所述多个时钟周期内的信号表示为M(Cn)M的形式,其中,M表示所述多个时钟周期内的信号值,Cn表示时钟周期数。
在一种可能的设计中,所述预处理模块,在按照信号时序将信号的变化依次用字符表示出来时,具体用于对于在多个时钟周期内每N个时钟周期重复一次的信号,将所述多个时钟周期内的信号表示为M1M2...MN(Cn)M1M2...MN的形式,其中,M1M2...MN表示重复信号的N个信号值,Cn表示时钟周期数。
在一种可能的设计中,所述信号功能描述包括以下至少一项:针对变化不规律的信号的功能描述、针对存在相对关系的信号的功能描述。
在一种可能的设计中,所述非信号功能描述包括以下至少一项:信号的定义、信号值的含义、规律性信号的功能描述或数字电路的功能架构的描述。
在一种可能的设计中,所述大语言模型是以作为样本的数字电路对应的各信号字符序列及非信号功能描述为问题,以作为样本的数字电路对应的硬件描述语言作为所述问题的答案进行训练得到的。
第三方面,本申请实施例还提供一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如第一方面的任一种可能的设计中所述的方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,其中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得上述第一方面的任一种可能的设计中所述的方法实现。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种生成数字电路的硬件描述语言的方法的流程示意图;
图2为本申请实施例提供的一种波形图的示意图一;
图3为本申请实施例提供的一种波形图的示意图二;
图4为本申请实施例提供的一种波形图的示意图三;
图5为本申请实施例提供的一种生成数字电路的硬件描述语言的装置的结构示意图;
图6为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请的实施例中,多个是指两个或两个以上。“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1示例性地示出了本申请实施例提供的一种生成数字电路的硬件描述语言的方法的流程示意图,如图1所示,该方法包括以下步骤:
步骤101、根据数字电路的信号功能描述,生成数字电路对应的各信号的波形图。
本申请实施例中,将对数字电路中的信号描述分为信号功能描述和非信号功能描述,其中,信号功能描述包括以下至少一项:针对变化不规律的信号的功能描述(例如在一段连续的时钟周期内,大部分信号的内容都变化,并且变化的规律比较不固定)、针对存在相对关系的信号的功能描述(例如A信号(8-bit)发生连续的4个6D,就会造成B信号(1-bit)在3个时钟周期后从0变成1)。非信号功能描述包括以下至少一项:信号的定义、信号值的含义、规律性信号的功能描述或数字电路的功能架构的描述。
对于数字电路的信号功能描述,可以将其转换为对应的波形图(waveform图)。信号的波形图是一种以时钟信号为主轴,用波形来描述信号随时间变化的表示形式,波形图中至少需要表示出一下信息:
(1)同步(synchronous)信号: 输入信号的采样都是以时钟(clock)的正沿(rising edge)或是负沿(falling edge)为准。同样的,输出信号的发出也是以时钟的正沿(rising edge)或是负沿(falling edge)为准。因此,将输入信号和输出信号在每个时钟周期内的状态用波形图表示出来。
(2)输入信号与输出信号的因果关系:一定是先有输入信号,经过某些“条件与运作”后,产生输出信号。这些“条件与运作”,就是要实现的电路功能。因此,理解输入信号和输出信号之间的因果关系,并将其在波形图中表示出来。
(3)输入信号与输出信号的组成成分:任何信号都有基本格式,也就是dataformat,比如以太网packet的格式, 很多data格式内的栏位,也会以各种形式重复。也需要在波形图中表示出输入信号与输出信号的组成成分。
对于数字电路,很难用简洁的文字将各信号的特征和功能描述清楚,因此通过统一格式的波形图对各信号进行描述,可以减少大量的文字性描述,进而减少因文字产生的误解,可以更清晰简洁的表述各信号的特征和功能,此外,波形图的形式对信号进行描述可以突破语言障碍,使用不同语言的设计人员都可以看懂波形图。
步骤102、基于预设的转换标准,按照信号时序将各信号的波形图分别转换为各信号字符序列。
其中,各信号包括输入信号的使能信号、输入信号、输出信号的使能信号和输出信号。由于大语言模型无法理解信号的波形图,所以本申请实施例基于预设的转换标准,按照信号时序将各信号的波形图分别转换为各信号字符序列。
具体地,在按照信号时序将各信号的波形图分别转换为各信号字符序列时,可以对于每个信号,按照信号时序将信号的变化依次用字符表示出来,其中,每个字符值代表信号在该时钟周期内的信号值。例如,某一信号在第1个时钟周期至第10个时钟周期一直重复0和1,可以表示为0101010101。
其中,对于在多个时钟周期内信号值保持不变的信号,可以将多个时钟周期内的信号表示为M(Cn)M的形式,其中,M表示多个时钟周期内的信号值,Cn表示时钟周期数。
具体地,对于任何(Cx)而言,如果(Cx)前面的字符,与(Cx)后面的字符相同,那么就是重复这一个字符,例如0(C1)0,表示在C1个时钟内,一直重复0。
通过此种方式可以缩短波形图的长度以及转换为字符序列的长度。例如C1=256,相比于画上256个周期的波形图或者表示为256个0,表示为0(C1)0的形式更简洁。
对于在多个时钟周期内每N个时钟周期重复一次的信号,可以将多个时钟周期内的信号表示为M1M2...MN(Cn)M1M2...MN的形式,其中,M1M2...MN表示重复信号的N个信号值,Cn表示时钟周期数。
具体地,对于任何(Cx)而言,如果(Cx)前面的字符,与(Cx)后面的字符不相同,那么就是往前与往后,再找一个字符,再检查这两个字符是否相同,如果相同,比如5A(C2)5A,那么表示在C2个时钟内一直重复5A,其中,C2是2的倍数。
对于任何(Cx)而言,如果(Cx)前面2个字符,与(Cx)后面的2个字符不相同,那么就再往前与往后,再找一个字符,再检查这三个字符是否相同,比如ABC(Cx)ABC,表示在Cx个时钟内一直重复ABC。其中,Cx是3的倍数。其余以此类推。
此外,如果重复的是5A5,但表示为5A5(Cx)5A5会被误解为在Cx个时钟内重复5,因此,可以将此种情况表示为 (5A5(Cx)5A5),例如,....0F83DE(5A5(Cx)5A5)DE987....表示在Cx个时钟周期内重复5A5, 而不是重复5。又例如,...010010110(10101010(Cx)10101010)01110101.....中的“(10101010(Cx)10101010)”表示在Cx个时钟周期内重复10101010,其中,Cx是8的倍数。
步骤103、将各信号字符序列及数字电路的非信号功能描述,输入至大语言模型,得到数字电路的硬件描述语言。
本申请实施例中,将信号的定义、信号值的含义、规律性信号的功能描述或数字电路的功能架构的描述等无法用字符序列表示的非信号功能描述用文字进行表示。
例如,以下几种非信号功能描述可以用文字进行描述:
(1)信号的定义:比如定义输入信号与输出信号:
“Input data_in_en;
Input [3:0] data_in;
Output data_out_en;
Output [15:0] data_out_word;”
(2)信号值的含义,比如字符R代表随便任意数字,或者(Cn)代表n个时钟周期。
(3)规律性信号的功能描述:与用波形/字符表示的情况刚好相反。比如A信号(8-bit)持续发送的1024个83。
(4)数字电路的功能架构的描述:比如将波形分成三大类(i)data正确(ii)preamble不正确(iii)ending不正确,分别说明正确情况与不正确情况分别如何处理。
将上述各信号字符序列及数字电路的非信号功能描述,输入至训练后的大语言模型,便可得到数字电路的硬件描述语言。
其中,在对大语言模型进行训练时,训练样本也是通过上述步骤101至步骤102的方法,先根据数字电路的信号功能描述,生成数字电路对应的各信号的波形图,然后基于预设的转换标准,按照信号时序将各信号的波形图分别转换为各信号字符序列。再将数字电路的非信号功能描述用文字进行描述作为字符序列的辅助,输入至大语言模型中作为训练样本中的问题(prompt)。以数字电路对应的标准硬件描述语言输入至大语言模型中作为训练样本中的答案,对大语言模型进行训练。此种将基于波形图转换得到的字符序列为主,文字描述为辅的训练样本,格式简单而统一,且比文字描述更清晰易懂,可以大幅减少大语言模型对文字的分析消耗与误解。训练后的大语言模型即具有生成硬件描述语言的能力。
下面以一个具体的例子来介绍一下上述技术方案,假设对数字电路的一段信号的描述如下:
clk是输入时钟信号,所有输入信号和输出信号都同步于clk。
(i)信号初始状态:
Data_in_en是一个1-bit的输入信号,一般保持在0。Data_in_en是data_in的enable信号。
Data_in是一个4-bit的输入信号,一般保持在0。数据输入来自此信号。
Data_out_en是一个1-bit的输出信号,初始值是0。Data_in_en是data_in的enable信号。
Data_out_word是一个16-bit的输出信号,初始值是0。数据输出是经由此信号。
(ii)data输入前序(preamble):
当data_in_en变成1时,data_in会同时变成5h,之后data_in_en一直保持1。在data_in_en变成1的第2个cycle时,data_in同时变成Ah。在data_in_en变成1的第3、5、7个cycle时,data_in同时变成5h。在data_in_en变成1的第4、6、8个cycle时,data_in同时变成Ah。
(iii)如过输入前序正确,将Data_in输入转换成为data_out_word输出:
如果检查上述8个cycle的data_in的值都正确,也就是前8个cycle的data_in是5A5A5A5Ah,那么在data_in_en变成1的第9个cycle到第136个cycle时,将这136-9+1 =128个cycle内的data_in,每4个data_in 组合成为1个16-bit的word。最先收到的4-bit输入放在次word的bit[3:0], 其次收到的4-bit输入放在此word的bit[7:4],再其次收到的4-bit输入放在此word的bit[11:8],再收到的4-bit输入放在此word的bit[15:12]。然后将此word放到data_out_word上做为输出,同时将data_out_en变成1。之后下一个cycle将data_out_en变成0, 同时继续重复接收新data_out_word的第一个4-bit, 然后继续重复(iii)描述的动作,直到128个4-bit都收满。所以在此次的接收与转换过程中,总共有32个data_out_word输出,并且伴随着data_out_en= 1。
(iv) 如果输入前序错误,忽略此data:
如果检查上述8个cycle的data_in的值,有任何一个cycle不正确,那么不做任何动作,直到dat_in_en变成0。之后,再等到下一次dat_in_en变成1后,再重复(ii)开始的动作,检查起始的8个cycles的data_in的值是否是5A5A5A5Ah。
(v)data输入结尾(ending):
当data_in_en变成1时的第137个cycle,data_in变成3h,data_in_en一直保持1。在第138个cycle,data_in变成6h。在第139、141、143个cycle时,data_in变成3h。在第140、142、144个cycle时,data_in变成6h。然后data_in_en与data_in_en都变成0。
(vi)如果输入结尾正确:
如果检查上述8个cycle的data_in的值都正确,也就是最后8个cycle的data_in是36363636h,那么不做任何动作,等待下一次的data_in_en变成1,再重复(ii)开始的动作。
(vii)如过输入结尾错误:
如果检查上述8个cycle的data_in的值,有任何一个cycle不正确, 那么将data_out_en输出1,data_out_en输出Fh,在下一个cycle, 再将data_out_en输出1,data_out_en输出Fh,然后在下一个cycle, 将data_in_en与data_in_en都变成0。之后等待下一次的data_in_en变成1,再重复(ii)开始的动作。
总结:上述输出信号表示的数据前序是8个4-bit的5A5A5A5Ah,数据结尾是8个4-bit的36363636h,中间是128个4-bit数据的输入。全部 (8 + 128 + 8 = )144个cycle,data_in_en保持在1。
根据上述对数字电路的一段信号的描述,生成数字电路对应的各信号的波形图。参考图2至图4,图2为正确时各信号的波形图;图3为输入信号前序错误时各信号的波形图;图4为输入信号结尾错误时各信号的波形图。其中,图中Cn=ncycles,表示此n个cycle重复之前与之后的固定data,如果之前与之后的data不同,那么就是重复之前k个与之后k个的固定data。
首先,以信号Data_in_en和信号Data_in为例,介绍一下如何基于预设的转换标准,按照信号时序将信号的波形图转换为信号字符序列。
对于信号Data_in_en,根据图2 中Data_in_en的波形图可知, Data_in_en 一开始就是0,所以第一个clk的时钟周期内, Data_in_en = 0,转换得到Data_in_en的字符序列为Data_in_en 0。
之后的方块表示这个方块内有C1个clk时钟周期(其中C1= undefined表示C1是多少尚未决定)。在此C1个时钟周期内, Data_in_en一直保持与之前时钟周期一样(此时Data_in_en = 0)。转换得到Data_in_en的字符序列为Data_in_en 0(C1)。
C1方块结束后, Data_in_en还是0,这个clk周期Data_in_en=0。转换得到Data_in_en的字符序列为Data_in_en 0(C1)0。
接下来的两个clk周期,Data_in_en变成1。转换得到Data_in_en的字符序列为Data_in_en 0(C1)011。
之后的方块表示这个方块内有C2个clk时钟周期(C2=4),也就是接下来有C2个clk周期,Data_in_en保持不变(= 1)。转换得到Data_in_en的字符序列为Data_in_en 0(C1)011(C2)。
之后很长的clk周期内, Data_in_en都是一直保持1, 但是为了配合Data_in[3:0]的相对变化,将转换得到Data_in_en的字符序列写为Data_in_en 0(C1)011(C2)1111111111(C3)111(C4)1
对于信号Data_in,根据图2 中Data_in的波形图可知,Data_in 一开始就是0,所以第一个clk的时钟周期内, Data_in = 0,转换得到Data_in的字符序列为Data_in 0。
之后的方块表示这个方块内有C1个clk时钟周期,在此C1个时钟周期内, Data_in一直保持与之前时钟周期一样(此时Data_in_en = 0)。转换得到Data_in的字符序列为Data_in 0(C1)。
C1方块结束后, Data_in还是0,这个clk周期Data_in =0。转换得到Data_in的字符序列为Data_in 0(C1)0。
接下来的1个clk周期,Data_in变成5。转换得到Data_in的字符序列为Data_in 0(C1)05。
接下来的1个clk周期,Data_in变成A。转换得到Data_in的字符序列为Data_in 0(C1)05A。
之后的方块表示这个方块内有C2个clk时钟周期(C2=4),也就是接下来有C2个clk周期,Data_in保持不变(= 5A),也就是这C2(=4)个周期内,Data_in[3:0]=5A5A。转换得到Data_in的字符序列为Data_in 0(C1) 05A (C2)。
之后的2个clk周期内,Data_in=5A。转换得到Data_in的字符序列为Data_in 0(C1)05A(C2)5A。
之后的10个clk周期内,Data_in在每个时钟周期内都是R,R为任意数。转换得到Data_in的字符序列为Data_in 0(C1)05A(C2)5ARRRRRRRRRR。
图3为输入信号前序错误时各信号的波形图,对于信号Data_in_en,图3中Data_in_en的波形图与图2中Data_in_en的波形图相同,因此转换得到Data_in_en的字符序列为Data_in_en 0(C1)011(C2)1111111111(C3)111(C4)110 (C1)0。
对于信号Data_in,图3中Data_in的波形图与图2中Data_in的波形图不同处:图3中Data_in从C2方块前两个时钟至C2方块后两个时钟的Data_in=XXXXXXXX,其中,X为固定数,XXXXXXXX≠5A5A5A5Ah,表示Data_in有错误,此处转换得到Data_in的字符序列为Data_in XX(C2)XX。进而,图3整体转换得到Data_in的字符序列为Data_in 0(C1)0XX(C2)XXRRRRRRRRRR(C3)R36(C4)360(C1)0。
图4为输入信号结尾错误时各信号的波形图,对于信号Data_in_en,图4中Data_in_en的波形图与图2中Data_in_en的波形图相同,因此转换得到Data_in_en的字符序列为Data_in_en 0(C1)011(C2)1111111111(C3)111(C4)110 (C1)0。
对于信号Data_in,图4中Data_in的波形图与图2中Data_in的波形图不同处:图4中从C4方块前两个时钟至C4方块后两个时钟的Data_in=XXXXXXXX,其中,X为固定数,XXXXXXXX≠36363636h,表示Data_in有错误,此处转换得到Data_in的字符序列为Data_inXX(C4)XX。进而,图4整体转换得到Data_in的字符序列为Data_in 0(C1)05A(C2)5ARRRRRRRRRR(C3)RXX(C4)XX000(C1)0。
依次类推,将每个信号都基于预设的转换标准,转换成各信号的字符序列。
其次,对于非信号功能描述无法通过波形表述,也无法转换为字符序列,可以通过文字辅助说明,例如,对于上述例子中,data_in[3:0]与data_out_word[15:0]之间的关系无法通过字符序列描述,图2中表达的关系是:4个data_in组合成一个data_out_word,并且是有组合的先后次序。此种情况可以用文字表示data_in[3:0]与data_out_word[15:0]的关系,例如:data_out_word[15:0] = {the 4th data_in [3:0], the 3rd data_in [3:0], the 2nd data_in [3:0], the 1st data_in [3:0]}。大语言模型可以很好的理解此种表达方式,所以输入至大语言模型中的data_in[3:0]与data_out_word[15:0]之间的关系,也用此文字描述,即Here :data_out_word[15:0] = {the 4th data_in [3:0], the3rd data_in [3:0], the 2nd data_in [3:0], the 1st data_in [3:0]}。
以下是基于预设的转换标准,按照信号时序将图2至图4的波形图分别转换为各信号字符序列及数字电路的非信号功能描述:
Input clk;
Input data_in_en;
Input [3:0] data_in;
Output data_out_en;
Output [15:0] data_out_word;
(i)If the data format is correct:
Data_in_en 0(C1)011(C2)1111111111(C3)111(C4)110(C1)0
Data_in 0(C1)05A(C2)5ARRRRRRRRRR(C3)R36(C4)360(C1)0
Then
Data_out_en 0(C1)000(C2)000000100010(C3)010(C4)000(C1)0
Data_out_word 0(C1)000(C2)000000R000R0(C3)0R0(C4)000(C1)0
Here :data_out_word[15:0] = {the 4th data_in [3:0], the 3rd data_in[3:0], the 2nd data_in [3:0], the 1st data_in [3:0]}, C1 = undefined, C2=C4=4, C3=117, R is any number(undefined)
(ii) If data preamble is incorrect
Data_in_en 0(C1)011(C2)1111111111(C3)111(C4)110(C1)0
Data_in 0(C1)0XX(C2)XXRRRRRRRRRR(C3)R36(C4)360(C1)0
Then
Data_out_en 0(C1)000(C2)000000000000(C3)000(C4)000(C1)0
Data_out_word 0(C1)000(C2)000000000000(C3)000(C4)000(C1)0
Here: X is a fixed data pattern but with error
(iii) If the data ending is incorrect
Data_in_en 0(C1)011(C2)1111111111(C3)111(C4)11000(C1)0
Data_in 0(C1)05A(C2)5ARRRRRRRRRR(C3)RXX(C4)XX000(C1)0
Then
Data_out_en 0(C1)000(C2)000000100010(C3)010(C4)00110(C1)0
Data_out_word 0(C1)000(C2)000000R000R0(C3)0R0(C4)00FF0(C1)0
将上述转换后的各信号字符序列及数字电路的非信号功能描述,输入至训练后的大语言模型,便可得到数字电路的硬件描述语言。
其中,大语言模型在训练过程中是以作为样本的数字电路对应的各信号字符序列及非信号功能描述为问题,以作为样本的数字电路对应的硬件描述语言作为问题的答案进行训练得到的。假设将上述例子中转换后的各信号字符序列及数字电路的非信号功能描述为一个训练样本的问题,那么将与其对应的硬件描述语言(参考以下硬件描述语言)作为问题的答案,输入至大语言模型中,对大语言模型进行训练。
module example1 (
input wire clk, // input clock signal, rising edge tgrigger
input wire rst, // input reset signal, low reset
input wire data_in_en, // enable signal for input data
input reg [3:0] data_in,//4-bit input data
output wire data_out_en, // enable signal for out data
output reg [15:0] data_out_word // 16-bitoutput data);
reg [7:0] counter; // count the cycle number, the maximum numberis 8(preamble)+128(4-bit data)+8(ending)+2(if ending fail)=146
reg preamble_fail; // denates error happens in preamble
reg ending_fail; // denote error in the ending
always @(posedge clk or negedge rst) begin // clk is rising edgetrigger, rst is low rest
if (!rst) begin //during low reset, all output and internalsignals are reset to 0
counter<= 8'b00000000;
preamble_fail<= 0;
ending_fail<= 0;
data_out_word<= 16'b0000000000000000;
data_out_en<= 1'b0;
end else begin
if (data_in_en==1) begin //during the entire data_in_en=1 period
if (preamble_fail==0) begin // no preamble error before
counter<= counter + 1;
if ((counter==0 || counter==2 || counter==4 || counter==6) begin
if (data_in != 4’b0101) begin // check if data_in= 5hin these cycles
preamble_fail<= 1; // preamble error, fails
end
end else begin
if (counter==1 || counter==3 || counter==5 || counter==7)begin
if (data_in != 4’b1010) begin // check if data_in= Ahin these cycles
preamble_fail<= 1; // preamble error, fails
end
end else begin
if (counter==136 || counter==138 || counter==140 || counter==142) begin
data_out_en<= 0;
if (data_in==4’b0011) begin // check if data_in= 3h inthese cycles
ending_fail<= 1; // ending error, fails
end
end else begin
if ((counter==137 || counter==139 || counter==141 ||counter==143) begin
if (data_in==4’b0110) begin // check if data_in= 6hin these cycles
ending_fail<= 1; // ending error, fails
end
end else begin // 4-bit data receiveing, arranging four ofthem into one 16-bit word
if (counter[1:0]==0) begin
data_out_word [3:0]<= data_in; // put the first 4-bitinto wrod[3:0]
data_out_en<= 0;
end else begin
if (counter[1:0]==1) begin
data_out_word [7:4]<= data_in; // put the second 4-bitinto wrod[7:4]
end else begin
if (counter[1:0]==2) begin
data_out_word [11:8]<= data_in; // put the third 4-bitinto wrod[11:8]
end else begin
data_out_word [15:12]<= data_in; // put the fourth 4-bit into wrod[3:0]
data_out_en<= 1; // denote the 16-bit word is ready
end
end // if preamble_fail = 1, do nothing, wait for data_in_en=0
end else begin // data_in_en=0
preamble_fail<= 0; // clear preamble_fail to 0
if (ending_fail==1) begin
counter<= counter + 1;
if (counter==144) begin
data_out_word<= data_in; // output FFFFh
data_out_en<= 1;
end else begin
if (counter==145) begin
data_out_word<= 16'b1111111111111111; // output FFFFh
data_out_en<= 1;
ending_fail<= 0; // clear ending_fail to 0
end else begin
counter<= 0; // clear counter to 0
data_out_word<= 0; // clear data_out_word to 0
data_out_en<= 0; // clear data_out_en to 0
end
end
end
endmodule
本申请实施例提供的一种生成数字电路的硬件描述语言的方法,让大语言模型在一个固定的格式下,直接又清晰的读入数字电路的各信号字符序列及数字电路的非信号功能描述,以使大语言模型在没有模糊字句或是干扰信息的情况下,专注于归纳分析各信号的描述内容,再对照答案部分的硬件描述语言对大语言模型进行训练,使得大语言模型更容易读懂,也更容易将答案部分的硬件描述语言语与大语言模型的输入(数字电路的各信号字符序列及数字电路的非信号功能描述)对应,进而提高大语言模型的训练效率和训练精度。
将数字电路的各信号字符序列及数字电路的非信号功能描述作为问题,输入至训练后的大语言模型,便可得到数字电路对应的硬件描述语言。此种对于信号描述的格式更统一化、更简洁,可以以更简洁的描述方式与最少的文字,传递更清楚的信号描述,以使大语言模型在没有模糊字句或是干扰信息的情况下,专注于归纳分析描述内容,进而更有效和准确地生成数字电路的硬件描述语言。
基于相同的技术构思,图5例性地示出了本申请实施例提供的一种生成数字电路的硬件描述语言的结构示意图,如图5所示,该装置500包括:
预处理模块501,用于根据数字电路的信号功能描述,生成所述数字电路对应的各信号的波形图;
所述预处理模块501,还用于基于预设的转换标准,按照信号时序将所述各信号的波形图分别转换为各信号字符序列;
处理模块502,用于将所述各信号字符序列及所述数字电路的非信号功能描述,输入至大语言模型,得到所述数字电路的硬件描述语言。
在一种可能的设计中,所述预处理模块501,在按照信号时序将所述各信号的波形图分别转换为各信号字符序列时,具体用于对于每个信号,按照信号时序将信号的变化依次用字符表示出来,其中,每个字符值代表信号在该时钟周期内的信号值;所述各信号包括输入信号的使能信号、输入信号、输出信号的使能信号和输出信号。
在一种可能的设计中,所述预处理模块501,在按照信号时序将信号的变化依次用字符表示出来时,具体用于对于在多个时钟周期内信号值保持不变的信号,将所述多个时钟周期内的信号表示为M(Cn)M的形式,其中,M表示所述多个时钟周期内的信号值,Cn表示时钟周期数。
在一种可能的设计中,所述预处理模块501,在按照信号时序将信号的变化依次用字符表示出来时,具体用于对于在多个时钟周期内每N个时钟周期重复一次的信号,将所述多个时钟周期内的信号表示为M1M2...MN(Cn)M1M2...MN的形式,其中,M1M2...MN表示重复信号的N个信号值,Cn表示时钟周期数。
在一种可能的设计中,所述信号功能描述包括以下至少一项:针对变化不规律的信号的功能描述、针对存在相对关系的信号的功能描述。
在一种可能的设计中,所述非信号功能描述包括以下至少一项:信号的定义、信号值的含义、规律性信号的功能描述或数字电路的功能架构的描述。
在一种可能的设计中,所述大语言模型是以作为样本的数字电路对应的各信号字符序列及非信号功能描述为问题,以作为样本的数字电路对应的硬件描述语言作为所述问题的答案进行训练得到的。
基于相同的技术构思,本申请实施例提供了一种计算设备,如图6所示,包括至少一个处理器601,以及与至少一个处理器连接的存储器602,本申请实施例中不限定处理器601与存储器602之间的具体连接介质,图6中处理器601和存储器602之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器602存储有可被至少一个处理器601执行的指令,至少一个处理器601通过执行存储器602存储的指令,可以执行上述生成数字电路的硬件描述语言的方法。
其中,处理器601是计算设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器602内的指令以及调用存储在存储器602内的数据,从而进行资源设置。
可选地,处理器601可包括一个或多个处理单元,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。在一些实施例中,处理器601和存储器602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器601可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于相同的技术构思,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行程序,计算机可执行程序用于使计算机执行上述任一方式所列的生成数字电路的硬件描述语言的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种生成数字电路的硬件描述语言的方法,其特征在于,所述方法包括:
根据数字电路的信号功能描述,生成所述数字电路对应的各信号的波形图;
基于预设的转换标准,按照信号时序将所述各信号的波形图分别转换为各信号字符序列;
将所述各信号字符序列及所述数字电路的非信号功能描述,输入至大语言模型,得到所述数字电路的硬件描述语言。
2.根据权利要求1所述的方法,其特征在于,所述按照信号时序将所述各信号的波形图分别转换为各信号字符序列,包括:
对于每个信号,按照信号时序将信号的变化依次用字符表示出来,其中,每个字符值代表信号在该时钟周期内的信号值;
所述各信号包括输入信号的使能信号、输入信号、输出信号的使能信号和输出信号。
3.根据权利要求2所述的方法,其特征在于,所述按照信号时序将信号的变化依次用字符表示出来,包括:
对于在多个时钟周期内信号值保持不变的信号,将所述多个时钟周期内的信号表示为M(Cn)M的形式,其中,M表示所述多个时钟周期内的信号值,Cn表示时钟周期数。
4.根据权利要求2所述的方法,其特征在于,所述按照信号时序将信号的变化依次用字符表示出来,包括:
对于在多个时钟周期内每N个时钟周期重复一次的信号,将所述多个时钟周期内的信号表示为M1M2...MN(Cn)M1M2...MN的形式,其中,M1M2...MN表示重复信号的N个信号值,Cn表示时钟周期数。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述信号功能描述包括以下至少一项:针对变化不规律的信号的功能描述、针对存在相对关系的信号的功能描述。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述非信号功能描述包括以下至少一项:信号的定义、信号值的含义、规律性信号的功能描述或数字电路的功能架构的描述。
7.根据权利要求1至4任一项所述的方法,其特征在于,所述大语言模型是以作为样本的数字电路对应的各信号字符序列及非信号功能描述为问题,以作为样本的数字电路对应的硬件描述语言作为所述问题的答案进行训练得到的。
8.一种生成数字电路的硬件描述语言的装置,其特征在于,包括:
预处理模块,用于根据数字电路的信号功能描述,生成所述数字电路对应的各信号的波形图;
所述预处理模块,还用于基于预设的转换标准,按照信号时序将所述各信号的波形图分别转换为各信号字符序列;
处理模块,用于将所述各信号字符序列及所述数字电路的非信号功能描述,输入至大语言模型,得到所述数字电路的硬件描述语言。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得如权利要求1至7中任一项所述的方法实现。
CN202410207522.2A 2024-02-26 2024-02-26 一种生成数字电路的硬件描述语言的方法及装置 Active CN117787160B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410207522.2A CN117787160B (zh) 2024-02-26 2024-02-26 一种生成数字电路的硬件描述语言的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410207522.2A CN117787160B (zh) 2024-02-26 2024-02-26 一种生成数字电路的硬件描述语言的方法及装置

Publications (2)

Publication Number Publication Date
CN117787160A true CN117787160A (zh) 2024-03-29
CN117787160B CN117787160B (zh) 2024-05-14

Family

ID=90389496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410207522.2A Active CN117787160B (zh) 2024-02-26 2024-02-26 一种生成数字电路的硬件描述语言的方法及装置

Country Status (1)

Country Link
CN (1) CN117787160B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751592A (en) * 1993-05-06 1998-05-12 Matsushita Electric Industrial Co., Ltd. Apparatus and method of supporting functional design of logic circuit and apparatus and method of verifying functional design of logic circuit
JP2006113796A (ja) * 2004-10-14 2006-04-27 Matsushita Electric Ind Co Ltd シミュレーション方法
CN1815480A (zh) * 2005-02-03 2006-08-09 威盛电子股份有限公司 使用波形产生触发的方法与系统
CN109144848A (zh) * 2018-06-30 2019-01-04 南京理工大学 一种Verilog HDL代码白盒测试辅助平台及其工作过程
CN115455873A (zh) * 2022-09-14 2022-12-09 深存科技(无锡)有限公司 支持内嵌脚本语言的hdl代码生成方法
CN116663467A (zh) * 2023-07-27 2023-08-29 北京开源芯片研究院 断言等效硬件库的构建方法、装置、电子设备及存储介质
CN219872384U (zh) * 2022-03-02 2023-10-20 台湾积体电路制造股份有限公司 集成电路设计优化的装置及存储集成电路设计指令的装置
CN116933697A (zh) * 2023-09-18 2023-10-24 上海芯联芯智能科技有限公司 一种将自然语言转换为硬件描述语言的方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751592A (en) * 1993-05-06 1998-05-12 Matsushita Electric Industrial Co., Ltd. Apparatus and method of supporting functional design of logic circuit and apparatus and method of verifying functional design of logic circuit
JP2006113796A (ja) * 2004-10-14 2006-04-27 Matsushita Electric Ind Co Ltd シミュレーション方法
CN1815480A (zh) * 2005-02-03 2006-08-09 威盛电子股份有限公司 使用波形产生触发的方法与系统
CN109144848A (zh) * 2018-06-30 2019-01-04 南京理工大学 一种Verilog HDL代码白盒测试辅助平台及其工作过程
CN219872384U (zh) * 2022-03-02 2023-10-20 台湾积体电路制造股份有限公司 集成电路设计优化的装置及存储集成电路设计指令的装置
CN115455873A (zh) * 2022-09-14 2022-12-09 深存科技(无锡)有限公司 支持内嵌脚本语言的hdl代码生成方法
CN116663467A (zh) * 2023-07-27 2023-08-29 北京开源芯片研究院 断言等效硬件库的构建方法、装置、电子设备及存储介质
CN116933697A (zh) * 2023-09-18 2023-10-24 上海芯联芯智能科技有限公司 一种将自然语言转换为硬件描述语言的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
章琦;陈惠明;毛玉兵;白岚;: "线阵CCD驱动时序及信号采集系统的设计", 仪表技术与传感器, no. 02, 15 February 2010 (2010-02-15) *

Also Published As

Publication number Publication date
CN117787160B (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
US6536031B2 (en) Method for generating behavior model description of circuit and apparatus for logic verification
US5222029A (en) Bitwise implementation mechanism for a circuit design synthesis procedure
US7617469B2 (en) Assertion description conversion device, method and computer program product
CN116629235B (zh) 大规模预训练语言模型微调方法、装置、电子设备及介质
CN111523284A (zh) 转换芯片eda仿真配置的方法、装置及应用
US6760889B2 (en) Method for converting a logic circuit model
CN111400169A (zh) 一种自动化生成用于测试软硬件的网表文件的方法及系统
CN114780100A (zh) 编译方法、电子设备及存储介质
CN116933697B (zh) 一种将自然语言转换为硬件描述语言的方法及装置
CN117787160B (zh) 一种生成数字电路的硬件描述语言的方法及装置
US6505338B1 (en) Computer readable medium with definition of interface recorded thereon, verification method for feasibility to connect given circuit and method of generating signal pattern
CN110941655A (zh) 一种数据格式转换方法及装置
US8645775B2 (en) Method and apparatus for the determination of a repetitive bit value pattern
CN117351273A (zh) 基于因果知识引导的电力设备局部放电故障诊断方法
CN109324838B (zh) 单片机程序的执行方法、执行装置及终端
CN113033132A (zh) 一种确定端口时序约束的方法及相关装置
US6698001B2 (en) Method for generating register transfer level code
EP0615202A2 (en) Apparatus and method for logic description conversion
CN117574817B (zh) 自适应时序变化的设计自动化验证方法、系统及验证平台
US8090564B1 (en) Automatic generation of transaction level bus simulation instructions from bus protocol
EP1183596B1 (en) Generating optimized computer data field conversion routines
CN112558458B (zh) 蓝牙时钟计算电路、蓝牙时钟计算方法、介质及设备
CN115951936B (zh) 向量化编译程序的芯片适配方法、装置、设备及介质
CN113688587B (zh) 一种电路布图的生成方法、装置、计算机设备及存储介质
CN112445784B (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