ICC2工具支援三種多核任務,多線程(mutithreading)、分布式(distributed processing)、并行指令執行(parallel command execution)。 多線程是指把一個任務拆成多個線程來run;分布式指任務可以調用多個cpu來進行并行執行;并行指令執行指多個任務可以分别調用不同的cpu來并行執行。
ICC2每8個程序需要一個licence,用set_host_options -max_cores來指定最多的程序數。 一、多程序任務 支援多程序任務的指令有: place_opt/clock_opt/refine_opt/insert_via_ladders/route_auto,route_global,route_track,route_detail,route_eco/route_opt/signoff_check_drc/signoff_fix_drc/signoff_create_metal_file/signoff_fix_isolated_via 用一個程序去run routing的時候,結果是确定的;然而,當用多程序跑route的時候,結果是不确定的,不同的run的最終的結果可能有輕微的不同,這是由于每次多程序把任務進行的分割不同。Global routing支援在多程序執行時結果确定的模式,把route.global.deterministic的值設定為on來啟動這個模式。 設定的max_cores的數目如果大于已有的cpu個數資源,最後的結果可能會變差。 二、分布式任務 支援分布式任務的指令有: create_placement -floorplan/signoff_check_drc/signoff_fix_drc/sign_create_metal_fill/signoff_fix_isolated_via 三、并行執行任務 當需要跑一些check或者report的指令時,可以讓這些指令并行執行。tips:如果要report timing時,提前執行update_timing指令,否則每個report指令都會執行一次update_timing,比如: update_timing parallet_execute { report_cmd1 report_cmd2 report_cmd3 …… } 預設情況下,parallet_execute指令調用5個cpu,可以用-max_cores來修改。 用指令 parallet_execute -list_allowed_commands來得到支援的指令。