实现时序逻辑用户定义原语的方法、设备及存储介质与流程

文档序号:32663936发布日期:2022-12-24 00:24阅读:23来源:国知局
实现时序逻辑用户定义原语的方法、设备及存储介质与流程

1.本公开涉及计算机软件领域,尤其涉及一种实现时序逻辑用户定义原语的方法、设备及存储介质。


背景技术:

2.verilog语言中内置了多种基础电路元件,例如,and、or、xor等。但是在实际使用时,用户有时候需要构建特定功能的模块,这些模块如果仅用内置的这些基础元件去描述可能会很复杂。所以,verilog还为用户提供了自己编写原语的能力,这种原语就是用户定义原语(user-defined primitive,简称udp)。
3.udp包括组合逻辑udp和时序逻辑udp。其中,时序逻辑udp的当前输出值不但取决于当前输入值,还取决于当前的内部状态(即,上一个输出值)。
4.udp的实现通常是通过查找真值表的方式来获取输出。以边沿触发的时序逻辑udp为例,其输入的可能状态包括9种(00,01,0x,10,11,1x,x0,x1,xx,即,从0到0,从0到1,从0到x等)。此时,对于一个输入为n的边沿触发的时序逻辑udp,它的真值表中元素的数量是9n*3,其中,3表示上一个输出值可能有三种状态(0,1,x)。传统的时序逻辑udp的真值表方案会造成存储空间的巨大开销。


技术实现要素:

