Synopsys 的 Timing sign off 工具 PrimeTime 支持的 DMSA 模式,通过一个 Master Process,在分布式计算平台上启动多个 Remote Slave Process,同时进行多个 scenario 的时序分析,大大加快了 Timing sign off 的速度。
引入 Master Process 和 Slave Process 后,执行目录和输出文件位置是一个比较容易引起混淆的问题。
unix_shell > pt_shell -multi_scenario
上面的命令启动的就是一个特殊的 DMSA PrimeTime shell。和普通的 PrimeTime shell 相比,它们支持不同的命令,命令输出的内容也不同,帮助命令man
的支持程度也不一样。DMSA PrimeTime 启动目录会保存在这个变量 $sh_launch_dir
中,可以供后面的脚本使用,而不受当前目录切换的影响。也可以把这个目录保存在一个变量(如$master_dir
)中,然后传递到 slave process 的执行环境中,如下示例。
pt_shell > set master_dir [exec pwd]
pt_shell > create_scenario -specific_variables { master_dir } -specific_data "slave.tcl"
Working Directory 指定了 DMSA 各个 scenario 的工作目录。通常在这个目录下,会自动以 scenario 的名字建立各个 scenario slave process 运行的子目录。下面的命令就是在启动目录下指定一个子目录 work (自动建立) 做为工作目录。
pt_shell>set multi_scenario_working_directory ./work
各个 scenario 运行时都以这个子目录(如 ./work/func_wcl_cmax
)为当前目录,所以如果在 slave 的脚本中有相对目录结构 ( relative directory structure )的使用,一定要以这个目录为基准目录进行命令的书写。当然有些同学为了方便,使用绝对路径(absolute directory path)也是可以的,不过这是以丧失灵活性为代价的。
有些 PT 命令是和目录有紧密联系的。例如这节标题提到的 write_changes,在旧版本中只支持下面的命令格式,这个命令会在每个slave process(scenario)的目录里都写出一个 pt_eco_change.tcl
,一模一样的若干份,看着一点都不绿色环保。
pt_shell > remote_execute { write_changes -format icctcl -output pt_eco_change.tcl }
在 PrimeTime Version P-2019.03
中 write_changes
引入了一些变化。
pt_shell > write_changes -format icctcl -output pt_eco_change_master.tcl
这样 pt_eco_change_master.tcl
只会在 Master Process 的启动目录里写出来一份,看着就不那么浪费了。