基于linux的vcs平台学习总结

vcs是新思科技发行的集成电路设计仿真工具,比之前用的mutisim仿真时间更快,运行更加稳定,不易出bug,vcs可谓是业界使用最广泛的Verilog设计仿真工具。

说到vcs就不能忽视linux,vcs在linux系统的运行使得整个芯片设计仿真流程变的更加方便快捷和高效,新思科技在整个设计仿真流程有一系列的工具,前仿用vcs,覆盖率用DVE,看波形用Verdi,后仿还有DC、ICC、PT,这一系列工具完全可以满足正常的设计要求。

提到linux,那就不得不说脚本了。脚本(Script)是一种批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。这是百度百科给出的脚本的定义,也就是说我们使用脚本可以控制计算机进行一系列运算、操作、动作的组合。一个芯片的设计流程其实是很短暂的,正常来说会把大部分时间放在仿真调试测试阶段,而仿真测试是一个比较机械化的动作,新思的软件为了减少这些机械化动作,上述软件都可以使用脚本运行,再配合上linux系统的原生脚本,整个仿真测试流程都可以写在脚本中,这样可以减少大量的机械化操作,把人力投入到机器不能自动完成的工作上,而这一点,也将会是社会进步必要经历的一个过程。

vcs仿真平台&uvm验证平台

相信大家或多或少都见过DUT(design under test)这个词,顾名思义,就是在测试平台下的设计,当然这只是一个称谓,不用太在意为啥这么叫。具体概念就是把整个设计包一个壳子,起名叫作testbench。这个testbench将会作为整个仿真的载体,起到仿真的作用,因此在testbench中除了设计之外,我们还会引入输入和输出。在芯片的应用环境中,芯片不能单独存在,和待测芯片发生关系的可以是上位机(MCU),可以是同级的芯片,可以是下一级的设备,这就要看这个芯片起到一个什么作用,功能不同,输出和输入不同。我们在testbench中针对每个功能写好输入激励文件,经过设计后,对输出进行一个记录,然后将输出和原型机作对比,如果对比结果符合预期,那说明设计在已经验证过的激励中没有问题。原型机一般使用matlab、c++、sv等高级语言进行编写,实现和硬件电路一样的功能,以此得到一个“正确”的输出。验证工作就是循环往复这样一个过程,验证的整个过程可以使用uvm平台更加方便更加高效的完成,这里不再赘述uvm平台。

脚本

无论是繁杂的网表文件还是众多的仿真激励文件,一旦一件事重复过三次以上,我们就得考虑使用脚本来完成这个工作。linux中中使用脚本可以轻易的实现强大的功能,无论是linux自带的shell脚本,还是perl或Python,都可以完成这项工作。

下面记录一下常用的一些命令。

man

在linux中遇到不会用的命令,man command可以调出使用手册

sed

sed,数据流编辑器。由于sed的古老,有许多人加入了自己的喜好和规范,所以没有、没有最标准最固定的格式。参数、指令都可以自由替换和尝试,sed最大的特点,和linux一样,就是自由度非常高。

sed -i "s/aaa/bbb/" file 可以将file文本中的aaa全部替换成bbb。

-i如果换成-n,则只会打印出结果,而不会在file文件中真正更改。

sed -i "/aaa/d" file 会删除所有带有aaa字符的那一整行

sed -i "/aaa/a bbb" file 会在匹配aaa的那一行后添加一行字符串bbb,将a换成i则会添加在前一行

sed -i "/aaa/c bbb" file 会将匹配aaa的那一行替换成字符串bbb

sed -i "/aaa/r bbb" file 会将当前目录下的bbb文本内的内容添加到匹配aaa字符的那一行的下一行

上面这四条命令的 /aaa/ 可以替换成数字78,则直接会对第78行操作

上面这是比较常用的常见sed命令,可以实现增添查找删除替换的操作,下面介绍一些一下不太常见的命令

sed -i "s/aaa.../aaa/" file 将sed和正则表达式(^&.等等)结合起来使用,.代表任意字符,这条命令会将所有的aaaxxx替换成aaa,这里的xxx可以是任意正常字符。但也正是正则表达式的存在,使得有些字符无法直接使用,此时需要转义字符\反斜杠出场了,反斜杠\被称为转义字符或者逃脱字符,可以在特殊字符前面加上\代表使用这个字符本身而不是其代表的特殊含义。sed配合正则表达式可以实现更多功能,许多功能由于过于繁杂难记已经消失在互联网,这就需要自己在需要的时候自己发掘了。。。

sed一般使用双引号“”可以实现常见的功能,但如果需要替换的文本中含有双引号“”此时最外面的“”可以改用单引号",如果有时候使用一些命令总是报错,亦可以将双引号“”改成"单引号,转义符\双引号“”单引号"里面的门道博大精深。

sed -i "s/aaa/&bbb" file 会将所有aaa替换为aaabbb,即实现了在字符串aaa后面添加bbb的功能

能用到的命令基本都可以在百度搜到,如果搜不到那说明可以用另一种简便方法实现想要的功能。

grep xargs awk 还有很多的开发空间,也不再赘述。

shell

linux内置的shell脚本是bash,其他还有很多,当然这些都大同小异,csh使用手册http://blog.sina.com.cn/s/blog_13f7886010102xqju.html

使用shell脚本可以很方便的在linux中执行各种操作和命令

linux文件管理和进程管理也非常有用,具体可以看兄弟连linux教学视频

结语

集成电路设计工作本就是对于电路的设计,Verilog语言只是将设计工作从画电路图变成了写rtl级代码。所以追根到底,Verilog语言只是一个翻译工具,电路的设计才是基础。对于同一个电路,rtl级代码无论是使用花哨的写法还是最基础的语法,功能没有任何改变。所以在这其中,电路的可靠性和稳定性还有设计的合理性才是最应该注意的点,使用脚本可以不会出笔误的实现想要的功能。高效,准确,可靠,实用,是在工程中最重要关注点。

 

 

你可能感兴趣的:(XING,linux,sed,vcs,Verilog,脚本)