5.有鉴于此,本公开提出了一种实现时序逻辑用户定义原语的方法、设备及存储介质。
6.本公开第一方面,提供了一种实现时序逻辑用户定义原语的方法,包括:接收所述用户定义原语的描述,所述描述至少包括第一输入、第二输入以及与所述第一输入和所述第二输入关联的输出;根据所述用户定义原语的所述描述生成与所述第一输入和所述第二输入分别对应的第一真值表和第二真值表,其中,所述第一真值表包括所述第一输入、所述第二输入和所述输出在上一时刻的第一在先输入值、第二在先输入值和在先输出值,以及所述第一输入在当前时刻的第一当前输入值;确定所述第一真值表中与所述第一在先输入值、所述第二在先输入值、所述在先输出值和所述第一当前输入值对应的第一元素值;以及基于所述第一元素值,在所述第一真值表中确定所述用户定义原语的所述输出在当前时刻的当前输出值。
7.本公开第二方面,提供了一种实现时序逻辑用户定义原语的电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以使得所述电子设备执行如第一方面所述的方法。
8.本公开第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子设备的一组指令,该组指令用于使所述电子设备执行如第一方面所述的方法。
9.本公开提供的一种实现时序逻辑用户定义原语的方法、设备及存储介质,通过对
udp的每一个输入分别生成对应的真值表,有效减少了真值表中元素的数量,进而降低了真值表对存储空间的占用。在仿真运行过程中,仿真工具可以更快地读取存储的真值表,提高udp的实现效率。
附图说明
10.为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
11.图1a示出了根据本公开实施例的示例性电子设备的结构示意图。
12.图1b示出了根据本公开实施例的示例性仿真工具的示意图。
13.图2a示出了根据本公开实施例的示例性时序逻辑用户定义原语的描述的示意图。
14.图2b示出了根据本公开实施例的示例性传统真值表的示意图。
15.图2c示出了根据本公开实施例的与第一输入对应的示例性第一真值表的示意图。
16.图3示出了根据本公开实施例的示例性实现时序逻辑用户定义原语的方法的流程图。
具体实施方式
17.为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
18.需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
19.如上所述,传统的时序逻辑用户定义原语(udp)的真值表中元素的数量达到9n*3,元素数量越多,真值表占据的存储空间也就越大。因此,传统的时序逻辑udp的真值表方案会造成存储空间的巨大开销。
20.有鉴于上述问题,本公开提供一种实现时序逻辑用户定义原语的方法、设备及存储介质,通过对每一个输入分别生成对应的真值表,有效减少了真值表中元素的数量,进而降低了真值表对存储空间的占用。
21.图1a示出了根据本公开实施例的示例性电子设备100的结构示意图。
22.电子设备100例如可以是主机计算机。电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108可以通过总线110实现彼此之间在电子设备100内部的通信连接。
23.处理器102可以是中央处理器(central processing unit,cpu)、图像处理器、神经网络处理器、微控制器、可编程逻辑器件、数字信号处理器、应用专用集成电路(application specific integrated circuit,asic)、或一个或多个集成电路。处理器102
可以用于进行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1a所示,处理器102可以包括多个处理器102a、102b和102c。
24.存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据、真值表等)。例如,如图1a所示,存储的数据可以包括程序指令(例如,用于实现本公开的技术的程序指令)以及真值表。处理器102也可以访问存储的程序指令和真值表,并且执行程序指令以生成或读取真值表。存储器104可以包括非暂态计算机可读存储介质,例如易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(ram)、只读存储器(rom)、光盘、磁盘、硬盘、固态硬盘(ssd)、闪存、存储棒等。
25.网络接口106可以配置为使电子设备100能够经由网络与一个或多个其他外部装置进行通信。该网络可以是能够传输和/或接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、wifi、近场通信(nfc)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(nic)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
26.外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入装置以及显示器、扬声器、振动器、指示灯等输出装置。
27.总线110可以被配置为在电子设备100的各个组件(例如,处理器102、存储器104、网络接口106和外围接口108)之间传输信息,并且例如可以是内部总线(例如,处理器-存储器总线)、外部总线(usb端口、pci-e总线)等。
28.在一些实施例中,除了图1a所示出的以及上述所描述的处理器102、存储器104、网络接口106、外围接口108和总线110之外,电子设备100还可以包括实现正常运行所需的一个或多个其他组件和/或实现本公开的实施例的解决方案所必需的一个或多个其他组件。在一些实施例中,电子设备100可能不包含图1a中所示的一个或多个组件。
29.需要说明的是,尽管上述电子设备100的构成架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该电子设备100的构成架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述电子设备100的构成架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
30.图1b示出了根据本公开实施例的示例性仿真工具120的示意图。仿真工具120可以是运行在电子设备100上的计算机程序。
31.在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真。仿真工具例如可以是芯华章科技股份有限公司出品的galaxsim仿真工具。图1b示出的示例性仿真工具120可以包括编译器122和仿真器124。编译器122可以接收源代码121(例如,vhdl、verilog、systemverilog等硬件描述语言),并编译为执行代码123(例如,机器码、汇编代码、软件代码、真值表等)。仿真器124可以根据执行代码123进行仿真,并将仿真结果125输出。例如,仿真工具120可以将仿真结果125经由图1a的外围接口108输出到输出设备上(例如,显示在显示器上)。
32.在一些实施例中,当需要在verilog语言所编写的源代码121中构建特定功能的模块时,用户可以自行编写udp以满足功能需要。
33.为便于描述,本公开实施例以一个二输入的时序逻辑udp作为示例进行描述。
34.图2a示出了根据本公开实施例的示例性时序逻辑用户定义原语的描述200的示意图。描述200可以包括udp状态表。udp状态表可以由用户定义,代表根据输入状态和udp的当前状态得到的udp输出值。
35.如图2a所示,描述200至少可以包括udp的第一输入i1、第二输入i2、上一个时刻的输出值q、以及与第一输入i1、第二输入i2、上一时刻输出值q相关联的当前时刻的输出q+。可以理解的是,描述200可以包括多于2个的输入。从描述200中可以得到,当第一输入i1是从上一时刻的0跳变到当前时刻的1(即,第一输入i1是上升沿),第二输入i2是0,且上一时刻的输出值q是1时,udp当前时刻的输出q+是0;当第一输入i1是上升沿,第二输入i2是1时,不管上一时刻的输出值q是多少,udp当前时刻的输出q+是1。
36.udp的实现通常是通过查找真值表的方式来获得输出的。
37.图2b示出了根据本公开实施例的示例性传统真值表210的示意图。对于一个二输入的时序逻辑udp来说(即输入n=2),传统的真值表方案中元素的数量是243。
38.在一些实施例中,仿真工具120可以基于如图2a所示的描述200分别生成与第一输入i1对应的第一真值表和与第二输入i2对应的第二真值表。
39.图2c示出了根据本公开实施例的与第一输入i1对应的示例性第一真值表220的示意图。
40.如图2c所示,第一真值表220中可以包括udp的第一输入i1在上一时刻的在先输入值i1,第二输入i2在上一时刻的在先输入值i2,udp在上一时刻的在先输出值q,以及第一输入i1在当前时刻的当前输入值i1+。其中,在先输入值i1、i2和在先输出值q均可以为(0,1,x),所以第一真值表220有33=27种可能的状态,即,第一真值表220可以是27行。udp的当前输入值i1+可以为(0,1,x,z)。仿真工具120可以根据图2a所示的描述200得到第一真值表220中与在先输入值i1、i2、在先输出q、当前输入i1+对应的元素值。
41.以i1=x,i2=x,q=x,i1+=0为例,此时,第一输入i1为(x0),第二输入i2为x,在先输出q为x。回到如图2a所示的描述200,这种状态未被定义,所以当前输出q+为x(即,未知)。用户可以定义输出x的值为3。因此,此时udp的当前输出值q+为x=3。
42.为了用户更方便的查找输入变化后udp的输出值,第一真值表220还可以包括元素位置(如第一真值表220的第一列所示)。元素位置从0开始标识。在一些实施例中,由于第一输入i1在当前时刻的当前输入值i1+可以为(0,1,x,z)这四种状态,所以每一行的元素位置的值都在上一行元素位置的值的基础上加4。第一真值表220中元素位置的值可以为0,4,8,

