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

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

一个perl小脚本小结

已有 1597 次阅读| 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

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

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 1

    评论
  • 1027

    访问数
关闭

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

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-29 01:58 , Processed in 0.024118 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部