进程与线程
1、system verilog中,进程之间的同步不可以采用(Semaphore),可以采用(Event, Mailbox, Fork/join).
解析:Semaphore是一种线程仲裁结构,不能用关于内部事件同步。
测试点与测试用例 & 覆盖率
1、测试用例是用来覆盖测试点的,一个用例只能覆盖一个测试点(错误)。
解析:用例和测试点不是一一对应的。一个用例可以用来覆盖多个测试点。一个测试点有时候也需要多个用例来覆盖。比如测试FIFO的两个测试点:1.空信号生成 2.满信号生成,使用一个测试用例,在复位之后发出FIFO深度相同数量的写数据,不进行读。一个用例就能同时检测到空信号和满信号覆盖两个测试点。
2、下面关于代码覆盖率描述错误的是(AB)
A.代码覆盖率达到百分之一百说明代码bug已消除
B.代码覆盖率包括功能覆盖率
C.代码覆盖率包括条件覆盖率
D.代码覆盖率包括语句覆盖率
解析:覆盖率是衡量设计验证完成程度的指标,并不是验证的目的。任何覆盖率达到100%并不代表芯片bug已消除。代码覆盖率包括行覆盖率、条件覆盖率、状态机覆盖率和翻转覆盖率。功能覆盖率反映开发出来的需要覆盖的功能点覆盖的比例。断言覆盖率测量断言被触发的频繁程度。
形式(formal verification)验证
1、(形式验证)是一张系统验证手段,通过它来判断两个设计是否等价,从而判断一个设计在修改前后的功能是否保持一致。
解析:形式验证formality主要应用在:1.RTL与综合网表的比对。因为主要的测试用例都是基于RTL,RTL修改简单,迭代速度快,是一切功能的源头。保证了RTL仿真的正确性加上RTL与网表的形式验证,基本可以保证RTL测试过的测试点在网表阶段没有问题。2. 网表与网表比对:物理实现各阶段网表功能一致性(综合->时钟树->布局布线->TIMING/DRC ECO)。如果有功能ECO,保证ECO之后的网表功能与ECO之前的网表一致也是必不可少的