,104,共计27个值。
43.仿真工具120可以使用i1+替换i1,q+替换q,在第一真值表220中找到i1=0,i2=x,q=x处于元素位置为36的行。基于该元素位置的值36和前述得到的当前输出值3,仿真工具120可以计算得到与i1=x,i2=x,q=x,i1+=0对应的元素值。在一些实施例中,仿真工具120可以使用元素位置的值36与当前输出值3的和作为该元素值。如图2c所示,与i1=x,i2=x,q=x,i1+=0对应的元素值为36+3=39。
44.类似地,对于i1=x,i2=x,q=x,i1+=1,仿真工具120可以重复前述步骤,从描述
200中得到当前输出q+为x(即,3);在第一真值表220中找到i1=1,i2=x,q=x处于元素位置为72的行。所以,与i1=x,i2=x,q=x,i1+=1对应的元素值为72+3=75。依此类推,直至仿真工具120得到第一真值表220中所有的元素值。
45.同样地,仿真工具120可以使用生成第一真值表220的方法来生成与第二输入i2对应的第二真值表,在此不再赘述。
46.经过前述步骤,仿真工具120已经分别生成了与第一输入i1对应的第一真值表220和与第二输入i2对应的第二真值表。在仿真过程中,当udp接收到新的第一输入或第二输入时,仿真工具120就可以直接通过查找已生成的第一真值表220或第二真值表来获得udp的当前输出值。
47.以udp接收到新的第一输入i1为例,例如,i1=x,i2=x,q=x,i1+=0,此时,第一输入i1由在先输入x变为当前输入0。
48.在一些实施例中,仿真工具120可以在第一真值表220中找到相应的元素值39。元素值39在计算机中以二进制数据(100111)进行存储。基于该元素值39,仿真工具120可以获取元素值39在计算机中存储的低两位数据(11),得到udp的当前输出值3。
49.在另一些实施例中,仿真工具120可以获取元素39在计算机中存储的低两位数据之外的高位数据(100100),该高位数据(100100)可以指示当前输出值q+在第一真值表220中的位置36。仿真工具120根据该高位数据的值就可以在第一真值表220中确定当前输出在元素位置为36的行。仿真工具120可以从确定的行中读取输出(即,q列)对应的值x(即,3)为当前输出值。
50.在又一些实施例中,仿真工具120可以使用元素值39对第一输入i1的当前输入值i1+的状态数4执行取模运算。取模运算所得到的结果3就是此时udp的当前输出值。
51.在一些实施例中,udp还可以同时接收到新的第一输入i1和新的第二输入i2。此时,仿真工具120可以先在第一真值表220中处理新的第一输入i1,将从第一真值表120中查找得到的输出作为在先输出q;再利用该新的第一输入i1、在先输出q在第二真值表中处理新的第二输入i2,从第二真值表中得到udp的当前输出值q+。这样,仿真工具120通过在两个真值表中一次分别处理变化的输入值,得到最终udp的当前输出值。
52.采用本公开实施例所使用的方法,每个真值表中元素值的数量为3
n+1
*4。对于一个二输入的时序逻辑udp来说(即输入n=2),每个真值表元素值的数量为108,两个真值表的元素值的总数量为216。可以看到,元素值的总量小于如图2b所示的传统真值表中的元素数量243。
53.在一些实施例中,udp的输入z是和输入x作一样的处理的,因此当前输入值i1+=x和i1+=z可以合并为同一列处理。在这种情况下,第一真值表220的元素值的数量可以进一步减少为81。相应地,两个真值表的元素值的总数量为162,进一步减少了真值表中的元素值的数量。
54.可以理解的是,上述实施例是以一个二输入的时序逻辑udp为例进行说明的。在实际应用中,时序逻辑udp至少可以支持9个输入。这种情况下,传统真值表方案中的元素数量高达10
10
量级,而本公开实施例所使用的方法可以将元素值的数量降低到106量级。随着输入数量的增多,本公开实施例所提供的方法在存储空间方面的优势愈发明显。
55.本公开实施例所提供的方法通过对udp的每一个输入分别生成对应的真值表,有
效减少了真值表中元素的数量,进而降低了真值表对存储空间的占用。在仿真运行过程中,仿真工具120可以更快地读取存储的真值表,提高udp的实现效率。
56.图3示出了根据本公开实施例的示例性实现时序逻辑用户定义原语(udp)的方法300的流程图。方法300可以由例如图1a的电子设备100来执行,更具体地,可以由在电子设备100上运行的仿真工具120执行。方法300可以包括以下步骤。
57.在步骤s302,仿真工具120可以接收用户定义原语(udp)的描述(例如,图2a所示的描述200)。该描述至少包括第一输入(例如,图2a所示的第一输入i1)、第二输入(例如,图2a所示的第二输入i2)以及与该第一输入和所述第二输入关联的输出(例如,图2a所示的上一时刻输出值q和当前时刻的输出值q+)。
58.在一些实施例中,该udp的描述可以包括udp状态表。
59.在步骤s304,仿真工具120可以根据该udp的描述生成与该第一输入和该第二输入分别对应的第一真值表(例如,图2c所示的第一真值表220)和第二真值表。其中,该第一真值表包括该第一输入、该第二输入和该输出在上一时刻的第一在先输入值(例如,图2c所示的在先输入值i1)、第二在先输入值(例如,图2c所示的在先输入值i2)和在先输出值(例如,图2c所示的在先输出值q),以及该第一输入在当前时刻的第一当前输入值(例如,图2c所示的当前输入值i1+)。
60.在步骤s306,仿真工具120可以确定该第一真值表(例如,图2c所示的第一真值表220)中与该第一在先输入值(例如,图2c所示的在先输入值i1)、该第二在先输入值(例如,图2c所示的在先输入值i2)、该在先输出值(例如,图2c所示的在先输出值q)和该第一当前输入值(例如,图2c所示的当前输入值i1+)对应的第一元素值。
61.在一些实施例中,该第一真值表还包括元素位置(例如,图2c所示的第一真值表220的第一列“元素位置”)。在一些实施例中,该元素位置可以配置为该第一真值表的位置索引,并且该元素位置的值由该第一当前输入值的状态数(例如,图2c所示的第一输入i1的当前输入值i1+的四种状态,状态数为4)确定。例如,第一真值表220中元素位置的值可以为0,4,8,

