开工大吉之一键唤醒工作模式

乐活   2025-02-07 18:22   北京  

过年长假不顾大家的苦苦挽留决然离去之后,还是迎来了开工大吉的日子。先感谢下老板的开工红包,我一直觉得自己和红包很有缘分,人生何处不相逢呢!

之后感叹一下最近的天气,虽然维持了过年前的空气质量,但是这大风呼呼的刮,加之我脸面积过分的大,真是刮的脸生疼(一写这个词我就总想到昇腾)。

最后开始进入本篇的主旨,一键唤醒工作模式的工作站环境配置!


复工的第一天,在历经了“年前我是干什么的来着?”、“应该往哪边坐地铁?”、“公司是应该按几层啊?”以及“抖音上是不是说复工前三天不要干活对身体不好呀?”等阻碍之后,终于准时坐在了工位上(然后过了一会老板就来红包了,再次感谢(*^▽^*))。打开工作站后,遇到了第一个问题:长假前我把工作站给关了,那种比较“彻底”的关,这导致之前开的十来个terminal我还得重新一个一个开,仿真命令也得重新去查(命令太长了每次我都得查一遍使用手册)。没关系忍了,反正一年也关不了几回。
在工位上鼓捣了一天后,又遇到了第二个奇葩问题。因为一些工具安装和依赖问题,有一部分systemc的代码我是先在虚拟机上开发测试好完成,再集成到工作站,所以虚拟机每次都是选择“挂起”。但是工作的第一天我在笔记本上装了WSL,这导致VMware加载的虚拟机没法挂起了,一点就报这个错:

这个错看着就复杂自己解决不了,没办法只好彻底关闭虚拟机每次都重新开。那面临一个同样的问题:每次都得开一堆terminal工作在不同的目录方便处理代码和环境。如果不是我的vscode ssh一直有问题,加上很多自己的工具是基于bash+vim搞的,真的不想受这个气。

面对这两个问题怎么办呢?最好搞个指令,开机后一穷二白的情况下一键打开所有需要的目录,并且在一些目录里直接开始执行需要的操作,省的还得一次次的去开这些目录和文件。

因此将其命名为“一键唤醒工作模式”!

最后弄出来就是这个效果:

这样的:


具体是怎么弄的呢?说起来也简单,在bashrc里魔改就好了。我是比较喜欢在bashrc里瞎鼓捣的人,除了那次重定义grep导致工程环境瘫痪之外,还没有出过什么大幺蛾子。实现这个功能找到一句关键代码就可以:
 gnome-terminal --tab -- bash -c ""
当然,在开发之前还是要明确一下需求,归纳的需求点是这样的:
  • 给定一个默认的工作目录,基于该目录打开若干terminal指向不同的子目录以备不时之需;

  • 在某些子目录中进行进一步操作,比如跑仿真跑综合,不管人清醒与否,一上班先让机器工作起来人先休息下;

  • 如果给定了其他目录输入,则根据给定的输入目录搜索一个关键词比如“xxx_proj”,基于该目录打开terminal,这个需要主要提防我这种喜欢在不同的目录checkout不同分支的人;

ok,明确需求和关键代码之后,开始在bashrc里魔改。以虚拟项目mvu为例进行展示,就是上面的那个动图效果。
#指定一个默认的工作根目录export work_proj_root='/home/ICer/gitee_path/ic_virtual_project/mvu_prj'#快捷键名称gowork(){  if [ -z "$1" ]; then            #如果没有输入    local path=$work_proj_root  else                            #如果有输入比如gowork ./基于当前目录开始工作    local path=$(realpath "$1")    #这里需要指定一个工作目录的关键词,或者说不管什么分支,PROJ根目录总会有一个关键词的,比如这里就是mvu_prj    local keyword_pos=$(awk -F'mvu_prj' '{print length($0) - length($NF)}' <<< "$path")    if [[ $keyword_pos -gt 0 ]]; then      path=${path:0:$keyword_pos} #把关键词后面的截掉作为工作根目录    else      echo "cannot find key path keyword!"      local path=$work_proj_root  #没有关键词就取默认的    fi  fi
echo "Note: \$proj_root path is $path"
gnome-terminal --tab -- bash -c "cd ${path}/rtl; pwd; exec bash" #开一个新的页签,并且跳转到指定目录 gnome-terminal --tab -- bash -c "cd ${path}/ver/common; pwd; exec bash" #这里可以自己DIY操作
#当前的terminal页面需要进行的操作,自己DIY即可 cd ${path} source project.bashrc cd ${path}/ver/mvu/sim make cmp}
完整的代码就是这样了,需要说明的部分都在代码的注释里,如果有兴趣大家就自己改改来用吧。
妈妈再也不用担心我忘记自己是做什么工作的了!
系列文章入口
【芯片设计】SoC 101(一):绪论
【芯片设计】FIFO漫谈(零)从无处不在的FIFO开始说起
【芯片设计】计算机体系结构(一)虚拟内存

【芯片设计】深入理解AMBA总线(零)绪论

【芯片设计】握手协议的介绍与时序说明
【芯片设计】复位那些小事 —— 复位消抖
【芯片设计】快速入门数字芯片设计(一)Introduction
【芯片验证】UVM源码计划(零)下定决心读源码前的自测环节
【芯片设计】异步电路碎碎念(一) 到底什么是异步电路
【芯片设计】从RTL到GDS(一):Introduction
【芯片设计】系统中的可维可测状态记录寄存器设计


其他文章链接
【芯片验证】sva_assertion: 15道助力飞升的断言练习
【芯片验证】可能是RTL定向验证的巅峰之作
【芯片验证】RTL仿真中X态行为的传播 —— 从xprop说起
【芯片验证】年轻人的第一个systemVerilog验证环境全工程与解析
【芯片设计】verilog中有符号数和无符号数的本质探究
【芯片设计】论RTL中always语法的消失术
【芯片设计】代码即注释,注释即代码
【芯片设计】700行代码的risc处理器你确实不能要求太多了
入职芯片开发部门后,每天摸鱼之外的时间我们要做些什么呢
如何计算系统的outstanding 和 burst length?
芯片搬砖日常·逼死强迫症的关键词不对齐事件
熟人社会里,一群没有社会价值的局外人

芯时代青年
专心数字前端全流程,芯时代有为青年的自我修养
 最新文章