暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

《每日一题》第81题Perl脚本处理:利用perl对文本进行处理

芯司机 2017-08-28
424

精彩导读

Perl和Tcl是ic设计中最常用的两种脚本语言,在这里先总结一下Perl的作用: 


用于生成Verilog代码

在写verilog时,经常遇到一些规律性强,编写又比较麻烦的代码,而这些恰恰又是可重用性比较强的。比如总线模块、FIR滤波器、IIR滤波器,只要滤波器阶数和参数定了编码都大致相似的模块,就比较适合用来自动生成实现他们功能的verilog代码。Perl的强项在于文本处理,对于verilog代码的生成,perl的代码会比较简洁易写。


用于扩充Verilog的语法

有一些verilog没有的语法功能,可以使用perl来扩充。比如工程中某变量的bit数有变化,导致了门级描述中门的个数变化,就可以用perl来生成相应的verilog代码。


用于验证中的数据处理

验证中有些数据格式需要处理,还有些数据需要分析。比如用matlab生成的数据改写成verilog能识别的ROM格式,或是直接生成ROM的verilog。还有Verilog验证后生成的数据格式变成下一级做数据分析软件能识别的格式。Perl还能直接对verilog验证所得数据进行数据比对和分析。


后端工具与前后级连接的格式处理

如果说Tcl比较常用在后端的软件使用中,那么perl就大多数用在软件和软件之间粘合上。有一些前级的工具所得结果不能直接用于下级工具的输入,那他们之间的转换用perl是完全合适的。


如上所述,基本上都用在文本格式的转换上。其实,perl的功能和C/C++是一样的,只是运行的方式不同,C等是编译之后生成exe文件,而perl是需要perl的运行环境支撑,有点像运行语句编译一句的感觉,这就与matlab的原理有点相似。可perl与C相比更加灵活,在文本操作上的编码相当简便。


脚本语言也是IC工程师必须要掌握的技能。

手稿解读


问:

perl或者shell脚本对当前目录中所有符合下面名字的文件内容进行处理,并同意第一列每个单词出现的个数,左图为源文件,右图为处理后的文件。

答:

open INF, "excel.txt";

my $line = <INF>;
my $string_num; #统计单词出现的次数
while (defined $line) {

    if ($line =~/^[a-z]+,(\w\w),(\w\w),(\w\w),(\w\w),(\w\w)$/) {
         print "$5$4$3$2$1\n";
         $string_num = $string_num + 1;
    } else {
         print "$line";
    }
    $line = <INF>;
}
close <INF>;

PS: 分享朋友圈,截图并回复微信公众后台,你可以得到详细源代码。


往期真题


PS:已有公司参考芯司机真题作为笔试面试题(同时希望各位同学共享笔试面试题到微信号:eecourse)

《每日一题》第1题-IC设计流程

《每日一题》第2题-低功耗设计方法和思路

《每日一题》第3题-数字电路设计中需要如何考虑PVT

《每日一题》第4题-谈谈对静态时序分析、动态时序仿真的理解及优缺点

《每日一题》第5题-谈谈对FPGA和ASIC的理解,各自的特点

《每日一题》第6题-如何理解 Setup time 和 Hold time?

《每日一题》第7题-为什么DFF有Setup  time和Hold time的要求

《每日一题》第8题-关于薪资你必须知道这些!!!

《每日一题》第9题-不懂这个概念一定过不了面试第一关

《每日一题》第10题-名词解释 算法篇

《每日一题》第11题-名词解释 协议篇

《每日一题》第12题-名词解释 存储篇

《每日一题》第13题-名词解释 设计流程篇

《每日一题》第14题-名词解释 后端设计篇

《每日一题》第15题-名词解释 何为同步复位和异步复位?何为异步复位、同步释放?

《每日一题》第16题-谈谈对DFT(可测性设计)的理解

《每日一题》第17题-何为亚稳态,如何消除也稳态?

