CN112580297B - 一种编解码数据的方法、电子设备及存储介质 - Google Patents
一种编解码数据的方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112580297B CN112580297B CN202011580456.1A CN202011580456A CN112580297B CN 112580297 B CN112580297 B CN 112580297B CN 202011580456 A CN202011580456 A CN 202011580456A CN 112580297 B CN112580297 B CN 112580297B
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- escape
- numbers
- encoding
- 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
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/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/06—Structured ASICs
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)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开提供一种编解码数据的方法、电子设备及存储介质。该数据包括相同的多个目标数,该方法包括:分析所述数据集以确定所述数据集中出现频率最低的一组数作为转义符,其中,所述一组数包括分别作为第一转义符和第二转义符的第一数和第二数,其中,所述第一转义符用于指示所述第一数和第二数,所述第二转义符用于指示第一数量的所述目标数,所述第一数量大于或等于3;基于所述第一转义符和第二转义符编码所述数据集;以及基于编码后的数据集生成数据文件。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种编解码数据的方法、电子设备及存储介质。
背景技术
在集成电路的验证领域,仿真一般是指将设计进行编译之后在计算机上运行,以对设计的各种功能进行仿真测试。设计可以是,例如,用于供专门应用的集成电路(Application Specific Integrated Circuit,简称ASIC)或者片上系统芯片(System-On-Chip,简称SOC)的设计。因此,在仿真中被测试或验证的设计又可以称为待测设备(DeviceUnder Test,简称DUT)。
然而,在对设计进行仿真时,仿真过程中会产生大量的数据,这些数据的存储将占用大量的存储空间。
发明内容
有鉴于此,本公开的目的在于提出一种编解码数据的方法、电子设备及存储介质。
本公开的第一方面,提供了一种编码数据集的方法,其中,所述数据集包括相同的多个目标数,所述方法包括:
分析所述数据集以确定所述数据集中出现频率最低的一组数作为转义符,其中,所述一组数包括分别作为第一转义符和第二转义符的第一数和第二数,其中,所述第一转义符用于指示所述第一数和第二数,所述第二转义符用于指示第一数量的所述目标数,所述第一数量大于或等于3;
基于所述第一转义符和第二转义符编码所述数据集;以及
基于编码后的数据集生成数据文件。
本公开的第二方面,提供了一种解码数据的方法,其中,所述数据包括数据集,所述方法包括:
分析所述数据集以确定所述数据集中的第一转义符和第二转义符,其中所述第一转义符和第二转义符表示为第一数和第二数,所述第一转义符用于指示所述第一转义符和所述第一数或第二数的组合表示所述第一数或第二数,所述第二转义符用于指示第一数量的所述目标数,所述第一数量大于或等于3;
基于所述第一转义符和第二转义符解码所述数据集;以及
基于解码后的数据集生成数据文件;
其中,所述数据文件中的所述第一数和第二数是所述解码后的数据集中出现频率最低的一组数,所述解码后的数据集包括相同的多个所述目标数。
本公开的第三方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现第一方面或第二方面所述的方法。
本公开的第四方面,提供了一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面或第二发明所述的方法。
本公开实施例提供的编解码数据的方法、电子设备及存储介质,通过将在数据集中出现频率最低的一组数作为转义符,将该组数中的第一数和第二数分别作为第一转义符和第二转义符,并基于所述第一转义符和第二转义符编码所述数据集,其中第一转义符指示第一数和第二数,第二转义符指示第一数量的目标数,使得数据集中的相同的多个目标数能够通过第二转义符压缩数据量,进而压缩了数据集的整体数据量,从而减少了仿真过程产生的数据所占用的存储空间。此外,采用在数据集中出现频率最低的一组数作为转义符,可以尽量减少利用第一转义符转义第一数和第二数的频率,以尽可能压缩数据集的数据量,并降低了编解码的计算负担。
附图说明
为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A示出了本实施例所提供的一种电子设备的结构示意图。
图1B示出了根据本公开实施例的示例性编译器的示意图。
图2A示出了根据本公开实施例的示例性仿真工具的示意图。
图2B示出了根据本公开实施例的仿真过程中产生的数据的示意图。
图3A示出了根据本公开实施例的仿真工具的示意图。
图3B示出了根据本公开实施例的仿真过程中产生的数据的示意图。
图3C示出了根据本公开实施例的编码后的数据的示意图。
图3D示出了根据本公开实施例的仿真过程中产生的数据的示意图。
图3E示出了根据本公开实施例的编码后的数据的示意图。
图3F示出了根据本公开实施例的存储的数据文件的示意图。
图4A示出了根据本公开实施例的仿真工具的示意图。
图4B示出了根据本公开实施例的存储的数据文件的示意图。
图4C示出了根据本公开实施例的解码后的数据的示意图。
图4D示出了根据本公开实施例的解码后的数据文件的示意图。
图5示出了本公开实施例所提供的示例性编码方法的流程示意图。
图6示出了本公开实施例所提供的示例性解码方法的流程示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
本公开实施例提供了一种编解码数据的方法、电子设备及存储介质。其中,用于编码包括相同的多个目标数的数据集的方法包括:分析所述数据集以确定所述数据集中出现频率最低的一组数作为转义符,其中,所述一组数包括分别作为第一转义符和第二转义符的第一数和第二数,其中,所述第一转义符用于指示所述第一数和第二数,所述第二转义符用于指示第一数量的所述目标数,所述第一数量大于或等于3;基于所述第一转义符和第二转义符编码所述数据集;以及基于编码后的数据集生成数据文件。
本公开实施例提供的编解码数据的方法、电子设备及存储介质,通过将在数据集中出现频率最低的一组数作为转义符,将该组数中的第一数和第二数分别作为第一转义符和第二转义符,并基于所述第一转义符和第二转义符编码所述数据集,其中第一转义符指示第一数和第二数,第二转义符指示第一数量的目标数,使得数据集中的相同的多个目标数能够通过第二转义符压缩数据量,进而压缩了数据集的整体数据量,从而减少了仿真过程产生的数据所占用的存储空间。此外,采用在数据集中出现频率最低的一组数作为转义符,可以尽量减少利用第一转义符转义第一数和第二数的频率,以尽可能压缩数据集的数据量,并降低了编解码的计算负担。
图1A示出了本实施例所提供的一种电子设备100的结构示意图。电子设备100例如可以是计算机主机。该电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在设备内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1A所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1A所示,存储的数据可以包括程序指令(例如,用于实现本公开的技术方案的程序指令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述设备仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
图1B示出了根据本公开实施例的示例性编译器120的示意图。
编译器120可以基于待编译的计算机代码来生成目标代码的计算机程序。待编译的计算机代码又可以称为源代码。通常,编写源代码的源语言是高级编程语言。高级编程语言可以例如是C++、Java等软件编程语言或VHDL、Verilog、SystemVerilog等硬件描述语言。目标代码则可以是例如汇编代码、机器码等。
编译器120例如可以存储在图1A所示的存储器104中,并且由处理器102执行。
如图1B所示,编译器120可以包括前端122、中端124以及后端126。
前端122可以用于根据具体的源语言来分析源代码的词法、语法、语义。
在源代码的词法、语法、语义分析完成后,中端124可以将源代码转换为中间表示(或中间代码),并可以优化该中间表示。例如,中端124可以移除无用的代码、移除不可访问的代码、清除未使用的变量等。优化后的中间表示则可以被传递给后端126进行进一步处理。
后端126可以根据目标处理器(例如,图1A的处理器102)的架构来进一步优化中间表示,并生成目标代码。通常,目标代码是机器码。
可以理解的是,编译器的结构不限于图1B的示例。例如,前端122和中端124可以被合称为编译器的前端,或者,中端124和后端126可以被合称为编译器的后端。图2示出了根据本公开实施例的仿真工具200的示意图。仿真工具200可以是运行在电子设备100上的计算机程序。
在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真。仿真工具例如可以是芯华章科技股份有限公司出品的GalaxSim仿真工具。图2A示出的示例性仿真工具200可以包括编译器120和仿真器210。编译器120可以将设计202编译为目标代码204,仿真器210可以根据目标代码204进行仿真,并将仿真结果206输出。例如,仿真工具200可以将仿真结果(例如,仿真波形图)经由图1A的外围接口108输出到输出设备上(例如,显示在显示器上)。
在仿真工具200的仿真过程中可能会产生大量的数据。在一些场景中,这些产生的数据通常是非代码的数据。例如,产生的数据可以是用于记录逻辑系统设计中被优化后的节点与未优化的原始节点之间对应关系的数据。这些数据的每个值,例如,可以以8比特的数字进行存储。也就是说,数据的每个值可以表示0至255之间或者-128至127之间的某个数值。
图2B示出了根据本公开实施例的仿真过程中产生的数据208的示意图。如图2B所示,数据208至少具有2个特点,其一,包含大量的重复数值,例如,“0”;其二,部分数值出现的概率很低。由此可以看出,在仿真工具200的仿真过程中产生的数据的信息含量并不高(例如,包含大量的0),同时,数据量比较大。
鉴于此,本公开的实施例提供了一种用于减少数据存储量的仿真工具及方法。
图3A示出了根据本公开实施例的仿真工具300的示意图。
仿真工具300可以包括编译器304和仿真器308,仿真器308可以进一步包括编码器3082。编译器304可以将设计302编译成目标代码306,仿真器308则可以在基于目标代码306进行仿真之后生成仿真结果310。
在仿真器308进行仿真的过程中,可以产生一些数据。图3B示出了根据本公开实施例的仿真过程中产生的数据312的示意图。如图3B所示,数据312中包括多个重复的数,例如,“0”,而这些重复的数中的每一个都需要占用存储空间,因此,可以考虑对这些重复的数进行编码,以减少数据量。
编码器3082可以用于对数据312进行编码以压缩其数据量。在编码之前,编码器3082可以分析数据312以确定数据312中出现频率最低的一组数作为转义符。例如,在数据312中,6、7、8、9这四个数仅出现了一次,因此,可以将6、7、8、9这组数作为转义符。
由于从数据312中选定的数值需要用作转义符,因此,当作为转义符的数值单独出现在编码后的数据中时,它不再被认为是该数值本身,而是具有其他含义。鉴于此,需要从这组数中选定一个数作为指示其他转义符的原本数值的转义符。例如,可以选择“6”作为第一转义符,用于指示被选定的转义符的原本数值。图3C示出了根据本公开实施例的编码后的数据314的示意图。例如,如图3C所示,在编码后的数据314中,“66”可以表示数据312中的“6”,“67”可以表示数据312中的“7”,可以看出,第一个数“6”是转义符,它指示其后一位数值为原本数值。采用这种方法,就可以将6、7、8、9这组数中的7、8、9用于指示其他内容,而当编码后的数据中需要表示7、8、9时,则可以表示为“67”、“68”、“69”,如图3C的数据314所示。
可以看出,采用这种方式在一定程度增加了数据量,因此,为了保证编码后的数据是缩短的,在选定这组用作转义符的数时,需要选择在数据312中出现频率最低的一组数。
在确定数据312中出现频率最低的一组数并从中选定第一转义符之后,可以从该组数中选定第二转义符用于指示第一数量的目标数(例如,数据312中的“0”)。在一些实施例中,第一数量可以大于或等于3。例如,选定数据312中的“9”作为第二转义符,用于指示数据312中的3个“0”。这样,在编码后的数据(例如,图3C的数据314)中,一个数值“9”就可以表示原来的三个数值“000”,由于数值“0”在数据312中的数量较多,因此,在编码后就能压缩较多的数据量,从而节省存储空间。可以理解的是,为了进一步压缩数据量,还可以设置用于指示更多目标数(例如,数据312中的“0”)的转义符,例如,用数值“10”指示4个“0”,用数值“11”指示5个“0”,等等。在一些实施例中,还可以从出现频率最低的这组数中选定第三转义符,用于指示数量小于3的目标数。例如,选定数据312中的“8”来指示2个“0”,选定数据312中的“7”来指示1个“0”。
在确定转义符之后,编码器3082可以基于转义符来编码数据312。
例如,可以将数据312中的“6”、“7”、“8”、“9”分别替换为编码后的数据314中的“66”、“67”、“68”、“69”。
又例如,可以将数据312中的3个连续的“0”替换为编码后的数据314中的“9”。然后,将数据312中剩余的2个连续的“0”替换为编码后的数据314中的“8”,将数据312中剩余的1个“0”替换为编码后的数据314中的“7”。
在一些实施例中,针对用于替换目标数的转义符,可以根据其指示的目标数的数量多少设置替换时的优先级。例如,以指示目标数数量最多的转义符为最优先替换,指示目标数数量第二多的次之,依次类推。
以图3B所示的数据312为例,数据312中连续的17个“0”,先按照3个“0”替换为1个“9”的方式,将15个“0”先替换为5个“9”,然后将剩余的2个“0”替换为“8”。类似地,数据312中连续的10个“0”,先按照3个“0”替换为1个“9”的方式,将9个“0”先替换为3个“9”,然后将剩余的1个“0”替换为“7”。
对比数据312和数据314可见,经过编码器3082的编码,长度为48的数据312,缩短成长度为35的数据314。由此可见,通过这种编码方式,可以减少存储相同数据所需要的存储空间。根据前面所述,数据312的每个数值可以是一个8bit的数据,当数据312的数据量很大时,经过上述编码处理之后的数据能够较大地缩减其数据量,从而很好地节省了存储空间。
在数据编码完成后,仿真工具300可以基于编码后的数据314生成数据文件。生成的数据文件可以存储在存储器(例如,图1A的存储器104)中,并可以在需要进一步处理的时候从存储器中取出。
在一些情形下,通过上述编码方式编码后形成的数据可能相较于原始数据反而更长,因此并不能实现存储空间的节省。图3D示出了根据本公开实施例的仿真过程中产生的数据316的示意图,图3E示出了根据本公开实施例的编码后的数据318的示意图。对比可见,编码前的数据316为16个数,而编码后的数据318为19个数,显然,在这种情况下前述编码方法并不能实现数据压缩。
鉴于此,在一些实施例中,仿真工具300在存储数据之前可以先确定编码前的数据的数据量以及编码后的数据的数据量,并将两个数据量进行比对,以确定是编码前数据量更小还是编码后数据量更小。
当编码前的数据量小于或等于编码后的数据量时,仿真工具300可以在数据文件中存储编码前的数据并为数据分配指示字段,该指示字段为第一值(例如,“0”),用于指示该数据文件中存储的是编码前的数据。例如,数据316的数据量小于数据318的数据量,因此,在存储时,选择数据316进行存储,并分配指示字段3162用于指示该数据文件320中存储的是编码前的数据316。
当编码前的数据量大于编码后的数据量时,仿真工具300可以在数据文件中存储编码后的数据并为数据分配指示字段,该指示字段为第二值(例如,“1”),用于指示该数据文件中存储的是编码后的数据。例如,数据312的数据量大于数据314的数据量,因此,在存储时,选择数据314进行存储,并分配指示字段3142用于指示该数据文件320中存储的是编码后的数据314。
图3F示出了采用上述方法最终存储的数据文件的示意图。可以看到,通过比对编码前后的数据量,在编码后的数据量反而更大时,存储编码前的数据,减少了因为编码反而增加了数据量的情况,保证了数据压缩的有效性。
图4A示出了根据本公开实施例的仿真工具400的示意图。
在仿真工具300的基础上,仿真工具400的仿真器308可以进一步包括解码器4084。
仿真工具400可能需要调取出已经存储的仿真过程中产生的数据以进一步进行处理。图4B示出了根据本公开实施例的存储的数据文件的示意图。例如,图4B的数据文件420可以是在仿真的优化过程中产生的数据,而该数据文件420可以是记录逻辑系统设计中被优化后的节点与未优化的原始节点之间对应关系的数据,假设需要对未优化的原始节点进行优化时,可能需要调取数据文件420来做进一步处理。数据文件420可以是经过编码的数据,因此,解码器4084可以用于对数据文件420进行解码以将编码过的数据恢复为原状。
数据文件420可以进一步包括多个数据,例如图4B的数据414和数据416。解码器4084可以先分析数据414以确定数据414中的转义符。转义符可以是在编码数据的时候确定下来的,例如,可以是从数据中出现频率最低的一组数中选取的。其中,有的转义符用于指示该转义符和其后一位的数值的组合表示该数值,例如,数据414中的“66”、“67”、“68”、“69”表示的是“6”、“7”、“8”、“9”。有的转义符用于指示第一数量的目标数,该第一数量可以大于或等于3,例如,数据414中的“9”表示3个“0”。在一些实施例中,还可以设置指示目标数的数量少于第一数量的转义符,例如,数据414中的“8”表示2个“0”,数据414中的“7”表示1个“0”。可以理解的是,转义符的配置可以由编码器3082传递给解码器4084。
在确定转义符之后,解码器4084可以基于转义符解码数据414。
例如,数据414中的“66”、“67”、“68”、“69”可以分别替换为“6”、“7”、“8”、“9”。又例如,数据414中的“9”可以替换为3个“0”,数据414中的“8”可以替换为2个“0”,数据414中的“7”可以替换为1个“0”。
图4C示出了根据本公开实施例的解码后的数据412的示意图。可以看出,解码后的数据412包括相同的多个“0”,由此可以推知,解码前的数据414的数据量更小,占用存储空间更少。
在一些实施例中,数据文件420中可以包括针对每个数据的指示字段(例如,图4B中的指示字段4142和4162),用于指示对应的数据是否为经过编码的数据。此时,解码器4084可以先确定所述指示字段的内容,以判断是否需要将对应的数据进行解码。
当指示字段为第一值(例如,“0”),说明该指示字段对应的数据是未经编码的数据,可以不对该数据进行解码,而是直接保留该数据。例如,图4B的数据416的指示字段4162为“0”,则数据416可以直接保留下来,而不做解码处理。
当指示字段为第二值(例如,“1”),说明该指示字段对应的数据是经过编码的数据,需要对该数据进行解码。例如,图4B的数据414的指示字段4142为“1”,则数据414需要采用前述的方法进行解码。
在对数据解码完毕后,仿真工具400可以基于解码后的数据生成数据文件。图4D示出了根据本公开实施例的解码后的数据文件430的示意图。如图4D所示,对于指示字段为第一值的数据(例如,数据416),仿真工具400在数据文件430中存储该数据,对于指示字段为第二值的数据(例如,数据414),仿真工具400在数据文件430中存储解码后的数据(例如,数据412)。解码得到的数据文件430可以进一步被用于仿真。
图5示出了本公开实施例所提供的示例性编码方法500的流程示意图。方法500可以由图1A的电子设备100执行。例如,方法500可以由运行在电子设备100上的仿真工具300执行。
方法500可以用于编码包括相同的多个目标数(例如,图3B的数据312中的“0”)的数据集(例如,图3B的数据312)。在一些实施例中,所述数据集是在仿真逻辑系统设计(例如,图3A的设计302)的过程中产生的。该方法500可以具体包括以下步骤。
在步骤502,仿真工具300可以分析所述数据集(例如,图3B的数据312)以确定所述数据集中出现频率最低的一组数(例如,图3B的数据312中的“6”、“7”、“8”、“9”)作为转义符。其中,所述一组数可以包括分别作为第一转义符和第二转义符的第一数(例如,图3B的数据312中的“6”)和第二数(例如,图3B的数据312中的“9”),其中,所述第一转义符(例如,图3C的数据314中的“66”、“69”的第一个“6”)可以用于指示所述第一数(例如,图3C的数据314中的“66”的第二个“6”)和第二数(例如,图3C的数据314中的“69”的“9”),所述第二转义符(例如,图3C的数据314中的“9”)可以用于指示第一数量的所述目标数(例如,图3B的数据312中的“0”)。所述第一数量可以大于或等于3。
在确定转义符之后,在步骤504,仿真工具300可以基于所述第一转义符和第二转义符编码所述数据集。
在一些实施例中,基于所述第一转义符和第二转义符编码所述数据集可以进一步包括:将所述数据集中的第一数(例如,图3B的数据312中的“6”)替换为所述第一转义符和所述第一数的组合(例如,图3C的数据314中的“66”);以及,将所述数据集中的第二数(例如,图3B的数据312中的“9”)替换为所述第一转义符和所述第二数的组合(例如,图3C的数据314中的“69”)。
在一些实施例中,基于所述第一转义符和第二转义符编码所述数据集可以进一步包括:将所述多个目标数的连续的第一数量的所述目标数(例如,图3B的数据312中的连续3个“0”)替换为所述第二转义符(例如,图3C的数据314中的“9”),从而可以将原始数据中的3个数压缩成为1个数。在目标数的数量较多的时候,这种编码方法可以较好地压缩数据量。
在一些实施例中,所述一组数还包括作为第三转义符的第三数(例如,图3B的数据312中的“7”或“8”),所述第三转义符用于指示第二数量的所述目标数(例如,图3B的数据312中的1个“0”或连续2个“0”)。所述方法500还可以包括:将所述多个目标数的连续的第二数量的所述目标数(例如,图3B的数据312中的1个“0”或连续2个“0”)替换为所述第三转义符(例如,图3C的数据314中的“7”或“8”),所述第二数量小于所述第一数量。
在步骤506,仿真工具300可以基于编码后的数据集生成数据文件(例如,图3F的数据文件320)。
为了尽量避免编码后的数据的数据量反而大于未编码的数据的数据量的情况,在一些实施例中,所述数据集还可以包括指示字段,且所述方法500还可以包括:确定编码前的所述数据集(例如,图3B的数据312或图3D的数据316)的第一数据量以及所述编码后的数据集(例如,图3C的数据314或图3E的数据318)的第二数据量;响应于第一数据量小于或等于第二数据量,在所述数据文件(例如,图3F的数据文件320)中存储编码前的所述数据集(例如,图3F的数据316)并设置所述指示字段(例如,图3F的指示字段3162)为第一值;以及,响应于第一数据量大于第二数据量,在所述数据文件中存储编码后的所述数据集(例如,图3F的数据314)并设置所述指示字段(例如,图3F的指示字段3142)为第二值。
图6示出了本公开实施例所提供的示例性解码方法600的流程示意图。方法600可以由图1A的电子设备100执行。例如,方法600可以由运行在电子设备100上的仿真工具400执行。
方法600可以用于解码数据(例如,图4B的数据文件420),该数据包括数据集(例如,图4B的数据414或数据416)。在一些实施例中,所述数据集是在仿真逻辑系统设计(例如,图3A的设计302)的过程中产生的。该方法600可以具体包括以下步骤。
在步骤602,仿真工具400可以分析所述数据集(例如,图4B的数据414)以确定所述数据集中的第一转义符(例如,图4B的数据414中的“66”的第一个“6”)和第二转义符(例如,图4B的数据414中的“9”)。其中所述第一转义符和第二转义符可以表示为第一数(例如,图4C的数据412中的“6”)和第二数(例如,图4C的数据412中的“9”),所述第一转义符可以用于指示所述第一转义符和所述第一数或第二数的组合(例如,图4B的数据414中的“66”或“69”)表示所述第一数(例如,图4C的数据412中的“6”)或第二数(例如,图4C的数据412中的“9”),所述第二转义符可以用于指示第一数量的所述目标数(例如,图4C的数据412中的连续3个“0”),所述第一数量可以大于或等于3。
在确定转义符之后,在步骤604,仿真工具400可以基于所述第一转义符和第二转义符解码所述数据集。
在一些实施例中,基于所述第一转义符和第二转义符解码所述数据集可以进一步包括:将所述数据集中的所述第一转义符和所述第一数的组合(例如,图4B的数据414中的“66”)替换为所述第一数(例如,图4C的数据412中的“6”);以及,将所述数据集中的所述第一转义符和所述第二数的组合(例如,图4B的数据414中的“69”)替换为所述第二数(例如,图4C的数据412中的“9”)。
在一些实施例中,基于所述第一转义符和第二转义符解码所述数据集可以进一步包括:将所述第二转义符(例如,图4B的数据414中的“9”)替换为相邻的第一数量的所述目标数(例如,图4C的数据412中的连续3个“0”)。
在一些实施例中,该方法600还可以包括:分析所述数据集以确定所述数据集中的第三转义符(例如,图4B的数据414中的“7”或“8”),其中所述第三转义符用于指示第二数量的所述目标数(例如,图4C的数据412中的1个“0”或连续2个“0”),所述第二数量小于所述第一数量;以及,将所述数据集中的所述第三转义符替换为第二数量的目标数。
在数据解码完成后,在步骤606,仿真工具400可以基于解码后的数据集生成数据文件(例如,图4D的数据文件430)。
在一些实施例中,所述数据文件中的所述第一数(例如,图4D的数据412中的“6”)和第二数(例如,图4D的数据412中的“9”)可以是所述解码后的数据集中出现频率最低的一组数,所述解码后的数据集可以包括相同的多个所述目标数(例如,图4D的数据412中的“0”)。
为了尽量避免编码后的数据的数据量反而大于未编码的数据的数据量的情况,在一些实施例中,通过指示字段来指示数据集是否经过编码,因此,方法600还可以包括:确定所述指示字段为第一值或第二值;响应于所述指示字段(例如,图4B的指示字段4162)为第一值(例如,“0”),在所述数据文件中存储所述数据集;以及,响应于所述指示字段(例如,图4B的指示字段4142)为第二值(例如,“1”),在所述数据文件中存储解码后的所述数据集。
可以理解,前述方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。
需要说明的是,本公开的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本公开实施例还提供存储了指令的计算机可读存储介质。该指令在被电子设备执行时用于进行上述方法。该计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (14)
1.一种编码数据集的方法,其中,所述数据集包括相同的多个目标数,所述方法包括:
分析所述数据集以确定所述数据集中出现频率最低的一组数作为转义符,其中,所述一组数包括分别作为第一转义符和第二转义符的第一数和第二数,其中,所述第一转义符用于指示所述第一转义符和所述第一数或第二数的组合表示所述第一数或第二数,所述第二转义符用于指示第一数量的所述目标数,所述第一数量大于或等于3;
基于所述第一转义符和第二转义符编码所述数据集;以及
基于编码后的数据集生成数据文件。
2.如权利要求1所述的方法,其中,基于所述第一转义符和第二转义符编码所述数据集进一步包括:
将所述数据集中的第一数替换为所述第一转义符和所述第一数的组合;以及
将所述数据集中的第二数替换为所述第一转义符和所述第二数的组合。
3.如权利要求2所述的方法,其中,基于所述第一转义符和第二转义符编码所述数据集进一步包括:
将所述多个目标数的连续的第一数量的所述目标数替换为所述第二转义符。
4.如权利要求3所述的方法,其中,所述一组数还包括作为第三转义符的第三数,所述第三转义符用于指示第二数量的所述目标数,所述方法还包括:
将所述多个目标数的连续的第二数量的所述目标数替换为所述第三转义符,所述第二数量小于所述第一数量。
5.根据权利要求1所述的方法,其中,所述数据集包括指示字段,且所述方法还包括:
确定编码前的所述数据集的第一数据量以及所述编码后的数据集的第二数据量;
响应于第一数据量小于或等于第二数据量,在所述数据文件中存储编码前的所述数据集并设置所述指示字段为第一值;以及
响应于第一数据量大于第二数据量,在所述数据文件中存储编码后的所述数据集并设置所述指示字段为第二值。
6.根据权利要求1所述的方法,所述数据集是在仿真逻辑系统设计的过程中产生的。
7.一种解码数据的方法,其中,所述数据包括数据集,所述方法包括:
分析所述数据集以确定所述数据集中的第一转义符和第二转义符,其中所述第一转义符和第二转义符表示为第一数和第二数,所述第一转义符用于指示所述第一转义符和所述第一数或第二数的组合表示所述第一数或第二数,所述第二转义符用于指示第一数量的目标数,所述第一数量大于或等于3;
基于所述第一转义符和第二转义符解码所述数据集;以及
基于解码后的数据集生成数据文件;
其中,所述数据文件中的所述第一数和第二数是所述解码后的数据集中出现频率最低的一组数,所述解码后的数据集包括相同的多个所述目标数。
8.根据权利要求7所述的方法,其中,基于所述第一转义符和第二转义符解码所述数据集进一步包括:
将所述数据集中的所述第一转义符和所述第一数的组合替换为所述第一数;以及
将所述数据集中的所述第一转义符和所述第二数的组合替换为所述第二数。
9.根据权利要求8所述的方法,其中,基于所述第一转义符和第二转义符解码所述数据集进一步包括:
将所述第二转义符替换为相邻的第一数量的所述目标数。
10.根据权利要求7所述的方法,还包括:
分析所述数据集以确定所述数据集中的第三转义符,其中所述第三转义符用于指示第二数量的所述目标数,所述第二数量小于所述第一数量;以及
将所述数据集中的所述第三转义符替换为第二数量的目标数。
11.根据权利要求7所述的方法,其中,所述数据集包括指示字段,且所述方法还包括:
确定所述指示字段为第一值或第二值;
响应于所述指示字段为第一值,在所述数据文件中存储所述数据集;以及
响应于所述指示字段为第二值,在所述数据文件中存储解码后的所述数据集。
12.根据权利要求7所述的方法,所述数据集是在仿真逻辑系统设计的过程中产生的。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至12任意一项所述的方法。
14.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1至12任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011580456.1A CN112580297B (zh) | 2020-12-28 | 2020-12-28 | 一种编解码数据的方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011580456.1A CN112580297B (zh) | 2020-12-28 | 2020-12-28 | 一种编解码数据的方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112580297A CN112580297A (zh) | 2021-03-30 |
CN112580297B true CN112580297B (zh) | 2023-04-18 |
Family
ID=75140163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011580456.1A Active CN112580297B (zh) | 2020-12-28 | 2020-12-28 | 一种编解码数据的方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112580297B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4730348A (en) * | 1986-09-19 | 1988-03-08 | Adaptive Computer Technologies | Adaptive data compression system |
JPH1146145A (ja) * | 1998-06-18 | 1999-02-16 | Fujitsu Ltd | データ圧縮装置及びデータ復元装置 |
CN101989443A (zh) * | 2009-03-05 | 2011-03-23 | 马维尔国际贸易有限公司 | 用于数据压缩的多模式编码 |
CN106170921A (zh) * | 2014-02-20 | 2016-11-30 | 古鲁洛吉克微系统公司 | 涉及符号压缩的数据的源编码和解码方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130099946A1 (en) * | 2011-10-21 | 2013-04-25 | International Business Machines Corporation | Data Compression Utilizing Variable and Limited Length Codes |
-
2020
- 2020-12-28 CN CN202011580456.1A patent/CN112580297B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4730348A (en) * | 1986-09-19 | 1988-03-08 | Adaptive Computer Technologies | Adaptive data compression system |
JPH1146145A (ja) * | 1998-06-18 | 1999-02-16 | Fujitsu Ltd | データ圧縮装置及びデータ復元装置 |
CN101989443A (zh) * | 2009-03-05 | 2011-03-23 | 马维尔国际贸易有限公司 | 用于数据压缩的多模式编码 |
CN106170921A (zh) * | 2014-02-20 | 2016-11-30 | 古鲁洛吉克微系统公司 | 涉及符号压缩的数据的源编码和解码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112580297A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112287569B (zh) | 用于仿真逻辑系统设计的方法、电子设备及存储介质 | |
US20110154299A1 (en) | Apparatus and method for executing instrumentation code | |
US10884744B2 (en) | System and method of loop vectorization by compressing indices and data elements from iterations based on a control mask | |
CN112632880B (zh) | 用于逻辑系统设计的编译方法、电子设备及存储介质 | |
CN111124926B (zh) | 模糊测试方法、装置、电子设备及存储介质 | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
CN107145446B (zh) | 一种应用程序app的测试方法、装置和介质 | |
CN109582231B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN114676040A (zh) | 一种测试覆盖率验证方法、装置及存储介质 | |
CN113742221A (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN115422866A (zh) | 用于在仿真器上仿真逻辑系统设计的方法及相关设备 | |
CN112434478B (zh) | 仿真逻辑系统设计的虚拟接口的方法及相关设备 | |
CN112580297B (zh) | 一种编解码数据的方法、电子设备及存储介质 | |
CN115293076B (zh) | 生成电路的方法、电子设备及存储介质 | |
CN113760751B (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN112232003B (zh) | 对设计进行仿真的方法、电子设备及存储介质 | |
CN115688643A (zh) | 仿真逻辑系统设计的方法、设备及存储介质 | |
CN115292178A (zh) | 测试数据搜索方法、装置、存储介质以及终端 | |
CN112131806A (zh) | 验证设计的编译方法、电子设备及存储介质 | |
CN114328062A (zh) | 校验缓存一致性的方法、装置和存储介质 | |
CN113806431A (zh) | 一种传输仿真数据的方法、电子系统及存储介质 | |
US9934035B2 (en) | Device and method for tracing updated predicate values | |
CN107678967B (zh) | 单元测试覆盖率生成方法、装置、可读存储介质及设备 | |
CN115470737B (zh) | 生成数据流图的方法、电子设备及存储介质 | |
CN112989736B (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 |