如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件
Posted 集成电路设计及EDA教程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件相关的知识,希望对你有一定的参考价值。
看到这个标题是否感觉很奇怪,“Perl 发送邮件”这个功能有什么用呢?邮件用手工编写不是更方便么?为啥用Perl写那么麻烦的脚本来实现这个功能?多半是脑子有坑。
刚开始刷Perl教程的时候,我一眼就把Perl的这个功能给略过了,觉得没啥卵用。
过了一段时间之后,看到公司的服务器自动发送的邮件,想到了一种特别实用的功能。
众所周知,在数字IC设计中,很多过程都是非常耗时的,比如逻辑综合、PR、DRC、LVS,短则几个小时,长则好几天。为了不delay整个项目,我们可能每隔一段时间需要打开服务器看一下软件是否跑完了,跑的进度如何。
结果等了好久之后一看结果发现遇到了Surprise,唉呀妈呀脑瓜疼,脑瓜疼
莫慌,需要赶快Feedback,或者Debug。
如果人不在电脑旁的话,只能等有空再去看了,此时对于项目进度的了解处于九霄云外的状态。
重点:在项目即将Tapeout的时候,IC攻城狮基本都是要加班熬夜的,这个时候,难道要一直守候在电脑旁边么?研究生阶段的我都是这样的,由于要拼版图,将多个芯片拼在一起,整体加Dummy,做DRC、LVS等等,非常耗时,Tapeout前夕基本是没办法睡个好觉的。
为了中途偷个懒眯会儿眼,我也会这样做,人为凭经验预估每个过程大概需要跑多长时间,然后过段时间之后去服务器看一下跑的怎么样了。
其实我们非常需要这样一种功能:当软件执行完毕之后,马上通知Designer:“我已经跑完了,快来看看我的结果吧”。可是软件好像都没有这种功能。当看到Perl可以用 sendmail工具发邮件的时候,我想到了可以用它来写个脚本实现我们想要的这种通知功能。
下面上干货-Perl脚本
#!/usr/bin/perl
# 接收邮箱
$to ='hqiao@nvidia.com';
#发送邮箱
$from ='hqiao@nvidia.com';
#标题
$subject= 'Shift_max reports OK';
my$shift_max_dir = '/xxx/clock_transition';
my$shift_max_dir_list = `ls $shift_max_dir`;
chomp($shift_max_dir_list);
while($shift_max_dir_list !~ /trunk_reports/){
print "wait ";
#等待程序执行结果吐出trunk_reports等文件夹,如果没有执行完毕则没有这个文件夹,程序将一直等待,每隔60秒查找一次
sleep(60);
$shift_max_dir_list = `ls$shift_max_dir`;
}
#邮件中发送的信息内容,我们将该程序跑完之后目录下的内容以列表的形式发送到邮件中
@message= `ls -lrt $shift_max_dir`;
open(MAIL,"|/usr/sbin/sendmail -t");
# 打印邮件头部
printMAIL "To: $to ";
printMAIL "From: $from ";
printMAIL "Subject: $subject ";
# 打印邮件信息
printMAIL @message;
close(MAIL);
print" Shift_max reports send mail succesfully ";
执行该程序,如果没有检查到某些报告(比如DRC没有做完,没有吐出最终的报告),输出结果为:
wait
wait
wait
wait
如果某个程序执行完毕了(比如DRC做完了),则会报告:
Shift_maxreports send mail succesfully
好了安心执行程序,之后定一个邮箱提醒,可以合眼睡觉了,收到消息可以看宝宝(服务器)发来的消息了,哈哈哈
公告
链接:https://study.163.com/course/introduction/1005909004.htm
网易云课堂
《Calibredrv教程-提高流程自动化》
《搭建IC设计的EDA虚拟机/服务器》
以上是关于如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章