马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
目前正在通读Prime Time User Guide(Q-2019.12),但是发现读了之后几乎啥也记不住,属于是万花丛中过,片叶不沾身了。所以就想着与其一遍一遍查词典看翻译,不如整理成中英对照的文档,之所以要中英对照,一是专有名词太多,怕翻译不好。二是怕自己词不达意,读者也能够对照着方便理解原文的含义。三是能够加深理解同时方便以后添加一些自己的见解。 目前全网搜到的大佬们的作品节选的有不少,但是比较杂。完整版只有前两章的,我也翻译了,但是不打算放出来了。下面就由我接过这个火炬,从第三章开始更新。有些专有名词依然使用英文,有些比较简单又不产生歧义的句子就不再翻译了。如果本人有翻译的不对或理解错误的地方,欢迎各路大佬提出宝贵的意见或指导。本次为大家带来的是第三章的前两小节。 话不多说,直接上菜。 Managing Performance and CapacityTo learn how to manage the performance and capacity of the PrimeTime tool, see 为了理解如何控制PimeTime的表现力和生产力,请看 • High Capacity Mode Options · 高生产力模式选项 • Threaded Multicore Analysis · 多线程多核分析 • Distributed Multi-Scenario Analysis · 分布式多scenario 分析 • Reporting the CPU Time and Memory Usage · 报告出CPU时间和内存使用情况 • Profiling the Performance of Tcl Scripts · 收集Tcl脚本的性能 High Capacity Mode Options By default, PrimeTime runs in high capacity mode, which reduces the peak memory footprint and makes runtime trade-offs between performance and capacity, without affecting the final results. High capacity mode is compatible with all analysis flows, including flat and hierarchical flows; however, it is most useful with clock reconvergence pessimism removal (CRPR) enabled. 缺省状态,PT在高生产力模式下运行,这可以减少尖峰内存占用空间并在性能模式和生产力模式间平衡运行时长,还不影响最总结果。高生产力模式适合所有的分析流程,包含flat和hierarchical flow;然而,它在 clock reconvergence pessimism removal (CRPR)使能时最有用。 In high capacity mode, the tool temporarily stores data to a local disk partition specified by the pt_tmp_dir variable; the default is the /tmp directory. When you exit the session, the consumed disk space is automatically released. For effective use of this mode, the available capacity of the local disk on the host machine should be as large as the physical RAM. 在高生产力模式下,工具暂时存储数据在由pt_tmp_dir变量声明的本地磁盘路径下;缺省值为:/tmp。当你退出PT时,会自动释放使用到的磁盘空间。为了这种模式的有效性,主机上的本地磁盘的可用空间应与物理RAM一样大。 To specify the tradeoff between capacity and performance in high capacity mode, set the sh_high_capacity_effort variable to low, medium, high, or default (where default is equivalent to medium). A higher effort setting results in lower peak memory usage but longer runtime. You must set this variable before using the set_program_options command. 为了在高生产力模式下来声明生产力和表现力之间的平衡,设置sh_high_capacity_effort 变量为低,中,高或者是缺省(缺省值等同于中)。高影响设置会有低尖峰内存使用率但运行时间长。你必须在set_program_options前设置这个变量。 To disable high capacity mode, run the set_program_options command with the -disable_high_capacity option. The sh_high_capacity_enabled read-only variable shows whether high capacity mode is enabled: 为了取消高生产力模式,运行set_program_options -disable_high_capacity。 sh_high_capacity_enabled只读变量显示高生产力模式是否被使能: pt_shell> set_program_options -disable_high_capacity Information: high capacity analysis mode disabled. (PTHC-001) pt_shell> printvar sh_high_capacity_enabled sh_high_capacity_enabled = "false" Threaded Multicore Analysis PrimeTime can perform threaded multicore analysis, which improves performance on a shared memory server by running multiple threads on the available cores. The tool executes multiple tasks in parallel to yield faster turnaround for the following commands: PT支持多线程多核分析,通过在可用内核上运行多个线程来提高共享内存服务器上的性能,工具并行执行多个任务,以提高以下命令的周转速度: get_timing_paths read_parasitics read_verilog report_analysis_coverage report_constraint report_timing save_session update_timing update_noise write_sdf To learn how to use threaded multicore analysis, see: • Configuring Threaded Multicore Analysis ·配置多线程多核分析 • Executing Commands in Parallel ·并行执行命令 • Threaded Multicore Parasitics Reading ·多线程多核并行读取 • Threaded Multicore Path-Based Analysis ·多线程多核Path-Based Analysis Configuring Threaded Multicore Analysis By default, threaded multicore analysis is enabled. The number of cores that can be used is limited to what is available on the server. For example, in a dual core server, threads are launched to use only the two available cores. 默认情况下,多线程多核分析是使能的。可以使用的内核数量受限于服务器上可用的内核数量。例如,在双核服务器中,启动的线程只使用两个可用的核心。 The -max_cores option of the set_host_options command specifies the maximum number of CPU cores used per process. For example, set_host_options命令的-max_cores选项定义了每个进程使用的最大CPU核数。例如, pt_shell> set_host_options -max_cores 32 -num_processes 4 Information: Checked out license 'PrimeTime-ADV' (PT-019) Setting the maximum number of cores to more than 16 causes a checkout of a PrimeTime-ADV license if it is not already checked out. The tool retains the license even if the maximum number of cores is later reduced to 16 or less. 如果将最大核数设置为16以上,则会导致尚未签出的PrimeTime-ADV许可证的签出。即使后来最大核数减少到16或更少,工具也会保留签出的license。 To control overthreading in multicore analysis, set the multi_core_allow_overthreading variable to one of these values: 设置multi_core_allow_overthreading变量设置为以下值之一来控制多核分析中的超线程 • true (the default) – Allows simultaneously active threads to exceed the maximum limit set for the CPU cores. 真(缺省值)-允许同时活动的线程超过为CPU内核设置的最大限制。 • false – Prevents process core utilization from exceeding the maximum core limit; this setting can result in reduced multicore performance 假-防止进程核心利用率超过最大核心限制;此设置可能导致多核性能降低 Executing Commands in Parallel You can use parallel command execution for Tcl procedures and for post-update reporting and analysis, but not for commands that update the design such as ECOs, timing updates, or noise updates. 你可以使用并行命令来执行TCL进程和更新后的报告和分析,但更新设计的命令如ECOs,timing updates,noise updates不行。 When using parallel command execution, the maximum number of parallel commands executed at one time is determined by the -max_cores option of the set_host_options command. 当使用并行执行命令时,最大同时并行命令执行数量是由set_host_options -max_cores 决定的。 Parallel command execution is most effective when you launch the longest running command first. 在你执行运行时间最长的命令之前设置并行命令执行是最有效的。 To execute commands in parallel, use the following commands in your scripts: • The parallel_execute Command • The redirect -bg (Background) Command • The parallel_foreach_in_collection Command The parallel_execute Command To specify the commands that you want to run in parallel, use the parallel_execute command. For example: update_timing –full parallel_execute { report_cmd1 rpt_file1 report_cmd2 rpt_file2 report_cmd3 rpt_file3 } … After all commands running in parallel are complete, the tool returns the pt_shell prompt. 在所有并行命令执行完后,工具会在pt_shell中返回提示。 If you specify set_host_options -max_cores 1, the tool runs in single-core analysis mode and executes all commands within the parallel_execute command in series in the specified order. 若果你声明set_host_options -max_cores 1,工具在单核分析模式并且以特定的顺序依次执行包含在parallel_execute命令里的所有命令。 The redirect -bg (Background) Command To run a post-update command in the background, use the redirect –bg command: 为了在后台执行更新后的命令,使用redirect -bg命令: update_timing –full redirect –bg –file rpt_file1 {report_cmd1} redirect –bg –file rpt_file2 {report_cmd2} redirect –bg –file rpt_file3 {report_cmd3} … The main pt_shell keeps running while the redirect -bg command queues the jobs and waits for available cores. 主pt_shell在redirect -bg命令将jobs加入队列等待可用的核心是保持运行。 If you specify set_host_options -max_cores 1, the tool runs in single-core analysis mode; the redirect command disregards the -bg option and runs the commands in the foreground. 若果你声明set_host_options -max_cores 1,redirect命令不再遵守-bg选项命令将在前台执行。 If you issue an exit command while there is at least one active background redirect -bg command, the tool blocks the exit request until all background commands complete. 如果你发出exit命令时至少有一个在后台运行中的redirect -bg命令,工具会阻止exit请求直到完成所有后台命令。 The parallel_foreach_in_collection Command To speed up iterations over collections of objects, use the parallel_foreach_in_collection command. This command is similar to the foreach_in_collection command but with the addition of parallel processing on multiple cores. You can use this command with the post_eval command, which specifies a script that is executed in sequence by the master process, as shown in the following syntax: 为了加速迭代对象集合,使用 parallel_foreach_in_collection命令。这个命令类似于 foreach_in_collection但增加了多核并行处理,你可以和 post_eval 一起使用这条命令,这指定了由主进程按顺序执行的脚本,由以下语法所示: parallel_foreach_in_collection iterator_variable collections { body_script_executed_by_workers_in_parallel ... post_eval { script_executed_by_master_in_sequence ... } } The following example shows how to use the parallel_foreach_in_collection command to find and report the endpoint with the most violating paths. 下面的例子显示如何使用parallel_foreach_in_collection命令来找到并报告最违例路径的endpoint。
The following figure shows the parallel_foreach_in_collection command execution timing, where the processing time proceeds from left to right. The blue boxes represent iterations of the body script executed in parallel by worker processes. 下图显示parallel_foreach_in_collection命令执行时间,其中处理时间从左到右执行。蓝色的框表示由工作进程并行执行的脚本的迭代。
The parallel_foreach_in_collection command automatically schedules and balances the execution of N iterations to optimize the utilization of available cores. parallel_foreach_in_collection 命令自动调度和平衡 N 次迭代的执行,以优化可用内核的利用率。 While executing the body script, the worker processes submit the script specified by the post_eval command to the master process (represented by the purple boxes in the preceding figure). Then each worker proceeds with its next loop iteration without waiting. 在执行正文脚本时,工作进程将 post_eval 命令指定的脚本提交到主进程(由上图中的紫色框表示)。然后,每个工作线程继续其下一个循环迭代,而无需等待。 The master process executes the post_eval commands in sequence. Therefore, for maximum performance, keep post_eval commands as fast as possible and limited to only parts of the script that cannot be parallelized, such as changing constraints, setting user-defined attributes, and modifying persistent variables to aggregate results. It is also important to avoid excessive variable transfer, especially when dealing with large lists and arrays. 主进程按顺序执行post_eval命令。因此,为了获得最佳性能,请尽可能快地post_eval命令,并仅限于脚本中无法并行化的部分,例如更改约束、设置用户定义的属性以及修改持久变量以聚合结果。避免过多的变量传输也很重要,尤其是在处理大型列表和数组时。 For information about converting an existing foreach_in_collection loop to a parallel_foreach_in_collection loop, see the man page for the latter command. 有关将现有 foreach_in_collection 循环转换为parallel_foreach_in_collection循环的信息,请参见后一个命令的手册页。 Threaded Multicore Parasitics Reading By default, the read_parasitics command runs in a separate process launched by the tool, performed in parallel with other commands such as read_sdc. To get the maximum runtime benefit, use the read_parasitics command immediately after linking the design. You can disable parallel parasitic data reading by using the set_host_options -max_cores 1 command. 默认情况下,read_parasitics 命令在工具启动的单独进程中运行,与其他命令(如 read_sdc)并行执行。要获得最大的运行时长优化,在链接设计后立即使用 read_parasitics 命令。您可以使用 set_host_options -max_cores 1 命令禁用并行寄生数据读取。 The temporary files written during the parasitic reading process are large parasitic files that are stored in the pt_tmp_dir directory. These files are automatically deleted by the tool at the end of the session. By default, the tool writes the log of the parasitic commands to the parasitics_command.log file in the current working directory; to specify a different log file, set the parasitics_log_file variable. 在寄生读取过程中写入的临时文件是存储在pt_tmp_dir目录中的大型寄生文件。这些文件将在会话结束时由该工具自动删除。默认情况下,该工具将寄生命令的日志写入当前工作目录中的parasitics_command.log文件;若要指定其他日志文件,请设置 parasitics_log_file 变量。 Threaded Multicore Path-Based Analysis PrimeTime runs threaded multicore analysis for path-based analysis when you run the get_timing_paths or report_timing commands with the -pba_mode path or -pba_mode exhaustive option. This feature is supported for all command variations of path-specific and exhaustive recalculation. For example. 当您使用 -pba_mode path 或 -pba_mode exhaustive 选项运行 get_timing_paths 或 report_timing 命令时,PT 会运行线程多核分析以进行基于路径的分析。特定路径和详尽重新计算的所有命令变体都支持此功能。例如。 • get_timing_paths -pba_mode exhaustive ... • get_timing_paths -pba_mode path ... • get_timing_paths -pba_mode path $path_collection • report_timing -pba_mode exhaustive ... • report_timing -pba_mode path ... • report_timing -pba_mode path $path_collection If multiple cores are not available, PrimeTime runs the standard single-core path-based analysis. 如果多个内核不可用,PrimeTime将运行标准的基于路径的单核分析。
|