微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 问一个白问题 “dc脚本里面的‘\’怎么用?”

问一个白问题 “dc脚本里面的‘\’怎么用?”

时间:10-02 整理:3721RD 点击:
大家好:
最近在学习DC,在学习TCL语言的时候发现DC里面支持“\”符号,用来将一个很长的命令划分成多个行,来表示行连续命令。在makefile里面也经常会遇到这个符号,用起来还比较方便——提高了代码的可阅读性,并且编写出来的脚本看起来也紧凑。
但是写了一个DC的脚本,其中涉及到一个命令,因为命令本身再加上-option ,-argument这些参数,整个命令就变得长了,所以本人想借助“\”符号将整个命令行打断成多个行,最终发现运行的时候居然出错了。
整个命令如下:
create_generated_clock -name clock1 [get_pins uproject/usubdesign/pina] \
-source [get_pinsuproject/usubdesign/pinb] \
-master_clock clock2 \
-add
经过dc_shell-t运行后居然发现报告了很错错误,错误内容大致如下:
Error: can not execute the command "-source"
Error: can not execute the command "-master_clock "
Error: can not execute the command "-add"
最后本人将整个命令写在同一行
变成:
create_generated_clock -name clock1 [get_pins uproject/usubdesign/pina] -source [get_pinsuproject/usubdesign/pinb] -master_clock clock2-add
结果居然执行成功了。
不知道上面的“\”为什么失效了,请高手指点。

\ 之前需要空格, create_***命令一行写不下,下行继续

首先非常感谢上面的朋友,在“\”之前我已经增加了空格。并且
-source [get_pinsuproject/usubdesign/pinb] \
-master_clock clock2 \
-add
这些之前本来是“tab”形式的空格,后来我也删除了,但是还是不行。并且本人确信在“\”之后不存在空格。继续寻求解决办法

你的那个\之后有个空格。
这个是非常基本的TCL语法的问题。

楼上的没有看懂就不要瞎说了“并且本人确信在“\”之后不存在空格”,我就怕有人会给出这个答案。

最终问题还是被我自己解决了,都怪我异想天开了,因为在dc的user guide中始终提到了一个词语“sdc (synopsys design constraint)”,所以我将约束脚本也设定为.sdc文件了,结果导致dc不能够识别其中的命令,并且在Dc中也提到了sdc是有版本区别了,所以以后需要注意了。

额,反而看不懂了,就算后缀写成sdc。那为什么不用"\"就行了?
感觉小编的问题和最后的解决办法不搭边啊。

很明显,LZ你在windows下编辑的脚本跑到服务器上跑。我以前也是,后面直接在linux下用vi编辑就不会有事了,加不加空格无所谓,sdc什么的也无所谓,只要用source就可以了,不要用read_sdc。

补充楼上的,确实是因为文件的格式不正确。在编辑器里面应该设定好新文件的类型,最好选择“unix”,因为这会导致文件的运行格式不正确,如果你是在dos系统下编辑的脚本,在linux系统里面可以使用dos2unix命令将文件格式转换成unix格式的文件。这样也可以使dc能够识别你的文件。

对该问题不在讨论,教训值得吸取

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top