story · 2020年08月18日

使用VCS进行竞争冒险检查(Race Condition Detection)

来自微信公众号 “数字芯片实验室”

Verilog设计和测试平台的编码风格可能会影响仿真过程的正确(Correctness)和性能(performance),其中涉及仿真正确性的一个方面就是不同仿真器对竞争冒险(race conditions)的不同仿真结果。

竞争冒险的输出是不可预测的,可能在仿真期间导致意外的问题。

示例1 :Using and Setting a Value at the Same Time

module race;
reg a;
initial begin
a = 0;
#10 a = 1;
end
initial begin
#10 if (a) $display("may not print");
end
endmodule

两个initial begin end并行块没有确定的顺序,所以,不确定$display语句是否被执行。

可以在$display语句前增加延时#0,来避免竞争冒险

initial begin
#10 if (a)
#0 $display("may not print");
end

类似地,只要存在在同一时刻对某个信号进行写写、读写、写读都会产生竞争冒险。

Write– Write

initial
#5 var1 = 0; // write operation on signal var1
initial
#5 var1 = 1; // write operation on signal var1

Read – Write

initial
#5 var1 = var2; // read operation on signal var2
initial
#5 var2 = 1; // write operation on signal var

Write– Read

initial
#5 var1 = 0; // write operation on signal var1
initial
#5 var2 = var1; // read operation on signal var1

Race Detection

VCS 可以在编译(compile)和仿真(simulation)期间进行竞争冒险检查。检查到这些竞争冒险很重要,因为在Verilog仿真中,无法控制这些不同并行语句的执行顺序,这意味着不同的仿真器对同一个设计可能产生正确或者错误的仿真结果。

编译设计时,可以针对整个设计(-race)或者部分设计(-racecd)启用竞争冒险检测。针对下面的测试平台:

module race;
reg var1,var2;
//Write– Write
initial
#5 var1 = 0; // write operation on signal var1
initial
#5 var1 = 1; // write operation on signal var1
//Read – Write
initial
#15 var1 = var2; // read operation on signal var2
initial
#15 var2 = 1; // write operation on signal var2

//Write– Read
initial
#25 var1 = 0; // write operation on signal var1
initial
#25 var2 = var1; // read operation on signal var1

endmodule

编译&仿真

vcs -race test.v
./simv

VCS工具会在仿真目录底下生成race.out文件,其中包含了设计和测试平台中的竞争冒险相关信息(仿真时间、变量名、竞争冒险类型和所在行数)。

             Synopsys VCS RACE REPORT


5 "var1": write race (test.v: 6) && write race (test.v: 8) 
15 "var2": read race (test.v: 13) && write race (test.v: 15) 
25 "var1": write race (test.v: 20) && read race (test.v: 22)


             END RACE REPORT

本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/mN2m4PLBWa6GQfE\_WqV31g
未经作者同意,请勿转载!

推荐阅读

想了解更多内容,欢迎关注芯片数字实验室专栏
推荐阅读
关注数
12273
内容数
198
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息