路桑说,
我们要用适合验证人的抽奖方式,
那就是
……
利用带有随机的代码来抽奖,
真的是太(sang)可(xin)爱(bing)了(kuang)!
可怜了小编这只刚刚加入路科验证的小白
So~
我们的抽奖方式是:
首先,我们有如下对应规则:
nameA:魏云彤, nameB:张宁, nameC:王军, nameD:Mr.DeAi,
nameE:蒲公英的种子, nameF:Felicia, nameG:wmx, nameH:tsunami(one), nameI:W_, nameJ:刘彬峰, nameK:程程程Cys~, nameL:Randy,
nameM:不理渊区, nameN:俊狗, nameO:米粒, nameP:刘振昊@50,
nameQ:毛毛爸, nameR:tsunami(two), nameS:王一楠, nameT:NIE ,
nameU:郑忠涛
我们的抽奖程序为:
module redbook_game;
class lucky_draw;
parameter round_num = 5;
typedef enum {nameA, nameB, nameC, nameD, nameE, nameF, nameG, nameH, nameI, nameJ, nameK, nameL, nameM, nameN, nameO, nameP, nameQ, nameR, nameS, nameT, nameU} name_t;
typedef struct {
name_t name;
int weight;
} candidate_t;
const candidate_t cdt_list[] = '{
'{nameA, 80}
,'{nameB, 64}
,'{nameC, 56}
,'{nameD, 47}
,'{nameE, 40}
,'{nameF, 32}
,'{nameG, 25}
,'{nameH, 20}
,'{nameI, 19}
,'{nameJ, 17}
,'{nameK, 16}
,'{nameL, 15}
,'{nameM, 15}
,'{nameN, 14}
,'{nameO, 13}
,'{nameP, 12}
,'{nameQ, 12}
,'{nameR, 12}
,'{nameS, 11}
,'{nameT, 11}
,'{nameU, 10}
};
rand name_t name_list[round_num];
constraint cstr{
foreach(name_list[i]) {
name_list[i] dist {
cdt_list[0].name := cdt_list[0].weight
,cdt_list[1].name := cdt_list[1].weight
,cdt_list[2].name := cdt_list[2].weight
,cdt_list[3].name := cdt_list[3].weight
,cdt_list[4].name := cdt_list[4].weight
,cdt_list[5].name := cdt_list[5].weight
,cdt_list[6].name := cdt_list[6].weight
,cdt_list[7].name := cdt_list[7].weight
,cdt_list[8].name := cdt_list[8].weight
,cdt_list[9].name := cdt_list[9].weight
,cdt_list[10].name := cdt_list[10].weight
,cdt_list[11].name := cdt_list[11].weight
,cdt_list[12].name := cdt_list[12].weight
,cdt_list[13].name := cdt_list[13].weight
,cdt_list[14].name := cdt_list[14].weight
,cdt_list[15].name := cdt_list[15].weight
,cdt_list[16].name := cdt_list[16].weight
,cdt_list[17].name := cdt_list[17].weight
,cdt_list[18].name := cdt_list[18].weight
,cdt_list[19].name := cdt_list[19].weight
,cdt_list[20].name := cdt_list[20].weight
};
}
unique {name_list};
}
function bit lucky_shoot();
lucky_shoot = this.randomize();
if(!lucky_shoot) begin
$error("randomize failure!");
end
else begin
foreach(name_list[i])
$display("NO.%0d RED BOOK owner is %s", i, name_list[i]);
end
endfunction
endclass
lucky_draw ld = new();
initial void'(ld.lucky_shoot());
endmodule
(数据统计截止至2018/8/15 14:30)
感谢帮小编改代码的小可爱们!
(才不会承认最后还是寻求了路桑的帮助)
各位大佬可以开始纠错啦!
(可怜巴巴)
开奖时间到!
我们以福利时间20180811作为seed运行程序,
获得我们专属红宝书获奖名单:
毛毛爸
W_
王一楠
张宁
Felicia
恭喜获奖的路粉们!
先放上五本红宝书的美照
获奖的路粉可以后台留言想要的祝福语啦,还有邮寄的地址,专属红宝书会尽快寄送哦,请耐心等候!
拥有红宝书只是验证第一步,小伙伴们记得关注路桑九月份的【腾讯课堂】线上课程,这里有你最想学习的SV和UVM,这里有最亲切最专业的路桑,这里有最靠谱的价位【前30名学员优惠价7980,后期价格将恢复为8580】,想一起学习验证的小伙伴快去扫描momo小姐姐的微信:
悄悄告诉大家,
七夕节路桑还会有惊喜送给大家呦
【还有来自路桑的浪(huang)漫(jia)故(gou)事(liang)!】
答应我七夕都要来哦,期待你们中奖!