,104。
62.在一些实施例中,仿真工具120可以根据该第一在先输入值(例如,i1=x)、该第一当前输入值(例如,i1+=0)、该第二在先输入值(例如,i2=x)和该在先输出值(例如,q=x)从该udp的描述(例如,图2a所示的描述200)中确定该udp的当前输出值(例如,q+=x=3)。仿真工具120根据该第一当前输入值(例如,i1+=0)、该第二在先输入值(例如,i2=x)和该当前输出值(例如,q+=x)在该第一真值表中可以确定该元素位置(例如,元素位置36)。仿真工具120可以根据该元素位置和该当前输出值计算该第一元素值。
63.在一些实施例中,仿真工具120可以使用该元素位置的值(例如:元素位置的值36)与该当前输出值(例如,q+=3)的和作为该第一元素值(例如,36+3=39)。
64.在一些实施例中,仿真工具120可以使用生成第一真值表的方法来生成与第二输入对应的第二真值表,以确定该第二真值表中的第二元素值。
65.在步骤s308,仿真工具120可以基于该第一元素值(例如,39),在该第一真值表中确定该udp的输出在当前时刻的当前输出值。
66.在一些实施例中,仿真工具120可以获取该第一元素值的低两位数据(例如,39的低两位数据11)作为该当前输出值(例如,3)。
67.在另一些实施例中,仿真工具120可以获取该第一元素值的低两位数据之外的高位数据(例如,39的高位数据100100)。该高位数据可以指示该当前输出值在该第一真值表中的元素位置(例如,元素位置36)。仿真工具120可以根据该元素位置在该第一真值表中确定该当前输出值所在的行(例如,元素位置36所指示的行)。仿真工具120可以从该行中确定该当前输出值(例如,该行的q列的值x=3)。
68.在又一些实施例中,仿真工具120可以基于该第一元素值(例如,39)和该第一当前输入值的状态数(例如,状态数4)进行取模运算。仿真工具120可以将该取模运算的结果作为该当前输出值(例如,运算结果3)。
69.在一些实施例中,udp可以同时接收到新的第一输入和新的第二输入。仿真工具120可以基于第一元素值,在第一真值表中确定udp的在先输出值。然后,仿真工具120可以继续基于第二元素值,在第二真值表中确定所udp的当前输出值。
70.本公开还提供了一种实现时序逻辑用户定义原语的电子设备。该电子设备可以是图1a所示的电子设备100。电子设备100可以被配置为执行存储在存储器104中的计算机程序以实现与本公开一致的实现时序逻辑用户定义原语的方法,诸如上述示例性方法(例如,图3中所示的方法300)。此处不再赘述。
71.本公开还提供了一种非暂态计算机可读存储介质。非暂态计算机可读存储介质存储电子设备100的一组指令。当该组指令被执行时,使得电子设备100实现与本公开一致的实现时序逻辑用户定义原语的方法,诸如上述示例性方法(例如,图3中所示的方法300)。此处不再赘述。
72.本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
73.上述对本公开特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
74.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
75.另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当
完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。
76.尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。
77.本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1