本发明涉及总线端口功能验证技术领域,特别涉及一种验证总线端口功能覆盖率的方法及系统。
背景技术:
对总线功能的验证中,需要统计端口的功能覆盖率。端口功能覆盖率分为两部分:端口自身的功能覆盖率和端口之间的交叉功能覆盖率。
在相关技术中,总线验证平台列举出各个端口所有的取值范围,然后再逐一进行功能覆盖率设计,并将各端口的取值范围进行交叉处理。这种方式中,对总线端口覆盖率的统计,统计数的增加会带来分析难度的增大,且随着端口位宽的增大,端口覆盖率的统计项成几何倍数的增长会造成验证过程出现遗漏,无法保证验证的完备性;且交叉处理后的统计项也变得很庞大,使后期的分析工作异常复杂。
技术实现要素:
本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。
为此,本发明的一方面目的在于提出一种验证总线端口功能覆盖率的方法。该方法能够简洁、准确地完成对总线端口功能覆盖率的验证且查看快捷。
本发明的另一方面目的在于提出一种验证总线端口功能覆盖率系统。
为了实现上述目的,本发明的一方面实施例公开了一种验证总线端口功能覆盖率的方法,包括以下步骤:从总线中选择出需要进行统计的多个总线端口;分别对所述多个总线端口进行独立分析,以确定所述多个总线端口中每个总线端口的取值范围;建立所述多个总线端口之间的关联关系,并根据所述多个总线端口中每个总线端口的取值范围和所述多个总线端口之间的关联关系,以预定需求分别对所述多个总线端口进行分类;根据分类结果对所述多个总线端口进行端口交叉,并以交叉结果统计总线端口功能覆盖率。
本发明实施例的验证总线端口功能覆盖率的方法,通过选择需要进行统计的多个总线端口,将其进行独立分析后进行关联,进而对其进行分类;通过对分类结果的交叉,统计总线端口功能覆盖率。该方法具有降低分析总线端口功能覆盖率的工作量,验证过程简洁、准确、查看便捷的优点。
在一些示例中,所述多个总线端口包括addr端口、wstrb端口、size端口、length端口和burst_type端口,其中,addr端口为40bit,wstrb端口为32bit,size端口有6个值,length端口为4bit,burst_type端口有3个值。
在一些示例中,所述建立所述多个总线端口之间的关联关系,并根据所述多个总线端口中每个总线端口的取值范围和所述多个总线端口之间的关联关系,以预定需求分别对所述多个总线端口进行分类,包括:将addr端口进行分类,建立与size端口的联系,划分出按size端口对齐的地址,则剩余的地址为非对齐的地址;将wstrb端口进行分类,建立与size端口和addr端口的联系,在各种size端口取值的条件下,以wstrb端口中存在0的个数进行分类;将length端口进行分类,建立与size端口、addr端口和burst_type端口的关系,将length端口划分为跨越cacheline端口和不跨越cacheline端口两个大类。
在一些示例中,所述根据分类结果对所述多个总线端口进行端口交叉,并以交叉结果统计总线端口功能覆盖率,包括:以size端口为基础进行深入分析,将addr端口、wstrb端口、length端口和burst_type端口的各分类项进行交叉,形成最终的总线端口功能覆盖率。
在一些示例中,所述的验证总线端口功能覆盖率的方法,其特征在于,将wstrb端口进行分类,建立与size端口和addr端口的关系,以wstrb端口中0的个数进行分类。
在一些示例中:所述的验证总线端口功能覆盖率的方法,其特征在于,将length端口进行分类,建立与size端口、addr端口和burst_type端口的关系,将length端口划分为跨越cacheline和不跨越cacheline两大类。
本发明的另一方面的实施例公开了一种验证总线端口功能覆盖率系统,包括:选择模块,用于从总线中选择出需要进行统计的多个总线端口;独立分析模块,用于分别对所述多个总线端口进行独立分析,以确定所述多个总线端口中每个总线端口的取值范围;分类模块,用于建立所述多个总线端口之间的关联关系,并根据所述多个总线端口中每个总线端口的取值范围和所述多个总线端口之间的关联关系,以预定需求分别对所述多个总线端口进行分类;统计模块,用于根据分类结果对所述多个总线端口进行端口交叉,并以交叉结果统计总线端口功能覆盖率。
本发明实施例的验证总线端口功能覆盖率的系统,通过选择需要进行统计的多个总线端口,将其进行独立分析后进行关联,进而对其进行分类;通过对分类结果的交叉,统计总线端口功能覆盖率。该系统具有降低分析总线端口功能覆盖率的工作量,验证过程简洁、准确、查看便捷的优点。
在一些示例中,所述多个总线端口包括addr端口、wstrb端口、size端口、length端口和burst_type端口,其中,addr端口为40bit,wstrb端口为32bit,size端口有6个值,length端口为4bit,burst_type端口有3个值。
在一些示例中,所述分类模块用于:将addr端口进行分类,建立与size端口的联系,划分出按size端口对齐的地址,则剩余的地址为非对齐的地址;将wstrb端口进行分类,建立与size端口和addr端口的联系,在各种size端口取值的条件下,以wstrb端口中存在0的个数进行分类;将length端口进行分类,建立与size端口、addr端口和burst_type端口的关系,将length端口划分为跨越cacheline端口和不跨越cacheline端口两个大类。
在一些示例中,所述统计模块用于:以size端口为基础进行深入分析,将addr端口、wstrb端口、length端口和burst_type端口的各分类项进行交叉,形成最终的总线端口功能覆盖率。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述的或附加的方面和优点结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是根据本发明实施例的验证总线端口功能覆盖率的方法的流程图;和
图2是根据本发明实施例的验证总线端口功能覆盖率系统的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似工程的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
以下结合附图描述根据本发明实施例的验证总线端口功能覆盖率的方法及系统。
图1是根据本发明实施例的验证总线端口功能覆盖率的方法的流程图。如图1所示,该验证总线端口功能覆盖率的方法,包括以下步骤:
S1:从总线中选择出需要进行统计的多个总线端口。
具体来说,找到需要进行统计的多个总线端口并选择。
在具体示例中,多个总线端口包括addr端口、wstrb端口、size端口、length端口和burst_type端口,其中,addr端口为40bit,wstrb端口为32bit,size端口有6个值,length端口为4bit,burst_type端口有3个值。
例如,在AMBA AXI总线写通道中,选出需要进行功能覆盖率统计的端口:addr,wstrb,size,length以及burst_type。其中功能覆盖率设计场景中的data_width为256bit,一个cacheline的长度为1024bit。
S2:分别对多个总线端口进行独立分析,以确定多个总线端口中每个总线端口的取值范围。
具体来说,对多个总线端口进行独立分析,得到每个总线端口的取值范围。
例如,在上述AMBA AXI总线写通道中,对多个总线端口进行独立分析,得到取值范围:addr的宽度为40bit,按一个cacheline考虑,只考虑地址的低8bit,则取值范围为0~27;wstrb的宽度为32bit,取值范围为0~231;Size范围有6种:分别是1byte,2byte,4byte,8byte,16byte,32byte;length范围有16项:从1到16;burst_type范围有3项:FIXED,INCR,WRAP。
S3:建立多个总线端口之间的关联关系,并根据多个总线端口中每个总线端口的取值范围和多个总线端口之间的关联关系,以预定需求分别对多个总线端口进行分类。
具体来说,建立多个端口的关联关系,并根据此关联关系和上述多个总线端口取值范围,对多个总线端口进行分类。其中,分类方式为为了实现预定要求的方式。
在具体示例中,对多个总线端口进行分类包括:对addr端口进行分类建立与size端口的联系,划分出按size端口对齐的地址,则剩余的地址为非对齐的地址;对wstrb端口进行分类,建立与size端口和addr端口的联系;对length端口进行分类,建立与size端口、addr端口和burst_type端口的关系。
其中,在对wstrb端口进行分类并建立与size端口和addr端口的关系时,根据wstrb端口中0的个数进行分类;在对length端口进行分类并建立与size端口、addr端口和burst_type端口的关系时,将length端口划分为跨越cacheline和不跨越cacheline两大类。
例如:在上述AMBA AXI总线写通道中,分别对addr端口、wstrb端口和length端口进行分类:
1)对addr进行分类:
在size为32byte的情况下,addr按size对齐,地址步进为0x20,则地址的组合为’h00,’h 20,’h 40,’h 60共四类。
在size为16byte的情况下,addr按size对齐,地址步进为0x10,则地址的组合为’h 00,’h 10,’h 20,’h 30,’h 40,’h 50,’h 60,’h 70共八类,与size不对齐的归为1类,共九类地址。
在size为8byte的情况下,addr按size对齐,地址步进为0x08,则地址的组合为’h 00,’h 08,’h 10,’h 18,’h 20,’h 28,’h 30,’h 38,’h40,’h 48,’h 50,’h 58,’h 60,’h 68,’h 70,’h 78共16类,与size不对齐的归为1类,共17类地址。
在size为4byte的情况下,addr按size对齐,地址步进为0x04,则地址组合为’h00,‘h04,‘h 08,‘h 0c,……共32类,与size不对齐的归为1类,共33类地址。
在size为2byte的情况下,addr按size对齐,地址步进为0x02,则地址组合为’h00,’h 02,‘h04,’h 06,‘h 08,’h 0a,’h 0c,’h 0e,……共64类,与size不对齐的归为1类,共65类地址。
在size为1byte的情况下,若按size对齐,地址步进为0x01,地址组合共128种,没有达到效果,所以此时可按length是否跨越进行划分,则地址组合为:[‘h00:’h70],以及’h71,’h72,……共16类地址。
2)对wstrb进行分类:
wstrb为32bit,其各个bit的值非0即1,wstrb与size和addr还存在一定的逻辑关系,设计中的data_width为256bit,即32byte:
当一次size为32byte时,wstrb的范围可以为(0-32’hffff_ffff)。
当size为16byte时,则wstrb至少应存在16个0,0的位置与addr相关,若addr为size对齐,起始地址为’h00,则wstb[31:16]为0,低16bit有效,其有效范围又为(0-16‘hffff)。
当size为8byte时,则wstrb至少应存在24个0,0的位置与addr相关,若addr为size对齐,起始地址为’h00,则wstb的[31:8]为0,低8bit有效,其有效范围又为(0-8‘hff);
当size为4byte时,则wstrb至少应存在28个0,0的位置与addr相关,若addr为size对齐,起始地址为’h00,则wstb的[31:4]为0,低4bit有效,其有效范围又为(0-4‘hf)。
当size为2byte时,则wstrb至少应存在30个0,0的位置与addr相关,若addr为size对齐,起始地址为’h00,则wstb的[31:2]为0,低2bit有效,其有效范围又为(0-2‘h3)。
当size为1byte时,则wstrb至少应存在31个0,0的位置与addr相关,若addr为size对齐,起始地址为’h00,则wstb的[31:1]为0,最后1个bit有效,其有效范围又为(0-1‘h1)。
根据上面的分析,可以将wstrb按0的个数进行分类,具体分类是:
wstrb的32bit中没有0,即全为1;
wstrb的32bit中只有1个0,无需考虑0存在的具体位置;
wstrb的32bit中只有2个0;
wstrb的32bit中只有3个0;
……(依上类推);
wstrb的32bit中只有16个0,特别的是,当size为16byte时,wstrb中则必定会出现连续的16个0。所以,在此类下可以再细分出两个子类:连续的16个0为一类;不连续的16个0归为一类;
wstrb的32bit中只有17个0;
……(依上类推);
wstrb的32bit中只有24个0,特别的时,当size为8byte时,则必定会出现连续的24个0,所以也会分成两个子类:连续的和不连续的。
wstrb的32bit中只有25个0;
wstrb的32bit中只有26个0;
wstrb的32bit中只有27个0;
wstrb的32bit中只有28个0,特别的是,当size为4byte时,同理,必定会出现连续的28个0,也区分为连续和不连续两类。
wstrb的32bit中只有29个0;
wstrb的32bit中只有30个0,特别的是,当size为2byte时,同理,必定会出现连续的30个0,也区分为连续和不连续两类。
wstrb的32bit中只有31个0,特别的是,当size为1byte时,同理,必定会出现连续的28个0,也区分为连续和不连续两类。
按上述的方法分类,wstrb的分类有33个大类和4个小类,总共37个统计项。
3)对length进行分类:length在不分类的情况下,共有16项,同时,根据size的不同,采用了不同的分类规则,将length区分为两大类:不跨越cacheline的length和可跨越cacheline的length。跨越的含义是:在一次写操作中,如果需要写入数据的地址超过一个cacheline,则认为发生了跨越。
length的分类与addr,size,burst_type有着密切的关系,以size=256bit,addr=’h0为,burst_type=WRAP为例,统计项如下:
length范围[1:4]时,不跨越cacheline的length;
lengt范围[5:16]时,跨越cacheline的length;
若size=256bit,addr[7:0]=8’h20,burst_type=WRAP时,则统计项应为:
length范围[2:4]时,不跨越cacheline的length;
lengt范围[5:16]时,跨越cacheline的length。
S4:根据分类结果对多个总线端口进行端口交叉,并以交叉结果统计总线端口功能覆盖率。
具体来说,对分类结果进行统计,的到总线端口功能覆盖率。其中采用交叉分析。
在具体示例中,对多个总线端口进行端口交叉具体为以size端口为基础进行深入分析,将addr端口、wstrb端口、length端口和burst_type端口的各分类项进行交叉,形成最终的总线端口功能覆盖率。
在具体示例中,交叉过程为了得到确定的size端口各个位宽对应的各总线端口类别项数,将其进行交叉,得到总线端口功能覆盖率。这样可以在很大程度降低验证的工作量,还能防止验证项目的缺失
例如:在上述AMBA AXI总线写通道中,以size为中心建立如下交叉关系:
当size为256bit时,各端口类别项数为:burst_type有3项;wstrb有37项;addr有4项;length有2项。具体的:
addr[7:0]=8’h00时,length>4和length<=4;
addr[7:0]=8’h20时,length>3和length<=3;
addr[7:0]=8’h40时,length>2和length<=2;
addr[7:0]=8’h60时,length>1和length=1;
当size为128bit时,各端口类别项数为:burst_type有3项;wstrb至少有16个连续的0,所以有21项;addr有9项;length有2项。具体的:
addr[7:0]=8’h00时,length>8和length<=8;
addr[7:0]=8’h10时,length>7和length<=7;
addr[7:0]=8’h20时,length>6和length<=6;
addr[7:0]=8’h30时,length>5和length<=5;
addr[7:0]=8’h40时,length>4和length<=4;
addr[7:0]=8’h50时,length>3和length<=3;
addr[7:0]=8’h60时,length>2和length<=2;
addr[7:0]=8’h70时,length>1和length=1;
addr[7:0]为非size对齐地址时,length为[1:16]的任意值
当size为64bit时,各端口类别项数为:burst_type有3项;wstrb至少有24个连续的0,所以有12项;addr有17项;length有2项;具体的:
addr[7:0]=8’h00时,由于即时length=16,也不会出现跨越cacheline的情况,此时不需要进行length的划分,此时length为[1:16]。
addr[7:0]=8’h08时,length=16和length<=15;
addr[7:0]=8’h10时,length>14和length<=14;
addr[7:0]=8’h18时,length>13和length<=13;
……(依上类推);
addr[7:0]=8’h78时,length>1和length=1;
addr[7:0]为非size对齐地址时,length为[1:16]的任意值。
当size为32bit时,各端口类别项数为:burst_type有3项;wstrb至少有28个连续的0,所以有12项;addr有33项;length有2项;具体的:
addr[7:0]=[‘h00:‘h40],当地址再这个范围内,即时length=16也不会出现跨越cacheline的情况,此时不需要对length进行划分,此时length为[1:16]。
addr[7:0]=8’h44时,length=16和length<=15;
addr[7:0]=8’h48时,length>14和length<=14;
addr[7:0]=8’h4c时,length>13和length<=13;
……(依上类推);
addr[7:0]=8’h7c时,length>1和length=1;
addr[7:0]为非size对齐地址时,length为[1:16]的任意值。
当size为16bit时,各端口类别项数为:burst_type有3项;wstrb至少有30个连续的0,所以有4项;addr有65项;length有2项;具体的:
addr[7:0]=[‘h00:‘h60],当地址再这个范围内,即时length=16也不会出现跨越cacheline的情况,此时不需要对length进行划分,此时length为[1:16]。
addr[7:0]=8’h62时,length=16和length<=15;
addr[7:0]=8’h64时,length>14和length<=14;
addr[7:0]=8’h66时,length>13和length<=13;
……(依上类推);
addr[7:0]=8’h7e时,length>1和length=1;
addr[7:0]为非size对齐地址时,length为[1:16]的任意值。
当size为8bit时,各端口类别项数为:burst_type有3项;wstrb至少有31个连续的0,所以有4项;addr有4项;length有2项;具体的:
addr[7:0]=[‘h00:‘h70]时,当地址再这个范围内,即时length=16也不会出现跨越cacheline的情况,此时不需要对length进行划分,此时length为[1:16]
addr[7:0]=8’h71时,length=16和length<=15;
addr[7:0]=8’h72时,length>14和length<=14;
……(依上类推);
addr[7:0]=8’h7e时,length>1和length=1。
本发明实施例的验证总线端口功能覆盖率的方法,通过选择需要进行统计的多个总线端口,将其进行独立分析后进行关联,进而对其进行分类;通过对分类结果的交叉,统计总线端口功能覆盖率。该方法可以在保证功能覆盖率验证完备性的同时,减少总线端口功能统计项和降低分析总线端口功能覆盖率的工作量,具有验证过程简洁、准确、查看便捷的优点。
图2为根据本发明实施例的验证总线端口功能覆盖率系统的结构示意图,如图2所示,该验证总线端口功能覆盖率的系统10包括:选择模块101、独立分析模块102、分类模块103和统计模块104。
具体来说,选择模块101用于从总线中选择出需要进行统计的多个总线端口。
在具体示例中,多个总线端口包括addr端口、wstrb端口、size端口、length端口和burst_type端口,其中,addr端口为40bit,wstrb端口为32bit,size端口有6个值,length端口为4bit,burst_type端口有3个值。
独立分析模块102用于分别对多个总线端口进行独立分析,以确定多个总线端口中每个总线端口的取值范围。
分类模块103用于建立多个总线端口之间的关联关系,并根据多个总线端口中每个总线端口的取值范围和多个总线端口之间的关联关系,以预定需求分别对多个总线端口进行分类。
在具体示例中,分类模块用于:将addr端口进行分类,建立与size端口的联系,划分出按size端口对齐的地址,则剩余的地址为非对齐的地址;将wstrb端口进行分类,建立与size端口和addr端口的联系,在各种size端口取值的条件下,以wstrb端口中存在0的个数进行分类;将length端口进行分类,建立与size端口、addr端口和burst_type端口的关系,将length端口划分为跨越cacheline端口和不跨越cacheline端口两个大类。
统计模块104用于根据分类结果对多个总线端口进行端口交叉,并以交叉结果统计总线端口功能覆盖率。
在具体示例中,统计模块用于:以size端口为基础进行深入分析,将addr端口、wstrb端口、length端口和burst_type端口的各分类项进行交叉,形成最终的总线端口功能覆盖率。
需要说明的是,前述对验证总线端口功能覆盖率的方法实施例的解释说明也适用于该验证总线端口功能覆盖率系统,此处不再赘述。
本发明实施例的验证总线端口功能覆盖率的系统,通过选择需要进行统计的多个总线端口,将其进行独立分析后进行关联,进而对其进行分类;通过对分类结果的交叉,统计总线端口功能覆盖率。该系统可以在保证功能覆盖率验证完备性的同时,减少总线端口功能统计项和降低分析总线端口功能覆盖率的工作量,具有验证过程简洁、准确、查看便捷的优点。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。