前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IC工程师的通用技能:文本处理

IC工程师的通用技能:文本处理

作者头像
网络交换FPGA
发布2019-10-29 17:55:30
9100
发布2019-10-29 17:55:30
举报
文章被收录于专栏:网络交换FPGA

  • Keep Knowledge in Plain Text
  • Use the Power of Command Shells
  • Use a Single Editor Well
  • Always Use Source Code Control
  • Learn a Text Manipulation Language
  • Write Code That Writes Code

以上摘录自【The Pragmatic Programmer: From Journeyman to Master】,中文译名“程序员修炼之道——从小工到专家”。 值得借鉴

1. IC工程师大部分时间是在跟文本打交道。

生产力环境是Linux:大量使用纯文本做配置文件,需要输入命令进行交互。

所有代码都是纯文本:比如设计源码使用Verilog,SystemVerilog,VHDL,C,CPP;比如脚本源码使用Perl,Python,Shell,Tcl。

所有EDA工具都支持文本接口。命令行交互,Tcl,约束文件,输出报告,运行状态信息。

2. 高效的文本处理是IC工程师的必备技能之一。

要用好一个编辑器。

  • 比如Vim,Emacs二选一。
  • 掌握基本操作:文件打开与保存,文本编辑,文本搜索,文本替换。
  • 掌握正则表达式。
  • 折腾各种插件与定制。
  • 强制使用这个编辑器,强化肌肉记忆。

要用好基本Linux命令。

  • 文本查看:cat,more,less,head,tail
  • 检索处理:find,grep,awk,sed
  • 命令管道:|,>,tee

要学会各种脚本语言。

  • 至少一种shell:Bash,Tcsh,Zsh。
  • 使用Perl或者Python,熟悉常用模块。
  • 使用Tcl,结合各类EDA工具环境。

3. 文本处理技能有三个阶段。

初级阶段是拼手速。

熟练使用文本编辑器,熟练使用各种常用命令,能够快速增删改查。

中级阶段是拼脚本。

熟练各种正则处理,熟悉各种脚本编程,能够完成复杂控制流程。比如代码自动生成,设计实现流程脚本,报告自动汇总,用户提交自动回归测试。

高级阶段是拼脑洞。

如何用更少的代码完成更多的事?如何减少重复编写代码的次数?如何用更好的流程重用之前的代码?

4. 文本处理还要注意几个问题。

文本的编码格式。

  • Windows和Linux中换行的问题。比如由于换行导致shell脚本无法执行。
  • 非ASCII字符引入的编码问题。比如中文乱码问题。

文本的结构化。

  • 可以使用以逗号(,)分隔符的csv文件。
  • 可以使用XML,JSON,YML等强制标签/格式的文本。
  • 可以使用doxygen,perldoc类似的方式自动生成代码文档。
  • 可以使用Markdown,reStructuredText格式写技术文档。

文本的版本管理。

  • 源码控制工具是文本的好伴侣。比如git,svn。
  • 如有必要,可以使用校验码。比如md5 checksum。
  • 如果可能,使用可执行的(executable)文本。比如shell脚本,makefile,可编译的源码。

文本的可视化。

  • 使用代码可视化工具。比如编辑器的语法高亮插件,各类调试工具的可视化层次结构图。
  • 输出网页、图片、pdf等格式。
  • 尽可能使用在线发布,自动更新。

5. IC工程师可能会遇到的一些实际问题。

  1. 检查不同用户目录下的大文件,如果超过2天没用就发邮件通知用户。比如常见的后仿真波形文件,core dump文件。
  2. 把netlist拆分成以多个文件,每个文件包含一个模块。在手动ECO的时候方便阅读。
  3. 去除verilog代码中的注释:包括/* .. */和//...
  4. 根据配置文件,去除verilog代码中的ifdef
  5. 根据veirlog设计模块自动生成testbench
  6. 生成通用模块的代码,比如滤波器,CRC,总线接口等
  7. 生成源文件列表filelist.f
  8. 给一个verilog模块重命名,并且修改代码中所有的实例化代码。
  9. 监测代码提交,自动运行sanity test,生成报告,邮件通知相关用户。
  10. 自动生成寄存器相关代码与文档。
  11. 汇总各个corner下的时序分析报告。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络交换FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档