前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【日更计划127】数字IC基础题

【日更计划127】数字IC基础题

作者头像
空白的贝塔
发布2021-07-16 11:10:48
6390
发布2021-07-16 11:10:48
举报
文章被收录于专栏:摸鱼范式

上期答案

[361] 什么是covergroups和bins?

覆盖点(coverpoint)是用于指定需要收集覆盖率的目标。Covergroup可以具有多个覆盖点以覆盖不同的表达式或变量。每个覆盖点还包括一组bin,这些bin是该覆盖点不同采样值。bin可以由用户定义,也可以缺省自动创建。在下面的示例中,有两个变量a和b,covergroup有两个coverpoint,他们会检查a和b的值。Coverpoint cp_a是用户定义的,bins values_a检测a是否覆盖到特定的值。Coverpoint cp_b是自动的,bin是自动生成的,会检测b是否覆盖到所有的可能性

代码语言:javascript
复制
bit [2:0] a; 
bit [3:0] b; 

covergroup cg @(posedge clk); 
    cp_a coverpoint a { 
        bins values_a = { [0,1,3,5,7 };
    } 
    cp_b coverpoint b; 
endgroup
[362] 下面的例子中coverpiont cp_a创建了多少个bin?
代码语言:javascript
复制
bit[3:0] var_a; 

covergroup test_cg @(posedge clk); 
    cp_a : coverpoint var_a { 
        bins low_bins[] = {[0:3]}; 
        bins med_bins = {[4:12]}; 
    }
endgroup

lowbins[]创建了四个bin,对应检查是否覆盖到0,1,2,3,med_bins创建里一个仓,检查是否覆盖到4-12之间的值。因此,一共创建了5个仓

[363] ignore bins 和 illegal bins的区别是什么?

ignore_bins用于指定与覆盖点关联的一组值或者翻转行为,这些值或者翻转行为可以明确从覆盖范围中排除。例如,以下将忽略变量a的所有采样值7和8。

代码语言:javascript
复制
coverpoint a { 
    ignore_bins ignore_vals = {7,8};
}

illegal_bins用于指定与覆盖点关联的一组值或者翻转行为,这些值或者翻转行为被标记为非法。例如,以下会将所有1、2、3采样值标记为非法。

代码语言:javascript
复制
covergroup cg3; 
    coverpoint b { 
        illegal_bins bad_vals = {1,2,3};
    } 
endgroup

当采样到illegal_bins时,仿真会报错,并且illegal_bins的优先级高于其他bin,即使其他bin和illegal_bins的范围有重叠,也会导致报错。

[364] 如何编译一个coverpoint来覆盖一个翻转行为?

翻转覆盖率指定为“ value1 => value2”,其中value1和value2是在两个连续采样点上的表达式的采样值。例如,在coverpoint之下,在clk的三个连续正边缘中寻找变量v_a的值4、5和6的翻转行为。

代码语言:javascript
复制
covergroup cg @(posedge clk); 
    coverpoint v_a { 
        bins sa = (4 => 5 => 6),
    } 
endgroup
[365] 下面的语句覆盖了什么样的翻转行为?
代码语言:javascript
复制
coverpoint my_variable { 
    bins trans_bin[] = ( a,b,c => x, y);
}

a=>x, a=>y, b=>x, b=>y, c=>x, c=>y

本期题目

[366] 下面的bin覆盖了哪些范围?
代码语言:javascript
复制
covergroup test_cg @(posedge clk); 
    coverpoint var_a {
        bin hit_bin = { 3[*4]};
    } 
endgroup
[367] 什么是wildcard bins?
[368] 什么是cross coverage?何时使用它?
[369] 下面的交叉覆盖率有多少个bin?
代码语言:javascript
复制
bit[1:0] cmd; 
bit[3:0] sub_cmd; 

covergroup abc_cg @(posedge clk);
    a_cp: coverpoint cmd; 
    cmd_x_sub: cross cmd, sub_cmd; 
endgroup
[370] 下面的覆盖率代码有什么错误?
代码语言:javascript
复制
int var_a; 
covergroup test_cg @(posedge clk); 
    cp_a: coverpoint var_a { 
        bins low = {0,1}; 
        bins other[] = default;
    } 
endgroup

正确答案将在下一期公布,或者到下面的文章获取答案

面试攻略

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 摸鱼范式 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本期题目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档