注册 登录
ET创芯网论坛(EETOP) 返回首页

指弹大师的个人空间 http://blog.eetop.cn/?1250143 [收藏] [复制] [分享] [RSS]

日志

一个perl小脚本小结

已有 605 次阅读2018-7-19 00:09 |个人分类:脚本|系统分类:芯片设计

    今天在工作中遇到一个问题,concept答应release的mbist的svf格式改了,原来那个用来将svf转成xml格式的测试用例的方法不再试用,没辙只能自己写脚本了,首先把思路理清楚,我需要做的是从输入的svf中抓出相应的pin的方向和名字,以及每一条指令中给各个pin所设置的值,然后把整个文件中所有这种给激励的命令根据pin切分开,比如第一条指令给的是hlhlhl...lll第二条指令给的是lhll...hhh,我想要的是跟第一个pin输入hl给第二个pin输入lh,最后把所有指令中关于每个pin的每次ioc的操作命令都打出来。开始的想法是把io的名字和方向分别放到一个数组里面,然后把每条指令根据io的顺序把相应比特取出来,把每个io对应的激励值全部push到一个数组里面,然后声明一个hash,将pad方向名字以及存放激励名字的数组丢进这个hash,看上去很高大上,但是不用data dumper打印这个哈希来辅助的话,很难通过循环来解构并且取到想要的值!这就是复杂的数据结构所带来的问题,声明这种二维以上的数据结构,特别是哈希和数组的嵌套结构,很容易搞晕,还不如直接声明一个标量和一个数组,每次读取到相应的行,标量这个标量数据取每个io所在位置的那个bit,然后再声明一个标量把所有第一个标量的内容.=到一块,第二个标量就是我们想要的,通过一个二级哈希就可以把所有io的这三组信息都存好,说了这么多都有些晕了,我想表达的是有时候用perl没有必要一开始就把数据结构整的太过复杂,想清楚我们想要什么,如果能直接用标量和数组得到,那就用这两个,最后再把通过这两个简单数据得到的东西放到哈希中,而且尽量用我们想要的某一个信息来做键,这样可以节省声明的变量数目,我们有时候只需要一个水龙头而不是水桶,另外一个体会就是脚本这种东西真的要多写多思考,看了这么多不自己动手写的话终究还是不会的,其他东西也是如此。

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|ET创芯网 ( 京ICP备:10050787号 京公网安备:110105001212 )

GMT+8, 2019-4-24 21:53 , Processed in 0.027545 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部