《每日一题》第18题-哪些因素会影响标准单元的延迟?

《每日一题》第19题-SoC芯片验证包括哪些内容,各自的目的是什么?

《每日一题》第20题-谈谈对流水线设计的理解并举例说明

《每日一题》第21题-画出CMOS 非门/与非门/或非门的结构

《每日一题》第22题-用两输入或非门实现如下逻辑?B=en?Mask&A:A

《每日一题》第23题-谈谈对数字集成电路工艺的认识

《每日一题》第24题-BC-WC、OCV、AOCV分析的对比

《每日一题》第25题-异步FIFO设计

《每日一题》第26题-谈谈对时序约束的理解及策略

《每日一题》第27题-谈谈Spare Cell 在芯片设计中的作用

《每日一题》第28题-你所了解的信号跨时钟域传输方式

《每日一题》第29题-根据如下多项式完成CRC7算法实现

《每日一题》第30题-画出AHB INCR4 burst 读写传输时序图,INCR4/WRAP4区别

《每日一题》第31题-谈谈对Mbist的理解

《每日一题》第32题-谈谈对March C算法的理解

《每日一题》第33题-何为时序路径,请画出下图电路中的时序路径

《每日一题》第34题-谈谈对数字后端设计流程的理解

《每日一题》第35题-谈谈对CTS(时钟树综合)的理解

《每日一题》第36题-何为绕线阻塞,如何解决?

《每日一题》第38题-谈谈对ESD的理解以及芯片需要在哪些地方插入ESD保护结构?

《每日一题》第39题-谈谈对Retimng技术的理解?

《每日一题》第40题-谈谈芯片的IO排布形式,与封装之间的关系?

《每日一题》第41题-版图物理验证要做什么?

《每日一题》第42题-谈谈对Multi cycle path的理解?

《每日一题》第43题-FPGA内部资源有哪些?

《每日一题》第44题-数字IO设计/选型需要考虑哪些因素?

《每日一题》第45题关于memory级联的问题

《每日一题》第46题强化一下CG(clock gating) cell的使用

《每日一题》第47题如何制定验证计划

《每日一题》第48题何为SSO

《每日一题》第49题何为WAT/CP/FT?

《每日一题》第50题FPGA芯片中的储存器资源

《每日一题》第51题格雷码

《每日一题》第52题功耗相关

《每日一题》第53题set up/hold相关

《每日一题》第54题低功耗设计相关

《每日一题》第55题ECO

《每日一题》第56题看图画电路

《每日一题》第57题波形写电路(2)

《每日一题》第58题时序计算、改进、判断

《每日一题》第59题三段式FSM

《每日一题》第60题mcu系统框图

《每日一题》第61题奇数分频电路

《每日一题》第62题FSM实现

《每日一题》第63题低功耗设计:level shifter/isolation cell

《每日一题》第64题脚本处理:利用脚本对文本进行处理

《每日一题》第65题时序报告:时序报告分析

《每日一题》第66题timing:timing计算

《每日一题》第67题timing:OCV下如何计算timing(更正和扩展版)

《每日一题》第68题功耗计算:功耗计算

《每日一题》第69题后端术语强化

《每日一题》第70题算法硬件实现

《每日一题》第71题时钟树:stop pin,exclude pin,float pin

《每日一题》第72题乘法器实现

《每日一题》第73题共享单元设计

《每日一题》第74题SVA断言设计

《每日一题》第75题接收单元设计

《每日一题》第76题接收单元设计(握手方式)

《每日一题》第77题SystemVerilog应用

《每日一题》第78题UVM应用

《每日一题》第79题Verilog设计:if和case

《每日一题》第80题DFT:fault simualtion

直击求职难点,真题秀,剑指offer

请大家持续关注芯司机,我们会带来更多更全面的知识分享,助力学生就业,打造好就业加油站平台

文章转载自芯司机,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论