From 9f415f6564e1b1c65ed7d91222a94efecb19b877 Mon Sep 17 00:00:00 2001 From: xiaokai <2485423036@qq.com> Date: Tue, 27 Jun 2023 19:30:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/UWE_projectCode/tmp/tmp/.Makefile.swl | Bin 16384 -> 0 bytes src/UWE_projectCode/tmp/tmp/.Makefile.swm | Bin 16384 -> 0 bytes src/UWE_projectCode/tmp/tmp/.Makefile.swn | Bin 16384 -> 0 bytes src/UWE_projectCode/tmp/tmp/.Makefile.swo | Bin 16384 -> 0 bytes src/UWE_projectCode/tmp/tmp/.Makefile.swp | Bin 20480 -> 0 bytes src/UWE_projectCode/tmp/tmp/.dc.log.swo | Bin 16384 -> 0 bytes .../tmp/tmp/.setModuleName.tcl.swp | Bin 12288 -> 0 bytes src/UWE_projectCode/tmp/tmp/Makefile | 440 -- src/UWE_projectCode/tmp/tmp/Makefile (copy) | 440 -- src/UWE_projectCode/tmp/tmp/Makefile~ | 440 -- .../tmp/tmp/ProjectPathSetting.tcl | 2 - .../tmp/tmp/Scripts/R0_check.result | 7 - .../tmp/tmp/Scripts/SVNSubmit.sh | 30 - .../tmp/tmp/Scripts/auto_eco.sh | 85 - .../tmp/tmp/Scripts/calc_dff_count.sh | 14 - src/UWE_projectCode/tmp/tmp/Scripts/cds_gen | 26 - src/UWE_projectCode/tmp/tmp/Scripts/check.sh | 11 - .../tmp/tmp/Scripts/check_R0.sh | 65 - .../tmp/tmp/Scripts/check_SRC_ID.sh | 44 - .../tmp/tmp/Scripts/check_Skeyword | 6 - .../tmp/tmp/Scripts/check_code.sh | 75 - .../tmp/tmp/Scripts/check_code_auto.sh | 108 - .../tmp/tmp/Scripts/check_file_occupy | 10 - .../tmp/tmp/Scripts/check_files.sh | 15 - src/UWE_projectCode/tmp/tmp/Scripts/check_han | 3 - .../tmp/tmp/Scripts/check_timescale | 3 - .../tmp/tmp/Scripts/clock_cross.pl | 18 - .../tmp/tmp/Scripts/copy_sdc.sh | 32 - .../tmp/tmp/Scripts/create_dummy.py | 200 - .../custom_methodology/.submethodology_help | 9 - .../adv_lint/.submethodology_help | 3 - .../adv_lint/adv_lint_setup.spq | 34 - .../adv_lint/adv_lint_setup_debug_help.htm | 65 - .../adv_lint/adv_lint_struct.spq | 43 - .../adv_lint/adv_lint_struct_debug_help.htm | 72 - .../adv_lint/adv_lint_verify.spq | 41 - .../adv_lint/adv_lint_verify_debug_help.htm | 72 - .../adv_lint/lint_functional_rtl.spq | 81 - .../lint_functional_rtl_debug_help.htm | 72 - .../cdc/.submethodology_help | 3 - .../custom_methodology/cdc/cdc_abstract.spq | 93 - .../cdc/cdc_abstract_debug_help.htm | 67 - .../custom_methodology/cdc/cdc_setup.spq | 69 - .../cdc/cdc_setup_check.spq | 137 - .../cdc/cdc_setup_check_debug_help.htm | 82 - .../cdc/cdc_setup_debug_help.htm | 68 - .../custom_methodology/cdc/cdc_verify.spq | 245 - .../cdc/cdc_verify_debug_help.htm | 85 - .../cdc/cdc_verify_struct.spq | 244 - .../cdc/cdc_verify_struct_debug_help.htm | 80 - .../cdc/clock_reset_integrity.spq | 117 - .../cdc/clock_reset_integrity_debug_help.htm | 79 - .../connectivity_verification.spq | 94 - .../constraints/.submethodology_help | 10 - .../constraints/sdc_abstract.spq | 41 - .../constraints/sdc_abstract_debug_help.htm | 14 - .../constraints/sdc_audit-setup.sgs | 121 - .../constraints/sdc_audit.spq | 52 - .../constraints/sdc_audit_debug_help.htm | 68 - .../constraints/sdc_check.spq | 108 - .../constraints/sdc_check_debug_help.htm | 16 - .../constraints/sdc_check_setup.sgs | 17 - .../constraints/sdc_equiv.spq | 41 - .../constraints/sdc_equiv_debug_help.htm | 85 - .../constraints/sdc_equiv_setup.sgs | 96 - .../constraints/sdc_exception_struct.spq | 53 - .../sdc_exception_struct_debug_help.htm | 68 - .../sdc_exception_struct_setup.sgs | 16 - .../constraints/sdc_gen.spq | 48 - .../constraints/sdc_gen_debug_help.htm | 15 - .../constraints/sdc_gen_setup.sgs | 234 - .../constraints/sdc_hier_equiv.spq | 42 - .../constraints/sdc_hier_equiv_debug_help.htm | 85 - .../constraints/sdc_hier_equiv_setup.sgs | 96 - .../constraints/sdc_redundancy.spq | 63 - .../constraints/sdc_redundancy_debug_help.htm | 71 - .../constraints/sdc_redundancy_setup.sgs | 16 - .../dft/.submethodology_help | 8 - .../custom_methodology/dft/dft_abstract.spq | 57 - .../dft/dft_abstract_debug_help.htm | 69 - .../dft/dft_best_practice-01.jpg | Bin 19406 -> 0 bytes .../dft/dft_best_practice.spq | 200 - .../dft/dft_best_practice_debug_help.htm | 79 - .../custom_methodology/dft/dft_bist_ready.spq | 39 - .../dft/dft_dsm_best_practice.spq | 151 - .../dft/dft_dsm_best_practice_debug_help.htm | 204 - .../dft/dft_dsm_random_resistance.spq | 58 - .../dft/dft_scan_ready-08.jpg | Bin 73154 -> 0 bytes .../dft/dft_scan_ready-09.jpg | Bin 70428 -> 0 bytes .../dft/dft_scan_ready-10.jpg | Bin 27013 -> 0 bytes .../dft/dft_scan_ready-11.jpg | Bin 79593 -> 0 bytes .../dft/dft_scan_ready-12.jpg | Bin 53185 -> 0 bytes .../dft/dft_scan_ready-13.jpg | Bin 49023 -> 0 bytes .../custom_methodology/dft/dft_scan_ready.spq | 101 - .../dft/dft_scan_ready_debug_help.htm | 151 - .../dft/dft_scan_ready_setup.sgs | 5 - .../lint/.submethodology_help | 23 - .../custom_methodology/lint/design_audit.spq | 126 - .../lint/design_audit_debug_help.htm | 65 - .../custom_methodology/lint/lint_abstract.spq | 46 - .../lint/lint_abstract_debug_help.htm | 69 - .../lint/lint_functional_rtl.spq | 81 - .../custom_methodology/lint/lint_rtl.spq | 611 -- .../lint/lint_rtl_custom.tcl | 114 - .../lint/lint_rtl_debug_help.htm | 68 - .../lint/lint_turbo_rtl.spq | 566 -- .../lint/lint_turbo_rtl_custom.tcl | 114 - .../mbist_dft/mbist_dft.spq | 25 - .../tmp/tmp/Scripts/custom_methodology/order | 95 - .../physical/lint_physical.spq | 104 - .../physical/physical_analysis_congestion.spq | 170 - ...hysical_analysis_congestion_debug_help.htm | 73 - .../physical_analysis_congestion_setup.sgs | 89 - .../physical/physical_analysis_signoff.spq | 197 - .../physical_analysis_signoff_debug_help.htm | 73 - .../physical_analysis_signoff_setup.sgs | 89 - .../physical_aware_power/.submethodology_help | 9 - .../doc/power_est_average.htm | 5 - .../physical_power_postfloorplan.spq | 62 - .../physical_power_postfloorplan_setup.sgs | 204 - .../power_est_average.spq | 34 - .../power_est_average_debug_help.htm | 68 - .../pppf_1_introduction.htm | 109 - .../pppf_2_select_techlib.htm | 101 - .../pppf_3_select_sdc.htm | 109 - .../pppf_4_select_fp1.htm | 112 - .../pppf_5_setup_powerest.htm | 109 - .../physical_aware_power/regression_run.tcl | 1 - .../power/.submethodology_help | 1 - .../power/power_activity_check.spq | 44 - .../power/power_activity_check_debug_help.htm | 65 - .../power/power_activity_check_setup.sgs | 34 - .../custom_methodology/power/power_atd.htm | 666 -- .../custom_methodology/power/power_atd.spq | 48 - .../power/power_atd_debug_help.htm | 69 - .../power/power_atd_setup.sgs | 34 - .../custom_methodology/power/power_audit.spq | 50 - .../power/power_audit_debug_help.htm | 65 - .../power/power_audit_setup.sgs | 50 - .../power/power_calibration.spq | 63 - .../power/power_calibration_debug_help.htm | 65 - .../power/power_cge_profiling.spq | 75 - .../power/power_cge_profiling_est.spq | 61 - .../power/power_cge_profiling_save.spq | 46 - .../power/power_est_average.spq | 48 - .../power/power_est_average_debug_help.htm | 68 - .../power/power_est_average_setup.sgs | 50 - .../power/power_est_profiling.spq | 58 - .../power/power_est_profiling_save.spq | 46 - .../power/power_factor_conditions.spq | 49 - .../power/power_factor_values.spq | 47 - .../power/power_fix_verify.spq | 45 - .../power/power_fix_verify_debug_help.htm | 65 - .../power/power_fix_verify_setup.sgs | 17 - .../power/power_gen_pesd.spq | 53 - .../power/power_guidance.spq | 58 - .../power/power_mem_reduction.spq | 70 - .../power/power_mem_reduction_debug_help.htm | 65 - .../power/power_mem_reduction_setup.sgs | 47 - .../power/power_mode_detection-mixed.spq | 28 - .../power/power_mode_detection-verilog.spq | 28 - .../power/power_mode_detection-vhdl.spq | 28 - .../power/power_mode_detection_debug_help.htm | 68 - .../power/power_reduction_adv.spq | 73 - .../power/power_reduction_adv_debug_help.htm | 65 - .../power/power_reduction_adv_setup.sgs | 57 - .../custom_methodology/power/power_sec.spq | 55 - .../power/power_sec_debug_help.htm | 68 - .../power/power_sec_setup.sgs | 26 - .../power/power_selective_autofix.spq | 42 - .../power_selective_autofix_debug_help.htm | 65 - .../power/power_selective_autofix_setup.sgs | 17 - .../power/power_wtc_model.spq | 41 - .../power/power_wtc_profiler.spq | 41 - .../power/power_wtc_virtualizer.spq | 52 - .../custom_methodology/power/red_opt.tcl | 3 - .../power_verification/.submethodology_help | 5 - .../power_verif_abstract.spq | 28 - .../power_verif_abstract_setup.sgs | 19 - .../power_verification/power_verif_audit.spq | 73 - .../power_verif_audit_debug_help.htm | 65 - .../power_verif_instr_rtl.spq | 109 - .../power_verif_instr_rtl_debug_help.htm | 65 - .../power_verif_instr_rtl_setup.sgs | 20 - .../power_verif_noninstr.spq | 92 - .../power_verif_noninstr_debug_help.htm | 65 - .../power_verif_noninstr_setup.sgs | 20 - .../rdc/rdc_verify_struct.spq | 110 - .../rdc/rdc_verify_struct_setup.sgs | 4 - .../custom_methodology/regression_run.tcl | 49 - .../rtl2netlist/rtl2netlist_migration.spq | 50 - .../rtl2netlist_migration_debug_help.htm | 66 - .../txv_verification/.submethodology_help | 5 - .../txv_verification/fp_mcp_verification.spq | 72 - .../fp_mcp_verification_debug_help.htm | 95 - .../txv_verification/fp_verification.spq | 69 - .../fp_verification_debug_help.htm | 95 - .../txv_verification/mcp_verification.spq | 71 - .../mcp_verification_debug_help.htm | 95 - .../txv_verification/txv_glitch.spq | 23 - .../txv_verification/txv_rtl_gen.spq | 26 - .../txv_verification/txv_run_audit.spq | 78 - .../txv_run_audit_debug_help.htm | 63 - .../txv_verification/txv_sdc_migration.spq | 49 - .../tmp/tmp/Scripts/del_tmp_files.sh | 17 - .../tmp/tmp/Scripts/error_find.perl | 9 - .../tmp/tmp/Scripts/ezeco_setup.sh | 101 - src/UWE_projectCode/tmp/tmp/Scripts/ezlec.sh | 75 - .../tmp/tmp/Scripts/filelist_gen.sh | 58 - .../tmp/tmp/Scripts/get_CURRENT_DESIGN.sh | 3 - .../tmp/tmp/Scripts/get_DBs_info.sh | 23 - .../tmp/tmp/Scripts/get_PROJECT_PATH.sh | 3 - .../tmp/tmp/Scripts/quick_start | 70 - .../tmp/tmp/Scripts/report_dc_summary.sh | 74 - src/UWE_projectCode/tmp/tmp/Scripts/runAll.sh | 108 - src/UWE_projectCode/tmp/tmp/Scripts/setPP.sh | 12 - .../tmp/tmp/Scripts/tab_change | 20 - .../tmp/tmp/Scripts/temp_files_cleaner.sh | 41 - src/UWE_projectCode/tmp/tmp/Scripts/tmp.log | 0 .../tmp/tmp/Scripts/warning_find.perl | 9 - .../tmp/tmp/Tcls/#syn_main.tcl# | 345 - .../tmp/tmp/Tcls/.syn_main.tcl.swm | Bin 16384 -> 0 bytes .../tmp/tmp/Tcls/.syn_main.tcl.swn | Bin 16384 -> 0 bytes .../tmp/tmp/Tcls/.syn_main.tcl.swo | Bin 16384 -> 0 bytes .../tmp/tmp/Tcls/.syn_main.tcl.swp | Bin 16384 -> 0 bytes .../tmp/tmp/Tcls/M6672_syn.tcl | 206 - src/UWE_projectCode/tmp/tmp/Tcls/cdc_goal.tcl | 120 - .../tmp/tmp/Tcls/common_options.tcl | 22 - src/UWE_projectCode/tmp/tmp/Tcls/compile.tcl | 34 - src/UWE_projectCode/tmp/tmp/Tcls/copyLib.tcl | 25 - .../tmp/tmp/Tcls/custom_options.tcl | 48 - .../tmp/tmp/Tcls/formality.tcl | 136 - .../tmp/tmp/Tcls/genus_flow.tcl | 644 -- .../tmp/tmp/Tcls/lib_to_db.tcl | 7 - .../tmp/tmp/Tcls/lint_goal.tcl | 25 - .../tmp/tmp/Tcls/power_goal.tcl | 113 - src/UWE_projectCode/tmp/tmp/Tcls/pt.tcl | 84 - src/UWE_projectCode/tmp/tmp/Tcls/rdc_goal.tcl | 59 - src/UWE_projectCode/tmp/tmp/Tcls/sdc_goal.tcl | 42 - .../tmp/tmp/Tcls/spyglass_lint_rules.tcl | 140 - src/UWE_projectCode/tmp/tmp/Tcls/syn_main.tcl | 347 - .../tmp/tmp/Tcls/synth_options.tcl | 12 - src/UWE_projectCode/tmp/tmp/Tcls/txv_goal.tcl | 34 - .../tmp/tmp/Template/command.log | 6627 ---------------- .../Template/dc.work/dont_touch_filelist.v | 3 - .../Template/dc.work/specific_filelist.tcl | 32 - .../tmp/tmp/Template/dc.work/syn_specific.tcl | 4 - .../Template/dc.work/syn_specific_after.tcl | 8 - .../tmp/tmp/Template/filenames.log | 83 - .../tmp/tmp/Template/nc.work/sim_specific.sh | 2 - .../spyglass.work/constraints/cdc.sgdc | 30 - .../spyglass.work/constraints/lint.sgdc | 0 .../spyglass.work/constraints/power.sgdc | 333 - .../spyglass.work/constraints/rdc.sgdc | 15 - .../spyglass.work/constraints/sdc.sgdc | 0 .../spyglass.work/constraints/txv.sgdc | 0 .../tmp/tmp/Template/spyglass.work/demo.prj | 86 - .../Template/spyglass.work/waiver/demo.awl | 0 .../Template/spyglass.work/waiver/lint.awl | 0 src/UWE_projectCode/tmp/tmp/Template/vcs.work | 0 src/UWE_projectCode/tmp/tmp/command.log | 6824 ----------------- src/UWE_projectCode/tmp/tmp/dc.log | 258 - .../tmp/dc.work/Logs/dc_2022_1004_0820.log | 258 - .../tmp/dc.work/Logs/pt_2023_0324_2136.log | 74 - .../report/cv32e40p_core.svf | Bin 8448 -> 0 bytes .../tmp/tmp/dc.work/dont_touch_filelist.v | 3 - .../tmp/tmp/dc.work/filelist.v | 1 - .../tmp/tmp/dc.work/specific_filelist.tcl | 32 - .../tmp/tmp/dc.work/syn_specific.tcl | 4 - .../tmp/tmp/dc.work/syn_specific_after.tcl | 8 - src/UWE_projectCode/tmp/tmp/filenames.log | 91 - .../tmp/tmp/nc.work/sim_filelist.f | 4 - .../tmp/tmp/nc.work/sim_specific.sh | 2 - src/UWE_projectCode/tmp/tmp/pt.log | 612 -- .../tmp/tmp/pt_2023_0324_2131.log | 65 - .../tmp/tmp/pt_shell_command.log | 923 --- .../tmp/spyglass.work/constraints/cdc.sgdc | 30 - .../tmp/spyglass.work/constraints/lint.sgdc | 0 .../tmp/spyglass.work/constraints/power.sgdc | 333 - .../tmp/spyglass.work/constraints/rdc.sgdc | 15 - .../tmp/spyglass.work/constraints/sdc.sgdc | 0 .../tmp/spyglass.work/constraints/txv.sgdc | 0 .../tmp/tmp/spyglass.work/cv32e40p_core.prj | 86 - .../spyglass.work/waiver/cv32e40p_core.awl | 0 .../tmp/tmp/spyglass.work/waiver/lint.awl | 0 src/UWE_projectCode/tmp/tmp/tmp.log | 1 - src/UWE_projectCode/tmp/tmp/vcs.work | 0 287 files changed, 34821 deletions(-) delete mode 100644 src/UWE_projectCode/tmp/tmp/.Makefile.swl delete mode 100644 src/UWE_projectCode/tmp/tmp/.Makefile.swm delete mode 100644 src/UWE_projectCode/tmp/tmp/.Makefile.swn delete mode 100644 src/UWE_projectCode/tmp/tmp/.Makefile.swo delete mode 100644 src/UWE_projectCode/tmp/tmp/.Makefile.swp delete mode 100644 src/UWE_projectCode/tmp/tmp/.dc.log.swo delete mode 100644 src/UWE_projectCode/tmp/tmp/.setModuleName.tcl.swp delete mode 100644 src/UWE_projectCode/tmp/tmp/Makefile delete mode 100644 src/UWE_projectCode/tmp/tmp/Makefile (copy) delete mode 100644 src/UWE_projectCode/tmp/tmp/Makefile~ delete mode 100644 src/UWE_projectCode/tmp/tmp/ProjectPathSetting.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/R0_check.result delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/SVNSubmit.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/auto_eco.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/calc_dff_count.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/cds_gen delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_R0.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_SRC_ID.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_Skeyword delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_code.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_code_auto.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_file_occupy delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_files.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_han delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/check_timescale delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/clock_cross.pl delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/copy_sdc.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/create_dummy.py delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_setup.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_setup_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_struct.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_struct_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_verify.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_verify_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/lint_functional_rtl.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/lint_functional_rtl_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_abstract.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_abstract_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_check.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_check_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_struct.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_struct_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/clock_reset_integrity.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/clock_reset_integrity_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/connectivity_verify/connectivity_verification.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_abstract.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_abstract_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit-setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_abstract.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_abstract_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice-01.jpg delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_bist_ready.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_best_practice.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_best_practice_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_random_resistance.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-08.jpg delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-09.jpg delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-10.jpg delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-11.jpg delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-12.jpg delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-13.jpg delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/design_audit.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/design_audit_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_abstract.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_abstract_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_functional_rtl.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl_custom.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_turbo_rtl.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_turbo_rtl_custom.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/mbist_dft/mbist_dft.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/order delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/lint_physical.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/doc/power_est_average.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/physical_power_postfloorplan.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/physical_power_postfloorplan_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/power_est_average.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/power_est_average_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_1_introduction.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_2_select_techlib.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_3_select_sdc.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_4_select_fp1.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_5_setup_powerest.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/regression_run.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_calibration.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_calibration_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling_est.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling_save.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_profiling.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_profiling_save.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_factor_conditions.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_factor_values.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_gen_pesd.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_guidance.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-mixed.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-verilog.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-vhdl.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_model.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_profiler.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_virtualizer.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/red_opt.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_abstract.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_abstract_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_audit.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_audit_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rdc/rdc_verify_struct.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rdc/rdc_verify_struct_setup.sgs delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/regression_run.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rtl2netlist/rtl2netlist_migration.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rtl2netlist/rtl2netlist_migration_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/.submethodology_help delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_mcp_verification.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_mcp_verification_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_verification.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_verification_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/mcp_verification.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/mcp_verification_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_glitch.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_rtl_gen.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_run_audit.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_run_audit_debug_help.htm delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_sdc_migration.spq delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/del_tmp_files.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/error_find.perl delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/ezeco_setup.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/ezlec.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/filelist_gen.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/get_CURRENT_DESIGN.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/get_DBs_info.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/get_PROJECT_PATH.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/quick_start delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/report_dc_summary.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/runAll.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/setPP.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/tab_change delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/temp_files_cleaner.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/tmp.log delete mode 100644 src/UWE_projectCode/tmp/tmp/Scripts/warning_find.perl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/#syn_main.tcl# delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swm delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swn delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swo delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swp delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/M6672_syn.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/cdc_goal.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/common_options.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/compile.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/copyLib.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/custom_options.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/formality.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/genus_flow.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/lib_to_db.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/lint_goal.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/power_goal.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/pt.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/rdc_goal.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/sdc_goal.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/spyglass_lint_rules.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/syn_main.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/synth_options.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Tcls/txv_goal.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/command.log delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/dc.work/dont_touch_filelist.v delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/dc.work/specific_filelist.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/dc.work/syn_specific.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/dc.work/syn_specific_after.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/filenames.log delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/nc.work/sim_specific.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/constraints/cdc.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/constraints/lint.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/constraints/power.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/constraints/rdc.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/constraints/sdc.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/constraints/txv.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/demo.prj delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/waiver/demo.awl delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/spyglass.work/waiver/lint.awl delete mode 100644 src/UWE_projectCode/tmp/tmp/Template/vcs.work delete mode 100644 src/UWE_projectCode/tmp/tmp/command.log delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.log delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.work/Logs/dc_2022_1004_0820.log delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.work/Logs/pt_2023_0324_2136.log delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.work/cv32e40p_core_2022_1004_0820/report/cv32e40p_core.svf delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.work/dont_touch_filelist.v delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.work/filelist.v delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.work/specific_filelist.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.work/syn_specific.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/dc.work/syn_specific_after.tcl delete mode 100644 src/UWE_projectCode/tmp/tmp/filenames.log delete mode 100644 src/UWE_projectCode/tmp/tmp/nc.work/sim_filelist.f delete mode 100644 src/UWE_projectCode/tmp/tmp/nc.work/sim_specific.sh delete mode 100644 src/UWE_projectCode/tmp/tmp/pt.log delete mode 100644 src/UWE_projectCode/tmp/tmp/pt_2023_0324_2131.log delete mode 100644 src/UWE_projectCode/tmp/tmp/pt_shell_command.log delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/constraints/cdc.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/constraints/lint.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/constraints/power.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/constraints/rdc.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/constraints/sdc.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/constraints/txv.sgdc delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/cv32e40p_core.prj delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/waiver/cv32e40p_core.awl delete mode 100644 src/UWE_projectCode/tmp/tmp/spyglass.work/waiver/lint.awl delete mode 100644 src/UWE_projectCode/tmp/tmp/tmp.log delete mode 100644 src/UWE_projectCode/tmp/tmp/vcs.work diff --git a/src/UWE_projectCode/tmp/tmp/.Makefile.swl b/src/UWE_projectCode/tmp/tmp/.Makefile.swl deleted file mode 100644 index 808050952decbc215828aa485e7df321d1d400cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/src/UWE_projectCode/tmp/tmp/.Makefile.swm b/src/UWE_projectCode/tmp/tmp/.Makefile.swm deleted file mode 100644 index 7650bec3f97da83f54cce14d14daacb8b72139b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/src/UWE_projectCode/tmp/tmp/.Makefile.swn b/src/UWE_projectCode/tmp/tmp/.Makefile.swn deleted file mode 100644 index 8cd660fcef819a408763b44f105a2455d3b51e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNPmCK^8Gi&C2vCZOxFAp;>{2D6p0SF`=kV?a#99T z22uu622uu622uu622uu62L1;ahG13(@g$9<9r^ce=JrY(c|55`cv`y#hLs#Ien!Jqzt4Cqzt4Cqzt4Cqzt4C zqzt4Cqzt4Cqzo)zz{0J49_cs4c^dcs$@%{$j}h`+;PZe6TnFC#5Fz)0mx1p9JHXSx zp}+YnpEAg>`eEIiB0^ z-lOy?T|QgaYQ<`!y5872r!t$HZO11&MrCt-LCpcU-Ym3eD`=O`74zb&)|cP8bH^H9sg-3zY0^6^w^#q+@$CjgVqV6KcWMgL-u>-)cLd zwAJl0nps_Gx)IH^`!3nhYlY&1I?@&)ZO%$*KCBcaXvPm?p2ZwhTQ8XMhgGKT+iHF2 z2R%OIDvAr3wM;&n&nmgR!kwt!qX$Gv9~UehPoyZW%7HN}_JGuQJRUApvuwv_j!;e= z#5K%(HhW>D=d{4M?~hP37O0L&$1fAVV!4>j=H`XQj&e+)acMPv&xj??elG|kS}&Hi zjrB&QMxVJx%UY6L(CfubG1D%egC4^($pC!ovA zQk$`s^>VdtlnSO%)bw&)mz^@zrN>nEh$a^`a*ixb%>ssoM&Cwb2ZU{uPEc4?_~%J! zR(QK+J{)D3i#&$EWO~b9$<(V0W~5^ir?$HIGwWg!&MDbdh+CPTi;hj5+6%F2jQ$@b z^w<=NQ6R8T;1Of=z)*?HZeR)&6X3?WQP-1+N$vu)NryK z1^wCW&H93j4Wn{vuC$z2SeW zEJBv6=`g&wqf0?*gLynDHEDK1!8!}wUc|=}&9oR4S33cE+_Jl_uVP2fI+ov7<$90h z-rVqly`+_e6(_%>PKr&LBei+Zk`$LSg*np;Qne}wR@6jZVP=6U#0%7TaT-iYju$8U zfr}GGul|=y6Cw32-7x4H*lL0%#yeQ3GAHst5N&iEs1&)OL;WCfnM18+FmPzM&m-D& zXz299!0t20rr2#-Sm3RG)CofO1*Bk?>pEP493ct?F@&AS3Wqcb=<21M$UzG($K2V9 zuwjIB-=-1Tv^Wo#YekS^2dv+P4pt;Kw4x9T{FaL?RODJ{55K8jqExF?pQ{x&w;J@U zc8-dz6@~PZ;X$1L|A;g7eVnt!`Twc-;QMEs_kRQY8u%ITbzm2`16aTYpaW-tCxBDH z-w^|N1Nc2~3AlsvzYE+3%D~gW_i^U`9`H@zYrp{bE6)9Y0sa8|4){6nBJd4h2y}rj z05^ala2Zg5SE2Kd0HOO2h5qT2GLSNmGLSNmGLSNmGVuS%z?th|muA8iHiwos6kAct zbDNoqd1^Z?tM5e$AGBx^0kIj4V_S+%MI2Pwb%vu4*qcTH_NxY>`{!{I=*GcV6OnO_ zg8(1)+8*|*GTfx{wi!Ac;yDV73xV@W(2wGZ`#wY5iXv#N46IOwXcgOXZ8xNhhm4AV zC6pWm-$i?VFtE5HazyOWl$+kRjC;jdB8B#u=SqDC%p<4EshHirP;G=S`A%4 zg1Llwj-cIJBT99vQhsiYCMkrBI|fnZK3C2o0d-i1j=qC4B0tF*69JR7DG`UVFL>X_ zV~Ktkw=zlL?U^Rxgem#s!W1Vq(VM+UzFI-pg*!#V(YLNCPm$=KE<(AsOsq8w6K6va z&X(V&^N#D1imqw6wAe20HJI)5Nv(J!qZLl$NoRCfC1ob_ z&w`GD=gf3Wl7f@;gCAs4&Cu7&hnFH}4&KE+-*?$A=(fU$R1rqN!F~-6z-+20s@=?7 z&gNHC5z)rH9C&uA)0oLHfq~C`44SU@qPdR diff --git a/src/UWE_projectCode/tmp/tmp/.Makefile.swo b/src/UWE_projectCode/tmp/tmp/.Makefile.swo deleted file mode 100644 index f26781644a99bf2e1a4f6dfc348c32e92b163d5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 ZZ?CU}N+-ePFYLvXlgGXMMZBmM|1Zt&tHA&O diff --git a/src/UWE_projectCode/tmp/tmp/.dc.log.swo b/src/UWE_projectCode/tmp/tmp/.dc.log.swo deleted file mode 100644 index 87042741d898644c5dc9a844316b4c5e4836208c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/src/UWE_projectCode/tmp/tmp/.setModuleName.tcl.swp b/src/UWE_projectCode/tmp/tmp/.setModuleName.tcl.swp deleted file mode 100644 index cf737481d050025a1f583bf5f867c12ab6dcd056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&ziYxk6u|MPyR_)k?fPRjsS&z#v_c099sIG0#zPcMf;l@V)qkr0NI|Iof&WG? zm<&!CTok?!j?2B|9xtCQT!wDvy`^5Nb+K_P^7`xf?q{#KyAx@5-;!)@G#6oDbTG<$ zaAONPtEpq=krQjv3P;PC{us=4)%df#&D=)-fine4;?(} ze{Mwfb|mNj+4uh;&HW{L0s#aNKmY**5I_I{1Q0*~0R%2mAX=JOJ*^u$o{WQUvA^4^ S ez.work/lib.f -ls /space/PRJ_Front_End/M7004V/src/DSPCORE/VRF/lib/*WC.lib >> ez.work/lib.f -ls /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/CoreLib/Latest/LVT/lib/RHSTD_LVT_ssg0p72vm40c_ccs.lib >> ez.work/lib.f - -cp ${PROJECTPATH}/syn/dont_use.tcl ez.work/dont_use_cells.tcl -sed -i "s?set_dont_use?dont_use_cell?" ez.work/dont_use_cells.tcl - -${SCRIPTPATH}/ezeco_setup.sh dc - -${SCRIPTPATH}/ezlec.sh - -ezeco -in ./ez.work/$ECO_COMM/easyeco_setup.script -rtl_eco_info ./ez.work/$ECO_COMM/eco_module_info.txt - -cp ez.work/$ECO_COMM/${moduleName}_eco.sv.v $R1_PATH/result/${moduleName}_eco.sv - -cp ${TCLPATH}/formality.tcl ez.work/$ECO_COMM/ - -fm_eco_to_svf ./ez.work/R1src/rtl ./src/rtl > ./ez.work/$ECO_COMM/eco_change.svf - -sed -i 's?./${PP}/result/${Design}.sv?./${R1_PATH}/result/${Design}_eco.sv?' ez.work/$ECO_COMM/formality.tcl -sed -i 's?./${PP}/report/$Design.svf?./${R1_PATH}/report/$Design.svf?' ez.work/$ECO_COMM/formality.tcl -sed -i "s?Design.svf?Design.svf ./ez.work/$ECO_COMM/eco_change.svf?" ez.work/$ECO_COMM/formality.tcl -sed -i "s?fm.log?fm_ez.log?" ez.work/$ECO_COMM/formality.tcl -sed -i "s?fm_svf?fm_ez_svf?" ez.work/$ECO_COMM/formality.tcl - -fm_shell -64 -f ./ez.work/$ECO_COMM/formality.tcl | tee fm_ez.log ${DCWORK}/Logs/fm_ez_${current_date}.log - -fm_result=`grep "Verification SUCCEEDED" fm_ez.log` -if [[ ${fm_result} == "" ]]; then - echo "ECO FM CHECK FAILED!!!" - exit -else - echo "ECO FM CHECK SUCCEEDED!" -fi - -${SCRIPTPATH}/ezeco_setup.sh dft - -ezeco -in ./ez.work/$ECO_COMM/easyeco_dft_setup.script -rtl_eco_info ./ez.work/$ECO_COMM/eco_module_info.txt - -cp ez.work/$ECO_COMM/${moduleName}_dft_eco.sv.v $R1_PATH/result/${moduleName}_dft_eco.v - -#ls /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/CoreLib/Latest/RVT/lib/RHSTD_RVT_ssg0p72vm40c_ccs.lib >> ez.work/lib.f -#ls /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/CoreLib/Latest/ULVT/lib/RHSTD_ULVT_ssg0p72vm40c_ccs.lib >> ez.work/lib.f -# -#${SCRIPTPATH}/ezeco_setup.sh pr -# -#ezeco -in ./ez.work/$ECO_COMM/easyeco_pr_setup.script -rtl_eco_info ./ez.work/$ECO_COMM/eco_module_info.txt -# -#cp ez.work/$ECO_COMM/${moduleName}_pr_eco.sv.v $R1_PATH/result/${moduleName}_pr_eco.v - -#if [ -e $R1_PATH/result/${moduleName}.v ]; then -# mv $R1_PATH/result/${moduleName}.v $R1_PATH/result/${moduleName}_B4_$ECO_COMM.v -#else -# mv $R1_PATH/result/${moduleName}.sv $R1_PATH/result/${moduleName}_B4_$ECO_COMM.sv -#fi - -echo ez.work/$ECO_COMM > ez.work/LastECO.txt diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/calc_dff_count.sh b/src/UWE_projectCode/tmp/tmp/Scripts/calc_dff_count.sh deleted file mode 100644 index b4030fb..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/calc_dff_count.sh +++ /dev/null @@ -1,14 +0,0 @@ -echo "FullChip"; grep "_D_" ./Syn_FullChip/20190418_1124/result/DM6672V_FullChip_20190418_1124_ultra.v | wc -l -echo "VPIF"; grep "_D_" ./Syn_SubModule/Syn_VPIF/20190408_0916/result/*.v | wc -l -echo "GMAC"; grep "_D_" ./Syn_SubModule/Syn_GMAC/20190108_1644/result/*.v | wc -l -echo "DDR"; grep "_D_" ./Syn_SubModule/Syn_DDR/20190108_1644/result/*.v | wc -l -echo "H264E"; grep "_D_" ./Syn_SubModule/Syn_H264E/20190108_1644/result/*.v | wc -l -echo "CD"; grep "_D_" ./Syn_SubModule/Syn_CrossNet_Data/20190407_2037/result/*.v | wc -l -echo "CC"; grep "_D_" ./Syn_SubModule/Syn_CrossNet_Config/20190407_2037/result/*.v | wc -l -echo "SMC_BankPort"; grep "_D_" ./Syn_SubModule/Syn_SMC_BankPort/20190108_1644/result/*.v | wc -l -echo "CorePac"; grep "_D_" ./Syn_SubModule/Syn_CorePac/*.v | wc -l -echo "H264D"; grep "_D_" ./Syn_SubModule/Syn_H264D/20190108_1644/result/*.v | wc -l -echo "SMC"; grep "_D_" ./Syn_SubModule/Syn_SMC/20190108_1708/result/*.v | wc -l -echo "DMAx"; grep "_D_" ./Syn_SubModule/Syn_DMAx/20190108_1644/result/*.v | wc -l -echo "PPC"; grep "_D_" ./Syn_SubModule/Syn_PowerPC/20190108_1644/result/*.v | wc -l -echo "SRIO"; grep "_D_" ./Syn_SubModule/Syn_SRIO/20190226_0837/result/*.v | wc -l diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/cds_gen b/src/UWE_projectCode/tmp/tmp/Scripts/cds_gen deleted file mode 100644 index 59410cd..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/cds_gen +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -#Author: liusheng -#Date: 2019.09.03 -#Role: use it, users do not need to modify the path in cds.lib. - - -NC_PATH=`which simvision` - -CDS_LIB_PATH=${NC_PATH/\/bin\/simvision/.lnx86\/inca\/files\/cds.lib} - -echo "# Contain a project-wide cds.lib" > cds.lib -echo INCLUDE ${CDS_LIB_PATH} >> cds.lib -echo " " >> cds.lib -echo "# Bind library. Logic name <=> Physical Library path." >> cds.lib -echo "# ======LEON3's Library=====" >> cds.lib -echo "DEFINE grlib xncsim/grlib" >> cds.lib -echo "DEFINE techmap xncsim/techmap" >> cds.lib -echo "DEFINE gaisler xncsim/gaisler" >> cds.lib -echo "DEFINE work xncsim/work" >> cds.lib - -echo "WORK > DEFAULT" > synopsys_sim.setup -echo "DEFAULT:vcs_lib/work" >> synopsys_sim.setup -echo "grlib:vcs_lib/grlib" >> synopsys_sim.setup -echo "gaisler:vcs_lib/gaisler" >> synopsys_sim.setup -echo "techmap:vcs_lib/techmap" >> synopsys_sim.setup - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check.sh b/src/UWE_projectCode/tmp/tmp/Scripts/check.sh deleted file mode 100644 index 45268c5..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check.sh +++ /dev/null @@ -1,11 +0,0 @@ -find . -name "log.txt" | xargs grep "Error:" > check.result -find . -name "log.txt" | xargs grep "Can't" >> check.result -find . -name "log.txt" | xargs grep "unresolv" >> check.result -find . -name "fm.log" | xargs grep "Error:" >> check.result -find . -name "fm.log" | xargs grep "Can't" >> check.result -find . -name "pt.log" | xargs grep "Error:" >> check.result -find . -name "pt.log" | xargs grep "Can't" >> check.result -find . -name "lib2db.log" | xargs grep "Error:" >> check.result -find . -name "lib2db.log" | xargs grep "Can't" >> check.result - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_R0.sh b/src/UWE_projectCode/tmp/tmp/Scripts/check_R0.sh deleted file mode 100644 index 57d6aac..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_R0.sh +++ /dev/null @@ -1,65 +0,0 @@ -PP=`./Scripts/setPP.sh` -echo "PP = ${PP}" - -echo "Checking dc.log ..." > R0_check.result -find ${PP} -name "dc.log" | xargs grep "Error:" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "Latch " >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "Timing loop" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "FFGEN" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "have the default net type" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "unresolved" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "unmapped" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "(LINT-5)" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "sensiti" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "MV-038" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "MV-039" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "MV-513" >> R0_check.result -find ${PP} -name "dc.log" | xargs grep "MV-514" >> R0_check.result - -echo " " >> R0_check.result -echo "Checking check_timing.txt and check_design.txt ..." >> R0_check.result -find ${PP} -name "check_timing.txt" | xargs grep "timing loop" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-0)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-3)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-4)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-6)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-7)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-11)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-12)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-20)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-21)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-22)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-23)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-26)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-27)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-40)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-41)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-42)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-56)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-57)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-58)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-59)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-61)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-62)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-63)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-64)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-65)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-66)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-68)" >> R0_check.result -find ${PP} -name "check_design.txt" | xargs grep "(LINT-69)" >> R0_check.result - -echo " " >> R0_check.result -echo "Checking pt.log, check_timing_pt.txt ..." >> R0_check.result -find ${PP} -name "pt.log" | xargs grep "Error:" >> R0_check.result -find ${PP} -name "pt.log" | xargs grep "(LNT-005)" >> R0_check.result -find ${PP} -name "check_timing_pt.txt" | xargs grep "Error:" >> R0_check.result -find ${PP} -name "check_timing_pt.txt" | xargs grep "Warning:" >> R0_check.result - -echo " " >> R0_check.result -echo "Checking fm.log ..." >> R0_check.result -find ${PP} -name "fm.log" | xargs grep "Error: " >> R0_check.result -find ${PP} -name "fm.log" | xargs grep "***** Verification Results *****" >> R0_check.result -find ${PP} -name "fm.log" | xargs grep "Verification SUCCEEDED" >> R0_check.result -find ${PP} -name "fm.log" | xargs grep "Verification FAILED" >> R0_check.result - -cp R0_check.result ${PP}/R0_check.result diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_SRC_ID.sh b/src/UWE_projectCode/tmp/tmp/Scripts/check_SRC_ID.sh deleted file mode 100644 index f910296..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_SRC_ID.sh +++ /dev/null @@ -1,44 +0,0 @@ -dir=`tclsh ./ProjectPathSetting.tcl` -moduleName=`tclsh setModuleName.tcl` -cur_dir=`pwd` -echo $dir -echo $cur_dir -echo $moduleName -srcpath=`find $dir -maxdepth 1 -name '*src' -type d` -echo $srcpath - -cd src -svn info > $cur_dir/RTL_DC_info.log -svn list -vR >> $cur_dir/RTL_DC_info.log -ID=`svn list -vR | cksum | awk '{print $1}'` -echo "set RTL_DC_ID $ID" > $cur_dir/RTL_DC_ID.tcl - -cd $cur_dir -echo "#!/bin/sh" > update_RTL_SVN.sh -echo "" >> update_RTL_SVN.sh -while read line -do - #echo $line - r=`echo $line | cut -d' ' -f1` - f=`echo $line | cut -d' ' -f7` - if [ -n "$f" ]&&[ $r != "Last" ]; then - echo svn up -r$r $f >> update_RTL_SVN.sh - fi -done < RTL_DC_info.log - -cd $srcpath/PUBLIC -svn list -vR >> $cur_dir/RTL_DC_info.log -svn list -vR > $cur_dir/tmp.log - -cd $cur_dir -while read line -do - #echo $line - r=`echo $line | cut -d' ' -f1` - f=`echo $line | cut -d' ' -f7` - if [ -n "$f" ]&&[ $r != "Last" ]; then - echo svn up -r$r $srcpath/PUBLIC/$f >> update_RTL_SVN.sh - fi -done < tmp.log - -rm tmp.log diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_Skeyword b/src/UWE_projectCode/tmp/tmp/Scripts/check_Skeyword deleted file mode 100644 index 84633a1..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_Skeyword +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -PROJECTPATH=`tclsh $RELATIVEPATH/ProjectPathSetting.tcl` -find $PROJECTPATH -name "*.v" | xargs grep -n 'full_case' -find $PROJECTPATH -name "*.v" | xargs grep -n 'parallel_case' -find $PROJECTPATH -name "*.v" | xargs grep -n 'translate on' -find $PROJECTPATH -name "*.v" | xargs grep -n 'translate off' diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_code.sh b/src/UWE_projectCode/tmp/tmp/Scripts/check_code.sh deleted file mode 100644 index 4073b73..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_code.sh +++ /dev/null @@ -1,75 +0,0 @@ -c_date=`date +%Y_%m%d_%H%M` - -echo "Checking filelist.v ..." > code_check.result -filelistpath=`find ./src/ -name '*flist*' -type f` -echo "filelistpath:" $filelistpath -for file in $filelistpath; do - filelistname+=${file#*src/}' ' -done -echo "filelistname:" $filelistname -if [ -z "$filelistname" ]; then - echo "Error: Filelist is not exist or the name is not matching '*_filelist' format. exit." - echo "Error: Filelist is not exist or the name is not matching '*_filelist' format. exit." >> code_check.result - exit -fi -SIMEMU=`grep -n "_SIMULATION_\|_EMULATION_" $filelistpath` -if [ -z "$SIMEMU" ]; then - echo "Info: There are no _SIMULATION_ or _EMULATION_ definition in file $filelistname ." -fi - -echo " " >> code_check.result -echo "Checking 'timescale' in *.v files ... (Warning)" >> code_check.result -find ./src/ -name "*.v" | xargs grep -n 'timescale' >> code_check.result - -echo " " >> code_check.result -echo "Checking Chinese words in *.v files .. (Warning)." >> code_check.result -find ./src/ -name "*.v" | xargs grep -nP '[\p{Han}]' >> code_check.result - -echo " " >> code_check.result -echo "Checking Synophsis key words in *.v files ... (Info)" >> code_check.result -find ./src/ -name "*.v" | xargs grep -n 'full_case' >> code_check.result -find ./src/ -name "*.v" | xargs grep -n 'parallel_case' >> code_check.result -find ./src/ -name "*.v" | xargs grep -n 'translate on' >> code_check.result -find ./src/ -name "*.v" | xargs grep -n 'translate off' >> code_check.result - -echo " " >> code_check.result -echo "Checking author notes in *.v files .. (Warning)." >> code_check.result -for file in `find ./src/ -regex ".*\.vh\|.*\.v\|.*\.h"` -do - authorname=`grep -n "author\|Author\|AUTHOR\|Generated by\|created" $file` - if [ -z "$authorname" ]; then - echo "Warning: Author notes is not exist or the name is not matching 'author|Author|AUTHOR|Generated by|created' format in file $file" - echo "Warning: Author notes is not exist or the name is not matching 'author|Author|AUTHOR|Generated by|created' format in file $file" >> code_check.result - fi -done - -echo " " >> code_check.result -echo "Checking NC log in xrun.log ... " >> code_check.result -find . -maxdepth 1 -name "xrun.log" | xargs grep "*E" >> code_check.result -find . -maxdepth 1 -name "xrun.log" | xargs grep "*W,RECOME" >> code_check.result -find . -maxdepth 1 -name "xrun.log" | xargs grep "*W,CUVWSP" >> code_check.result -find . -maxdepth 1 -name "xrun.log" | xargs grep "*W,CUVWSI" >> code_check.result -find . -maxdepth 1 -name "xrun.log" | xargs grep "*W,CUVMPW" >> code_check.result - -echo " " >> code_check.result -echo "Checking DC dc.log ..." >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "Error:" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "Latch " >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "Timing loop" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "FFGEN" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "have the default net type" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "unresolved" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "unmapped" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "(LINT-5)" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "sensiti" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "MV-038" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "MV-039" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "MV-513" >> code_check.result -find . -maxdepth 1 -name "dc.log" | xargs grep "MV-514" >> code_check.result - -echo " " >> code_check.result -echo "Checking SpyGlass Lint. ..." >> code_check.result -find ./spyglass.work/sg_results/*/consolidated_reports/ -name "moresimple.rpt" | xargs grep "Error" >> code_check.result -find ./spyglass.work/sg_results/*/consolidated_reports/ -name "moresimple.rpt" | xargs grep "WARNING" >> code_check.result - -cp code_check.result Logs/code_check_${c_date}.result diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_code_auto.sh b/src/UWE_projectCode/tmp/tmp/Scripts/check_code_auto.sh deleted file mode 100644 index 771edd8..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_code_auto.sh +++ /dev/null @@ -1,108 +0,0 @@ -MODULES=(DDR_top PCIE_Top RapidIO_top DMA0_wrapper RA14S_top SMC_BankMem) -MASK=( 1 1 1 1 0 1) - -i=0 -for m in ${MODULES[@]} -do - echo $i ${MASK[$i]} - if [ ${MASK[$i]} == 1 ]; then - echo $m - if [ $m == SMC_BankMem ]; then - gnome-terminal --geometry=100x30+100*$i+0 --window --title="$m" -x csh -c "cd Syn_SubModule/$m; make flow; cd ../SMC_Top; make flow; cd ../../; touch ${m}_done.tmp; exec csh" - else - gnome-terminal --geometry=100x30+100*$i+0 --window --title="$m" -x csh -c "cd Syn_SubModule/$m; make flow; cd ../../; touch ${m}_done.tmp; exec csh" - fi - fi - i=$(($i+1)) -done - -j=1 -while [ $j == 1 ] -do - echo "sleep 1" - sleep 1 - i=0 - k=0 - for m in ${MODULES[@]} - do - if [ ${MASK[$i]} == 1 ]; then - if [ -f ${m}_done.tmp ]; then - echo $i $m "continue" - i=$(($i+1)) - continue - else - echo $i $m "break" - k=1 - break - fi - fi - i=$(($i+1)) - done - if [ $k == 0 ]; then - j=0 - fi -done - -gnome-terminal --geometry=100x30+100*$i+0 --window --title="M8024V_SuperNode" -x csh -c "cd Syn_SubModule/M8024V_SuperNode; make flow; cd ../../; touch M8024V_SuperNode_done.tmp; exec csh" - -j=1 -while [ $j == 1 ] -do - echo "sleep 1" - sleep 1 - k=0 - if [ ! -f M8024V_SuperNode_done.tmp ]; then - echo "M8024V_SuperNode break" - k=1 - else - echo "M8024V_SuperNode continue" - fi - if [ $k == 0 ]; then - j=0 - fi -done - -date=`date +%Y_%m%d_%H%M` -echo $date -reportfile=flow_${date}.report -touch reportfile -i=0 -for m in ${MODULES[@]} -do - if [ ${MASK[$i]} == 1 ]; then - echo $m >> $reportfile - cat Syn_SubModule/${m}/R0_check.result >> $reportfile - echo " " >> $reportfile - echo " " >> $reportfile - fi - i=$(($i+1)) -done - -echo "M8024V_SuperNode:" >> $reportfile -cat Syn_SubModule/M8024V_SuperNode/R0_check.result >> $reportfile -echo " " >> $reportfile -echo " " >> $reportfile - -gnome-terminal --geometry=100x30+110*$i+0 --window --title="M8024V_FullChip" -x csh -c "cd Syn_Top; make flow; cd ..; touch M8024V_FullChip_done.tmp; exec csh" - -j=1 -while [ $j == 1 ] -do - echo "sleep 1" - sleep 1 - k=0 - if [ ! -f M8024V_FullChip_done.tmp ]; then - echo "M8024V_FullChip break" - k=1 - else - echo "M8024V_FullChip continue" - fi - if [ $k == 0 ]; then - j=0 - fi -done - -echo "M8024V_FullChip:" >> $reportfile -cat Syn_Top/R0_check.result >> $reportfile - -rm *_done.tmp diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_file_occupy b/src/UWE_projectCode/tmp/tmp/Scripts/check_file_occupy deleted file mode 100644 index 825dd5b..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_file_occupy +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -ls | tee te.log -rm -f space_occupylist.log -touch space_occupylist.log -while read LINE -do - du -hs $LINE | tee -a space_occupylist.log -done < te.log -rm -f te.log -gedit space_occupylist.log diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_files.sh b/src/UWE_projectCode/tmp/tmp/Scripts/check_files.sh deleted file mode 100644 index 3f4f242..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_files.sh +++ /dev/null @@ -1,15 +0,0 @@ - -dir=`tclsh $RELATIVEPATH/ProjectPathSetting.tcl` -moduleName=`tclsh setModuleName.tcl` - -if [ ! -d ${dir}/src/${moduleName} ]; then - echo "Source code is not exist or the dir name is not moduleName. exit." - exit -fi - -if [ ! -e ${dir}/src/${moduleName}/${moduleName}_filelist.v ]; then - echo "Filelist is not exist or the name is not moduleName_filelist. exit." - exit -fi - -echo "Source codes and filelist is existing." diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_han b/src/UWE_projectCode/tmp/tmp/Scripts/check_han deleted file mode 100644 index 5a5f602..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_han +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -PROJECTPATH=`tclsh $RELATIVEPATH/ProjectPathSetting.tcl` -find $PROJECTPATH -name "*.v" | xargs grep -nP '[\p{Han}]' diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/check_timescale b/src/UWE_projectCode/tmp/tmp/Scripts/check_timescale deleted file mode 100644 index 00a0ce1..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/check_timescale +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -PROJECTPATH=`tclsh $RELATIVEPATH/ProjectPathSetting.tcl` -find $PROJECTPATH -name "*.v" | xargs grep -n 'timescale' diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/clock_cross.pl b/src/UWE_projectCode/tmp/tmp/Scripts/clock_cross.pl deleted file mode 100644 index 4b5d4f3..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/clock_cross.pl +++ /dev/null @@ -1,18 +0,0 @@ -#! /usr/bin/perl -$i=0; -$flag=0; -open(NEW,"> $ARGV[1]")||die "ERROR:can't create fzg_result\n"; -open(OLD,"$ARGV[0]")||die "ERROR:can't open clock_cross.v\n"; -while(){ - chomp; - if(/From Clock Crossing Clocks/) {$flag=1;next;} - if(/Information\: Checking \'no\_clock\'/) {$flag=0;} - if($flag==1) { - @array=split(/\s+/,$_); - print NEW "$array[0]\n"; - for($i=1;$i<@array;$i++) - {print NEW "-----> $array[$i]\n";} - print NEW "\n\n";} - - -} diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/copy_sdc.sh b/src/UWE_projectCode/tmp/tmp/Scripts/copy_sdc.sh deleted file mode 100644 index ba78cbd..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/copy_sdc.sh +++ /dev/null @@ -1,32 +0,0 @@ -moduleName=`tclsh setModuleName.tcl` -echo $moduleName - -PP=`setPP.sh` -echo "PP = ${PP}" -PP_date=${PP#*dc.work/} -echo "PP_date = ${PP#*dc.work/}" - -cp $RELATIVEPATH/SDC/${moduleName}.sdc NetlistSubmit/${PP_date}/ -cp $RELATIVEPATH/SDC/${moduleName}_CDC_check.tcl NetlistSubmit/${PP}/ -sed -i 's/set BACKEND false/set BACKEND true/' NetlistSubmit/${PP_date}/${moduleName}.sdc -sed -i 's/set EXTRACT_MODEL true/set EXTRACT_MODEL false/' NetlistSubmit/${PP_date}/${moduleName}.sdc - -if [ ${moduleName} == "SRIO_top" ]; then -cp $RELATIVEPATH/SDC/dwc_e25mp_phy_x4_ns_phy_con.tcl NetlistSubmit/${PP}/ -#sed -i 's/set FLOW SYN/set FLOW STA/' NetlistSubmit/${PP}/const.srio3_ep_phy_top.tcl -fi - -if [ ${moduleName} == "fullchip_top" ]; then -cp ${PP}/result/*.sv NetlistSubmit/${PP} -rf -sed -i 's/set PR true/set PR false/' NetlistSubmit/${PP}/${moduleName}.sdc -cp $RELATIVEPATH/SDC/M66AK_FullChip_skew_check.tcl NetlistSubmit/${PP}/ -cp $RELATIVEPATH/SDC/MaxMinDelay.tcl NetlistSubmit/${PP}/ -#remove power and ground pins. -#$RELATIVEPATH/Scripts/emptyPortValue.pl NetlistSubmit/${PP}/M66AK_FullChip_CLC_Top.sv -#$RELATIVEPATH/Scripts/emptyPortValue.pl NetlistSubmit/${PP}/M66AK_FullChip_CrossNet.sv -#$RELATIVEPATH/Scripts/emptyPortValue.pl NetlistSubmit/${PP}/M66AK_FullChip_excluding_CLC_RESETC_CrossNet.sv -#$RELATIVEPATH/Scripts/emptyPortValue.pl NetlistSubmit/${PP}/M66AK_FullChip_RESETC.sv -#$RELATIVEPATH/Scripts/emptyPortValue.pl NetlistSubmit/${PP}/M66AK_FullChip.sv -fi - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/create_dummy.py b/src/UWE_projectCode/tmp/tmp/Scripts/create_dummy.py deleted file mode 100644 index 3655456..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/create_dummy.py +++ /dev/null @@ -1,200 +0,0 @@ -#!/usr/bin/python -#company: nudt-wdzs-671 -#filename: creat_dummy.py -#description: generate the dummy file of a verilog top file -#author: liusheng -#revision List: -#(rn: date : modifier: description) -#r1: 2019.01.12 the first copy -#r2: 2020.04.05 solve the problem that the signalname inlcudes "input" / "output" or "inout", such as "input bscan_select_jtag_input; " -#r3: 2020.05.05 solve the problem that the file inlcudes "`resetall or `timescale". -#r4: 2020.05.11 fix the bug in "\n" - -import sys -import re - -####main########################################################################################### -print "welcome to use".center(100,"-") -print 'This tool can generate the dummy file of a verilog file.' -print 'please type "creat_dummy.py src.v dst.v" it will geneate the dummy file (dst.v) of src.v.' -print 'The author of this sofware is liusheng from national university of defense technology, China.' -print "welcome to use".center(100,"-") -print "" - -filepath=sys.argv[1] -file_in=open(filepath,"r") -file_all_1=file_in.read() - -modulename=sys.argv[2]; - -realmodulename=modulename.strip('\.v'); - -#delete all the commenting -file_all_2=re.sub('\/\/.*?\n','\n',file_all_1) -file_all_3=re.sub('\/\*.*?\*\/','',file_all_2) -file_all_4=re.sub('\/\*[\s\S]*?\*\/','\n',file_all_3) -#delete all the `, such as "`resetall or `timescale". -file_all_4=re.sub('`.*?\n','\n',file_all_4) - -#print file_all_4 - -#delete declare -file_all_5=re.sub('.*module[\s\S]*?;','',file_all_4) - -#print file_all_5 - -#get declare -all_declare_1=re.findall('.*module[\s\S]*?\)',file_all_4) -all_declare=re.sub(',|\)',';',''.join(all_declare_1)) - -#print all_declare - -#fix \n -file_all_1=all_declare+file_all_5 -#file_all_2=file_all_1.replace("\n","") -file_all_3=file_all_1.replace(";",";\n") - -#fix reg wire -file_all_4=file_all_3.replace("reg","") -file_all=file_all_4.replace("wire","") - - - -#replace the true "parameter localparam input output inout" as "PARAMETER LOCALPARAM INPUT OUTPUT INOUT" - -file_all=re.sub(r'^parameter','PARAMETER',file_all); -file_all=re.sub(r'\sparameter','\nPARAMETER',file_all); -file_all=re.sub(r' parameter',' PARAMETER',file_all); -file_all=re.sub(r'^localparam','LOCALPARAM',file_all); -file_all=re.sub(r'\slocalparam','\nLOCALPARAM',file_all); -file_all=re.sub(r' localparam',' LOCALPARAM',file_all); -file_all=re.sub(r'^input','INPUT',file_all); -file_all=re.sub(r'\sinput','\nINPUT',file_all); -file_all=re.sub(r' input',' INPUT',file_all); -file_all=re.sub(r'\soutput','\nOUTPUT',file_all); -file_all=re.sub(r' output',' OUTPUT',file_all); -file_all=re.sub(r'^output','OUTPUT',file_all); -file_all=re.sub(r'\sinout','\nINOUT',file_all); -file_all=re.sub(r' inout',' INOUT',file_all); -file_all=re.sub(r'^inout','INOUT',file_all); - -#print file_all - - -#find all parameter -allparameter=re.findall('.*PARAMETER(.*?);',file_all) - -#find all localparam -alllocalparam=re.findall('.*LOCALPARAM(.*?);',file_all) - -#find all input -allinput_ini=re.findall('.*INPUT(.*?);',file_all) - -allinput=",".join(allinput_ini) - -#find all true input -alltrueinput=re.sub('\[.*?\]|\s','',allinput) - -#find all output -alloutput_ini=re.findall('.*OUTPUT(.*?);',file_all) -alloutput=",".join(alloutput_ini) - -#find all true output -alltrueoutput=re.sub('\[.*?\]|\s','',alloutput) - -#find all inout -allinout_ini=re.findall('.*inout(.*?);',file_all) -allinout=",".join(allinout_ini) - -#find all true input -alltrueinout=re.sub('\[.*?\]|\s','',allinout) - -file_out=open(modulename,"w") - -#print allparameter -i=0 -j=0 - -print>>file_out,"module "+realmodulename+"(" -print>>file_out,"//output" -for p in list(re.split(",",alltrueoutput)): - i=i+len(p)+2 - if(i>70): - print>>file_out,'\n'+p+',', - i=len(p)+2 - else: - print>>file_out,p+',', - -i=0 -if(alltrueinout!=''): - print>>file_out,"\n//inout" - for p in list(re.split(",",alltrueinout)): - i=i+len(p)+2 - if(i>70): - print>>file_out,'\n'+p+',', - i=len(p)+2 - else: - print>>file_out,p+',', - -print>>file_out,"" -print>>file_out,"//input" -i=0 -for p in list(re.split(",",alltrueinput)): - j=j+1 - i=i+len(p)+2 - if(i>70): - if(len(re.split(",",alltrueinput))==j): - print>>file_out,'\n'+p - else: - print>>file_out,'\n'+p+',', - i=len(p)+2 - else: - if(len(re.split(",",alltrueinput))==j): - print>>file_out,p - else: - print>>file_out,p+',', -print>>file_out,");" -print>>file_out,"" - -for p in list(allparameter): - p=re.sub('\s','',p) - print>>file_out,' parameter '+p+';' - -for p in list(alllocalparam): - p=re.sub('\s','',p) - print>>file_out,' localparam '+p+';' - - -print>>file_out,"" -for p in list(allinput_ini): - p=re.sub('\s','',p) - print>>file_out," input "+p+";" - -print>>file_out,"" -for p in list(allinout_ini): - p=re.sub('\s','',p) - print>>file_out," inout "+p+";" - -print>>file_out,"" -for p in list(alloutput_ini): - p=re.sub('\s','',p) - print>>file_out," output "+p+";" - -print>>file_out,"" -for p in list(re.split(",",alltrueoutput)): - if("rst" in p)|("reset" in p)|("RST" in p)|("RESET" in p): - print>>file_out," assign "+p+"=1'b1;" - elif ("JTAGC_TDO" in p): - print>>file_out," assign "+p+"=JTAGC_TDI;" - else: - print>>file_out," assign "+p+"='b0;" - - -print>>file_out,"" -for p in list(re.split(",",alltrueinout)): - if(p!=""): - print>>file_out," assign "+p+"='b0;" - -print>>file_out,"endmodule" - -####main########################################################################################### diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/.submethodology_help deleted file mode 100644 index 8c4d9f0..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/.submethodology_help +++ /dev/null @@ -1,9 +0,0 @@ -This step recommends goals to be used during the entire -RTL development cycle for new RTL blocks. - -When RTL is almost ready and final handoff checks are being performed. -At this time, majority of GuideWare New_RTL goals should be run after -every ECO. - -This step also includes a set of Optional goals at each stage. -Design teams should inspect these goals for applicability to their design. diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/.submethodology_help deleted file mode 100644 index 7acb53e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/.submethodology_help +++ /dev/null @@ -1,3 +0,0 @@ -The aim of this goal is to check the simulation readiness of the design. At this stage the designer is typically interested in the following - * The designs meets basic connectivity checks such as floating inputs, width mismatch - * The design meets basic simulation prerequisites that can cause functional errors or possible race conditions diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_setup.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_setup.spq deleted file mode 100644 index 5ab1bd1..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_setup.spq +++ /dev/null @@ -1,34 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : adv_lint_setup -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -adv_lint_setup mixed -* -Defines Clocks and Resets -* -This step is used to find the clocks and resets in a design. Follow steps below -to complete initial clocks and resets constraints creation: - 1- Understand your design clocks architecture by exploring clocks and resets - as identified by rules run in this template. Black box clocks need to be - resolved. - 2- Copy autoclocks.sgdc and autoresets.sgdc into a new constraint file and - edit the clocks to provide valid clock/reset sources and remove all - non clocks/resets signals from the file -In addition you can also add known case-analysis under which you want to do the -analysis -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --mixed --policy=clock-reset --rules Clock_info01 --rules Reset_info01 --rules Info_Case_Analysis diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_setup_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_setup_debug_help.htm deleted file mode 100644 index cfd2114..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_setup_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - adv_lint_setup - - - - - - - - - - - - - -
- -
-

-adv_lint_setup -

-

-The aim of this goal is to help the user in finding the clocks and resets. Review clocks and resets reported by Clock_info01 and Reset_info01. For viewing constant propagation in the design, the user can look at Info_Case_Analysis. -

- - - - -
- -
- - - -
- - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_struct.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_struct.spq deleted file mode 100644 index 597016d..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_struct.spq +++ /dev/null @@ -1,43 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : adv_lint_struct -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// 1.1.0 16-Apr-2014 Av_fsm01 deleted -// -// Copyright Atrenta Inc, 2013. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -adv_lint_verify_struct mixed -* -Helps identify and fix structural problems and explore assertion checking opportunities -in a design without performing the actual checks. -Reports design complexity characteristics. -* -The adv_lint_verify_struct goal analyzes structural problems and assertion checking -opportunities in the design. -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --mixed --policies=auto-verify - --rule=Av_Info_Case_Analysis // Highlights case-analysis settings --rule=Av_fsminf01 // Reports all the FSMs in the design --rule=Av_fsminf02 // Reports all the interacting FSMs in the design --rule=Av_fsm_analysis // Reports all Fsm related issues like deadlock, livelock, unreachable state and dead transitions --rules=Av_divide_by_zero // Report Divide/Modulus by zero issue --rule=Av_case01 // Reports all the sensitive case items which are not specified --rule=Av_case02 // Reports the case statements with parallel case pragma which have overlapping case items --rule=Av_deadcode01 // Reports redundant logic in the design --rule=Av_bus01 // Reports all the bus contentions in the design --rule=Av_bus02 // Reports all the floating busses in the design --rule=Av_dontcare01 // Reports sensitizable X-assignments in the design --rule=Av_range01 // Reports array bound violation --rule=Av_complexity01 // Reports design characteristics and complexity for all the RTL modules and FSMs in the design - --audit=yes -+syntharg -ignoreHangingFF diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_struct_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_struct_debug_help.htm deleted file mode 100644 index 47cec03..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_struct_debug_help.htm +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - adv_lint_verify_struct - - - - - - - - - - - - - -
- -
-

-adv_lint_verify_struct -

-

-The aim of this goal is to identify and fix structural problems, report design complexity, and explore assertion checking opportunities in a design -The violations can be debugged and fixed in the following order -

-
    -
  1. Analyze reported FSMs
  2. -
  3. Analyze reported design complexity
  4. -
  5. Analyze assertion opportunities for functional rules
  6. -

    -
- - - - -
- -
- - - -
- - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_verify.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_verify.spq deleted file mode 100644 index f1df021..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_verify.spq +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : adv_lint_verify -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// 1.1.0 16-Apr-2014 Av_fsm01 deleted -// -// Copyright Atrenta Inc, 2013. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -adv_lint_verify mixed -* -Helps identify and fix functional problems related to FSMs, case statements, dead and static code, -busses, and x assignment. -Reports design complexity characteristics. -* -The adv_lint_verify goal analyzes functional problems in the design. -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --mixed --policies=auto-verify - --rule=Av_Info_Case_Analysis // Highlights case-analysis settings --rule=Av_fsminf01 // Reports all the FSMs in the design --rule=Av_fsminf02 // Reports all the interacting FSMs in the design --rule=Av_fsm_analysis // Reports all Fsm related issues like deadlock, livelock, unreachable state and dead transitions --rule=Av_divide_by_zero // Report Divide/Modulus by zero issue --rule=Av_case01 // Reports all the sensitive case items which are not specified --rule=Av_case02 // Reports the case statements with parallel case pragma which have overlapping case items --rule=Av_deadcode01 // Reports redundant logic in the design --rule=Av_bus01 // Reports all the bus contentions in the design --rule=Av_bus02 // Reports all the floating busses in the design --rule=Av_dontcare01 // Reports sensitizable X-assignments in the design --rule=Av_range01 // Reports array bound violation --rule=Av_complexity01 // Reports design characteristics and complexity for all the RTL modules and FSMs in the design - -+syntharg -ignoreHangingFF diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_verify_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_verify_debug_help.htm deleted file mode 100644 index cba3831..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/adv_lint_verify_debug_help.htm +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - adv_lint_verify - - - - - - - - - - - - - -
- -
-

-adv_lint_verify -

-

-The aim of this goal is to analyze all the functional problems in the design. This runs all the functional rules of the Advanced Lint policy. -The violations can be debugged and fixed in the following order -

-
    -
  1. Analyze and resolve x-assignments, divide/modulus by zero issues, generation and propagation problems in the design reported by the rules Av_dontcare01, Av_divide_by_zero, Av_bus01, Av_bus02 and Av_range01.
  2. -
  3. Fix the FSM-related issues and case statement related issues reported by the rules Av_fsm_analysis, Av_case01 and Av_case02
  4. -
  5. Fix the redundant code related violations reported by Av_deadcode01 and Av_staticnet01 rules.
  6. -

    -
- - - - -
- -
- - - -
- - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/lint_functional_rtl.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/lint_functional_rtl.spq deleted file mode 100644 index c33863c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/lint_functional_rtl.spq +++ /dev/null @@ -1,81 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : lint_functional_rtl -// Version: 5.6.1 -// -// Revision History: -// Ver Date Comments -// 1.0.0 26-Nov-2014 Initial version -// 5.4.1 04-Mar-2015 Made following changes -// Removed arg: +syntharg -ignoreHanginFF -// Added use_inferred_clocks & use_inferred_resets -// -// 5.5.0 16-Apr-2015 Added Av_signed_unsigned_mismatch and Av_width_mismatch_expr -// -// 5.6.0 18-Nov-2015 5.6 Added Following Rules -// Rule Name Policy GW Type -// =============================================== -// Av_width_mismatch_expr02 auto-verify MUST -// Av_width_mismatch_expr03 auto-verify MUST -// Av_dontcare_mismatch auto-verify MUST -// Av_case_default_missing auto-verify MUST -// Av_case_default_redundant auto-verify MUST -// -// 5.6.1 29-Mar-2015 Removed use_inferred_resets & use_inferred_clocks -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -lint_functional_rtl mixed -* -Helps identify width related issues in assignment, case expression-select, instance -port connection and function arguments using functional analysis -* -This goal uses functional analysis to identify width related issues in the design. -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ --policies=auto-verify - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ --nocheckoverflow='yes' // Width will be calculated as per LRM rather best fit. - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ --rule=Av_Info_Case_Analysis // Highlights case-analysis settings - --rule=Av_width_mismatch_assign // LHS width is less than RHS width of assignment (Truncation) - --rule=Av_width_mismatch_case // Case expression width does not match case select expression width - --rule=Av_width_mismatch_port // Instance port connection has different width compared to the port definition - --rule=Av_width_mismatch_function // Bit-width of function call arguments must match bit-width of the corresponding function definition arguments - -// Do not mix signed & unsigned variables/constants in expressions, assignment statements or in comparisons --rule=Av_signed_unsigned_mismatch - -//Bit-width of operands of a logical operator must match --rule=Av_width_mismatch_expr - --rule=Av_case_default_missing // A case statement(or selected signal assignment) does not have a default clause - --rule=Av_width_mismatch_expr03 // Unequal length in arithmetic comparison operator - --rule=Av_width_mismatch_expr02 // Unequal length operands in bit wise logical/arithmetic/relational operator - --rule=Av_dontcare_mismatch // Use of don't-care except in case labels may lead to simulation/synthesis mismatch - --rules Av_case_default_redundant // A case statement marked full_case or a priority/unique case statement have a default clause. - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/lint_functional_rtl_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/lint_functional_rtl_debug_help.htm deleted file mode 100644 index 4c48398..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/adv_lint/lint_functional_rtl_debug_help.htm +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - adv_lint_verify - - - - - - - - - - - - - -
- -
-

-adv_lint_verify -

-

-The aim of this goal is to analyze width related problems in the design. This runs all the functional rules of the Advanced Lint policy. -The violations can be debugged and fixed in the following order -

-
    -
  1. Analyze and resolve assignment width mismatch in the design reported by the rules Av_width_mismatch_assign.
  2. -
  3. Analyze and resolve case expression width mismatch in the design reported by the rules Av_width_mismatch_case
  4. -
  5. Fix the width mismatch in arguments of functional calls and port connection in instantiation reported by Av_width_mismatch_port and Av_width_mismatch_function rules.
  6. -

    -
- - - - -
- -
- - - -
- - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/.submethodology_help deleted file mode 100644 index 7acb53e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/.submethodology_help +++ /dev/null @@ -1,3 +0,0 @@ -The aim of this goal is to check the simulation readiness of the design. At this stage the designer is typically interested in the following - * The designs meets basic connectivity checks such as floating inputs, width mismatch - * The design meets basic simulation prerequisites that can cause functional errors or possible race conditions diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_abstract.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_abstract.spq deleted file mode 100644 index 1bbfcd8..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_abstract.spq +++ /dev/null @@ -1,93 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : cdc_abstract -// Version: 1.7.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.1.0 26-Apr-2013 5.1 Parameter enable_handshake removed -// 1.4.0 12-Feb-2014 5.2.1 Clock_info18, enable_fifo=strict removed -// Setup_port01, Setup_blackbox01 added -// 1.7.0 30-Apr-2014 5.3.0 Guidware 2.0 Content Consistency -// 1.10.2 23-Feb-2015 5.4.1 Parameter decompile_block_constraints added -// Parameter sdc_generate_cfp added -// Rule FalsePathSetup added -// 1.13.0 03-Feb-2017 2017.03 Parameter reset_reduce_pessimism added -// 1.14.0 26-Apr-2017 2017.03-SP1 Parameters check_multiclock_bbox, cdc_qualifier_depth, clock_reduce_pessimism, reset_reduce_pessimism, cdc_reduce_pessimism, include_block_interface, use_block_interface added - -// 1.15.0 18-July-2017 2017.12 Parameter use_inferred_abstract_port added -// 1.17.0 22-Jan-2018 2017.12 Option use_advcdc_features added -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -cdc_abstract mixed -* -Abstraction of a block for CDC verification at a higher level of hierarchy -* -This step is used to abstract a block which is to be used at higher level of -hierarchy for CDC verification. The abstracted model helps in following: - - Less run-time at top-level - - Less noise at top-level as no violations will be reported inside the blocks - - Perform this step after doing CDC verification of block. -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=clock-reset - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //allow mixed language --enable_const_prop_thru_seq //allow to propagate beyond the sequential elements --use_advcdc_features //Run Advanced CDC Rules in restore mode - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --enable_mux_sync=all //MUX Synchronization schemes --enable_and_sync=yes //Enables the AND Gate Synchronization Scheme --distributed_fifo=yes //Enables detection of FIFOs based on distributed memories --fa_disable_sync_fifo=yes //Specifies whether functional analysis should be performed on synchronous FIFO structures --strict_sync_check=yes //Allows combinational logic between the source and destination flip-flops --enable_debug_data=yes //Enables annotation of debug information, such as clock, reset, quasi_static signals, and domain information on nets in the schematic --hier_wild_card=no //Specifies the format of specifying hierarchies by using wildcard expressions in all the constraints used by the SpyGlass CDC solution --block_abstract //Generates relevant CDC constraints for block abstraction --sdc_generate_cfp=yes //Inferring cdc_false_path for asynchronous clocks in different domains --decompile_block_constraints // Create merged abstract model --reset_reduce_pessimism=same_data_reset_flop,remove_overlap //Remove overlap between reset sync check and async reset (reset_sync02) rules - --include_block_interface=abstract //Put SV interface information into the abstract model --use_block_interface //Use the SV internface information in the abstract model --check_multiclock_bbox=yes //Clock domain crossing involving the unconstrained pins of black-box instances on destination side and receiving multiple clock are ignored --cdc_qualifier_depth=3 //Default is infinite. This leads to some wrong qualifiers --clock_reduce_pessimism=latch_en,mux_sel_derived,check_enable_for_glitch,ignore_same_domain --cdc_reduce_pessimism=mbit_macro,no_convergence_at_syncreset,no_convergence_at_enable,use_multi_arc,clock_crossing,no_unate_reconv,clock_on_ports,ignore_multi_domain //Let multi-domain source synchronizers will be recognized in Ac_sync but Ac_glitch03 will continue to report the issue. --use_inferred_abstract_port=yes - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Setup_port01 //Reports unconstrained ports summary for top design unit - --rules Setup_blackbox01 //Reports unconstrained pins summary for black-boxes - --rules Ac_abstract01 //Generates relevant SpyGlass CDC constraints for block abstraction - --rules Info_Case_Analysis // Constant propagation in schematic display - --rules FalsePathSetup //Cases where cdc_false_path constraint is not used by any crossing in the design - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_abstract_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_abstract_debug_help.htm deleted file mode 100644 index 6f9b275..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_abstract_debug_help.htm +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - cdc_abstract - - - - - - - - - - - - - -
- -
-

-cdc_abstract -

-

-The aim of this goal is to generate abstract model of a block. This goal reports an informational message by rule Ac_abstract01, which points to the SGDC file containing abstract model. - - -

-
  • Use generated abstract models of blocks at SoC level for CDC verification and abstraction validation checks. You can provide the generated abstract model just with the RTL interface of blocks, without full definitions of blocks.
  • -

    - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup.spq deleted file mode 100644 index 6013c10..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup.spq +++ /dev/null @@ -1,69 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : cdc_setup -// Version: 1.7.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.7.0 30-Apr-2014 5.3.0 Guidware 2.0 Content Consistency -// 1.12.0 18-Nov-2015 5.6.0 Parameter handle_combo_arc=yes added -// 1.17.0 22-Jan-2018 2017.12 Option use_advcdc_features added -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -cdc_setup mixed -* -Define Clocks and Resets -* -This step is used to find the clocks and resets in a design. Follow steps below -to complete initial clocks and resets constraints creation: - 1- Understand your design clocks architecture by exploring clocks and resets - as identified by rules run in this template. Black box clocks need to be - resolved by assuming path through black boxes (use assume_path constraint) - 2- Copy autoclocks.sgdc and autoresets.sgdc into a new constraint file and - edit the clocks to provide valid clock/reset sources and remove all - non clocks/resets signals from the file - In addition you can also add known case-analysis under which you want to do CDC analysis. -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=clock-reset - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //allow mixed language --enable_const_prop_thru_seq //allow to propagate beyond the sequential elements --use_advcdc_features //Run Advanced CDC Rules in restore mode - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --enable_debug_data=yes //Enables annotation of debug information, such as clock, reset, quasi_static signals, and domain information on nets in the schematic --hier_wild_card=no //Specifies the format of specifying hierarchies by using wildcard expressions in all the constraints used by the SpyGlass CDC solution --handle_combo_arc=yes //propagate clocks through lib cells - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Setup_clock01 // Generates information needed for Clock Setup - --rules Clock_info01 // Clock candidates in the design - --rules Reset_info01 // Asynchronous and synchronous preset and clear candidates in the design - --rules Info_Case_Analysis // Constant propagation in schematic display - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_check.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_check.spq deleted file mode 100644 index 8d3689e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_check.spq +++ /dev/null @@ -1,137 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : cdc_setup_check -// Version: 1.12.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.1.0 05-Oct-2013 5.2 Rule Clock_check10 added -// 1.4.0 12-Feb-2014 5.2.1 Clock_info18 removed -// Ar_converge01, Setup_req01, Setup_port01, Setup_blackbox01 added -// 1.7.0 30-Apr-2014 5.3.0 Guidware 2.0 Content Consistency -// 1.10.0 17-Dec-2014 5.4.1 Setup_req01 removed -// 1.10.2 23-Feb-2015 5.4.1 Rule FalsePathSetup added -// Rule Setup_library01 added -// Parameter sdc_generate_cfp added -// Rule Ac_clockperiod01 removed -// Rule Ac_clockperiod02 removed -// 1.12.0 16-Nov-2016 2016.06-SP2 Rules Clock_info02 and Reset_info02 removed -// 1.13.0 03-Feb-2017 2017.03 Added parameter report_common_reset -// 1.14.0 26-Apr-2017 2017.03-SP1 Rules Clock_info05c, Clock_info01, Reset_info01 added -// Rule Reset_check10 removed -// 1.15.0 18-July-2017 2017.12 Parameter use_inferred_abstract_port added -// 1.17.0 22-Jan-2018 2017.12 Option use_advcdc_features added -// 1.18.0 04-Dec-2018 2018.09 QualifierSetup rule removed due to unneccessary noise STAR #9001291972 -// -// Copyright Atrenta Inc, 2016. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -cdc_setup_check mixed -* -Clocks and Resets Setup Checks -* -This step is used to check setup correctness and completeness; it is very -important to fix all violations reported in this step to avoid false violations -due to incorrect/incomplete setup . Some examples, - 1- Ensure all flops are receiving a clock - 2- Ensure case analysis is defined preventing multiple clocks controlling - the same flop - 3- Ensure multiple clocks are not defined on the same clock path - 4- Periods, edge-list and domains are defined properly for clocks - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=clock-reset - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //allow mixed language --enable_const_prop_thru_seq //allow to propagate beyond the sequential elements --use_advcdc_features //Run Advanced CDC Rules in restore mode - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --enable_debug_data=yes //Enables annotation of debug information, such as clock, reset, quasi_static signals, and domain information on nets in the schematic --hier_wild_card=no //Specifies the format of specifying hierarchies by using wildcard expressions in all the constraints used by the SpyGlass CDC solution --sdc_generate_cfp=yes //Inferring cdc_false_path for asynchronous clocks in different domains --report_common_reset=yes //Reports the common reset source skipping buf/inv and MUX/combo gates acting as buffer --use_inferred_abstract_port=yes - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Clock_info03a // Reports unconstrained clock nets --overloadrules Clock_info03a+severity=Error - --rules Clock_info05 // MUX descriptions where two or more clock signals converge --overloadrules Clock_info05+severity=Error - -## -rules Clock_info05a // Signals on which the set_case_analysis should be set to control MUXed clock selection --overloadrules Clock_info05a+severity=Error - --rules Clock_info05b // Combinational gates other than MUXes where two or more clock signals converge --overloadrules Clock_info05b+severity=Error - --rules Ac_resetvalue01 // Missing -value field of the reset constraint defined in an SGDC file --overloadrules Ac_resetvalue01+severity=Error - --rules Reset_info09a // Reports Unconstrained asynchronous reset nets --overloadrules Reset_info09a+severity=Error - --rules Clock_converge01 // Clocks whose multiple fan-outs converge --overloadrules Clock_converge01+severity=Error - --rules Ar_converge01 //Reports a reset signal whose multiple fan-outs converge - --rules Reset_check03 //Reset signals that are being used at both levels to set or reset flip-flops synchronously --overloadrules Reset_check03+severity=Error - --rules Reset_check11 //Asynchronous resets used as both active-high and active-low --overloadrules Reset_check11+severity=Error - --rules Reset_check12 // Flops that do not get active reset during power on reset --overloadrules Reset_check12+severity=Error - --rules Clock_info03b //Flip-flops,latches where the data pins are tied to a constant value - --rules Clock_info03c // Reports Flip-flops or latches where the clock/enable pin is set to a constant --overloadrules Clock_info03c+severity=Error - --rules Setup_port01 //Reports unconstrained ports summary for top design unit - --rules Setup_blackbox01 //Reports unconstrained pins summary for black-boxes - --rules Clock_check10 // Reports clocks being used as data - --rules Clock_info15 // Generates clock domain information for primary ports - --rules Ar_syncrst_setupcheck01 // Reports constant value on functional flops in synchronous reset deassert-mode - --rules Info_Case_Analysis // Constant propagation in schematic display - --rules Clock_info05c //Reports unconstrained MUXes which do not receive clocks in all its data inputs - --rules FalsePathSetup //Cases where cdc_false_path constraint is not used by any crossing in the design - --rules Setup_library01 //Reports incomplete definition of library pins for CDC - --rules Clock_info01 // Clock candidates in the design - --rules Reset_info01 // Asynchronous and synchronous preset and clear candidates in the design - --ignorerules QualifierSetup //Removed due to unneccessary noise -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_check_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_check_debug_help.htm deleted file mode 100644 index 77bec19..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_check_debug_help.htm +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - cdc_setup_check - - - - - - - - - - - - - -
    - -
    -

    -cdc_setup_check -

    -

    -The aim of this goal is to check setup correctness and completeness. To avoid false analysis due to incorrect/incomplete setup, the user should fix all violations reported during this step. The violations can be debugged and fixed in the following order: -

    -
      -
    1. Analyze and fix clock setup issues reported by the following rules:
    2. -

      -Clock_info03a, Clock_info03b, Clock_info03c, Clock_info05, Clock_info05c, Clock_info05b, Clock_info01, Reset_info01, Clock_converge01, Ar_converge01, FalsePathSetup, Setup_library01 -

      -
    3. Analyze and fix reset setup issues reported by the following rules:
    4. -

      -Reset_info09a, Ac_resetvalue01, Ar_syncrst_setupcheck01 -

      -
    5. Analyze and fix basic issues in reset logic reported by the following rules:
    6. -

      -Reset_check03, Reset_check11, Reset_check12 -

      -
    7. Review report and SGDC file generated by rules Clock_info15, Setup_port01, Setup_blackbox01 to ensure all IOs are properly constrained
    8. -

      -
    9. Review and prune the quasi_static constraints in SGDC file generated by Setup_quasi_static01 rule and provide the SGDC file in CDC verification goals
    10. -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_debug_help.htm deleted file mode 100644 index 591f6f4..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_setup_debug_help.htm +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - cdc_setup - - - - - - - - - - - - - -
    - -
    -

    -cdc_setup -

    -

    -The aim of this goal is to help the user in finding the clocks and resets. Review clocks and resets reported by Clock_info01, and Reset_info01. -

    -

    -For an in-depth analysis and understanding of clocks architecture, the user can look at Setup_clock01. For viewing constant propagation in the design, the user can look at Info_Case_Analysis. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify.spq deleted file mode 100644 index 79f5add..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify.spq +++ /dev/null @@ -1,245 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : cdc_verify -// Version: 1.14.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.1.0 26-Apr-2013 5.1 Rule Ar_syncrst_setupcheck01 added -// Parameter enable_handshake removed -// 1.2.0 06-Aug-2013 5.1.1 Rules Ac_handshake01 and Ac_handshake02 removed -// 1.3.0 04-Oct-2013 5.2 Rule Clock_check10 added -// Rules Ac_coherency01a, Ac_coherency02a added -// 1.4.0 12-Feb-2014 5.2.1 Clock_info18, Ac_fifo01, Ac_cdc08, enable_fifo removed -// Ar_converge01, Setup_req01, Ac_conv04, Ac_conv05, Ac_coherency06, Setup_port01, Setup_blackbox01 added -// 1.5.0 16-Apr-2014 5.3 Rules Ac_coherency01a and Ac_coherency02a deleted -// 1.6.0 30-Apr-2014 5.3 Rule Clock_sync09 removed -// 1.7.0 30-Apr-2014 5.3.0 Guidware 2.0 Content Consistency -// 1.8.0 21-Jul-2014 5.3.1 Enabled Ac_glitch03, allow_combo_logic -// 1.8.1 08-Aug-2014 5.3.1 Removed Ac_conv05. Ac_conv04 description updated -// 1.10.0 17-Dec-2014 5.4.1 Setup_req01 removed -// 1.10.2 23-Feb-2015 5.4.1 Parameter cdc_reduce_pessimism=ignore_multi_domain added -// Parameter reset_reduce_pessimism=remove_overlap added -// Parameter sdc_generate_cfp added -// Rule FalsePathSetup added -// Rule Setup_library01 added -// 1.11.0 11-Jun-2015 5.5.0 Rule parameter cdc_qualifier_depth added -// 1.11.1 31-Aug-2015 5.5.1 Parameter fa_disable_sync_fifo=yes removed -// 1.12.0 16-Nov-2016 2016.06-SP2 Rules Clock_info02 and Reset_info02 removed -// 1.13.0 03-Feb-2017 2017.03 Added parameter report_common_reset -// 1.14.0 26-Apr-2017 2017.03-SP1 Rules Clock_info05c, Clock_glitch05, Clock_info01, Reset_info01 added -// Parameters check_multiclock_bbox, cdc_qualifier_depth, conv_sync_seq_depth, conv_sync_seq_depth_opt, clock_reduce_pessimism, allow_merged_qualifier added -// Overloaded rule severity for rules Clock_sync05, Clock_sync06, Reset_sync02 -// Removed rules Reset_check10, Reset_info02, Clock_info02 -// 1.15.0 18-July-2017 2017.12 Rule Ac_glitch04, Clock_sync05a, Clock_sync06a added -// Parameter conv_sync_as_src added -// Parameter use_inferred_abstract_port added -// 1.17.0 22-Jan-2018 2017.12 Option use_advcdc_features added -// -// Copyright Atrenta Inc, 2016. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -cdc_verify mixed -* -Clock Domain Crossing Verification -* -This step is used to verify all aspects of clock domain crossings; main CDC -issues covered are: - 1- Metastability - 2- Data hold with regard to destination clock and enable - 3- Coherency problem on reconvergent crossings - 4- Functional correctness of FIFOs - 5- Ensure all synchronous resets follow convention specified by reset_sync_style - constraint - In this step any change that may affect the setup will also be monitored and -any setup issues (e.g. converging clocks, missing clocks definition) will be -reported. - For faster CDC verification closure, it is recommended to address structural -violations by running cdc_verify_struct prior to this step. - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=clock-reset - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //allow mixed language --enable_const_prop_thru_seq //allow to propagate beyond the sequential elements --use_advcdc_features //Run Advanced CDC Rules in restore mode - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --enable_mux_sync=all //MUX Synchronization schemes --enable_and_sync=yes //Enables the AND Gate Synchronization Scheme --distributed_fifo=yes //Enables detection of FIFOs based on distributed memories --enable_debug_data=yes //Enables annotation of debug information, such as clock, reset, quasi_static signals, and domain information on nets in the schematic --hier_wild_card=no //Specifies the format of specifying hierarchies by using wildcard expressions in all the constraints used by the SpyGlass CDC solution --strict_sync_check=yes //Allows combinational logic between the source and destination flip-flops --fa_vcdfulltrace=allnets //Specifies the type of data that is to be dumped to the VCD file --fa_msgmode=all //Specifies the type of assertions --reset_reduce_pessimism=same_data_reset_flop,remove_overlap //Remove overlap between reset sync check and async reset (reset_sync02) rules --cdc_reduce_pessimism=mbit_macro,no_convergence_at_syncreset,no_convergence_at_enable,use_multi_arc,clock_crossing,no_unate_reconv,clock_on_ports,ignore_multi_domain //Let multi-domain source synchronizers will be recognized in Ac_sync but Ac_glitch03 will continue to report the issue. --sdc_generate_cfp=yes //Inferring cdc_false_path for asynchronous clocks in different domains --report_common_reset=yes //Reports the common reset source skipping buf/inv and MUX/combo gates acting as buffer --use_inferred_abstract_port=yes --conv_sync_as_src=yes - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Ac_clockperiod01 // Missing -period or -edge fields of the clock constraint defined in an SGDC file --overloadrules Ac_clockperiod01+severity=Error - --rules Ac_clockperiod02 //Clocks whose periods are rounded off by SpyGlass for lower design cycle for faster functional analysis - --rules Ac_clockperiod03 // Clocks with design cycles greater than the threshold value --overloadrules Ac_clockperiod03+severity=Error - --rules Clock_info03a // Reports unconstrained clock nets --overloadrules Clock_info03a+severity=Error - --rules Clock_info05 // MUX descriptions where two or more clock signals converge --overloadrules Clock_info05+severity=Error - -## -rules Clock_info05a // Signals on which the set_case_analysis should be set to control MUXed clock selection --overloadrules Clock_info05a+severity=Error - --rules Clock_info05b // Combinational gates other than MUXes where two or more clock signals converge --overloadrules Clock_info05b+severity=Error - --rules Ac_resetvalue01 // Missing -value field of the reset constraint defined in an SGDC file --overloadrules Ac_resetvalue01+severity=Error - --rules Reset_info09a // Reports Unconstrained asynchronous reset nets --overloadrules Reset_info09a+severity=Error - --rules Clock_converge01 // Clocks whose multiple fan-outs converge --overloadrules Clock_converge01+severity=Error - --rules Ar_converge01 //Reports a reset signal whose multiple fan-outs converge - --rules Reset_check03 //Reset signals that are being used at both levels to set or reset flip-flops synchronously --overloadrules Reset_check03+severity=Error - --rules Reset_check11 //Asynchronous resets used as both active-high and active-low --overloadrules Reset_check11+severity=Error - --rules Reset_check12 // Flops that do not get active reset during power on reset --overloadrules Reset_check12+severity=Error - --rules Clock_info03b //Flip-flops,latches where the data pins are tied to a constant value - --rules Clock_info03c // Reports Flip-flops or latches where the clock/enable pin is set to a constant --overloadrules Clock_info03c+severity=Error - --rules Setup_port01 //Reports unconstrained ports summary for top design unit - --rules Setup_blackbox01 //Reports unconstrained pins summary for black-boxes - --rules Clock_check10 // Reports clocks being used as data - --rules Ac_initstate01 // Reports a valid state of the design from which the formal analysis would actually start - --rules Ar_syncrstactive01 // Polarity on synchronous reset usage mismatches with -active field in sync_reset_style constraint - --rules Ar_syncrstcombo01 // Combinational logic in synchronous reset path mismatches with -combo field in sync_reset_style constraint - --rules Ar_syncrstload01 // Load on synchronous reset less than the specified max load - --rules Ar_syncrstload02 // Load on synchronous reset exceeds the specified min load - --rules Ar_syncrstpragma01 // Pragma specification on synchronous reset usage mismatches with -pragma field in sync_reset_style constraint - --rules Ar_syncrstrtl01 // Reports if synchronous reset is not detected in condition of first if statement - --rules Ac_unsync01 // Asynchronous clock domain crossings for scalar signals that have at least one unsynchronized source - --rules Ac_unsync02 // Asynchronous clock domain crossings for vector signals having at least one unsynchronized source - --rules Clock_sync05 // Checks for multi-sample inputs --overloadrules Clock_sync05+severity=Error - --rules Clock_sync05a //Reports primary inputs (for which domain is auto-inferred using abstract_module constraint) sampled by multiple clock domains --rules Clock_sync06 // Checks for multi-transition outputs --overloadrules Clock_sync06+severity=Error - --rules Clock_sync06a // Reports primary outputs (for which domain is auto-inferred using abstract_module constraint) driven by multiple clock domain flip-flops or latches --rules Ar_unsync01 // Reports unsynchronized reset signals in the design - --rules Ar_asyncdeassert01 // Reports if reset signal is asynchronously de-asserted - --rules Reset_sync02 // Asynchronous resets used in a clock domain and generated in one of its asynchronous clock domains --overloadrules Reset_sync02+severity=Error - --rules Reset_sync04 //Asynchronous resets synchronized more than once in the same clock domain - --rules Ac_datahold01a // Reports synchronized data clock domain crossings where data can be unstable - --rules Ac_conv01 //same domain signals synchronized in same destination domain, converge after any number of sequential elements - --rules Ac_conv02 //same-domain signals synchronized in same destination domain and converge before sequential elements. - --rules Ac_conv03 // Convergence of synchronized signals from different source domains - --rules Ac_conv04 //For all control-bus clock domain crossings that do not converge, checks for uniform synchronization schemes and further checks gray encoding when formal is enabled - --rules Ac_coherency06 //Reports signals synchronized more than once in the same clock domain - --rules Ac_glitch03 // Reports clock domain crossings subject to glitches --allow_combo_logic=yes //allows combinational logic between crossings only if the logic is within the modules specified using this constraint. --rules Ac_glitch04 // Reports clock domain crossings subject to glitches - --rules Ac_cdc01a // Checks data loss from fast to slow multi-flop or sync-cell synchronized clock domain crossings - --rules Ac_crossing01 // Generate spreadsheet for Crossing Matrix view - --rules Ac_sync01 // Asynchronous clock domain crossings for scalar signals that have all the sources synchronized - --rules Ac_sync02 // Asynchronous clock domain crossings for vector signals that have all sources synchronized - --rules Ar_sync01 // Reports synchronized reset signals in the design - --rules Ar_syncdeassert01 // Reports if reset signal is synchronously de-asserted or not de-asserted at all - --rules Clock_info15 // Generates clock domain information for primary ports - --rules Setup_quasi_static01 // Reports likely quasi-static candidates in the design - --rules Ar_syncrst_setupcheck01 // Reports constant value on functional flops in synchronous reset deassert-mode - --rules Info_Case_Analysis // Constant propagation in schematic display - --rules Clock_info05c //Reports unconstrained MUXes which do not receive clocks in all its data inputs - --rules Clock_glitch05 //Flags asynchronous sources that converge with different domain clocks - --check_multiclock_bbox=yes //Clock domain crossing involving the unconstrained pins of black-box instances on destination side and receiving multiple clock are ignored --cdc_qualifier_depth=3 //Default is infinite. This leads to some wrong qualifiers --conv_sync_seq_depth=1 //Default to only checking Ac_conv01 to 1 flop. User can override to go deeper --conv_sync_seq_depth_opt=yes //Optimizes Ac_conv runtime when depth=1 --clock_reduce_pessimism=latch_en,mux_sel_derived,check_enable_for_glitch,ignore_same_domain --allow_merged_qualifier=strict - --rules Clock_info01 //Reports likely clock signals - --rules Reset_info01 //Reports likely asynchronous and synchronous preset and clear signals - --rules FalsePathSetup //Cases where cdc_false_path constraint is not used by any crossing in the design - --rules Setup_library01 //Reports incomplete definition of library pins for CDC - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_debug_help.htm deleted file mode 100644 index fefe56a..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_debug_help.htm +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - cdc_verify - - - - - - - - - - - - - -
    - -
    -

    -cdc_verify -

    -

    -The aim of this goal is to verify all aspects of clock domain crossings. Review and fix each category of CDC problems separately. The violations can be debugged and fixed in the following order -

    -
      -
    1. Ensure that the setup is clean: analyze and fix violations reported by the following rules
    2. -

      -Clock_info03a, Clock_info03b, Clock_info03c, Clock_info05, Clock_info05b, Clock_converge01, Ar_converge01, Reset_info09a, Ac_resetvalue01, Ac_clockperiod01, Ac_clockperiod02, Ac_clockperiod03, Clock_info15, Setup_port01, Setup_blackbox01, Reset_check03, Reset_check10, Reset_check11, Reset_check12, Ar_syncrstactive01, Ar_syncrstcombo01, Ar_syncrstload01, Ar_syncrstload02, Ar_syncrstpragma01, Ar_syncrstrtl01, FalsePathSetup, Setup_library01 -

      -
    3. Ensure that the design has been properly initialized: Review Ac_initstate01 to ensure at least 80% of flops are initialized and uninitialized flops are not important for functional verification (e.g. sometimes memories are not initialized and are initialized during the execution of the design).
    4. -
    5. Analyze and fix the unsynchronized crossings reported by Ac_unsync01 and Ac_unsync02 rules
    6. -
    7. Analyze and fix other clock and reset synchronization issues reported by the following rules:
    8. -

      -Clock_sync05, Clock_sync06, Ar_unsync01, Ar_asyncdeassert01, Reset_sync02, Reset_sync04 -

      -
    9. Analyze and fix convergence issues reported by following rules
    10. -

      -Ac_conv01, Ac_conv02, Ac_conv03, Ac_conv04, Ac_coherency06 -

      -
    11. Ensure that crossings functionality is correct: Analyze and fix following rules
    12. -

      -Ac_cdc01a, Ac_datahold01a -

      -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_struct.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_struct.spq deleted file mode 100644 index ab74f67..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_struct.spq +++ /dev/null @@ -1,244 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : cdc_verify_struct -// Version: 1.14.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.1.0 26-Apr-2013 5.1 Rules Ac_datahold01a, Ac_cdc01a, Ac_cdc08 removed -// Rule Ar_syncrst_setupcheck01 added -// Parameter enable_handshake removed -// 1.2.0 06-Aug-2013 5.1.1 Rules Ac_handshake01 and Ac_handshake02 removed -// 1.3.0 04-Oct-2013 5.2 Rule Clock_check10 added -// Rules Ac_coherency01a, Ac_coherency02a added -// 1.4.0 12-Feb-2014 5.2.1 Clock_info18, Ac_fifo01, enable_fifo removed -// Ar_converge01, Setup_req01, Ac_conv04, Ac_conv05, Ac_coherency06, Ac_abstract_validation01, SGDC_abstract_mapping01, validate_reduce_pessimism, abstract_validate_express,Setup_port01,Setup_blackbox01 added -// 1.5.0 16-Apr-2014 5.3 Rules Ac_coherency01a and Ac_coherency02a deleted -// 1.6.0 30-Apr-2014 5.3 Rule Clock_sync09 removed -// 1.7.0 30-Apr-2014 5.3.0 Guidware 2.0 Content Consistency -// 1.8.0 21-Jul-2014 5.3.1 Enabled Ac_glitch03, allow_combo_logic -// 1.8.1 08-Aug-2014 5.3.1 Removed Ac_conv05. Ac_conv04 description updated -// 1.10.0 17-Dec-2014 5.4.1 Setup_req01 removed -// 1.10.2 23-Feb-2015 5.4.1 Parameter cdc_reduce_pessimism=ignore_multi_domain added -// Parameter reset_reduce_pessimism=remove_overlap added -// Parameter sdc_generate_cfp added -// Rule FalsePathSetup added -// Rule Setup_library01 added -// Rule Ac_clockperiod01 removed -// Rule Ac_clockperiod02 removed -// 1.11.0 11-Jun-2015 5.5.0 Rule parameter cdc_qualifier_depth added -// 1.12.0 16-Nov-2016 2016.06-SP2 Rules Clock_info02 and Reset_info02 removed -// 1.13.0 03-Feb-2017 2017.03 Added parameter report_common_reset -// 1.14.0 26-Apr-2017 2017.03-SP1 Rule Ac_abstract_validation01 removed and Ac_abstract_validation02 added -// Rules Clock_info05c, Clock_glitch05, Clock_info01, Reset_info01 added -// Parameters autofix_abstract_port, check_multiclock_bbox, cdc_qualifier_depth, conv_sync_seq_depth, conv_sync_seq_depth_opt, clock_reduce_pessimism, allow_merged_qualifier added -// Overloaded rule severity for rules Clock_sync05, Clock_sync06, Reset_sync02 -// Removed rules Ac_clockperiod01, Ac_clockperiod02, Ac_clockperiod03, Reset_check10, Reset_info02, Clock_info02 -// 1.15.0 18-July-2017 2017.12 Rule Ac_glitch04, Clock_sync05a, Clock_sync06a added -// Parameter conv_sync_as_src added -// Parameter use_inferred_abstract_port added -// 1.17.0 22-Jan-2018 2017.12 Option use_advcdc_features added -// -// Copyright Atrenta Inc, 2016. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -cdc_verify_struct mixed -* -Clock Domain Crossing Verification -* -This step is used to verify all aspects of clock domain crossings; main CDC -issues covered are: - 1- Metastability - 2- Coherency problem on reconvergent crossings - 3- Ensure all synchronous resets follow convention specified by reset_sync_style - constraint - In this step any change that may affect the setup will also be monitored and -any setup issues (e.g. converging clocks, missing clocks definition) will be -reported. -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=clock-reset - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //allow mixed language --enable_const_prop_thru_seq //allow to propagate beyond the sequential elements --use_advcdc_features //Run Advanced CDC Rules in restore mode - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --enable_mux_sync=all //MUX Synchronization schemes --enable_and_sync=yes //Enables the AND Gate Synchronization Scheme --distributed_fifo=yes //Enables detection of FIFOs based on distributed memories --fa_disable_sync_fifo=yes //Specifies whether functional analysis should be performed on synchronous FIFO structures --enable_debug_data=yes //Enables annotation of debug information, such as clock, reset, quasi_static signals, and domain information on nets in the schematic --hier_wild_card=no //Specifies the format of specifying hierarchies by using wildcard expressions in all the constraints used by the SpyGlass CDC solution --strict_sync_check=yes //Allows combinational logic between the source and destination flip-flops --fa_vcdfulltrace=allnets //Specifies the type of data that is to be dumped to the VCD file --fa_msgmode=none //Specifies the type of assertions --reset_reduce_pessimism=same_data_reset_flop,remove_overlap //Remove overlap between reset sync check and async reset (reset_sync02) rules --sdc_generate_cfp=yes //Inferring cdc_false_path for asynchronous clocks in different domains --cdc_reduce_pessimism=mbit_macro,no_convergence_at_syncreset,no_convergence_at_enable,use_multi_arc,clock_crossing,no_unate_reconv,clock_on_ports,ignore_multi_domain //Let multi-domain source synchronizers will be recognized in Ac_sync but Ac_glitch03 will continue to report the issue. --report_common_reset=yes //Reports the common reset source skipping buf/inv and MUX/combo gates acting as buffer --use_inferred_abstract_port=yes --conv_sync_as_src=yes - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - -#-rules Ac_clockperiod03 // Clocks with design cycles greater than the threshold value - --rules Clock_info03a // Reports unconstrained clock nets --overloadrules Clock_info03a+severity=Error - --rules Clock_info05 // MUX descriptions where two or more clock signals converge --overloadrules Clock_info05+severity=Error - -## -rules Clock_info05a // Signals on which the set_case_analysis should be set to control MUXed clock selection --overloadrules Clock_info05a+severity=Error - --rules Clock_info05b // Combinational gates other than MUXes where two or more clock signals converge --overloadrules Clock_info05b+severity=Error - --rules Ac_resetvalue01 // Missing -value field of the reset constraint defined in an SGDC file --overloadrules Ac_resetvalue01+severity=Error - --rules Reset_info09a // Reports Unconstrained asynchronous reset nets --overloadrules Reset_info09a+severity=Error - --rules Clock_converge01 // Clocks whose multiple fan-outs converge --overloadrules Clock_converge01+severity=Error - --rules Ar_converge01 //Reports a reset signal whose multiple fan-outs converge - --rules Reset_check03 //Reset signals that are being used at both levels to set or reset flip-flops synchronously --overloadrules Reset_check03+severity=Error - -#-rules Reset_check10 // Asynchronous resets used as non-reset signals -#-overloadrules Reset_check10+severity=Error - --rules Reset_check11 //Asynchronous resets used as both active-high and active-low --overloadrules Reset_check11+severity=Error - --rules Reset_check12 // Flops that do not get active reset during power on reset --overloadrules Reset_check12+severity=Error - --rules Clock_info03b //Flip-flops,latches where the data pins are tied to a constant value - --rules Clock_info03c // Reports Flip-flops or latches where the clock/enable pin is set to a constant --overloadrules Clock_info03c+severity=Error - --rules Setup_port01 //Reports unconstrained ports summary for top design unit - --rules Setup_blackbox01 //Reports unconstrained pins summary for black-boxes - --rules Clock_check10 // Reports clocks being used as data - --rules Ac_initstate01 // Reports a valid state of the design from which the formal analysis would actually start - --rules Ar_syncrstactive01 // Polarity on synchronous reset usage mismatches with -active field in sync_reset_style constraint - --rules Ar_syncrstcombo01 // Combinational logic in synchronous reset path mismatches with -combo field in sync_reset_style constraint - --rules Ar_syncrstload01 // Load on synchronous reset less than the specified max load - --rules Ar_syncrstload02 // Load on synchronous reset exceeds the specified min load - --rules Ar_syncrstpragma01 // Pragma specification on synchronous reset usage mismatches with -pragma field in sync_reset_style constraint - --rules Ar_syncrstrtl01 // Reports if synchronous reset is not detected in condition of first if statement - --rules Ac_unsync01 // Asynchronous clock domain crossings for scalar signals that have at least one unsynchronized source - --rules Ac_unsync02 // Asynchronous clock domain crossings for vector signals having at least one unsynchronized source - --rules Clock_sync05 // Checks for multi-sample inputs --overloadrules Clock_sync05+severity=Error - --rules Clock_sync05a //Reports primary inputs (for which domain is auto-inferred using abstract_module constraint) sampled by multiple clock domains --rules Clock_sync06 // Checks for multi-transition outputs --overloadrules Clock_sync06+severity=Error - --rules Clock_sync06a // Reports primary outputs (for which domain is auto-inferred using abstract_module constraint) driven by multiple clock domain flip-flops or latches --rules Ar_unsync01 // Reports unsynchronized reset signals in the design - --rules Ar_asyncdeassert01 // Reports if reset signal is asynchronously de-asserted - --rules Reset_sync02 // Asynchronous resets used in a clock domain and generated in one of its asynchronous clock domains --overloadrules Reset_sync02+severity=Error - --rules Reset_sync04 //Asynchronous resets synchronized more than once in the same clock domain - --rules Ac_conv01 //same domain signals synchronized in same destination domain, converge after any number of sequential elements - --rules Ac_conv02 //same-domain signals synchronized in same destination domain and converge before sequential elements. - --rules Ac_conv03 // Convergence of synchronized signals from different source domains - --rules Ac_conv04 //For all control-bus clock domain crossings that do not converge, checks for uniform synchronization schemes and further checks gray encoding when formal is enabled - --rules Ac_coherency06 //Reports signals synchronized more than once in the same clock domain - --rules Ac_glitch03 // Reports clock domain crossings subject to glitches --allow_combo_logic=yes //allows combinational logic between crossings only if the logic is within the modules specified using this constraint. --rules Ac_glitch04 //Reports clock domain crossings subject to glitches - --rules Ac_crossing01 // Generate spreadsheet for Crossing Matrix view - --rules Ac_sync01 // Asynchronous clock domain crossings for scalar signals that have all the sources synchronized - --rules Ac_sync02 // Asynchronous clock domain crossings for vector signals that have all sources synchronized - --rules Ar_sync01 // Reports synchronized reset signals in the design - --rules Ar_syncdeassert01 // Reports if reset signal is synchronously de-asserted or not de-asserted at all - --rules Clock_info15 // Generates clock domain information for primary ports - --rules Setup_quasi_static01 // Reports likely quasi-static candidates in the design - --rules Ar_syncrst_setupcheck01 // Reports constant value on functional flops in synchronous reset deassert-mode - --rules Info_Case_Analysis // Constant propagation in schematic display - --rules Ac_abstract_validation02 //Reports block abstraction mismatch with top level design - --rules Clock_info05c //Reports unconstrained MUXes which do not receive clocks in all its data inputs - --rules Clock_glitch05 //Flags asynchronous sources that converge with different domain clocks - --rules Clock_info01 //Reports likely clock signals - --rules Reset_info01 //Reports likely asynchronous and synchronous preset and clear signals - --validate_reduce_pessimism=all //ignore reporting on the block ports that are hanging, or have a constant or quasi static signal reaching on them --abstract_validate_express=no //Enables low noise and low effort validation checks for hierarchical SoC flow --autofix_abstract_port=no //Used to turn on|off autofix feature --check_multiclock_bbox=yes //Clock domain crossing involving the unconstrained pins of black-box instances on destination side and receiving multiple clock are ignored --cdc_qualifier_depth=3 //Default is infinite. This leads to some wrong qualifiers --conv_sync_seq_depth=1 //Default to only checking Ac_conv01 to 1 flop. User can override to go deeper --conv_sync_seq_depth_opt=yes //Optimizes Ac_conv runtime when depth=1 --clock_reduce_pessimism=latch_en,mux_sel_derived,check_enable_for_glitch,ignore_same_domain --allow_merged_qualifier=strict - --rules SGDC_abstract_mapping01 //Reports clock mapping of an abstracted instance - --rules FalsePathSetup //Cases where cdc_false_path constraint is not used by any crossing in the design - --rules Setup_library01 //Reports incomplete definition of library pins for CDC - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_struct_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_struct_debug_help.htm deleted file mode 100644 index b0fc1b1..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/cdc_verify_struct_debug_help.htm +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - cdc_verify_struct - - - - - - - - - - - - - -
    - -
    -

    -cdc_verify_struct -

    -

    -The aim of this goal is to verify structural aspects of clock domain crossings. Review and fix each category of CDC problems separately. The violations can be debugged and fixed in the following order: -

    -
      -
    1. Ensure that the setup is clean: analyze and fix violations reported by the following rules:
    2. -

      -Clock_info03a, Clock_info03b, Clock_info03c, Clock_info05, Clock_info05b, Clock_converge01, Ar_converge01, Reset_info09a, FalsePathSetup, Setup_library01, Ac_resetvalue01, Clock_info15, Setup_port01, Setup_blackbox01, Reset_check03, Reset_check11, Reset_check12, Ar_syncrstactive01 Ar_syncrstcombo01 Ar_syncrstload01 Ar_syncrstload02 Ar_syncrstpragma01 Ar_syncrstrtl01 Clock_info05c Clock_glitch05 Clock_info01 Reset_info01 -

      -
    3. Analyze and fix the unsynchronized crossings reported by Ac_unsync01 and Ac_unsync02 rules
    4. -
    5. Analyze and fix other clock and reset synchronization issues reported by the following rules:
    6. -

      -Clock_sync05, Clock_sync06, Ar_unsync01, Ar_asyncdeassert01, Reset_sync02, Reset_sync04 -

      -
    7. Analyze and fix convergence issues reported by the following rules:
    8. -

      -Ac_conv01, Ac_conv02, Ac_conv03, Ac_conv04, Ac_coherency06, Ac_abstract_validation02, SGDC_abstract_mapping01 -

      -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/clock_reset_integrity.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/clock_reset_integrity.spq deleted file mode 100644 index 8b57e37..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/clock_reset_integrity.spq +++ /dev/null @@ -1,117 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : clock_reset_integrity -// Version: 1.14.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.4.0 12-Feb-2014 5.2.1 Ar_converge01 added -// 1.7.0 30-Apr-2014 5.3.0 Guidware 2.0 Content Consistency -// 1.10.1 22-Dec-2014 5.4.1 Adding starc2005 policy since STARC05-1.4.3.2 requires it -// 1.12.0 18-Nov-2015 5.6.0 Parameter handle_combo_arc=yes added -// 1.13.0 26-Apr-2017 2017.03 Removed timing policy and corresponding rule ClockEnableRace -// -//1.14.0 13-July-2017 2017.12 Overloaded rule severity for Reset_check12 -// 1.17.0 22-Jan-2018 2017.12 Option use_advcdc_features added -// 1.18.0 04-Dec-2018 2018.09 QualifierSetup rule removed due to unneccessary noise STAR #9001291972 -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -clock_reset_integrity mixed -* -Sanity check of Clocks and Resets -* -This step ensures that clocks and resets trees are properly designed and they -are free of glitches, races, and other hazards. - Note that most of the checks require the clocks and resets to be defined. If -you do not have the clocks and resets definitions, you must run the setup for -this step to define them before proceeding with verification. - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=clock-reset -// -policy=starc2005 -// -policy morelint - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //allow mixed language --use_advcdc_features //Run Advanced CDC Rules in restore mode - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --handle_combo_arc=yes //propagate clocks through lib cells - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Clock_info05b //detect clock signals converging on a combinational gate other than a MUX - --rules Clock_check01 //detect unexpected cells, such as latch, tristate, or XOR/XNOR gates in a clock tree - --rules Clock_check04 //Reports the usage of both the edges (positive and negative) of a clock - --rules Reset_check01 //Reports reset signals that are used in a different mode from their respective synthesis pragmas - --rules Reset_check02 //Reports latches, tristate signals, or XOR/XNOR gates in a reset tree - --rules Reset_check03 //Reports synchronous reset signals that are used as active high as well as active low - --rules Reset_check04 //Reports reset signals that are used asynchronously as well as synchronously for different flip-flops - --rules Reset_check06 //Reports high fan-out reset nets that are not driven by placeholder cells - --rules Reset_check07 //Reports asynchronous reset pins driven by a combinational logic - --rules Clock_Reset_info01 //Generates the Clock-Reset Matrix - --rules Clock_glitch02 //Reports clocks that are gated without latching their enable signal properly --overloadrules Clock_glitch02+severity=Warning - --rules Clock_glitch03 //Reports clock signals that pass through a MUX and reconverge back on the same MUX --overloadrules Clock_glitch03+severity=Warning - --rules Clock_glitch04 //Reports flip-flops that converge on a clock pin of a flip-flop through a combinational logic --overloadrules Clock_glitch04+severity=Warning - --rules Clock_Reset_check02 //Reports potential race conditions between flip-flop output and its clock/reset pin - --rules Clock_Reset_check01 //Reports unwanted cells found in clock or reset networks - --rules Clock_Reset_check03 //Reports potential race condition between flip-flop clock and reset pins - --rules Clock_converge01 //Reports the clock signal for which multiple fan-outs converge - --rules Ar_converge01 //Reports a reset signal whose multiple fan-outs converge - --rules Info_Case_Analysis //Constant propagation in schematic display - -// -rules STARC05-1.4.3.2 -//-overloadrules STARC05-1.4.3.2+severity=Warning - -// -rules Clock_check02 # high fanout clocks needed only for netlist audit - -// -rules Clock_check03 # bus bits used as clocks not a design problem -// -rules ResetFlop-ML # All the flip-flops should have either synchronous set/reset or asynchronous set/reset - -// -rules Reset_check12 # Reports flops that do not receive active reset when specified reset is active --overloadrules Reset_check12+severity=Error+msgLabel=NORMAL_WARNING --overloadrules Reset_check12+severity=Info+msgLabel=CORNER_WARNING - --ignorerules QualifierSetup //Removed due to unneccessary noise -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/clock_reset_integrity_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/clock_reset_integrity_debug_help.htm deleted file mode 100644 index c7dc839..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/cdc/clock_reset_integrity_debug_help.htm +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - clock_reset_integrity - - - - - - - - - - - - - -
    - -
    -

    -clock_reset_integrity -

    -

    -The aim of this goal is to check the integrity of clock and reset logic in a design. The violations can be analyzed in the following order: -

    -
      -
    1. Analyze and fix basic clock issues reported by the following rules:
    2. -

      -Clock_check01, Clock_check04, Clock_info05b, Clock_converge01, Ar_converge01 -

      -
    3. Analyze and fix race and glitch issues reported by the following rules:
    4. -

      -Clock_glitch02, Clock_glitch03, Clock_glitch04, Clock_Reset_check01, Clock_Reset_check02, Clock_Reset_check03 -

      -
    5. Analyze and fix basic issues in reset logic reported by the following rules:
    6. -

      -Reset_check01, Reset_check02, Reset_check03, Reset_check04, Reset_check06, Reset_check07 -

      -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/connectivity_verify/connectivity_verification.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/connectivity_verify/connectivity_verification.spq deleted file mode 100644 index ce8e6c6..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/connectivity_verify/connectivity_verification.spq +++ /dev/null @@ -1,94 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare3.0-EarlyAdopter Goal File -// -// Goal Name : connectivity_verification -// Version : 5.5.0 -// -// Revision History: -// Ver Date Comments -// 5.5.0 18-Jun-2015 Initial version -// -// Copyright Atrenta Inc, 2017. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -connectivity_verification -* -Easy capture of connectivity inten across IPs/SoCs and static checks to -suppliment simulation based verification -* - Easy Capture of Connectivity-Intent across IP/SoC - - 1. Compact & portable constraints - 2. Verify 1:1, 1:many, many:1 connections - 3. Checking for illegal conditions - 4. Conditional connectivity - 5. Validate design methodology consistency across blocks and reuse at SoC level - - Static Checks Supplements Simulation Based Verification - - 1. Fast performance to quickly find basic connectivity bugs - 2. Supports regression use model - 3. Violations clearly state the failure root-cause - 4. GUI based design analysis - - For more details about this goal, please refer to the -SpyGlass_ConnectivityVerify_Rules_Reference.pdf file in the doc -subdirectory of your SpyGlass installation -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=dft_dsm,dft - - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Soc_01 // Expected node value must be achieved - --rules Soc_02 // Paths between user specified nodes must exist - --rules Soc_07 // Structure between user specified nodes exists - --rules Soc_08 // Paths between user specified nodes exists or not - --rules Soc_09 // Path between user specified nodes must not exist - --rules Soc_10 // Specific value on user specified nodes must not exist - --rules Soc_11 // Node must satisfy the specified constraint message tag expression - --rules Soc_12 // Node must not have the specified constraint message tag expression - --rules Atspeed_21 // Check required pulse pattern at specified node - --rules Soc_01_Info // Expected node value is achieved - --rules Soc_02_Info // Connection between user specified nodes exists - --rules Soc_07_Info // Structure between user specified nodes exists - --rules Soc_04 // Show design state for a given tag - --rules Info_Atspeed_21 // Expected pulse pattern at specified node is achieved - --rules Info_testmode // Display testmode simulation results - --rules Diagnose_testmode // Display instances that blocks testmode propagation - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/.submethodology_help deleted file mode 100644 index 7706531..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/.submethodology_help +++ /dev/null @@ -1,10 +0,0 @@ -At RTL stage, the user may have two kind of issues -1) Generate SDC from scratch -2) Have the ability to check the correctness, consistency and completeness of the constraint to factilitate synthesis. This includes - - * Consistency of Clocks and Generated clock - * Overwritten or Duplicate Constraints - * Consistency of Input/Output delays, clock latency, clock uncertainty - * Analysis of Feedthrough paths - * Verify structural connectivity of exceptions - * Compare two SDCs for the same design diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_abstract.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_abstract.spq deleted file mode 100644 index 99410ec..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_abstract.spq +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : sdc_abstract -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -sdc_abstract -* -Generate Abstract Port for a design -* -Generates the abstract port for a design - -For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=constraints - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ --block_abstract //for block abstraction - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ --rules CONS_abstract01 // rule that generate abstract port for a design -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_abstract_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_abstract_debug_help.htm deleted file mode 100644 index bb04f02..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_abstract_debug_help.htm +++ /dev/null @@ -1,14 +0,0 @@ - - -

    - SDC Abstract -

    - - -

    The purpose of this Goal is to generate abstract port for a design. - The abstracted view can be used in verifying the timing at system level.

    -

    The abstraction of the block is performed in correlation with the SDC -constraints specified through sdc_data constraints. All such sdc_data constraints are processed and corresponding abstract_port constraints generated by the rule. The mode field of the abstract_port constraint specifies the corresponding sdc_data constraint. These constraints are output into sgdc file. The sgdc file path is highlighted in the message given by the rule.

    - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit-setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit-setup.sgs deleted file mode 100644 index c251335..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit-setup.sgs +++ /dev/null @@ -1,121 +0,0 @@ -########################################################################## -# SpyGlass Constraints Methodology -# -# Version: 1.2 -# -# Revision History: -# Ver Date Comments -# 1.0 18-Jun-2008 Initial version -# 1.1 28-Jul-2008 Fixed documentation issues and incorrect headers -# (31071) -# 1.2 23-Dec-2008 Fixed incorrect use of parameters (35516) -# -# Copyright Atrenta Inc, 2008. All rights reserved. -########################################################################## -# This is the setup file for SDC Validation -########################################################################## -########################################################################## -# Register Variables to be used in the script here -########################################################################## -# Variable to check if user has SGDC file that he wants to use -register_variable Q_ASK_FOR_SGDC 0 -# Variable to check if user has sdc file and no sgdc file -register_variable Q_ASK_FOR_SDC 0 -#variable for sdc file name -register_variable Q_SDC_FILE "" -#variable for Last Setup -register_variable Q_LAST_SETUP 0 -#Ask for current_design -register_variable Q_CURRENT_DESIGN "" -# Check if File Exists -register_variable Q_FILE_EXISTS 0 -# Global SGDC File Name - Eventually to be use tagging -register_variable Q_GLOBAL_SGDC "$PRJFILES_DIR/constraints.sgdc" - -set_property -show_index -set_property -hide_step_numbering - -sgsSet Q_FILE_EXISTS 0 -get_property system.fileExists $Q_GLOBAL_SGDC -result_variable Q_FILE_EXISTS -sgsIf { $Q_FILE_EXISTS == 1 } { - set_header_state "Configure SpyGlass Design Constraint File" complete -} - -set_property -step_header "Before You Start" -show_progress_bar -hide_quality_bar -sgsIf { $Q_FILE_EXISTS == 1 } { - create_form -label "CONFIGURE LAST SETUP" { - get_bool -text "A SGDC file from previous setup was detected. Do you want to use the last setup?" -result_variable Q_LAST_SETUP -buttons {"Yes" "No"} -auto_proceed -style radio -geometry { -side bottom -expand 0 } - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Analyze_the_Flavor_of_SDC.htm - } -} sgsElse { -show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Analyze_the_Flavor_of_SDC.htm -} -set_header_state "Before You Start" complete - -set_property -step_header "Configure SpyGlass Design Constraint File" -sgsIf { $Q_LAST_SETUP == 0} { - create_form -label "CONFIGURE SGDC FILE" { - get_bool -text "Do you have a SGDC file?" -result_variable Q_ASK_FOR_SGDC -buttons {"Yes" "No"} -auto_proceed -style radio -geometry { -side bottom -expand 0 } - get_bool -text "Do you have a SDC file" -result_variable Q_ASK_FOR_SDC -auto_proceed -style radio -geometry { -side bottom -expand 0 } - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm - } - set_property -disable_next_button - sgsIf { ( $Q_ASK_FOR_SGDC == 1 ) && ( $Q_ASK_FOR_SDC == 1 ) } { - show_text "You have to either specify SGDC file(with sdc_data refering to SDC file) or a SDC file which will enable spyglass to automatically create SGDC file for you. Please click back and select one of them. If you select no for both, setup will create a boilerplate SGDC file for you to populate." - } - - sgsIf { $Q_ASK_FOR_SGDC == 1 } { - set_property -enable_next_button - get_file -type {"SGDC Files" "*.sgdc"} -fileExt { "SGDC Files" "*.sgdc" } -result_variable Q_SGDC_FILE -text "Please select the SGDC file" - sgsExec { /bin/cp {get_variable $Q_SGDC_FILE } { get_variable $Q_GLOBAL_SGDC } } - set_constraints $Q_GLOBAL_SGDC -constraints {current_design sdc_data} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm - } sgsElse { - sgsIf {$Q_ASK_FOR_SDC == 1 } { - set_property -enable_next_button - create_form -label "CONFIGURE SDC FILE" { - get_file -type { "SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE -text "Please select the SDC file" - set_sgdc_curr_design -text "Enter Current Design" -result_variable Q_CURRENT_DESIGN - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm - #get_property console.top -result_variable Q_CURRENT_DESIGN - #set_sgdc_curr_design -text "Please select the Top Design Unit" -result_variable Q_CURRENT_DESIGN - #get_string -text "Enter Current Design" -result_variable Q_CURRENT_DESIGN - } - - sgsIf {$Q_SDC_FILE == ""} { - set_property -disable_next_button - show_text " You have not selected the SDC file. Please click back and select the SDC file" - } - sgsIf {$Q_CURRENT_DESIGN == ""} { - set_property -disable_next_button - show_text " No current design has been specified or selected. Please click back and select the current design " - } - - set_property -enable_next_button - sgsExec { /bin/cp $SPYGLASS_HOME/.Methodology/Constraints/setup_template/constraints.sgdc {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo current_design {get_variable $Q_CURRENT_DESIGN} > {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE} >> {get_variable $Q_GLOBAL_SGDC} } - set_constraints $Q_GLOBAL_SGDC -constraints {current_design sdc_data} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm - } sgsElse { - set_property -enable_next_button - sgsExec { /bin/cp $SPYGLASS_HOME/.Methodology/Constraints/setup_template/constraints.sgdc {get_variable $Q_GLOBAL_SGDC} } - set_constraints $Q_GLOBAL_SGDC -constraints {current_design sdc_data} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm - } - } - - set_header_state "Configure SpyGlass Design Constraint File" complete -} sgsElse { - set_header_state "Configure SpyGlass Design Constraint File" skipped - set_constraints $Q_GLOBAL_SGDC -constraints {current_design sdc_data} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm -} - -set_property -step_header "Setup Closure" -sgsSet Q_FILE_EXISTS 0 -get_property system.fileExists $Q_GLOBAL_SGDC -result_variable Q_FILE_EXISTS -sgsIf { $Q_FILE_EXISTS == 1 } { -set_header_state "Setup Closure" complete -show_text " Setup is complete and verified " -} sgsElse { - set_property -disable_next_button -show_text " Setup is incomplete. SGDC file is missing or corrupted. Please Restart or click Back button " -} - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit.spq deleted file mode 100644 index 37f547e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit.spq +++ /dev/null @@ -1,52 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : sdc_audit -// Version: 1.0.1 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// 1.0.1 19-mar-2014 rule SDC_DataSheet added -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -sdc_audit Constraints Mixed -* -This goal gives designers the ability to compute Design Coverage and report uncovered objects. -* -This audit goal gives designers the ability to compute Design Coverage and reports uncovered design objects. The goal will generate a report providing a health card for the SDC, which will include ports and registers that are not constrainted and the reason why constraints are missing on these design objects. - -In addition, the goal is to extract the domain information from SDC Commands. Extracted information is checked for consistency with the SGDC domain information. It informs the user about the conflicting clock domain classifications in SDC. A SGDC file is generated containing all the clock_group information inferred from the SDC constraints, which can be used for further analysis. Generated clocks' corresponding to source clocks are reported in a tabular format. - - -For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - --mixed - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=constraints - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules SDC_Coverage // Reports how well SDC covers the design - --rules DomainAnalysis //extract domain infromation from the SDC constraints --rules DomainError //Flags clock domain errors extracted from SDC commands --rules DomainInfo //Generate domain information for interacting clocks from SDC commands --rules Domain_SGDC_Consis //clock_group specified in SGDC not consistent with clock_group extracted from SDC constraints - --rules SDC_Report01 //Prints table of Generated clocks versus source clocks --rules SDC_DataSheet //VI-85162 - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit_debug_help.htm deleted file mode 100644 index d476e54..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_audit_debug_help.htm +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - sdc_audit - - - - - - - - - - - - - -
    - -
    -

    -sdc_audit -

    -

    -This goal gives designers the ability to compute Constraints Coverage and report uncovered objects. Coverage is reported in terms of design objects left uncovered by the specified constraints. Design objects of interest for the rule are ports and registers. An uncovered design object is an indication of missing constraints. -

    -

    -The report will identify objects not covered by any constraints and reasons for lack of coverage. If registers are not constrained, run clock_consis goal to get more details. If ports are not constrained, run io_delay goal to get more details. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check.spq deleted file mode 100644 index aacbdcb..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check.spq +++ /dev/null @@ -1,108 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : sdc_check -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -sdc_check-mixed -* -Basic Consistency and Clean Clock Definition -* -The objective of this step is to detect the inconsistencies in specification of clocks, generated clocks, and perform basic checks on overwritten and conflicting constraints. Without the clean clock definitions, rest of the constraint validation and exception verification would be ineffective. Overwritten and conflicting constraints may not capture the design intent correctly. - -The step also detects the inconsistencies in specification of input/output delays, clock latency, clock uncertainty. Such inconsistencies not only result in synthesis or static timing analysis to produce incorrect results, they can potentially allow these tools to assume a greater slack than available. This translates to insufficient or incomplete optimization by synthesis, which directly affects the QoR. - -Finally this goal checks that all combinational paths are constrained correctly. If a combination path is unconstrained or incorrectly constrained, then tool will perform no timing check on these paths. As a result a device's -operation at any specified speed can not be guaranteed. - -For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ - --mixed - - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=constraints - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --tc_ignore_te=no --ignore_io_if_fp=yes - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - -// Check for Clock Issues --rules Const_Struct04a // Overwritten constraint detected --rules Const_Struct05 // Conflicting constraints detected --overloadrules Const_Struct05+severity=Warning --rules Clk_Gen01a // Clock not driven by a clock constraint --overloadrules Clk_Gen01a+severity=Error --rules Clk_Gen01b // Clock driven by a constant value or hanging --rules Clk_Gen02 // Constrained clock not used as a clock --overloadrules Clk_Gen02+severity=Info --rules Clk_Gen03 // A generated clock is not in the fanout of it source clock --overloadrules Clk_Gen03+severity=Error --rules Clk_Gen05 // Some clocks in the same clock domain have a different root clock --rules Clk_Gen06 // Multiple paths exist from the clock pin of a sequential cell to different clock sources --rules Clk_Gen08 // Object on which clock is generated should not be a port --rules Clk_Gen09 // Clock source pin is in the fanout of another clock, but is not generated by that clock --overloadrules Clk_Gen09+severity=Error --rules Clk_Gen22 // set_input_delay/set_output_delay has been specified on a clock port --rules Clk_Gen23 // Incorrectly defined generated clock -//-rules Clk_Gen23a //Formal rule for Incorrectly defined Generated clock --overloadrules Clk_Gen23+severity=Error - --rules SDC_Methodology66 // set_case_analysis applied on a design object conflicts with the propagated value due to other set_case_analysis commands --rules SDC_Methodology67 // set_case_analysis applied on the output of a flop conflicts with the value propagated at its input --rules Clk_Lat08 // set_clock_latency is set to negative value --rules Clk_Uncert01 // Clock_uncertainty constraint set on an object which is not a real or generated clock --rules Clk_Uncert03 // Inter clock uncertainty not defined between synchronous clocks --rules Clk_Uncert06 // set_clock_uncertainty is set to negative value - -// Check for I/O Delay Issues --rules Inp_Del01b // Input not constrained by set_input_delay --overloadrules Inp_Del01b+severity=Error --rules Inp_Del03a // Input constraint associated with wrong (or, incomplete set of) clocks --overloadrules Inp_Del03a+severity=Error --rules Inp_Del08 // set_input_delay is set on the same input relative to multiple clocks but -add_delay missing --overloadrules Inp_Del08+severity=Error --rules Op_Del01b // Output has no set_output_delay constraint --overloadrules Op_Del01b+severity=Error --rules Op_Del03a // Output constraint associated with wrong (or, incomplete set of) clocks --overloadrules Op_Del03a+severity=Error --rules Op_Del08 // set_output_delay is set on the same output relative to multiple clocks but -add_delay is missing --overloadrules Op_Del08+severity=Error --rules Load02a // Load values are outside technology limits --overloadrules Load02a+severity=Error --rules Inp_Trans01a // Input transition or drive or driving cell is not defined for input --overloadrules Inp_Trans01a+severity=Error --rules SDC_Methodology07 // Delay value for constraint set_max_time_borrow is not within the clock period of the clock driving the latch - -// Check for Combinational Path Issues --rules Combo_Paths01 // Combinational port to port path is unconstrained --overloadrules Combo_Paths01+severity=Error --rules Combo_Paths02 // Path specified in sdc file (through set_max_delay/set_min_delay) has max_delay < min_delay --rules Combo_Paths03 // Combinational path has output_delay+input_delay > clock period or output_delay+input_delay > set_max_delay --overloadrules Combo_Paths03+severity=Error --rules Show_Case_Analysis --rules Show_Clock_Propagation -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check_debug_help.htm deleted file mode 100644 index 3ff9f1c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check_debug_help.htm +++ /dev/null @@ -1,16 +0,0 @@ - - - sdc_check -

    SDC Check

    - - -

    The objective of this step is to detect the inconsistencies in specification of clocks, generated clocks, and perform basic checks on overwritten and conflicting constraints. Without the clean clock definitions, rest of the constraint validation and exception verification would be ineffective. Overwritten and conflicting constraints may not capture the design intent correctly.

    -

    The step also detects the inconsistencies in specification of input/output delays, clock latency, clock uncertainty. Such inconsistencies not only result in synthesis or static timing analysis to produce incorrect results, they can potentially allow these tools to assume a greater slack than available. This translates to insufficient or incomplete optimization by synthesis, which directly affects the QoR.

    -

    Finally this goal checks that all combinational paths are constrained correctly. If a combination path is unconstrained or incorrectly constrained, then tool will perform no timing check on these paths. As a result a device's - operation at any specified speed can not be guaranteed

    - -

    To debug issues with this goal, first debug all the SDC Parse violations. Such violations lead to incomplete parsing of the SDC file, and many constraints needed could have been ignored due to Parse errors

    - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check_setup.sgs deleted file mode 100644 index f8a0422..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_check_setup.sgs +++ /dev/null @@ -1,17 +0,0 @@ -########################################################################## -# SpyGlass Constraints Methodology -# -# Version: 1.0 -# -# Revision History: -# Ver Date Comments -# 1.0 18-Jun-2008 Initial version -# -# Copyright Atrenta Inc, 2008. All rights reserved. -########################################################################## -# This is the setup file for SDC Validation -########################################################################## - -set_property -step_header "SDC Checks for Clocks, I/O and Feedthroughs" -set_parameters {pt chip clk_gen01_generate_report strict tc_ignore_latch_enable tc_ignore_te ignore_io_if_fp} - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv.spq deleted file mode 100644 index 5619ad7..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv.spq +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : sdc_equiv -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -sdc_equiv-mixed -* -Constriants Equivalece Checking -* -The objective of this step is to ensure that versions of constraints file are equivalent for the same design. As design goes through iterations, so does constraints. This steps helps designers to ensure that design intent is preserved on account of such iterations. - -For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ --mixed -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=const_mgmt,constraints - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Equiv_SDC // Check equivalence between two SDCs for the same design --rules Show_Clock_Propagation --rules Show_Case_Analysis -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv_debug_help.htm deleted file mode 100644 index f89ec09..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv_debug_help.htm +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - sdc_equiv - - - - - - - - - - - - - -
    - -
    -

    -sdc_equiv -

    -

    -The objective of this step is to ensure that versions of constraints file are equivalent for the same design. As design goes through iterations, so does constraints. This steps helps designers to ensure that design intent is preserved on account of such iterations. -

    -

    -This debug of this rule is typically iterative. The user would need to resolve equivalence issues in the following order - set_case_analysis, clocks (primary and generated), I/O Delay, Timing Exceptions and other constraints. Unless you fix set_case_analysis issues, you won't see clock related issues. This order is important to prevent noise from being reported in the equivalence. Consider the following example -

    -
    -SDC1 -
    -
    -create_clock -name c1 -period 10 -source [a/b/clk] 
    -set_input_delay 10 -clock [c1] [get_ports {in1}] 
    -
    -
    -SDC2 -
    -
    -create_clock -name c2 -period 11 -source [a/b/clk] 
    -set_input_delay 10 -clock [c2] [get_ports {in1}] 
    -
    -

    -In this example clocks C1 and C2 are not equivalent. If clocks are not checked before set_input_delay, the equivalence will unnecessarily report the input delays to be not equivalent. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv_setup.sgs deleted file mode 100644 index 6945fa9..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_equiv_setup.sgs +++ /dev/null @@ -1,96 +0,0 @@ -########################################################################## -# SpyGlass Constraints Methodology -# -# Version: 1.1 -# -# Revision History: -# Ver Date Comments -# 1.0 18-Jun-2008 Initial version -# 1.1 05-Aug-2010 Proper Setup manager for sdc_equiv -# Copyright Atrenta Inc, 2008. All rights reserved. -########################################################################## -# This is the setup file for SDC Validation -########################################################################## -register_variable Q_ASK_FOR_SGDC 0 -register_variable Q_ASK_FOR_SDC 0 -register_variable Q_FLOW_TYPE 0 -register_variable Q_SDC_FILE_1 -register_variable Q_SDC_FILE_2 -register_variable Q_BLOCK_NAME "" -register_variable Q_CURRENT_DESIGN "" -register_variable Q_GLOBAL_SGDC "$WDIR/constraints.sgdc" - -set_property -show_index -set_property -hide_step_numbering -#This step will show the help -set_property -step_header "Before You Start" -show_progress_bar -hide_quality_bar -show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/sdc_equivalence_before_you_start.htm -set_header_state "Before You Start" complete -#In this step we get the type of flow and sdc/sgdc files -set_property -step_header "Configure SpyGlass Design Constraint File" -prereq {"Before You Start"} - -create_form -label "CONFIGURE SGDC FILE" { -# show_text "If you have a SGDC file already added to the setup, then select no for both the options" - get_bool -text "Do you have a SGDC file?" -result_variable Q_ASK_FOR_SGDC -buttons {"Yes" "No"} -auto_proceed -style radio -geometry { -side bottom -expand 0 } - get_bool -text "Do you have a SDC file" -result_variable Q_ASK_FOR_SDC -auto_proceed -style radio -geometry { -side bottom -expand 0 } - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm -} -set_property -disable_next_button -sgsIf { ( $Q_ASK_FOR_SGDC == 1 ) && ( $Q_ASK_FOR_SDC == 1 ) } { - show_text "You have to either specify SGDC file(with sdc_data refering to SDC file) or a SDC file which will enable spyglass to automatically create SGDC file for you. Please click back and select one of them. If you select no for both, setup will create a boilerplate SGDC file for you to populate." -} - -sgsIf { $Q_ASK_FOR_SGDC == 1 } { - set_property -enable_next_button - get_file -type {"SGDC Files" "*.sgdc"} -fileExt { "SGDC Files" "*.sgdc" } -result_variable Q_SGDC_FILE -text "Please select the SGDC file" - sgsExec { /bin/cp {get_variable $Q_SGDC_FILE } { get_variable $Q_GLOBAL_SGDC } } - set_constraints $Q_GLOBAL_SGDC -constraints {current_design sdc_data} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm -} sgsElse { - sgsIf {$Q_ASK_FOR_SDC ==1} { - set_property -enable_next_button -# get_bool -text "Choose Yes if you would like to do block top equivalence, and no if you like to do reference implement equivalence for same top" -buttons {"Yes" "No"} -result_variable Q_FLOW_TYPE -auto_proceed -geometry { -side bottom -expand 0 } - - sgsIf {$Q_FLOW_TYPE == 1} { - create_form -label "Configure SDC File" { - get_file -type {"SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE_1 -text "Please select the SDC file(s) for top module" - get_file -type {"SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE_2 -text "Please select the SDC file(s) for block" - set_sgdc_curr_design -text "Enter Top Design" -result_variable Q_CURRENT_DESIGN - get_string -text "Please enter the block name" -result_variable Q_BLOCK_NAME - } - sgsExec { /bin/cp $SPYGLASS_HOME/.Methodology/Constraints/setup_template/constraints.sgdc {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo current_design {get_variable $Q_CURRENT_DESIGN} > {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo block -name {get_variable $Q_BLOCK_NAME} >> {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE_1} -mode flatTop >> {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo current_design {get_variable $Q_BLOCK_NAME} >> {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE_2} -mode block >> {get_variable $Q_GLOBAL_SGDC} } - } sgsElse { - create_form -label "Configure SDC File" { - get_file -type {"SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE_1 -text "Please select the reference SDC file(s)" - get_file -type {"SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE_2 -text "Please select the implement SDC file(s)" - set_sgdc_curr_design -text "Enter Top Design" -result_variable Q_CURRENT_DESIGN - } - sgsExec { /bin/cp $SPYGLASS_HOME/.Methodology/Constraints/setup_template/constraints.sgdc {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo current_design {get_variable $Q_CURRENT_DESIGN} > {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE_1} -mode reference >> {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE_2} -mode implement >> {get_variable $Q_GLOBAL_SGDC} } - } - } sgsElse { - - show_text "Please add a SGDC file or enable previously selected SGDC files" - set_constraints - } -} - -set_header_state "Configure SpyGlass Design Constraint File" complete - - -set_property -step_header "Set Parameters" -prereq {"Configure SpyGlass Design Constraint File"} -set_parameters {equiv_sdc_ambiguous_clock_file equiv_sdc_constraint_file equiv_sdc_tolerance} -set_header_state "Set Parameters" complete - -set_property -step_header "Setup Closure" -prereq {"Before You Start" "Configure SpyGlass Design Constraint File"} -show_text "Please review the SGDC files created in this setup" -set_constraints $Q_GLOBAL_SGDC -show_text "Setup is complete and verified" -set_header_state "Setup Closure" complete - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct.spq deleted file mode 100644 index 146bf11..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct.spq +++ /dev/null @@ -1,53 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : sdc_exception_struct -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// 1.0.1 28-Feb-2014 VI-84582 (SCG01 to SCG05 rules are added to guideware2.0) -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -sdc_exception_struct-mixed -* -Check Timing Exceptions Structurally -* -The objective of this step is to check that Timing Exceptions specified in a constraints file as are on paths which are structurally connected. This step is a pre-requisite, before the paths can be verified formally to be correct. Exceptions set on paths that are structurally not connected are redundant and increase the runtime of implementation tools. - -For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ --mixed -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=constraints - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules False_Path01 // False path reference points are not connected --rules False_Path09 // False path uses same clock in its -from and -to lists --rules MCP01 // Multi cycle path reference points are not connected --rules MCP05 // set_multicycle_path setup/hold over or under defined --rules TE_Conflict01 // Overlap between different timing exceptions commands - --rules Show_Case_Analysis --rules Show_Clock_Propagation - --rules SCG01 //SCG01 to SCG05 added for VI-84582 --rules SCG02 --rules SCG03 --rules SCG04 --rules SCG05 -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct_debug_help.htm deleted file mode 100644 index f9e20d3..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct_debug_help.htm +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - sdc_exception_struct - - - - - - - - - - - - - -
    - -
    -

    -sdc_exception_struct -

    -

    -The objective of this step is to check that Timing Exceptions specified in a constraints file are on paths which are structurally connected. This step is a pre-requisite, before the paths can be verified formally to be correct. Exceptions set on paths that are structurally not connected are redundant and indicate the possibility of typos in specifying the exceptions. -

    -

    -Before debugging this goal ensure that goal clock_consis has been cleaned. Incomplete/incorrect clock can result in noise to be generated for rules in this goal. The rules in this goal can be debugged in any order. To debug False_Path01 and MCP01, open the incremental schematic and try to traverse from the start point to see where the path is broken or blocked that causes the exceptions not to be structurally connected. If there are violations from TE_Conflict01, remove overlapping exceptions. Even though tools provide a well defined order of precedence when exceptions overlap (False Path > Multi Cycle Path > Max/Min Delay), however that order may not be what the designer intended. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct_setup.sgs deleted file mode 100644 index 1b1ff09..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_exception_struct_setup.sgs +++ /dev/null @@ -1,16 +0,0 @@ -########################################################################## -# SpyGlass Constraints Methodology -# -# Version: 1.0 -# -# Revision History: -# Ver Date Comments -# 1.0 18-Jun-2008 Initial version -# -# Copyright Atrenta Inc, 2008. All rights reserved. -########################################################################## -# This is the setup file for SDC Validation -########################################################################## - -set_property -step_header "Check for Structual Correctness of Exceptions" -set_parameters {tc_ignore_clk_to_clk tc_clk_pairs_for_fp strict} diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen.spq deleted file mode 100644 index 2092c66..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen.spq +++ /dev/null @@ -1,48 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : sdc_gen -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -Generates Constraints Mixed -* -This goal gives designers the ability to create SDC templates from RTL or netlist. -* -This goal gives designers the ability to create SDC templates from RTL or netlist. This requires the users to identify correct clock sources (in the .sgdc file) - -This goal is useful if you have an RTL, but, don't have the associated SDC. The template will help create a bare-bone structure, where, the actual numbers can be filled up later by the user. - -For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - --mixed -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=constraints - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - -// The following rules belongs to constraints policy --rules SDC_GenerateIncr // Generate a template constraints file for a block - -//The following rules belong to clock-reset policy and may be needed for debug -//-policies=clock-reset -//-rules Info_Case_Analysis -//-sdc2sgdc - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen_debug_help.htm deleted file mode 100644 index c08f36a..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen_debug_help.htm +++ /dev/null @@ -1,15 +0,0 @@ - - - sdc_gen -

    SDC Generation

    - - - -

    This goal gives designers the ability to create SDC templates from RTL or netlist. This requires the users to identify correct clock sources (in the .sgdc file)

    - -

    This goal is useful if you have an RTL, but, don't have the associated SDC. The template will help create a bare-bone structure, where, the actual numbers can be filled up later by the user.

    - -

    For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation.

    - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen_setup.sgs deleted file mode 100644 index 907f822..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_gen_setup.sgs +++ /dev/null @@ -1,234 +0,0 @@ -########################################################################## -# SpyGlass Constraints Methodology -# -# Version: 1.4 -# -# Revision History: -# Ver Date Comments -# 1.0 18-Jun-2008 Initial version -# 1.1 28-Jul-2008 1) Fixed incorrect documentation in setup -# (29544, 31450) -# 2) Fixed redundancy in steps (31170) -# 3) Enhanced to edit gensdcConstraintsfile.txt (31468) -# 1.2 15-Dec-2008 1) New CDC Setup Manager integrated -# 2) Console Setup improved -# 1.3 24-Dec-2008 1) register output file issues fixed in Console -# 2) Added comments -# 1.4 20-Jan-2009 1) Fixed VIs 36448, 35958 -# Copyright Atrenta Inc, 2008. All rights reserved. -########################################################################## -# This is the SGS script to setup Constraints Generation -########################################################################## -########################################################################## -# Register Variables to be used in the script here -########################################################################## -# Variable to check if clock has been saved in SGDC -register_variable Q_SGDC_MOD 0 -# Variable to check if clock setup has been run once -register_variable Q_RUN_ONCE 0 -# Variable to check if user wants to run clock setup -register_variable Q_RUN_CLK_SETUP 0 -# Variable to check if file exists -register_variable Q_FILE_EXISTS 0 -# Variable to check, if user has SGDC that he wants to user instead of clock setup -register_variable Q_ASK_FOR_SGDC 0 -# Variable to check, if user want parametrized SDC -register_variable Q_ASK_FOR_PARAM 0 -# Variable to check, SDC Generation has been run once. This way when user hits back button -# and comes back to the step again, it will load the exisiting run -register_variable Q_SDC_GEN_ONCE 0 -# Variable to check, SDC Generation has been run once incrementall. This way when user hits back button -# and comes back to the step again, it will load the exisiting run -register_variable Q_SDC_GEN_INCR 0 -# Variable to store whether last run was with Param or not -register_variable Q_LAST_RUN_WITH_PARAM 0 - -source $SPYGLASS_HOME/auxi/common_setup/init_central.sgs - -########################################################################## -# Common Procedures -########################################################################## -## Before you start -set_property -show_index -set_property -hide_step_numbering - -register_variable USE_DESIGN_CLOCKS 1 -register_variable USE_BBOX_RESOLUTION 1 -source $SPYGLASS_HOME/auxi/common_setup/get_central_status.sgs - -set_property -step_header "Before You Start" -show_index -show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Constraints_Generation_Setup.htm -set_header_state "Before You Start" complete -## Resolve Blackboxes -source $SPYGLASS_HOME/auxi/common_setup/bb_resolution/bb_resolution.sgs -########################################################################## -# Setup Step 1 ................... -# Identify all clocks using CDC Setup -########################################################################## - -source $SPYGLASS_HOME/.Methodology/Clock-reset/CDC-Setup-Manager/CDC_Setup_Manager_clock_setup.sgs - -# Add generated SGDC file to the project with recommended constraint as clocks - set_constraints $PRJFILES_DIR/cdc_setup_clocks.sgdc -constraints {clock} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Copy_and_Modify_autoclocks.sgdc.htm -label "Identified Clocks" - -# set_header_state "Review Clocks" complete -#} sgsElse { -## User would have reached this when he created SGDC file and hence Review of Clock Setup Wizard setup is skipped -# set_header_state "Review Clocks" skipped -#} - -########################################################################## -# Setup Step 2 ................... -# Use the SGDC file and generate all clocks in SDC format -########################################################################## - -set_property -step_header "Choose Constraints" -hide_label -show_index -enable_next_button -set_prereq_steps {"Before You Start" "Design Clocks" } - -# Copy the default gensdcConstraintsFile.txt from installation and let the user edit it -#sgsExec { /bin/cp $SPYGLASS_HOME/policies/constraints/gensdcConstraintsFile.txt $WDIR/gensdcConstraintsFile.txt } - sgsCopyFile -file $SPYGLASS_HOME/policies/constraints/gensdcConstraintsFile.txt -target $WDIR/gensdcConstraintsFile.txt -edit_file $WDIR/gensdcConstraintsFile.txt -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Generating_Clocks.htm - -set_header_state "Choose Constraints" complete - -# Now Run the Generation. Ask the user if he/she wants parameterized SDC -set_property -step_header "Generate SDC file" -hide_label -show_index -enable_next_button -set_prereq_steps {"Before You Start" "Design Clocks" "Choose Constraints"} -set_sgdc_state -enable {get_variable $SETUP_CLOCKS_SGDC} -create_form -label "ASK_FOR_PARAMETRIZATION" { - get_bool -text "Do you create parametrizable SDC? (Default is No)" -result_variable Q_ASK_FOR_PARAM -button {"Yes" "No"} -auto_proceed -geometry { -side bottom } - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Generate_SDC_Template.htm -} -sgsIf { $Q_SDC_GEN_ONCE == 0 || $Q_ASK_FOR_PARAM != $Q_LAST_RUN_WITH_PARAM } { - sgsSet Q_SDC_GEN_ONCE 1 - sgsIf { $Q_ASK_FOR_PARAM == 0} { - sgsSet Q_LAST_RUN_WITH_PARAM 0 - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt" -auto_run -must_run -text "Running Goal Gen_Constraints to generate the chosen constraints." -auto_proceed - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Populate_SDC_Template.htm - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt" -text "Running Goal Gen_Constraints to generate the chosen constraints." - } sgsElse { - sgsSet Q_LAST_RUN_WITH_PARAM 1 - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt -gen_sdc_param_file=$SPYGLASS_HOME/policies/constraints/gensdcParamSdc.txt -tc_enable_param_sdc_flow='yes'" -auto_run -must_run -text "Running Goal Gen_Constraints to generate the chosen constraints." -auto_proceed - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Populate_SDC_Template.htm - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt -gen_sdc_param_file=$SPYGLASS_HOME/policies/constraints/gensdcParamSdc.txt" -text "Running Goal Gen_Constraints to generate the chosen constraints." - } -} sgsElse { - sgsIf { $Q_ASK_FOR_PARAM == 0} { - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Populate_SDC_Template.htm - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt" -text "Running Goal Gen_Constraints to generate the chosen constraints." - } sgsElse { - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Populate_SDC_Template.htm - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt -gen_sdc_param_file=$SPYGLASS_HOME/policies/constraints/gensdcParamSdc.txt -tc_enable_param_sdc_flow='yes'" -text "Running Goal Gen_Constraints to generate the chosen constraints." - } -} - - -set_header_state "Generate SDC file" complete -########################################################################## -# Setup Step 3 ................... -# Use the seed file from Step 2 to add generate more constraints -# This step is same as step2, except that SGDC input is different -########################################################################## -set_property -step_header "Choose More Constraints" -hide_label -show_index -enable_next_button -set_prereq_steps {"Before You Start" "Design Clocks" "Choose Constraints" "Generate SDC file"} - -# Set the constraints, so that user can now setup the seed file for a future run -#set_constraints -constraints {"sdc_data"} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Adding_Constraints_Incrementally.htm -# Copy the file generated in the last run, into the run directory so that user can specify the seed, without any -# references to the path -#sgsExec { /bin/cp $WDIR/spyglass_reports/constraints/*.sdc $PRJFILES_DIR/ } -# -register_variable ALL_OLD_FILE_LIST -get_property console.SGDClist -result_variable ALL_OLD_FILE_LIST -set_sgdc_state -disable { get_variable $ALL_OLD_FILE_LIST } - -register_variable Q_SDC_INCR_FILE -register_variable Q_CURRENT_DESIGN -create_form -label "CONFIGURE SDC FILE" { - get_file -type { "SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_INCR_FILE -text "Please select the SDC file generated from the gen_sdc run along with seed sdc file" - set_sgdc_curr_design -text "Enter Current Design" -result_variable Q_CURRENT_DESIGN - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Adding_Constraints_Incrementally.htm - } -sgsIf {$Q_SDC_INCR_FILE == ""} { - set_property -disable_next_button - show_text " You have not selected the SDC file. Please click back and select the SDC file" -} -sgsIf {$Q_CURRENT_DESIGN == ""} { - set_property -disable_next_button - show_text " No current design has been specified or selected. Please click back and select the current design " -} -set_property -enable_next_button -register_variable Q_INCREMENTAL_SGDC "$PRJFILES_DIR/incr.sgdc" -sgsExec { /bin/cp $SPYGLASS_HOME/.Methodology/Constraints/setup_template/constraints.sgdc {get_variable $Q_INCREMENTAL_SGDC} } -sgsExec { echo current_design {get_variable $Q_CURRENT_DESIGN} > {get_variable $Q_INCREMENTAL_SGDC} } -sgsExec { echo sdc_data -file {get_variable $Q_SDC_INCR_FILE} -mode seed >> {get_variable $Q_INCREMENTAL_SGDC} } -set_constraints $Q_INCREMENTAL_SGDC -constraints {current_design sdc_data} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm - -# Edit the side file constaining constraints to be generated -edit_file $WDIR/gensdcConstraintsFile.txt -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Choose_Constraints_to_be_added_incrementally.htm - -set_header_state "Choose More Constraints" complete - -set_property -step_header "Generate SDC incrementally" -hide_label -show_index -enable_next_button -set_prereq_steps {"Before You Start" "Design Clocks" "Choose Constraints" "Generate SDC file" "Choose More Constraints"} -show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Populate_SDC_Template.htm -# Now Run the Generation again. Based on what user chose last time, the option to generate parametrized SDC will be -# jsut inherited from the last run -sgsIf { $Q_SDC_GEN_INCR == 0 || $Q_ASK_FOR_PARAM != $Q_LAST_RUN_WITH_PARAM } { - sgsSet Q_SDC_GEN_INCR 1 - sgsIf { $Q_ASK_FOR_PARAM == 0} { - sgsSet Q_LAST_RUN_WITH_PARAM 0 - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt" -must_run -auto_run -text "Running Goal Gen_Constraints to generate the chosen constraints." - } sgsElse { - sgsSet Q_LAST_RUN_WITH_PARAM 1 - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt -gen_sdc_param_file=$SPYGLASS_HOME/policies/constraints/gensdcParamSdc.txt -tc_enable_param_sdc_flow='yes'" -must_run -auto_run -text "Running Goal Gen_Constraints to generate the chosen constraints." - } -} sgsElse { - sgsIf { $Q_ASK_FOR_PARAM == 0} { - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt" -text "Running Goal Gen_Constraints to generate the chosen constraints." - } sgsElse { - run_setup_template $SPYGLASS_HOME/.Methodology/Constraints/rtl/gen_sdc -additionalCmd "-gen_sdc_constraints_file=$WDIR/gensdcConstraintsFile.txt -gen_sdc_param_file=$SPYGLASS_HOME/policies/constraints/gensdcParamSdc.txt -tc_enable_param_sdc_flow='yes'" -text "Running Goal Gen_Constraints to generate the chosen constraints." - } -} - -register_variable Q_FINAL_SGDC "$PRJFILES_DIR/final.sgdc" -register_variable Q_FINAL_SGDC_EXISTS 0 -register_variable Q_LAST_SETUP 0 -get_property console.SGDClist -result_variable ALL_OLD_FILE_LIST -set_sgdc_state -disable { get_variable $ALL_OLD_FILE_LIST } - -get_property system.fileExists { get_variable $Q_FINAL_SGDC } -result_variable Q_FINAL_SGDC_EXISTS -## Here we ask the user to again create an SGDC file from last runs generated files. This will be the final SGDC file which will be used during actual goal run - -sgsIf { $Q_FINAL_SGDC_EXISTS == 1 } { - create_form -label "CONFIGURE LAST SETUP" { - get_bool -text "Final SGDC File already exists, do you want to re-use it?" -result_variable Q_LAST_SETUP -buttons {"Yes" "No"} -auto_proceed -style radio -geometry { -side bottom -expand 0 } - } -} - -sgsIf {$Q_LAST_SETUP == 0} { - create_form -label "CONFIGURE SDC FILE" { - get_file -type { "SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_INCR_FILE -text "Please select the SDC file generated from the gen_sdc run along with seed sdc file" - set_sgdc_curr_design -text "Enter Current Design" -result_variable Q_CURRENT_DESIGN - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Adding_Constraints_Incrementally.htm - } - sgsIf {$Q_SDC_INCR_FILE == ""} { - set_property -disable_next_button - show_text " You have not selected the SDC file. Please click back and select the SDC file" - } - sgsIf {$Q_CURRENT_DESIGN == ""} { - set_property -disable_next_button - show_text " No current design has been specified or selected. Please click back and select the current design " - } - set_property -enable_next_button - - sgsExec { /bin/cp $SPYGLASS_HOME/.Methodology/Constraints/setup_template/constraints.sgdc {get_variable $Q_FINAL_SGDC} } - sgsExec { echo current_design {get_variable $Q_CURRENT_DESIGN} > {get_variable $Q_FINAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_INCR_FILE} -mode seed >> {get_variable $Q_FINAL_SGDC} } -} -#sgsExec { /bin/cp $WDIR/spyglass_reports/constraints/*.sdc $PRJFILES_DIR/ } -set_header_state "Generate SDC incrementally" complete - -set_property -step_header "Setup Closure" -hide_label -show_index -enable_next_button -set_prereq_steps {"Before You Start" "Design Clocks" "Choose Constraints" "Generate SDC file" "Choose More Constraints" "Generate SDC incrementally" } -show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/gen_sdc_setup_closure.htm -set_constraints $Q_FINAL_SGDC -constraints {current_design sdc_data} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm - -set_header_state "Setup Closure" complete - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv.spq deleted file mode 100644 index ed4e52f..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv.spq +++ /dev/null @@ -1,42 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : sdc_hier_equiv -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -sdc_hier_equiv-mixed -* -Hierarchical Constriants Checking -* -The objective of this step is to ensure that constraints are consistent across block hierarchies. This step will help you to check consistency of Block level constraint with sub-chip/chip level constraints for clocks, I/O delays. E.g. a block may have been synthesized with a lower frequency clock (bigger clock period), but at chip level is being driven by a higher frequency clock (smaller clock period). The block may not function correctly. - -For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ --mixed -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=constraints,const_mgmt - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules IO_Consis04 // Sum of input delay and output delay should not exceed clock period --rules Equiv_SDC_Block // Check Equivalence between Top and Block level SDC --rules Show_Case_Analysis --rules Show_Clock_Propagation -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv_debug_help.htm deleted file mode 100644 index 916032f..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv_debug_help.htm +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - sdc_hier_equiv - - - - - - - - - - - - - -
    - -
    -

    -sdc_hier_equiv -

    -

    -The objective of this step is to ensure that constraints are consistent across block hierarchies. This step will help you to check consistency of Block level constraint with sub-chip/chip level constraints for clocks, I/O delays. E.g. a block may have been synthesized with a lower frequency clock (bigger clock period), but at chip level is being driven by a higher frequency clock (smaller clock period). The block may not function correctly. -

    -

    -This debug of this rule is typically iterative. The user would need to resolve equivalence issues in the following order - set_case_analysis, clocks (primary and generated), I/O Delay, Timing Exceptions and other constraints. Unless you fix set_case_analysis issues, you won't see clock related issues. This order is important to prevent noise from being reported in the equivalence. Consider the following example -

    -
    -SDC1 at Top -
    -
    -create_clock -name c1 -period 10 -source [clk] 
    -set_input_delay 10 -clock [c1] [get_ports {in1}] 
    -
    -
    -SDC2 at Block -
    -
    -create_clock -name c1 -period 11 -source [block/clk] 
    -set_input_delay 10 -clock [c1] [get_ports {block/in1}] 
    -
    -

    -In this example clocks C1 (in top) and C1 (in block) are not equivalent. If clocks are not checked before set_input_delay, the equivalence will unnecessarily report the input delays to be not equivalent. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv_setup.sgs deleted file mode 100644 index 6843945..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_hier_equiv_setup.sgs +++ /dev/null @@ -1,96 +0,0 @@ -########################################################################## -# SpyGlass Constraints Methodology -# -# Version: 1.1 -# -# Revision History: -# Ver Date Comments -# 1.0 18-Jun-2008 Initial version -# 1.1 05-Aug-2010 Proper Setup manager for sdc_equiv -# Copyright Atrenta Inc, 2008. All rights reserved. -########################################################################## -# This is the setup file for SDC Validation -########################################################################## -register_variable Q_ASK_FOR_SGDC 0 -register_variable Q_ASK_FOR_SDC 0 -register_variable Q_FLOW_TYPE 1 -register_variable Q_SDC_FILE_1 -register_variable Q_SDC_FILE_2 -register_variable Q_BLOCK_NAME "" -register_variable Q_CURRENT_DESIGN "" -register_variable Q_GLOBAL_SGDC "$WDIR/constraints.sgdc" - -set_property -show_index -set_property -hide_step_numbering -#This step will show the help -set_property -step_header "Before You Start" -show_progress_bar -hide_quality_bar -show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/hierarchical_check_before_you_start.htm -set_header_state "Before You Start" complete -#In this step we get the type of flow and sdc/sgdc files -set_property -step_header "Configure SpyGlass Design Constraint File" -prereq {"Before You Start"} - -create_form -label "CONFIGURE SGDC FILE" { -# show_text "If you have a SGDC file already added to the setup, then select no for both the options" - get_bool -text "Do you have a SGDC file?" -result_variable Q_ASK_FOR_SGDC -buttons {"Yes" "No"} -auto_proceed -style radio -geometry { -side bottom -expand 0 } - get_bool -text "Do you have a SDC file" -result_variable Q_ASK_FOR_SDC -auto_proceed -style radio -geometry { -side bottom -expand 0 } - show_html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm -} -set_property -disable_next_button -sgsIf { ( $Q_ASK_FOR_SGDC == 1 ) && ( $Q_ASK_FOR_SDC == 1 ) } { - show_text "You have to either specify SGDC file(with sdc_data refering to SDC file) or a SDC file which will enable spyglass to automatically create SGDC file for you. Please click back and select one of them. If you select no for both, setup will create a boilerplate SGDC file for you to populate." -} - -sgsIf { $Q_ASK_FOR_SGDC == 1 } { - set_property -enable_next_button - get_file -type {"SGDC Files" "*.sgdc"} -fileExt { "SGDC Files" "*.sgdc" } -result_variable Q_SGDC_FILE -text "Please select the SGDC file" - sgsExec { /bin/cp {get_variable $Q_SGDC_FILE } { get_variable $Q_GLOBAL_SGDC } } - set_constraints $Q_GLOBAL_SGDC -constraints {current_design sdc_data} -html $SPYGLASS_HOME/.Methodology/Constraints/doc/Configure_SpyGlass_Design_Constraint_File.htm -} sgsElse { - sgsIf {$Q_ASK_FOR_SDC ==1} { - set_property -enable_next_button -# get_bool -text "Choose Yes if you would like to do block top equivalence, and no if you like to do reference implement equivalence for same top" -buttons {"Yes" "No"} -result_variable Q_FLOW_TYPE -auto_proceed -geometry { -side bottom -expand 0 } - - sgsIf {$Q_FLOW_TYPE == 1} { - create_form -label "Configure SDC File" { - get_file -type {"SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE_1 -text "Please select the SDC file(s) for top module" - get_file -type {"SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE_2 -text "Please select the SDC file(s) for block" - set_sgdc_curr_design -text "Enter Top Design" -result_variable Q_CURRENT_DESIGN - get_string -text "Please enter the block name" -result_variable Q_BLOCK_NAME - } - sgsExec { /bin/cp $SPYGLASS_HOME/.Methodology/Constraints/setup_template/constraints.sgdc {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo current_design {get_variable $Q_CURRENT_DESIGN} > {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE_1} -mode flatTop >> {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo block -name {get_variable $Q_BLOCK_NAME} >> {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo current_design {get_variable $Q_BLOCK_NAME} >> {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE_2} -mode block >> {get_variable $Q_GLOBAL_SGDC} } - } sgsElse { - create_form -label "Configure SDC File" { - get_file -type {"SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE_1 -text "Please select the reference SDC file(s)" - get_file -type {"SDC Files" "*.sdc" } -fileExt { "SDC Files" "*.sdc" } -allow_multiple -result_variable Q_SDC_FILE_2 -text "Please select the implement SDC file(s)" - set_sgdc_curr_design -text "Enter Top Design" -result_variable Q_CURRENT_DESIGN - } - sgsExec { /bin/cp $SPYGLASS_HOME/.Methodology/Constraints/setup_template/constraints.sgdc {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo current_design {get_variable $Q_CURRENT_DESIGN} > {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE_1} -mode reference >> {get_variable $Q_GLOBAL_SGDC} } - sgsExec { echo sdc_data -file {get_variable $Q_SDC_FILE_2} -mode implement >> {get_variable $Q_GLOBAL_SGDC} } - } - } sgsElse { - - show_text "Please add a SGDC file or enable previously selected SGDC files" - set_constraints - } -} - -set_header_state "Configure SpyGlass Design Constraint File" complete - - -set_property -step_header "Set Parameters" -prereq {"Configure SpyGlass Design Constraint File"} -set_parameters {equiv_sdc_ambiguous_clock_file equiv_sdc_constraint_file equiv_sdc_tolerance} -set_header_state "Set Parameters" complete - -set_property -step_header "Setup Closure" -prereq {"Before You Start" "Configure SpyGlass Design Constraint File"} -show_text "Please review the SGDC files created in this setup" -set_constraints $Q_GLOBAL_SGDC -show_text "Setup is complete and verified" -set_header_state "Setup Closure" complete - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy.spq deleted file mode 100644 index 2bf0128..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy.spq +++ /dev/null @@ -1,63 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : sdc_redundancy -// Version: 1.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -sdc_redundancy-mixed -* -Check for Redundancy in Constraints -* -The objective of this step is to remove any redundancy in the constraints and perform checks that might facilitate better retargeting. This is an optional step and solely the discretion of the design group. - -For more details about this goal, please refer to the SpyGlass-Constraints-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ --mixed -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=constraints - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules High_Fan03 // High fanout net identified - --rules False_Path04a // False path specification excludes a large number of paths - --rules MCP04a // Multicycle path specification covers a large number of paths - --rules Disable_Timing02 // Clock path blocked by set_disable_timing - --rules SDC_Report01 // Prints table of generated clocks versus source clocks - --rules Clk_Gen21 // set_propagated_clock set on a virtual clock --rules Clk_Uncert07 // No crossing exists between clocks for which inter-clock uncertainty is defined --rules Clk_Trans16 // set_clock_transition set on virtual clocks - --rules False_Path03 // Unnecessary use of through in false-path --rules MCP03 // Unnecessary use of through in multi-cycle path - --rules Inp_Del07a // Input constraints are incorrect relative to a range of clock period --rules Op_Del07a // Output constraints are incorrect relative to a range of clock period --rules Inp_Del09 // Not all pins on the same bus have the same input delay --rules Op_Del09 // Not all pins on the same bus have the same output delay - --rules Show_Case_Analysis --rules Show_Clock_Propagation - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy_debug_help.htm deleted file mode 100644 index f7bb15a..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy_debug_help.htm +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - sdc_redundancy - - - - - - - - - - - - - -
    - -
    -

    -sdc_redundancy -

    -

    -The objective of this step is to remove any redundancy in the constraints and perform checks that might facilitate better retargeting. -

    -

    -Before debugging this goal ensure that goals clock_consis, io_delay, combo_path, and structural_exception have been cleaned. -

    -

    -This is an optional step and solely the discretion of the design group. Rules can be debugged in no particular order. Rule debug is similar to the other goals described in the Methodology. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy_setup.sgs deleted file mode 100644 index 4472bc5..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/constraints/sdc_redundancy_setup.sgs +++ /dev/null @@ -1,16 +0,0 @@ -########################################################################## -# SpyGlass Constraints Methodology -# -# Version: 1.0 -# -# Revision History: -# Ver Date Comments -# 1.0 18-Jun-2008 Initial version -# -# Copyright Atrenta Inc, 2008. All rights reserved. -########################################################################## -# This is the setup file for SDC Validation -########################################################################## - -set_property -step_header "Check for Constraints Redundant Constraints" -set_parameters {clk_gen01_generate_report ignore_io_if_fp inp_percent_max inp_percent_min op_percent_max op_percent_min num_falsepath_max num_mcpath_max tc_ignore_latch_enable tc_ignore_te} diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/.submethodology_help deleted file mode 100644 index 9a54500..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/.submethodology_help +++ /dev/null @@ -1,8 +0,0 @@ -The need for DFT-optimized design: - -Manufacturing test is performed by patterns automatically -generated by ATPG (automatic test pattern generation) tools. -To operate effectively, these tools require that the circuits -be correctly designed for testing. - -This and subsequent steps directly address this issue. diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_abstract.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_abstract.spq deleted file mode 100644 index 5250913..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_abstract.spq +++ /dev/null @@ -1,57 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare Goal File -// -// Goal Name : dft_abstract -// Version : 5.3.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// Added: Short description of rules and parameters -// 5.3.0 20-Jun-2014 Guidware 2.0 Content Consistency -// -// Copyright Synopsys Inc, 2019. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -dft_abstract -* -Generate abstract view of the design. -* - This goal includes rules which will create the abstract view of design: - - For more details about this goal, please refer to the -SpyGlass-DFT-Methodology.pdf file in the doc subdirectory of your -SpyGlass installation -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=dft - - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --block_abstract // Enables abstraction setup rules - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --dftTreatBBoxAsScanwrapped=on // Treat all black-boxes as scan-wrapped - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Soc_00 // This rule creates abstract view of current design - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_abstract_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_abstract_debug_help.htm deleted file mode 100644 index 7ffd75c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_abstract_debug_help.htm +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - dft_abstract - - - - - - - - - - - - - -
    - -
    -

    -dft_abstract -

    -
      -
    • The goal helps in creating an Abstract Model for a Block.
    • -
    • SpyGlass DFT supports a hierarchical SoC methodology in which a simplified abstract model of the block can be created when rule checking the block. The model can then be used in lieu of the original RTL for efficient rule checking at the top/SoC level.
    • -
    • The creation of the abstract model is done by running the dft_abstract goal on the block.
    • -
    • When using abstract models for one or more lower level blocks in a design, the dft_abstract_validate goal verifies that the constraints under which the abstraction was done are met in the current design.
    • -
    • The use of the hierarchical SoC methodology for DFT is described in greater detail in the SpyGlass SoC Methodology User Guide.
    • -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice-01.jpg b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice-01.jpg deleted file mode 100644 index 451825c4bcbb72c070b9069285b353d0fe0420ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19406 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 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice.spq deleted file mode 100644 index 7a2cf32..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice.spq +++ /dev/null @@ -1,200 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare Goal File -// -// Goal Name : dft_best_practice -// Version : 5.5.0 -// -// Revision History: -// Ver Date Comments -// 5.5.0 11-Jun-2015 Initial version -// Added: Coverage_audit -// Added: Info_coverage -// Added: Async_07 -// Added: Async_08 -// Added: Clock_11 -// Added: Clock_11_capture -// Added: Clock_26 -// Added: Scan_22 -// Added: Scan_24 -// Added: Scan_25 -// Added: Scan_26 -// Added: Soc_04 -// Added: TA_09 -// Added: Diagnose_testclock -// Added: Diagnose_testmode -// Added: Info_forcedScan -// Added: Info_inferredNoScan -// Added: Info_noScan -// Added: Info_scanchain -// Added: Info_scanwrap -// Added: Info_testmode_conflict_01 -// Added: Info_uncontrollable -// Added: Info_undetectCause -// Added: Info_unobservable -// Added: Info_untestable -// -// Copyright Synopsys Inc, 2019. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -dft_best_practice -* -Check the design for best practices to find issues that may -decrease ATPG effectiveness -* - ATPG tools typically cannot effectively handle structures such -as asynchronous combinatorial loops, testclock also being used -as data, tristate enables that are not one-hot encoded, flops -having large fanin cones, large timing paths, etc. Due to these -structures, often, there is negative impact on the ATPG tools -in terms of runtime or inadequate coverage achievement. - -Similarly, latches should be made transparent when the capture -mode conditions are simulated with testclocks at their -"return to" state. - - Designers can avoid these pitfalls by discovering such structural -issues at the RTL coding stage. Designers may use this template -to check their designs for best practrices even without testmode -setup knowledge. - - For more details about this goal, please refer to the -SpyGlass-DFT-Methodology.pdf file in the doc subdirectory of your -SpyGlass installation -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=dft - - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Coverage_audit // Analyze coverage for circuit - --rules Info_coverage // Estimate fault and test coverage - --rules Async_02_capture // FF set or reset fanin cone must not contain ffs, latches or bboxes in capture mode - --rules Async_03 // Verifies that all async pins can go to their inactive state at the same time - --rules Async_07 // Asynchronous set/reset sources should be inactive during shift mode --overloadrules Async_07+msgLabel=Async_07_M1+severity=Error - --rules Async_08 // Asynchronous set/reset pins of all the flops should be fully controllable during capture. - --rules Async_11 // Avoid using set/reset signal as data signal in capture mode - --rules BIST_01 // Restrict input cone width for BIST (with appropriate -flopInFaninCount=) - --rules Clock_04 // Do not use clock signals as data signals - --rules Clock_08 // No merging of test clocks - --rules Clock_09 // No logic in common with clock and data - --rules Clock_11 // All clock sources must be testclock controlled in shift mode --overloadrules Clock_11+msgLabel=Clock_11_M1+severity=Error - --rules Clock_11_capture // All clock sources must be testclock controlled in capture mode - --rules Clock_16 // Capture FFs must not have any data paths from FFs capturing on opposite edge of the same clock - --rules Clock_17 // Capture clocks must not be gated by flip-flops capturing on the same clock - --rules Clock_21 // Clocks must not drive flip-flop set or reset pins - --rules Clock_26 // Testclock constraint must not be applied on sensitized fanout of another test clock in Shift or Capture mode - --rules Clock_27 // Detects edge inconsistency between CGC and driven flip-flops - --rules Clock_28 // No combinational reconvergence to flip-flops clock pins - --rules Latch_02 // No combinational loops from transparent latches - --rules Latch_08 // Latches should be transparent in capture mode --overloadrules Latch_08+msgLabel=Latch_08_WRN_01+severity=Error - --rules Latch_10 // All latch enables must be combinationally derived from root level inputs - --rules Scan_07 // No registered (sequentially derived) or combinationally derived internal test_mode signals - --rules Scan_22 // Scan chains must have lockup latches at domain crossing - --rules Scan_24 // All flip-flops should be part of some scan chain - --rules Scan_25 // Scan chains must not contain invertors in scan path - --rules Scan_26 // Scan chains must contain lockup latch at chain end - --rules Soc_04 // Show design state for a given tag - --rules TA_09 // Suggests test points to improve controllability and observability - --rules Topology_01 // Combinational loops are not allowed - --rules Topology_02 // No asynchronous port to port paths - --rules Topology_03 // Avoid sequentially derived asynchronous signals with common clock - --rules Topology_05 // Wire-OR and Wire-AND are not allowed - --rules Topology_10 // Avoid long logic paths (with appropriate -pathDepth=) - --rules Topology_13 // No combinational reconvergence to flip-flops asynchronous pins - --rules Tristate_06 // Tristate bus enables must be fully decoded so that exactly one driver is active at any time - --rules Tristate_07_shift // All Inout ports are inputs only in shift mode - --rules Diagnose_testclock // Display instances that blocks testclock propagation - --rules Diagnose_testmode // Display instances that blocks testmode propagation - --rules Info_forcedScan // Displays all registers and flip-flops specified as 'scan' - --rules Info_inferredNoScan // Displays all flip-flops which have been inferred as no_scan - --rules Info_noFault // Reports all the instances which are specified as no fault or inferred as no fault - --rules Info_noScan // Displays all registers and flip-flops specified as 'no_scan' - --rules Info_scanchain // Displays all properly stitched scanchains - --rules Info_scanwrap // Report scanwrap related information - --rules Info_synthRedundant // Display pins that are likely to be absent in an optimized netlist - --rules Info_testclock // Display test clock propagation - --rules Info_testmode // Display testmode simulation results - --rules Info_testmode_conflict_01 // Display conflict in user specified testmode with respect to simulation result of fanin cone - --rules Info_uncontrollable // Shows nets with imperfect controllability - --rules Info_undetectCause // Display undetectable fault information - --rules Info_unobservable // Shows all unobservable pins - --rules Info_untestable // Display untestable faults caused by test mode - --rules Info_unused // Display faults having no effect on system function - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice_debug_help.htm deleted file mode 100644 index d4bd55c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_best_practice_debug_help.htm +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - dft_best_practice - - - - - - - - - - - - - -
    - -
    -

    -dft_best_practice -

    -

    -Review the violation messages, have better understanding about the issue by bringing up the schematic if appropriate and fix the design issue. Note the fix for these issues may be very design-specific. -

    -

    -Make Latches Transparent (One of the objectives of this goal) -

    -
      -
    • Latch_08 violations (see the description of Latch_08 in the SpyGlass DFT User Guide section on Latch Rules) detect latches that are not transparent in capture mode. Non-transparent latches can be diagnosed with Info_testmode for capture.
    • -
    • Select a Latch_08 violation and display in the IS.
    • -
    • If the latch enable has a non-X but an inactive value then either a test_mode constraint should have the complementary value, or some device in the fan-in to this latch enable should produce the complementary value.
    • -
    • If the latch enable has no value, then either the logic feeding this enable should be modified so that the enable is forced active during capture or new test_mode constraints must be defined.
    • -

      -
      -
      - -

      -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_bist_ready.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_bist_ready.spq deleted file mode 100644 index 94c9a82..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_bist_ready.spq +++ /dev/null @@ -1,39 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare Goal File -// -// dft_bist_ready -// Version: 5.4.0 -// -// Revision History: -// Ver Date Comments -// 5.4.0 12-Nov-2014 Version as in 5.4.0 -// -// Copyright Synopsys Inc, 2019. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -dft_bist_ready -* -Make design amicable to bist and test-compression -* - This "bist ready" step provides value not only for designs with Logic BIST -(Built-In-Self-Test) but also for designs with ATPG Compression, as the rules -report on various forms of X-propagation which is detrimental to both. - - This "bist ready" step is designed to ensure that design is aligned with -bist and test-compression requirements. SpyGlass DFT does not do the bist or -compression insertion but rather deals with X-propagation and large fanin cone. - - For more details about this goal, please refer to the -SpyGlass-DFT-Methodology.pdf file in the doc subdirectory of your -SpyGlass installation -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - --policies=dft --rules BIST_01 --rules BIST_02 --rules BIST_03 --rules BIST_04 --rules BIST_05 - --rules Info_testmode --rules Info_testclock diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_best_practice.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_best_practice.spq deleted file mode 100644 index efc2b1b..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_best_practice.spq +++ /dev/null @@ -1,151 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare Goal File -// -// Goal Name : dft_dsm_best_practice -// Version : 5.5.0 -// -// Revision History: -// Ver Date Comments -// 5.5.0 11-Jun-2015 Initial version -// Added: Atspeed_07 -// Added: Atspeed_11 (and moved to top) -// Added: Atspeed_14 -// Added: Atspeed_22 -// Added: Atspeed_30 -// Added: CG_01_shift -// Added: CG_01_capture -// Added: CG_01_atspeed -// Added: CG_02_capture -// Added: CG_02_atspeed -// Added: CG_03_capture -// Added: CG_03_atspeed -// Added: CG_07 -// Added: CG_generateReport -// -// Copyright Synopsys Inc, 2019. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -dft_dsm_best_practice -* -High stuck at coverage is a necessary but not sufficient -condition to achieving high transition coverage. This -template contains rules that address the special needs of -such topics as d-pin controllability, test clock domains -and path issues. -* - DFT for stuck at testing involved a scan and a low speed -capture clock. The purpose of scan was to create a state -that both exercised and observed specific faults. -Transition testing requires two vectors and two clocks -fired at system speed. The first clock pulse causes a -state transition which imposes additional DFT requirements -beyond stuck at DFT. The second clock pulse must be from -the same clock source as the first pulse which also imposes -special DFT considerations. - - Since transition tests are performed with high speed clocks, -false paths and multicycle paths must be taken into account -since various faults along such paths cannot be transition -tested. - - This template contains rules that address these issues, -rules that help diagnose transition rule violations. - - For more details about this goal, please refer to the -SpyGlass-DFT-DSM-Methodology.pdf file in the doc -subdirectory of your SpyGlass installation -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=dft_dsm,dft - - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Info_transitionCoverage_audit // Analyze transition coverage for circuit - --rules Info_transitionCoverage // Evaluate transition coverage for design - --rules Atspeed_11 // All clock sources must be controlled by an atspeed clock --overloadrules Atspeed_11+severity=Error - --rules Atspeed_03 // Async logic in the functional mode should not interact synchronously in the capture at-speed mode - --rules Atspeed_04 // Synchronously interacting logic in the functional mode should not be clocked by asynchronous clocks in the capture at-speed mod - --rules Atspeed_05 // All false paths or multicycle paths in the functional mode should be blocked in the capture at-speed mode - --rules Atspeed_06 // All paths crossing asynchronous clock domains should be blocked - --rules Atspeed_07 // Clock gating for each domain in the capture at-speed mode should be done using a separate signal - --rules Atspeed_09 // Data pin of scan flip-flop must be fully controllable - --rules Atspeed_14 // Test clocks must not be used as data signals - --rules Atspeed_19 // Latches should be transparent in capture/captureatspeed mode or when testclocks/atspeed clocks are off - --rules Atspeed_20 // Asynchronous set/reset pins of all the flops should be fully controllable during capture atspeed mode - --rules Atspeed_22 // No merging of atspeed clocks in capture atspeed mode - --rules Atspeed_25 // No combinational reconvergence to flip-flops asynchronous pins - --rules Atspeed_30 // No combinational reconvergence to flip-flops clock pins - --rules CG_01_shift // Clock gating cell enables should be enabled in shift mode --overloadrules CG_01_shift+severity=Error - --rules CG_01_capture // Clock gating cell enables should be controllable to on state in capture mode --overloadrules CG_01_capture+severity=Error - --rules CG_01_atspeed // Clock gating cell enables should be controllable to on state in atspeed mode --overloadrules CG_01_atspeed+severity=Error - --rules CG_02_capture // CGC enables should be controllable to off state in capture mode - --rules CG_02_atspeed // CGC enables should be controllable to off state in atspeed mode - --rules CG_03_capture // System enable pins on clock gating cell should be observable in capture mode - --rules CG_03_atspeed // System enable pins on clock gating cell should be observable in atspeed mode - --rules CG_07 // Detects edge inconsistency between CGC and driven flip-flops - --rules CG_generateReport // Generate a text report with details of all clock gating cells in design - --rules Diagnose_02 // At-speed paths must not be blocked by testmode signals - --rules Diagnose_03 // Faults blocked by false paths or multi-cycle paths - --rules Diagnose_04 // Faults in paths crossing clock domains cannot be tested - --rules Info_atSpeedClock // Displays at-speed test clock propagation - --rules Info_noAtspeed // Displays all registers and flip-flops specified as 'no_atspeed' - --rules Info_synthRedundant // Display pins that are likely to be absent in an optimized netlist - --rules Info_testclock // Display test clock propagation - --rules Info_testmode // Display testmode simulation results - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_best_practice_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_best_practice_debug_help.htm deleted file mode 100644 index b81e58e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_best_practice_debug_help.htm +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - dft_dsm_best_practice - - - - - - - - - - - - - -
    - -
    -

    -dft_dsm_best_practice -

    -
      -
    • Select an Atspeed_09 violation in IS.
    • -
        -
      • If the cause is a combinational loop, then review in the schematic viewer if a test_mode is missing or has been improperly declared. Otherwise, the design may have to be modified to allow use of a test_mode to break the loop.
      • -
      • If the case is a multiple driven net/floating net, review if a test_mode is missing or has been improperly declared.
      • -
      • If the case is a black box, then create a scan wrapper for the
        module.
      • -
      • If the case is a non-lockup/Non-transparent latch, then review if a test_mode is missing or has been improperly declared.
      • -
      • If the case is a non-scan flip-flop then reconsider the reasons for this to not be scannable. Create a "scan" constraint for this flip-flop to determine the coverage impact.
      • -
      • If the case is a constant value net has been reached, then review if a test_mode is missing or has been improperly declared.
      • -
      -
    • Select an Atspeed_19 violation in the IS. Display the enable fan-in cone back to primary inputs to see if or how this logic should be enabled in captureATspeed mode.
    • -
    • Select an Atspeed_03 violation in the IS. Display the clock fan-in cone back to primary inputs for both flip-flops. If the root level system clocks that feed these flip-flops are synchronous, then add -domain <xx> to each of the clock constraints. If the clocks are not synchronous, then redesign the switching logic or the test_mode constraints so that the clocks are not combined in captureATspeed mode.
    • -
    • Select an Atspeed_04 violation in the IS. Display the clock fan-in cone back to primary inputs for both flip-flops. If the root level clocks that feed these flip-flops are declared asynchronous but shouldn't be, then remove or change -domain <xx> to each of the clock constraints so the clocks are in different domains. If the clocks are synchronous, then redesign the switching logic so that the clocks are combined in captureATspeed mode.
    • -
    • Diagnose_04 can be used to display faults that cannot be tested but use caution since numbers of faults may be involved.
    • -
    • Select an Atspeed_05 violation in IS mode to see paths that declared as multi-cycle or false-path in the SDC file or in SGDC file. If any path should be considered for transition testing, then remove that path from the constraint file.
    • -
    • Select an Atspeed_06 violation in IS mode to see paths that cross clock domains.
    • -
        -
      • If the domains should be considered as synchronous, then add domain <xx> to the atspeed clocks
      • -
      • If the domains are asynchronous, then consider blocking the path with a design change.
      • -
      -
    • Diagnose_03 may be used to view faults that are involved in false path or multi-cycle paths.
    • -
    -

    -Estimate Coverage -

    -
      -
    • Info_transitionCoverage may be used to estimate the transition fault coverage if ATPG were run based on the current circuit and SGDC constraints.
    • -
    • If the coverage estimate reported falls below expectation, run Info_transitionCoverage_audit to find the major causes of low atspeed test (transition delay) coverage.
    • -
    -

    -Improve Coverage -

    -

    -Info_transitionCoverage_audit issues a report of the major causes of low atspeed test (transition delay) coverage. The rule is not intended to diagnose these causes. Instead, the at-speed rules corresponding to a particular cause should be used for diagnosis. -

    -
    -Method -
    -

    -For each cause, the rule will find the cause and list the coverage that would be obtained if that cause were fixed. After the incremental coverage improvement for each cause is computed, the new total coverage is listed. This total coverage will be an increasing value that approaches 100%. -

    -

    -The following categories are the primary reason for coverage data not reaching 100%: -

    -
      -
    • Non scan flip-flops
    • -

      -Assume all flip-flops are scannable. Force all flip-flops, except flip-flops declared with no_scan constraint, to be considered scannable. -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      NOTE: Flip-flops that are declared as no_scan, will not be forced scannable.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      NOTE: Flip-flops that are inferred as no_scan, will be forced as scannable.
      -
    • At speed domains of scan flip-flops
    • -

      -Assume all scannable flip-flops are at-speed clocked. Force all scannable flip-flops that are not clocked by an -atspeed testclock, to be launch points for transition testing. -

      -
    • Uncontrollable data of scan flip-flops
    • -

      -Assume the d-pins of scannable flip-flops are fully controllable. -

      -
    • Feedback flip-flops
    • -

      -Assume all scannable q to d Feedback flip-flops can launch both transitions. -

      -
    • Combinational reconvergence
    • -

      -Assume all combinational reconvergences are broken. -

      -
    • Uncontrollable logic due to hanging terminals
    • -

      -Assume all hanging terminals are fully controllable. -

      -
    • Tristate enable used for capture
    • -

      -Assume enable pin of tristate as a capture node for all domains. -

      -
    • Untestable faults on SCANENABLE/SET/RESET
    • -

      -Assume both transitions can be detected on SE/SET/RESET control logics. -

      -
    • PI and PO used for launch and capture
    • -

      -Assume PIs and POs are used for Launch and Capture nodes, respectively. -

      -
    • Clock domain crossing
    • -

      -Assume all scannable flip-flops are in the same domain. -

      -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_random_resistance.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_random_resistance.spq deleted file mode 100644 index d693ab4..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_dsm_random_resistance.spq +++ /dev/null @@ -1,58 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare Goal File -// -// Goal Name : dft_dsm_random_resistance -// Version : 5.5.0 -// -// Revision History: -// Ver Date Comments -// 5.5.0 11-Jun-2015 Initial version -// -// Copyright Synopsys Inc, 2019. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -dft_dsm_random_resistance -* -Reduce the random resistance of the design -* - For both stuck-at and transition faults, the presence of hard to detect -faults has a substantial impact on overall ATPG performance. The ability -to measure the density of hard to detect faults in a design early at the -RTL stage is valuable. It gives the opportunity to make design changes -to address the issue, and enables to quickly measure the impact of the -changes. One of the best predictors of the presence of hard to detect -faults is the random resistance of a design. This template contains -rules that address the special needs of such topics - - For more details about this goal, please refer to the -SpyGlass-DFT-DSM-Methodology.pdf file in the doc -subdirectory of your SpyGlass installation -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=dft_dsm,dft - - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Info_random_resistance // Does the random resistive analysis for the circuit - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-08.jpg b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-08.jpg deleted file mode 100644 index f4247cebaf6757bd9a790489ffb622aa4a613d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73154 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≤YITXmNF-0FwP}uLa{kzBBXH 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

    g}=bzE9(;X5+EWF|YdhJ;W{6)2@Hb{F$?D5b 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 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-10.jpg b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-10.jpg deleted file mode 100644 index 9d24b913ca924617b9cb0f40c6ecbfff171732a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27013 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

    m$V@$1|^8Jh*n-_WbJ= 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 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-12.jpg b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-12.jpg deleted file mode 100644 index e96042e50f260ef6402e8cbf6b32d3f5691058c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53185 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
    - -
    -

    -dft_scan_ready -

    -
      -
    • Run the dft_scan_ready goal.
    • -
    • A flip-flop is considered as scannable if during scanshift:
    • -
        -
      • Its clock can be controlled by a testclock (checked by DFT rule Clock_11) and
      • -
      • Its set and reset pins (if any) are forced inactive (checked by DFT rule Async_07)
      • -
      -
    • These two rules may be violated either because test logic has not yet been designed in or because the constraint file has missing or incorrect entries. If there are violations of either rule, then diagnostic rules Diagnose_testclock and Diagnose_testmode can be used to diagnose the cause.
    • -
    • Any non-scannable flip-flop will reduce the coverage for logic that only feeds that flip-flop as well as logic that is only driven by that flip-flop.
    • -
    • The dft_scan_ready goal also checks that testmode signals that only control asynchronous set or reset pins should be unrestricted during capture. (checked by DFT rule Async_08)
    • -
        -
      • Restricting such a dedicated signal would result in the set/reset nets not being tested thoroughly.
      • -
      • Such a violation can be fixed by adding the -scanshift argument to the test_mode constraint to indicate that the constraint only applies during shifting and is a don't care otherwise.
      • -
      -
    -

    -Clock_11 Debug -

    -

    -Clock_11 violations detect clock sources (see the description of Clock_11 in the SpyGlass DFT User Guide section on Clock Rules) that are not controlled by test clocks. Each violation indicates the number of flip-flops clocked by this source. Selecting any violation will highlight the source on the schematic. Following is an example shown in the Incremental Schematic. -

    -

    -

    -

    - -

    -

    -The testclock propagation through the 'Show Case Analysis' mechanism appears automatically in the schematic. -

    -

    -You will realize that the testclock propagation stops somewhere in the design: -

    -

    -

    -

    - -

    -

    -In this example it is clear that the other input of the AND gate should be held at '1' to enable the clock to pass through. The designer applies a 'test_mode' constraint to rectify the situation. -

    -

    -Async_07 Debug -

    -

    -Async_07 violations detect async sources (see the description of Async_07 in the SpyGlass DFT User Guide section on Asynchronous Rules) that are not rendered inactive during scanshift. -

    -
      -
    • Select a violation and display in the MS.
    • -
    • The testmode value propagation appears automatically on the schematic.
    • -
    • Visually find out the root cause why the async source of the flip-flops is held at 'X' or at the active value. This will lead to the conclusion about how possibly a test_mode constraint can be applied to rectify the Async_07 violation.
    • -
    -

    -In the example below, the schematic shows no constraint was applied on the rst input pin of the design: -

    -

    -

    -

    - -

    -

    -Viewing the estimate of fault coverage of the design -

    -

    -The rule Info_coverage estimates the fault/test coverage of the design. The generated reports help in understanding the test health of the design. The following fault browser helps understand the relative testability scores achieved in the design. -

    -

    -

    -

    - -

    -

    -The following summary reported generated at this stage helps understand the fault status. -

    -

    -

    -

    - -

    -

    -One may also, optionally, generate a detailed fault report, similar to ATPG, as follows. This report generation is under the control of a switch. Enable this by specifying the following parameter: -

    -

    -set_parameter dftGenerateStuckAtFaultReport all -

    -

    -

    -

    - -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready_setup.sgs deleted file mode 100644 index 3e533ac..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready_setup.sgs +++ /dev/null @@ -1,5 +0,0 @@ -set_property -step_header "Testclocks for scan" -set_constraints -constraints {clock test_mode} -html $SPYGLASS_HOME/.Methodology/DFT/doc/DFT3121.htm -##### -set_property -step_header "Asynchronous sets and resets for scan" -set_constraints -constraints {test_mode} -html $SPYGLASS_HOME/.Methodology/DFT/doc/DFT3122.htm diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/.submethodology_help deleted file mode 100644 index 8217a1b..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/.submethodology_help +++ /dev/null @@ -1,23 +0,0 @@ -lint_rtl - This goal checks; - - Basic connectivity issues in the design, such as floating input, width mismatch, etc. - - Simulation issues such as incomplete sensitivity list, incorrect use of blocking/non-blocking - assignments, potential functional errors possible simulation hang cases, and simulation race cases - - Structural issues in the design that affect the post-implementation functionality or - performance of the design. Examples include multiple drivers, high fan-in mux, and - synchronous/asynchronous use of resets. - - Synthesizable constructs in the design and code which can cause RTL vs. gate simulation mismatch. - - Ideally this goal should be run before checking in new RTL changes. - -design_audit (Optional) - This goal provides design audit information. The aim of this goal is to gather statistics - of the design. These may include information on the Top level design, Black/Gray Boxes, - Parameters/Generics etc, and information on the design size, control signals etc. - -clock_reset_integrity -The aim of this goal is to check the integrity of clock and reset architecture in the design. -Such as the following; - * Possible race condition between clock and enable of FFs - * Complex Issues like Gated Clock or deep ripple clock divider - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/design_audit.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/design_audit.spq deleted file mode 100644 index d6a57dd..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/design_audit.spq +++ /dev/null @@ -1,126 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : design_audit -// Version: 2.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.1.0 31-May-2013 5.1 Removed Following Rules: -// Audit2Stats2 -// Added following Rules: -// Audit2Stats3 -// 2.0.0 30-May-2014 5.3 Guidware 2.0 Content Consistency -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -lint/design_audit -* -Reports informational data related to design - -* -This goal helps in profiling the block, as well as gathering some useful -statistics for the design. It may not be needed when RTL is still being actively -coded. However, when RTL is somewhat complete, this information is useful to get -an overall profile of the design. -In later stages of RTL development, a sudden change in design characteristics -(say, number of FFs) may point to unintended or non-optimal bug-fix. This -goal should be run once per week. - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=Audits,area,erc,clock-reset,spyglass,starc,lint,morelint - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --sel_case_analysis_mode="direct" - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Audit2Stats7a // Gives the libraries that are declared but not used in the design unit --overloadrules Audit2Stats7a+severity=Info - --rules Audit2ID // Gathers stats for design. Do not select this rule directly --overloadrules Audit2ID+severity=Data - --rules Audit2Stats // Evaluates the number of input, output and inout ports in a module --overloadrules Audit2Stats+severity=Data - --rules Audit2Stats3 // Evaluates the sum total of each of one-dimensional and multi-dimensionalbuses used in a design on rtl level --overloadrules Audit2Stats3+severity=Data - --rules Audit2Stats4 // Dumps the generic used per entity. --overloadrules Audit2Stats4+severity=Info - --rules Audit2Stats7b // Gives all the libraries declared for entity and architecture. --overloadrules Audit2Stats7b+severity=Info - --rules Audit2Stats8 // Evaluates the number of times each blackbox is instantiated. --overloadrules Audit2Stats8+severity=Info - --rules Audit4ID // Gathers stats for design. Do not select this rule directly --overloadrules Audit4ID+severity=Data - --rules DirectiveCheck-ML // Rule dumps information about ifdef, undef and include directives used in design --overloadrules DirectiveCheck-ML+severity=Data - --rules PragmaComments-ML // Pragma Comments have been detected. --overloadrules PragmaComments-ML+severity=Data - --rules STARC-1.6.6.3 // Do not directly instantiate cells in the design --overloadrules STARC-1.6.6.3+severity=Info - --rules Audit2Stats5 // Dumps the data regarding line of codes, lines of comment, per architecture. --overloadrules Audit2Stats5+severity=Data - --rules Audit2Stats6 // Dumps the data regarding line of codes, lines of comment, for entire design --overloadrules Audit2Stats6+severity=Data - --rules Audit2FileNameDump // Dumps the information regarding which module is defined in which file. --overloadrules Audit2FileNameDump+severity=Data - --rules ReportPortInfo-ML // Generate a report of all ports of top level block and black-box instances. --overloadrules ReportPortInfo-ML+severity=Data - --rules RegInputOutput-ML // Module output and input port should be registered --overloadrules RegInputOutput-ML+severity=Data --chkTopModule="yes" // Rule checkign will be done only for top module - --rules W438 // Tri-state used below top-level of design --overloadrules W438+severity=Info - --rules GateCount // Reports Gate count and Instance Count for the complete hierarchy of design --overloadrules GateCount+severity=Data --rptallmodulegatecount="yes" // This parameter helps user to dump gate count of all modules in vdb file. - --rules Audit4Dump // Dumps the information regarding number of flip-flops, latches and tristates(evaluated in rule Audit4count) on stdout. --overloadrules Audit4Dump+severity=Data - --rules AuditReportCell // Dumps the information regarding library cells - --rules listTristateBuses // List all tristate busses used in the design. - --rules Clock_info01 // Reports likely clock signals - --rules Reset_info01 // Reports likely asynchronous and synchronous preset and clear signals - --rules Setup_clock01 // Generates information needed for Clock Setup - --rules Audit4Count // Evaluates the number of Flip-flops, latches and tristates in a moduleThis is done on flat level netlist --overloadrules Audit4Count+severity=Data diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/design_audit_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/design_audit_debug_help.htm deleted file mode 100644 index d6817e4..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/design_audit_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - block_profile - - - - - - - - - - - - - -
    - -
    -

    -block_profile -

    -

    -This goal helps in profiling the block, as well as gathering some useful statistics for the design. It may not be needed when RTL is still being actively coded. However, when RTL is somewhat complete, this information is useful to get an overall profile of the design. In later stages of RTL development, a sudden change in design characteristics (say, number of FFs) may point to unintended or non-optimal bug-fix. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_abstract.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_abstract.spq deleted file mode 100644 index a1f85c7..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_abstract.spq +++ /dev/null @@ -1,46 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : lint_abstract -// Version: 2.0.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// 2.0.0 30-May-2014 5.3 Guidware 2.0 Content Consistency -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -lint_abstract -* -Generates relevant base policy(lint) constraints for block abstraction -* -This goal helps in generating an abstracted model of a block. The abstracted -model will be used during SoC-level validation and verification. - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=lint - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --block_abstract --rules LINT_abstract01 // Generates relevant base policy constraints for block abstraction diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_abstract_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_abstract_debug_help.htm deleted file mode 100644 index d5377b8..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_abstract_debug_help.htm +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - lint_abstract - - - - - - - - - - - - - -
    - -
    -

    -lint_abstract -

    -

    -The aim of this goal is to generate abstract model of a block. This goal reports an informational message by rule LINT_abstract01, which points to the SGDC file containing abstract model. - -

    -

    -Use generated abstract models of blocks at SoC level for lint verification and abstraction validation checks. You can provide the generated abstract model just with the RTL interface of blocks, without full definitions of blocks. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_functional_rtl.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_functional_rtl.spq deleted file mode 100644 index c33863c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_functional_rtl.spq +++ /dev/null @@ -1,81 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : lint_functional_rtl -// Version: 5.6.1 -// -// Revision History: -// Ver Date Comments -// 1.0.0 26-Nov-2014 Initial version -// 5.4.1 04-Mar-2015 Made following changes -// Removed arg: +syntharg -ignoreHanginFF -// Added use_inferred_clocks & use_inferred_resets -// -// 5.5.0 16-Apr-2015 Added Av_signed_unsigned_mismatch and Av_width_mismatch_expr -// -// 5.6.0 18-Nov-2015 5.6 Added Following Rules -// Rule Name Policy GW Type -// =============================================== -// Av_width_mismatch_expr02 auto-verify MUST -// Av_width_mismatch_expr03 auto-verify MUST -// Av_dontcare_mismatch auto-verify MUST -// Av_case_default_missing auto-verify MUST -// Av_case_default_redundant auto-verify MUST -// -// 5.6.1 29-Mar-2015 Removed use_inferred_resets & use_inferred_clocks -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -lint_functional_rtl mixed -* -Helps identify width related issues in assignment, case expression-select, instance -port connection and function arguments using functional analysis -* -This goal uses functional analysis to identify width related issues in the design. -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ --policies=auto-verify - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ --nocheckoverflow='yes' // Width will be calculated as per LRM rather best fit. - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ --rule=Av_Info_Case_Analysis // Highlights case-analysis settings - --rule=Av_width_mismatch_assign // LHS width is less than RHS width of assignment (Truncation) - --rule=Av_width_mismatch_case // Case expression width does not match case select expression width - --rule=Av_width_mismatch_port // Instance port connection has different width compared to the port definition - --rule=Av_width_mismatch_function // Bit-width of function call arguments must match bit-width of the corresponding function definition arguments - -// Do not mix signed & unsigned variables/constants in expressions, assignment statements or in comparisons --rule=Av_signed_unsigned_mismatch - -//Bit-width of operands of a logical operator must match --rule=Av_width_mismatch_expr - --rule=Av_case_default_missing // A case statement(or selected signal assignment) does not have a default clause - --rule=Av_width_mismatch_expr03 // Unequal length in arithmetic comparison operator - --rule=Av_width_mismatch_expr02 // Unequal length operands in bit wise logical/arithmetic/relational operator - --rule=Av_dontcare_mismatch // Use of don't-care except in case labels may lead to simulation/synthesis mismatch - --rules Av_case_default_redundant // A case statement marked full_case or a priority/unique case statement have a default clause. - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl.spq deleted file mode 100644 index ea8301f..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl.spq +++ /dev/null @@ -1,611 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : lint_rtl -// Version: 5.6.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.1.0 31-May-2013 5.1 Severity of following rules changed to Data: -// PragmaComments-ML -// ReportPortInfo-ML -// RegInputOutput-ML -// 2.0.0 30-May-2014 5.3 Guidware 2.0 Content Consistency -// 2.1.0 30-Sep-2014 5.4 Removed rule ArrayEnumIndex -// 5.4.1 26-Feb-2015 5.4.1 Added enable_fast_traversal switch for better performance of synthesis based rules. -// -// 5.6.0 18-Nov-2015 5.6 Added Following Rules -// Rule Name Policy GW Type -// =============================================== -// STARC05-2.10.1.4a starc2005 MUST -// STARC05-2.10.1.4b starc2005 MUST -// W156 lint MUST -// STARC05-2.3.3.1 starc2005 MUST -// W415a lint OPTIONAL -// W287b lint OPTIONAL -// W224 lint OPTIONAL -// W287a lint OPTIONAL -// W528 lint OPTIONAL -// mixedsenselist lint OPTIONAL -// W339a lint OPTIONAL -// STARC05-2.10.3.2a starc2005 OPTIONAL -// Removed Following Rules -// Rule Name Policy GW Type -// =============================================== -// DuplicateCaseLabel-ML morelint MUST -// STARC05-2.3.4.2 starc2005 OPTIONAL -// -// 2018.09 10-Sep-2018 2018.09 Added Following Rules -// Rule Name Policy GW Type -// =============================================== -// NoFeedThrus-ML morelint MUST -// STARC05-2.8.3.3 starc2005 MUST -// UndrivenOutTermNLoaded-ML morelint MUST -// UndrivenOutPort-ML morelint MUST -// W146 lint MUST -// W188 lint MUST -// W401 lint MUST -// W402b lint MUST -// W468 lint MUST -// W527 lint MUST -// W576 lint MUST -// CheckShiftOperator-ML morelint OPTIONAL -// HangingInstOutput-ML morelint OPTIONAL -// ResetFlop-ML morelint OPTIONAL -// SelfDeterminedExpr-ML morelint OPTIONAL -// UndrivenNet-ML morelint OPTIONAL -// UnrecSynthDir-ML morelint OPTIONAL -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -lint_rtl -* -Checks the design for basic Connectivity issues -Checks the design for basic Simulation issues -Checks the design for recommended design practices and Structural issues -Checks the design for basic Synthesis issues - -* -This goal checks basic connectivity issues in the design, such as floating -input, width mismatch, etc. These checks should be run after every change in -RTL code prior to code check-in. -This goal checks simulation issues in the design, such as - - incomplete sensitivity list - - incorrect use of blocking/ non-blocking assignments - - potential functional errors - - possible simulation hang cases, and - - simulation race cases -These checks should be run, and reported messages should be reviewed prior to -all simulation runs. -This goal identifies the structural issues in the design that affect the -post-implementation functionality or performance of the design. Examples include -multiple drivers, high fan-in mux, and synchronous/asynchronous use of resets. -These checks should be run once every week and before handoff to implementation. -This goal reports unsynthesizable constructs in the design and code which can -cause RTL vs. gate simulation mismatch. These checks should be run twice a week, -and before handoff to synthesis team. - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=openmore,starc,starc2005,erc,simulation,lint,latch,spyglass,morelint,timing - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ --enable_fast_traversal - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --strict=W342,W343 // Rules will do strict checking --new_flow_width='yes' // Enable all nex fixes made in width rules --nocheckoverflow='yes' // Width will be calculated as per LRM rather best fit. --report_inferred_cell="yes" // if parameter set to "yes" then rules will flag for only inferred flops and not for instantiated flops. - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - -//-rules AllocExpr // Allocator expression may not be synthesizable - --rules badimplicitSM1 // Unsynthesizable modeling style for a sequential logic. Clock and reset cannot be inferred - --rules badimplicitSM2 // Unsynthesizable implicit sequential logic: states can only be updated on same clock phase - --rules badimplicitSM4 // Unsynthesizable implicit sequential logic: event control expression may not have more than one edge - --rules BlockHeader // PORT/GENERIC used in block statement header may be unsynthesizable - --rules bothedges // Both edges of the same variable are not allowed in the event control list - -//-rules DisconnSpec // Disconnect specification is ignored by synthesis tools. - -//-rules ForLoopWait // WAIT statements used inside a FOR-loop may be unsynthesizable - -//-rules IncompleteType // Incomplete type declaration may not be synthesizable - -//-rules Info_Case_Analysis // Highlights case-analysis settings - -//-rules IntGeneric // Non-integer type used in the declaration of a generic may be unsynthesizable - -//-rules LinkagePort // Linkage port may not be synthesizable - -//-rules LoopBound // For loop range bounds should either be locally static or globally static -//-rules NoTimeOut // Timeout expression in wait statement may not be synthesizable - -//-rules PortType // Port of unconstrained type detected. This may not be synthesizable - -//-rules PreDefAttr // Use of certain pre-defined attributes may not be synthesizable - -//-rules ResFunction // Resolution functions may not be synthesizable - --rules STARC05-2.1.6.5 // For an array index x and z should not be used --overloadrules STARC05-2.1.6.5+severity=Warning - --rules STARC05-2.3.1.2c // Do not use unsynthesizable User-Defined Primitives (UDPs). --overloadrules STARC05-2.3.1.2c+severity=Error - -//-rules UserDefAttr // Use of user-defined attribute may not be synthesizable - -//-rules W182g // tri0 declarations may not be synthesizable - -//-rules W182h // tri1 declarations are not synthesizable - -//-rules W182k // trireg declarations are not synthesizable - -//-rules W182n // Switches such as cmos, pmos & nmos are not synthesizable - --rules W421 // Always block/process does not have event control --overloadrules W421+severity=Error - --rules W442a // Reset sequence may not be synthesizable. First statement in block mustbe an if statement - --rules W442b // Reset sequence may not be synthesizable. The reset condition is too complex - --rules W442c // Reset sequence may not be synthesizable. Reset can only be modified by! or ~ in the if condition - --rules W442f // The specified reset sequence may not be synthesizable. Only binary operators that canbe used in 'if' are '==' and '!=' - -//-rules SignedUnsignedExpr-ML // Do not mix signed & unsigned variables/constants in expressions, assignment statements or in comparisons. - -//-rules sim_race01 // Assignment and use of signal in same simulation cycle (Read-Write Race) -//-overloadrules sim_race01+severity=Warning - --rules sim_race02 // Multiple assignments to a signal --overloadrules sim_race02+severity=Warning - --rules W110a // Use same port index bounds in component instantiation and entity declaration - -//-rules W239 // Hierarchical references may not be synthesizable - --rules W416 // Range of return type and return value of a function should be same --overloadrules W416+severity=Error - -//-rules BothPhase // Process has a clock driving it on both edges - may not be synthesizable - --rules CheckDelayTimescale-ML // Delay used without timescale compiler directive - -//-rules ClockStyle // A clocking style is used which may not be synthesizable - -//-rules DiffTimescaleUsed-ML // Design should not have different timescales for different modules - -//-rules MultipleWait // Multiple wait statements having same clock expression may not be synthesizableby some synthesis tools - -//-rules NoSigCaseX-ML // Design should not use signals in casex and casez constructs - --rules PragmaComments-ML // Pragma Comments have been detected. --overloadrules PragmaComments-ML+severity=Data - -//-rules SetBeforeRead-ML // Variable may not be set before being read - -//-rules SigVarInit // Initial values of signals and variables will be ignored by some synthesis tools - -//-rules STARC05-2.1.2.5v // Do not use attribute enum_encoding - -//-rules STARC05-2.1.8.6 // Global signals must not be read in a subprogram description - --rules STARC05-2.10.2.3 // Global signals must not be read in a subprogram description --overloadrules STARC05-2.10.2.3+severity=Warning - -//-rules STARC05-2.10.3.7 // Global signals must not be read in a subprogram description - --rules STARC05-2.11.3.1 // Global signals must not be read in a subprogram description --overloadrules STARC05-2.11.3.1+severity=Warning - -//-rules STARC05-2.3.1.4 // Paths other than flip-flop data paths must not have delays - --rules STARC05-2.3.1.5b // Delay values must be non-negative. --overloadrules STARC05-2.3.1.5b+severity=Error - -//-rules STARC05-2.3.2.4 // Variables if used, must be assigned to a signal before the end of the process - -//-rules SynthIfStmt // IF-statement may not be synthesizable - -//-rules W127 // Delay values should not contain X(unknown value) or Z(high-impedance state) - -//-rules W129 // Variable delay values should be avoided - -//-rules W182c // time declarations are not synthesizable - -//-rules W189 // Nested Synopsys translate_off comments - -//-rules W190 // Task or procedure declared but not used - -//-rules W213 // PLI Task/Functions are not synthesizable - --rules W215 // Inappropriate bit select for integer or time variable - --rules W216 // Inappropriate range select for integer or time variable - -//-rules W226 // Case select expression is constant - -//-rules W245 // Probably intended "or", not "|" or "||" in sensitivity list - -//-rules W250 // The disable statement may not be synthesizable - -//-rules W253 // Data event has an edge - -//-rules W254 // Reference event does not have an edge - -//-rules W280 // A delay has been specified in a non-blocking assignment - --rules W289 // A real operand is being used in a logical comparison --overloadrules W289+severity=Error - --rules W292 // Comparison of Real operands is not recommended - --rules W293 // A function returns a real value, which is unsynthesizable --overloadrules W293+severity=Error - -//-rules W294 // Real variables are unsynthesizable - --rules W317 // Assignment to a supply net - --rules W352 // The condition inside a "for" statement is constant --overloadrules W352+severity=Error - --rules W398 // A case choice is covered more than once in a case statement --overloadrules W398+severity=Error - --rules W422 // Unsynthesizable process: event control has more than one clock --overloadrules W422+severity=Error - --rules W424 // Function or subprogram sets a global signal/variable - -//-rules W425 // Function or sub-program uses a global signal/variable - --rules W426 // Task sets a global variable - -//-rules W427 // Task uses a global variable - -//-rules W430 // The "initial" statement is not synthesizable - -//-rules W443 // 'X' value used -//-overloadrules W443+severity=Warning - -//-rules W444 // 'Z' or '?' value used -//-overloadrules W444+severity=Warning - -//-rules W464 // Unrecognized synthesis directive used in the design - --rules W467 // Use of don't-care except in case labels may lead to simulation/synthesis mismatch - --rules W480 // Loop index is not of type integer - --rules W481a // Possibly unsynthesizable loop: step variable differs from variable used in condition - --rules W481b // Unsynthesizable loop: step variable differs from variable used in initialization - --rules W496a // Comparison to a tristate in a condition expression is treated as false in synthesis. - --rules W496b // Comparison to a tristate in a case statement is treated as false in synthesis. - --rules W71 // A case statement(or selected signal assignment) does not have a default orOTHERS clause --overloadrules W71+severity=Error - -//-rules WhileInSubProg // While statements used inside subprograms may be unsynthesizable - -//-rules ArrayIndex // Bus signals are declared with low-order bit first --checkalldimension="yes" // Rule will check all dimensions of signal packed and unpacked. - -//-rules DisallowCaseX-ML // Design should not use casex constructs - -//-rules DisallowCaseZ-ML // Design should not use casez constructs - -//-rules DisallowXInCaseZ-ML // casez statement should not use "x" - --rules NoAssignX-ML // RHS of the assignment contains 'X' - --rules NoXInCase-ML // Case expression and case choices should not have 'X' - -//-rules ParamOverrideMismatch-ML // Mismatch in the number of parameter over-rides and number of parameters in theinstantiated module -//-overloadrules ParamOverrideMismatch-ML+severity=Warning - --rules ParamWidthMismatch-ML // Parameter width does not match with the value assigned --overloadrules ParamWidthMismatch-ML+severity=Warning - --rules ReportPortInfo-ML // Generate a report of all ports of top level block and black-box instances. --overloadrules ReportPortInfo-ML+severity=Data - --rules STARC05-2.1.3.1 // Bit-width of function arguments must match bit-width of the correspondingfunction inputs. --overloadrules STARC05-2.1.3.1+severity=Warning - --rules STARC05-2.1.5.3 // Conditional expressions should evaluate to a scalar. --overloadrules STARC05-2.1.5.3+severity=Warning - --rules STARC05-2.2.3.3 // Do not assign over the same signal in an always construct for sequential circuits --overloadrules STARC05-2.2.3.3+severity=Warning - --rules STARC05-2.3.1.6 // Same logic level of reset signal must be checked as specified in the sensitivitylist of the always block. --overloadrules STARC05-2.3.1.6+severity=Warning - -//-rules STARC05-2.3.2.2 // Do not use blocking and non-blocking assignments together in same alwaysblock. - --rules W110 // An instance port connection has incompatible width compared to the port definition --overloadrules W110+severity=Error - -//-rules W111 // Not all elements of an array are read - --rules W116 // Unequal length operands in bit wise logical/arithmetic/relational operator - --rules W122 // A signal is read inside a combinational process but is not included in the sensitivity list --overloadrules W122+severity=Error - --rules W123 // A signal or variable has been read but is not set --overloadrules W123+severity=Error --ignoreModuleInstance="yes" // Ignore signals which are unset but used in port mapping. - -//-rules W159 // Condition contains a constant expression - -//-rules W164a // LHS width is less than RHS width of assignment (Truncation) -//-overloadrules W164a+severity=Warning - -//-rules W164b // LHS width is greater than RHS width of assignment (Extension) - --rules W19 // Truncation of extra bits --overloadrules W19+severity=Error - -//-rules W210 // Number of connections made to an instance does not match number of ports on master -//-overloadrules W210+severity=Warning - --rules W218 // Multi-bit signal used in sensitivity list --overloadrules W218+severity=Error - --rules W240 // An input has been declared but is not read --checkfullbus="yes" --checkfullrecord="yes" - -//-rules W241 // Output is never set - --rules W263 // A case expression width does not match case select expression width - --rules W337 // Illegal value (e.g. real) being used or X, Z or ? being used inappropriately asa case item - -//-rules W342 // Constant will be X-extended - -//-rules W343 // Constant will be Z-extended - --rules W362 // Unequal length in arithmetic comparison operator - -//-rules W423 // A port with a range is redeclared with a different range - -//-rules W446 // Output port signal is being read (within the module) -//-overloadrules W446+severity=Error - -//-rules W456a // A signal is included in the sensitivity list of a combinational process blockbut none of its bits is read in that block - --rules W486 // Shift overflow - some bits may be lost - -//-rules W491 // Constant will be ?-extended - --rules W499 // Not all bits of a function are set in the function - --rules W502 // A variable in sensitivity list is modified inside the always block - --rules W505 // Value assigned inconsistently - may not be synthesizable --overloadrules W505+severity=Error - -//-rules W551 // A case statement marked full_case or a priority/unique case statement have a default clause. - --rules W66 // Unsynthesizable repeat loop because repeat expression is not constant --overloadrules W66+severity=Error - --rules InferLatch // Latch inferred --overloadrules InferLatch+severity=Error - --rules RegInputOutput-ML // Module output and input port should be registered --overloadrules RegInputOutput-ML+severity=Data --chkTopModule="yes" // Rule checkign will be done only for top module - --rules STARC05-2.3.4.1v // Flip-flop output must not have initial value in signal/variable declaration --overloadrules STARC05-2.3.4.1v+severity=Warning - -//-rules STARC05-2.3.6.1 // Do not mix descriptions of flip-flops with asynchronous reset and flip-flopswithout asynchronous reset in the same process/always block - --rules STARC05-2.5.1.7 // Tri State output should not be used in the conditional expression of if statement --overloadrules STARC05-2.5.1.7+severity=Warning - --rules STARC05-2.5.1.9 // Tri State output should not be entered in the selection expression of casex and casez statement --overloadrules STARC05-2.5.1.9+severity=Warning - --rules STARC05-2.10.3.2a // Bit-width of operands of a logical operator must match. - -//-rules UseMuxBusses // Tristate nets detected -//-overloadrules UseMuxBusses+severity=Warning - --rules W336 // Blocking assignment should not be used in a sequential block (may lead to shoot through) --overloadrules W336+severity=Error - --rules W414 // Use of non-blocking assignment in a combinational block --overloadrules W414+severity=Error --treat_latch_as_combinational="yes" // Always block inferring latch will be treated as combinational block. - -//-rules W428 // Task called in a combinational block - --rules W450L // Multi-bit expression used as latch enable may not be synthesizable --overloadrules W450L+severity=Warning - --rules UndrivenInTerm-ML // Undriven but loaded input terminal of an instance detected --overloadrules UndrivenInTerm-ML+severity=Error --checkInHierarchy="yes" // Rule will dive down the hierarchy to look for driver --checkRTLCInst='yes' // Rule will report violation for RTLC instances - -//-rules UndrivenNUnloaded-ML // Undriven and Unloaded nets/terminals detected in the design - -//-rules UnloadedInPort-ML // Unloaded but driven input port of a module detected - -//-rules LogicDepth // Logic depth exceeds specified number of levels (using parameter delaymax/delaymax_memtoflop/delaymax_floptomem/delaymax_memtomem/delaymax_err/delaymax_inputtoflop/delaymax_floptoflop/delaymax_inputtooutput/delaymax_floptooutput) -//-delaymax=500 - --rules BufClock // Clock buffer detected --overloadrules BufClock+severity=Warning - --rules checkPinConnectedToSupply // IO-ports or Output ports of cells/modules may not be connected to supply signals. --overloadrules checkPinConnectedToSupply+severity=Error - -//-rules ClockEdges // Do not use both levels of the clock to drive latches - --rules CombLoop // Combinational loop exists --overloadrules CombLoop+msgLabel=CombLoop+severity=Error --enableE2Q="yes" // Report comb loop from Enable to Q pin of flop. - -//-rules DisabledAnd // And/Nand gate is disabled - -//-rules DisabledOr // Or/Nor gate is disabled - --rules FlopClockConstant // Flip-flop clock pin driven by a constant value --overloadrules FlopClockConstant+msgLabel=FlopClockConstant+severity=Error - -//-rules FlopDataConstant // Flip-flop data pin driven by a constant value - --rules FlopEConst // Flip-flop enable pin is permanently disabled or enabled - --rules FlopSRConst // Flip-flop set or reset pin is permanently enabled - -//-rules IntReset // Internally generated reset detected -//-overloadrules IntReset+msgLabel=IntReset+severity=Warning - -//-rules LatchDataConstant // Latch data pin driven by a constant value - -//-rules LatchEnableConstant // Latch enable pin driven by a constant value - --rules LatchFeedback // There should not be a combinational feedback path from a latch output to data or enable of the same latch. --overloadrules LatchFeedback+severity=Error - -//-rules LatchGatedClock // Do not use gated/internally generated clock to drive latches -//-overloadrules LatchGatedClock+msgLabel=LatchGatedClock+severity=Warning - -//-rules LatchReset // Reset pin should not be used both synchronously and asynchronously - -//-rules LogNMux // LogN mux with large number of inputs detected - potential performance problem -//-logmux_max=5 - -//-rules MuxSelConst // Mux select is constant. - -//-rules RegOutputs // Some outputs from a top module are not registered -//-overloadrules RegOutputs+severity=Warning --reportundrivenout='no' // Rule will not report violation for undriven outputs. - -//-rules SetResetConverge-ML // Fanin cone of Set and Reset pin of a flop/latch converge - --rules STARC05-1.2.1.2 // Do not create a RS latch using primitive cells such as AND, OR --overloadrules STARC05-1.2.1.2+severity=Error - --rules STARC05-1.3.1.3 // Asynchronous reset/preset signals must not be used as non-reset/preset orsynchronous reset/preset signals --overloadrules STARC05-1.3.1.3+severity=Warning - -//-rules STARC05-1.3.1.7 // A flip-flop must not have both asynchronous set and asynchronous reset - --rules STARC05-1.4.3.4 // Flip-flop clock signals must not be used as non-clock signals --overloadrules STARC05-1.4.3.4+severity=Warning - --rules STARC05-2.1.4.5 // Flip-flop clock signals must not be used as non-clock signals --overloadrules STARC05-2.1.4.5+severity=Warning - --rules STARC05-2.4.1.5 // Do not use two level latches in the same phase clock --overloadrules STARC05-2.4.1.5+severity=Error - --rules STARC05-2.5.1.2 // Logic must not exist in tristate enable conditions - -//-rules STARC05-2.5.1.4 // A tristate bus should not be driven by more than the specified number of drivers -//-overloadrules STARC05-2.5.1.4+severity=Warning - -//-rules TristateConst // Tristate gate enable is constant - -//-rules W391 // Design has a clock driving it on both edges - --rules W392 // Do not use a reset or set with both positive and negative polarity within the samedesign unit - --rules W415 // Variable/signal that does not infer a tristate and has multiple simultaneous drivers --overloadrules W415+msgLabel=W415+severity=Error --assume_driver_load="yes" // Rule will report violation for unloaded signals/variables. --checkconstassign="yes" // Rule will report violation for constant assignments - -//-rules W422L // Multiple clocks in the event control list of latch is not allowed -//-overloadrules W422L+msgLabel=W422L+severity=Warning - --rules STARC05-2.10.1.4a // Signals must not be compared with X or Z. - --rules STARC05-2.10.1.4b // Signals must not be compared with values containing X or Z. - --rules W156 // Do not connect buses in reverse order - --rules STARC05-2.3.3.1 // Do not use multiple clock signals in a single process block - --rules W415a // Signal may be multiply assigned (beside initialization) in the same scope. - --rules W287b // Output port of an instance is not connected - --rules W224 // Multi-bit expression found when one-bit expression expected - --rules W287a // Some inputs to instance are not driven or unconnected - --rules W528 // A signal or variable is set but never read - --rules mixedsenselist // Mixed conditions in sensitivity list may not be synthesizable - --rules W339a // Case equal operator (===) and case not equal (!==) operators may not be synthesizable - --rules NoFeedThrus-ML // Block should not contain feed-throughs - --rules STARC05-2.8.3.3 // Do not use //synopsys full_case pragma when all conditions are not described as case clause or the default clause is missing - --rules UndrivenOutTermNLoaded-ML // Undriven output pins connected to instance input - --rules UndrivenOutPort-ML // Undriven but loaded output port of a module detected - --rules W146 // Use named-association rather than positional association to connect to an instance - --rules W188 // Do not write to input ports - --rules W401 // Clock signal is not an input to the design unit - --rules W402b // Asynchronous set/reset signal is not an input to the module - --rules W468 // Index variable is too short - --rules W527 // Dangling else in sequence of if conditions. Make sure nesting is correct - --rules W576 // Logical operation on a vector - -// -rules CheckShiftOperator-ML // Logical and arithmetic shift operation detection on signed and unsigned operand(s) or expression(s) respectively - -// -rules HangingInstOutput-ML // Net connected to output port of instance is unconnected - -// -rules ResetFlop-ML // All the flip-flops should have either asynchronous set/reset or synchronous set/reset - -// -rules SelfDeterminedExpr-ML // Self-determined expression present in the design - -// -rules UndrivenNet-ML // Undriven but loaded net is detected in the design - -// -rules UnrecSynthDir-ML // Synthesis directive is not recognized - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl_custom.tcl b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl_custom.tcl deleted file mode 100644 index 0d4d338..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl_custom.tcl +++ /dev/null @@ -1,114 +0,0 @@ -current_goal lint/lint_rtl -scenario optional -set_goal_option addrules AllocExpr -set_goal_option addrules DisconnSpec -set_goal_option addrules ForLoopWait -set_goal_option addrules IncompleteType -set_goal_option addrules Info_Case_Analysis -set_goal_option addrules IntGeneric -set_goal_option addrules LinkagePort -set_goal_option addrules LoopBound -set_goal_option addrules NoTimeOut -set_goal_option addrules PortType -set_goal_option addrules PreDefAttr -set_goal_option addrules ResFunction -set_goal_option addrules UserDefAttr -set_goal_option addrules W182g -set_goal_option addrules W182h -set_goal_option addrules W182k -set_goal_option addrules W182n -set_goal_option addrules SignedUnsignedExpr-ML -set_goal_option addrules sim_race01 -set_goal_option overloadrules sim_race01+severity=Warning -set_goal_option addrules W239 -set_goal_option addrules BothPhase -set_goal_option addrules ClockStyle -set_goal_option addrules DiffTimescaleUsed-ML -set_goal_option addrules MultipleWait -set_goal_option addrules NoSigCaseX-ML -set_goal_option addrules SetBeforeRead-ML -set_goal_option addrules SigVarInit -set_goal_option addrules STARC05-2.1.2.5v -set_goal_option addrules STARC05-2.1.8.6 -set_goal_option addrules STARC05-2.10.3.7 -set_goal_option addrules STARC05-2.3.1.4 -set_goal_option addrules STARC05-2.3.2.4 -set_goal_option addrules STARC05-2.3.4.2 -set_goal_option addrules SynthIfStmt -set_goal_option addrules W127 -set_goal_option addrules W129 -set_goal_option addrules W182c -set_goal_option addrules W189 -set_goal_option addrules W190 -set_goal_option addrules W213 -set_goal_option addrules W226 -set_goal_option addrules W245 -set_goal_option addrules W250 -set_goal_option addrules W253 -set_goal_option addrules W254 -set_goal_option addrules W280 -set_goal_option addrules W294 -set_goal_option addrules W425 -set_goal_option addrules W427 -set_goal_option addrules W430 -set_goal_option addrules W443 -set_goal_option overloadrules W443+severity=Warning -set_goal_option addrules W444 -set_goal_option overloadrules W444+severity=Warning -set_goal_option addrules W464 -set_goal_option addrules WhileInSubProg -set_goal_option addrules ArrayIndex -set_goal_option addrules DisallowCaseX-ML -set_goal_option addrules DisallowCaseZ-ML -set_goal_option addrules DisallowXInCaseZ-ML -set_goal_option addrules ParamOverrideMismatch-ML -set_goal_option overloadrules ParamOverrideMismatch-ML+severity=Warning -set_goal_option addrules STARC05-2.3.2.2 -set_goal_option addrules W111 -set_goal_option addrules W159 -set_goal_option addrules W164a -set_goal_option overloadrules W164a+severity=Warning -set_goal_option addrules W164b -set_goal_option addrules W210 -set_goal_option overloadrules W210+severity=Warning -set_goal_option addrules W241 -set_goal_option addrules W342 -set_goal_option addrules W343 -set_goal_option addrules W423 -set_goal_option addrules W446 -set_goal_option overloadrules W446+severity=Error -set_goal_option addrules W456a -set_goal_option addrules W491 -set_goal_option addrules W551 -set_goal_option addrules STARC05-2.3.6.1 -set_goal_option addrules UseMuxBusses -set_goal_option overloadrules UseMuxBusses+severity=Warning -set_goal_option addrules W428 -set_goal_option addrules UndrivenNUnloaded-ML -set_goal_option addrules UnloadedInPort-ML -set_goal_option addrules LogicDepth -set_parameter delaymax 500 -set_goal_option addrules ClockEdges -set_goal_option addrules DisabledAnd -set_goal_option addrules DisabledOr -set_goal_option addrules FlopDataConstant -set_goal_option addrules IntReset -set_goal_option overloadrules IntReset+msgLabel=IntReset+severity=Warning -set_goal_option addrules LatchDataConstant -set_goal_option addrules LatchEnableConstant -set_goal_option addrules LatchGatedClock -set_goal_option overloadrules LatchGatedClock+msgLabel=LatchGatedClock+severity=Warning -set_goal_option addrules LatchReset -set_goal_option addrules LogNMux -set_parameter logmux_max 5 -set_goal_option addrules MuxSelConst -set_goal_option addrules RegOutputs -set_goal_option overloadrules RegOutputs+severity=Warning -set_goal_option addrules SetResetConverge-ML -set_goal_option addrules STARC05-1.3.1.7 -set_goal_option addrules STARC05-2.5.1.4 -set_goal_option overloadrules STARC05-2.5.1.4+severity=Warning -set_goal_option addrules TristateConst -set_goal_option addrules W391 -set_goal_option addrules W422L -set_goal_option overloadrules W422L+msgLabel=W422L+severity=Warning -current_goal none diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl_debug_help.htm deleted file mode 100644 index c25be63..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_rtl_debug_help.htm +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - lint_rtl - - - - - - - - - - - - - -
    - -
    -

    -lint_rtl -

    -

    -This goal checks basic RTL lint issues in the design, such as floating input, width mismatch, etc. These checks should be run after every change in RTL code prior to code check-in. -

    -

    -To debug these issues, cross probe the violation to the HDL code. The code fragment will have to be analyzed to figure out the root cause of width mismatch issues. For issues relating to floating inputs will have to be debugged in the schematic. On the schematic, the user would be directed to the floating input, and in some cases fanin/fanout analysis would have to done to find out the actual source of problem. If there are violations reported by the Info_Case_Analysis rule, review the set_case_analysis settings as these may impact the lint checks. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_turbo_rtl.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_turbo_rtl.spq deleted file mode 100644 index 439471c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_turbo_rtl.spq +++ /dev/null @@ -1,566 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : lint_turbo_rtl -// Version: 5.6.1 -// -// Revision History: -// Ver Date SG Ver Comments -// 5.4.1 26-Feb-2015 5.4.1 Initial version with following incremental changes over lint_rtl Goal: -// Added enable_fast_traversal switch for better performance of synthesis based rules. -// Added 4 new formal rules. -// SpyGlass Turbo Mode enabled. -// Goal will run under smart_rule_execution mode. -// -// 5.5.0 16-April-2015 5.5.0 Added Av_signed_unsigned_mismatch -// -// 5.6.0 18-Nov-2015 5.6 Added Following Rules -// Rule Name Policy GW Type -// =============================================== -// STARC05-2.10.1.4a starc2005 MUST -// STARC05-2.10.1.4b starc2005 MUST -// W156 lint MUST -// STARC05-2.3.3.1 starc2005 MUST -// W415a lint OPTIONAL -// W287b lint OPTIONAL -// W224 lint OPTIONAL -// W287a lint OPTIONAL -// W528 lint OPTIONAL -// mixedsenselist lint OPTIONAL -// W339a lint OPTIONAL -// STARC05-2.10.3.2a starc2005 OPTIONAL -// Av_width_mismatch_expr02 auto-verify MUST -// Av_width_mismatch_expr03 auto-verify MUST -// Av_dontcare_mismatch auto-verify MUST -// Av_case_default_missing auto-verify MUST -// Av_case_default_redundant auto-verify OPTIONAL -// Removed Following Rules -// Rule Name Policy GW Type -// =============================================== -// DuplicateCaseLabel-ML morelint MUST -// STARC05-2.3.4.2 starc2005 OPTIONAL -// -// 5.6.1 29-March-2016 5.6.1 Removed use_inferred_resets and use_inferred_clocks -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -lint_turbo_rtl -* -Checks the design for basic Connectivity issues -Checks the design for basic Simulation issues -Checks the design for recommended design practices and Structural issues -Checks the design for basic Synthesis issues - -* -This goal checks basic connectivity issues in the design, such as floating -input, width mismatch, etc. These checks should be run after every change in -RTL code prior to code check-in. -This goal checks simulation issues in the design, such as - - incomplete sensitivity list - - incorrect use of blocking/ non-blocking assignments - - potential functional errors - - possible simulation hang cases, and - - simulation race cases -These checks should be run, and reported messages should be reviewed prior to -all simulation runs. -This goal identifies the structural issues in the design that affect the -post-implementation functionality or performance of the design. Examples include -multiple drivers, high fan-in mux, and synchronous/asynchronous use of resets. -These checks should be run once every week and before handoff to implementation. -This goal reports unsynthesizable constructs in the design and code which can -cause RTL vs. gate simulation mismatch. These checks should be run twice a week, -and before handoff to synthesis team. - -Few rules in this goals perform formal analysis before reporting violations. Also -goal run under turbo mode for better and optimized analysis. - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=openmore,starc,starc2005,erc,simulation,lint,latch,spyglass,morelint,timing,auto-verify - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ --enable_fast_traversal --turbo --smart_rule_execution - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --strict=W342,W343 // Rules will do strict checking --new_flow_width='yes' // Enable all nex fixes made in width rules --nocheckoverflow='yes' // Width will be calculated as per LRM rather best fit. --report_inferred_cell="yes" // if parameter set to "yes" then rules will flag for only inferred flops and not for instantiated flops. - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - -//-rules AllocExpr // Allocator expression may not be synthesizable - --rules badimplicitSM1 // Unsynthesizable modeling style for a sequential logic. Clock and reset cannot be inferred - --rules badimplicitSM2 // Unsynthesizable implicit sequential logic: states can only be updated on same clock phase - --rules badimplicitSM4 // Unsynthesizable implicit sequential logic: event control expression may not have more than one edge - --rules BlockHeader // PORT/GENERIC used in block statement header may be unsynthesizable - --rules bothedges // Both edges of the same variable are not allowed in the event control list - -//-rules DisconnSpec // Disconnect specification is ignored by synthesis tools. - -//-rules ForLoopWait // WAIT statements used inside a FOR-loop may be unsynthesizable - -//-rules IncompleteType // Incomplete type declaration may not be synthesizable - -//-rules Info_Case_Analysis // Highlights case-analysis settings - -//-rules IntGeneric // Non-integer type used in the declaration of a generic may be unsynthesizable - -//-rules LinkagePort // Linkage port may not be synthesizable - -//-rules LoopBound // For loop range bounds should either be locally static or globally static -//-rules NoTimeOut // Timeout expression in wait statement may not be synthesizable - -//-rules PortType // Port of unconstrained type detected. This may not be synthesizable - -//-rules PreDefAttr // Use of certain pre-defined attributes may not be synthesizable - -//-rules ResFunction // Resolution functions may not be synthesizable - --rules STARC05-2.1.6.5 // For an array index x and z should not be used --overloadrules STARC05-2.1.6.5+severity=Warning - --rules STARC05-2.3.1.2c // Do not use unsynthesizable User-Defined Primitives (UDPs). --overloadrules STARC05-2.3.1.2c+severity=Error - -//-rules UserDefAttr // Use of user-defined attribute may not be synthesizable - -//-rules W182g // tri0 declarations may not be synthesizable - -//-rules W182h // tri1 declarations are not synthesizable - -//-rules W182k // trireg declarations are not synthesizable - -//-rules W182n // Switches such as cmos, pmos & nmos are not synthesizable - --rules W421 // Always block/process does not have event control --overloadrules W421+severity=Error - --rules W442a // Reset sequence may not be synthesizable. First statement in block mustbe an if statement - --rules W442b // Reset sequence may not be synthesizable. The reset condition is too complex - --rules W442c // Reset sequence may not be synthesizable. Reset can only be modified by! or ~ in the if condition - --rules W442f // The specified reset sequence may not be synthesizable. Only binary operators that canbe used in 'if' are '==' and '!=' - -//-rules SignedUnsignedExpr-ML // Do not mix signed & unsigned variables/constants in expressions, assignment statements or in comparisons. - -//-rules sim_race01 // Assignment and use of signal in same simulation cycle (Read-Write Race) -//-overloadrules sim_race01+severity=Warning - --rules sim_race02 // Multiple assignments to a signal --overloadrules sim_race02+severity=Warning - --rules W110a // Use same port index bounds in component instantiation and entity declaration - -//-rules W239 // Hierarchical references may not be synthesizable - --rules W416 // Range of return type and return value of a function should be same --overloadrules W416+severity=Error - -//-rules BothPhase // Process has a clock driving it on both edges - may not be synthesizable - --rules CheckDelayTimescale-ML // Delay used without timescale compiler directive - -//-rules ClockStyle // A clocking style is used which may not be synthesizable - -//-rules DiffTimescaleUsed-ML // Design should not have different timescales for different modules - -//-rules MultipleWait // Multiple wait statements having same clock expression may not be synthesizableby some synthesis tools - -//-rules NoSigCaseX-ML // Design should not use signals in casex and casez constructs - --rules PragmaComments-ML // Pragma Comments have been detected. --overloadrules PragmaComments-ML+severity=Data - -//-rules SetBeforeRead-ML // Variable may not be set before being read - -//-rules SigVarInit // Initial values of signals and variables will be ignored by some synthesis tools - -//-rules STARC05-2.1.2.5v // Do not use attribute enum_encoding - -//-rules STARC05-2.1.8.6 // Global signals must not be read in a subprogram description - --rules STARC05-2.10.2.3 // Global signals must not be read in a subprogram description --overloadrules STARC05-2.10.2.3+severity=Warning - -//-rules STARC05-2.10.3.7 // Global signals must not be read in a subprogram description - --rules STARC05-2.11.3.1 // Global signals must not be read in a subprogram description --overloadrules STARC05-2.11.3.1+severity=Warning - -//-rules STARC05-2.3.1.4 // Paths other than flip-flop data paths must not have delays - --rules STARC05-2.3.1.5b // Delay values must be non-negative. --overloadrules STARC05-2.3.1.5b+severity=Error - -//-rules STARC05-2.3.2.4 // Variables if used, must be assigned to a signal before the end of the process - -//-rules SynthIfStmt // IF-statement may not be synthesizable - -//-rules W127 // Delay values should not contain X(unknown value) or Z(high-impedance state) - -//-rules W129 // Variable delay values should be avoided - -//-rules W182c // time declarations are not synthesizable - -//-rules W189 // Nested Synopsys translate_off comments - -//-rules W190 // Task or procedure declared but not used - -//-rules W213 // PLI Task/Functions are not synthesizable - --rules W215 // Inappropriate bit select for integer or time variable - --rules W216 // Inappropriate range select for integer or time variable - -//-rules W226 // Case select expression is constant - -//-rules W245 // Probably intended "or", not "|" or "||" in sensitivity list - -//-rules W250 // The disable statement may not be synthesizable - -//-rules W253 // Data event has an edge - -//-rules W254 // Reference event does not have an edge - -//-rules W280 // A delay has been specified in a non-blocking assignment - --rules W289 // A real operand is being used in a logical comparison --overloadrules W289+severity=Error - --rules W292 // Comparison of Real operands is not recommended - --rules W293 // A function returns a real value, which is unsynthesizable --overloadrules W293+severity=Error - -//-rules W294 // Real variables are unsynthesizable - --rules W317 // Assignment to a supply net - --rules W352 // The condition inside a "for" statement is constant --overloadrules W352+severity=Error - --rules W398 // A case choice is covered more than once in a case statement --overloadrules W398+severity=Error - --rules W422 // Unsynthesizable process: event control has more than one clock --overloadrules W422+severity=Error - --rules W424 // Function or subprogram sets a global signal/variable - -//-rules W425 // Function or sub-program uses a global signal/variable - --rules W426 // Task sets a global variable - -//-rules W427 // Task uses a global variable - -//-rules W430 // The "initial" statement is not synthesizable - -//-rules W443 // 'X' value used -//-overloadrules W443+severity=Warning - -//-rules W444 // 'Z' or '?' value used -//-overloadrules W444+severity=Warning - -//-rules W464 // Unrecognized synthesis directive used in the design - --rules W467 // Use of don't-care except in case labels may lead to simulation/synthesis mismatch - --rules W480 // Loop index is not of type integer - --rules W481a // Possibly unsynthesizable loop: step variable differs from variable used in condition - --rules W481b // Unsynthesizable loop: step variable differs from variable used in initialization - --rules W496a // Comparison to a tristate in a condition expression is treated as false in synthesis. - --rules W496b // Comparison to a tristate in a case statement is treated as false in synthesis. - --rules W71 // A case statement(or selected signal assignment) does not have a default orOTHERS clause --overloadrules W71+severity=Error - -//-rules WhileInSubProg // While statements used inside subprograms may be unsynthesizable - -//-rules ArrayIndex // Bus signals are declared with low-order bit first --checkalldimension="yes" // Rule will check all dimensions of signal packed and unpacked. - -//-rules DisallowCaseX-ML // Design should not use casex constructs - -//-rules DisallowCaseZ-ML // Design should not use casez constructs - -//-rules DisallowXInCaseZ-ML // casez statement should not use "x" - --rules NoAssignX-ML // RHS of the assignment contains 'X' - --rules NoXInCase-ML // Case expression and case choices should not have 'X' - -//-rules ParamOverrideMismatch-ML // Mismatch in the number of parameter over-rides and number of parameters in theinstantiated module -//-overloadrules ParamOverrideMismatch-ML+severity=Warning - --rules ParamWidthMismatch-ML // Parameter width does not match with the value assigned --overloadrules ParamWidthMismatch-ML+severity=Warning - --rules ReportPortInfo-ML // Generate a report of all ports of top level block and black-box instances. --overloadrules ReportPortInfo-ML+severity=Data - --rules STARC05-2.1.3.1 // Bit-width of function arguments must match bit-width of the correspondingfunction inputs. --overloadrules STARC05-2.1.3.1+severity=Warning - --rules STARC05-2.1.5.3 // Conditional expressions should evaluate to a scalar. --overloadrules STARC05-2.1.5.3+severity=Warning - --rules STARC05-2.2.3.3 // Do not assign over the same signal in an always construct for sequential circuits --overloadrules STARC05-2.2.3.3+severity=Warning - --rules STARC05-2.3.1.6 // Same logic level of reset signal must be checked as specified in the sensitivitylist of the always block. --overloadrules STARC05-2.3.1.6+severity=Warning - -//-rules STARC05-2.3.2.2 // Do not use blocking and non-blocking assignments together in same alwaysblock. - --rules W110 // An instance port connection has incompatible width compared to the port definition --overloadrules W110+severity=Error - -//-rules W111 // Not all elements of an array are read - --rules W116 // Unequal length operands in bit wise logical/arithmetic/relational operator - --rules W122 // A signal is read inside a combinational process but is not included in the sensitivity list --overloadrules W122+severity=Error - --rules W123 // A signal or variable has been read but is not set --overloadrules W123+severity=Error --ignoreModuleInstance="yes" // Ignore signals which are unset but used in port mapping. - -//-rules W159 // Condition contains a constant expression - -//-rules W164a // LHS width is less than RHS width of assignment (Truncation) -//-overloadrules W164a+severity=Warning - -//-rules W164b // LHS width is greater than RHS width of assignment (Extension) - --rules W19 // Truncation of extra bits --overloadrules W19+severity=Error - -//-rules W210 // Number of connections made to an instance does not match number of ports on master -//-overloadrules W210+severity=Warning - --rules W218 // Multi-bit signal used in sensitivity list --overloadrules W218+severity=Error - --rules W240 // An input has been declared but is not read --checkfullbus="yes" --checkfullrecord="yes" - -//-rules W241 // Output is never set - --rules W263 // A case expression width does not match case select expression width - --rules W337 // Illegal value (e.g. real) being used or X, Z or ? being used inappropriately asa case item - -//-rules W342 // Constant will be X-extended - -//-rules W343 // Constant will be Z-extended - --rules W362 // Unequal length in arithmetic comparison operator - -//-rules W423 // A port with a range is redeclared with a different range - -//-rules W446 // Output port signal is being read (within the module) -//-overloadrules W446+severity=Error - -//-rules W456a // A signal is included in the sensitivity list of a combinational process blockbut none of its bits is read in that block - --rules W486 // Shift overflow - some bits may be lost - -//-rules W491 // Constant will be ?-extended - --rules W499 // Not all bits of a function are set in the function - --rules W502 // A variable in sensitivity list is modified inside the always block - --rules W505 // Value assigned inconsistently - may not be synthesizable --overloadrules W505+severity=Error - -//-rules W551 // A case statement marked full_case or a priority/unique case statement have a default clause. - --rules W66 // Unsynthesizable repeat loop because repeat expression is not constant --overloadrules W66+severity=Error - --rules InferLatch // Latch inferred --overloadrules InferLatch+severity=Error - --rules RegInputOutput-ML // Module output and input port should be registered --overloadrules RegInputOutput-ML+severity=Data --chkTopModule="yes" // Rule checkign will be done only for top module - --rules STARC05-2.3.4.1v // Flip-flop output must not have initial value in signal/variable declaration --overloadrules STARC05-2.3.4.1v+severity=Warning - -//-rules STARC05-2.3.6.1 // Do not mix descriptions of flip-flops with asynchronous reset and flip-flopswithout asynchronous reset in the same process/always block - --rules STARC05-2.5.1.7 // Tri State output should not be used in the conditional expression of if statement --overloadrules STARC05-2.5.1.7+severity=Warning - --rules STARC05-2.5.1.9 // Tri State output should not be entered in the selection expression of casex and casez statement --overloadrules STARC05-2.5.1.9+severity=Warning - -//-rules UseMuxBusses // Tristate nets detected -//-overloadrules UseMuxBusses+severity=Warning - --rules W336 // Blocking assignment should not be used in a sequential block (may lead to shoot through) --overloadrules W336+severity=Error - --rules W414 // Use of non-blocking assignment in a combinational block --overloadrules W414+severity=Error --treat_latch_as_combinational="yes" // Always block inferring latch will be treated as combinational block. - -//-rules W428 // Task called in a combinational block - --rules W450L // Multi-bit expression used as latch enable may not be synthesizable --overloadrules W450L+severity=Warning - --rules UndrivenInTerm-ML // Undriven but loaded input terminal of an instance detected --overloadrules UndrivenInTerm-ML+severity=Error --checkInHierarchy="yes" // Rule will dive down the hierarchy to look for driver --checkRTLCInst='yes' // Rule will report violation for RTLC instances - -//-rules UndrivenNUnloaded-ML // Undriven and Unloaded nets/terminals detected in the design - -//-rules UnloadedInPort-ML // Unloaded but driven input port of a module detected - -//-rules LogicDepth // Logic depth exceeds specified number of levels (using parameter delaymax/delaymax_memtoflop/delaymax_floptomem/delaymax_memtomem/delaymax_err/delaymax_inputtoflop/delaymax_floptoflop/delaymax_inputtooutput/delaymax_floptooutput) -//-delaymax=500 - --rules BufClock // Clock buffer detected --overloadrules BufClock+severity=Warning - --rules checkPinConnectedToSupply // IO-ports or Output ports of cells/modules may not be connected to supply signals. --overloadrules checkPinConnectedToSupply+severity=Error - -//-rules ClockEdges // Do not use both levels of the clock to drive latches - --rules CombLoop // Combinational loop exists --overloadrules CombLoop+msgLabel=CombLoop+severity=Error --enableE2Q="yes" // Report comb loop from Enable to Q pin of flop. - -//-rules DisabledAnd // And/Nand gate is disabled - -//-rules DisabledOr // Or/Nor gate is disabled - --rules FlopClockConstant // Flip-flop clock pin driven by a constant value --overloadrules FlopClockConstant+msgLabel=FlopClockConstant+severity=Error - -//-rules FlopDataConstant // Flip-flop data pin driven by a constant value - --rules FlopEConst // Flip-flop enable pin is permanently disabled or enabled - --rules FlopSRConst // Flip-flop set or reset pin is permanently enabled - -//-rules IntReset // Internally generated reset detected -//-overloadrules IntReset+msgLabel=IntReset+severity=Warning - -//-rules LatchDataConstant // Latch data pin driven by a constant value - -//-rules LatchEnableConstant // Latch enable pin driven by a constant value - --rules LatchFeedback // There should not be a combinational feedback path from a latch output to data or enable of the same latch. --overloadrules LatchFeedback+severity=Error - -//-rules LatchGatedClock // Do not use gated/internally generated clock to drive latches -//-overloadrules LatchGatedClock+msgLabel=LatchGatedClock+severity=Warning - -//-rules LatchReset // Reset pin should not be used both synchronously and asynchronously - -//-rules LogNMux // LogN mux with large number of inputs detected - potential performance problem -//-logmux_max=5 - -//-rules MuxSelConst // Mux select is constant. - -//-rules RegOutputs // Some outputs from a top module are not registered -//-overloadrules RegOutputs+severity=Warning --reportundrivenout='no' // Rule will not report violation for undriven outputs. - -//-rules SetResetConverge-ML // Fanin cone of Set and Reset pin of a flop/latch converge - --rules STARC05-1.2.1.2 // Do not create a RS latch using primitive cells such as AND, OR --overloadrules STARC05-1.2.1.2+severity=Error - --rules STARC05-1.3.1.3 // Asynchronous reset/preset signals must not be used as non-reset/preset orsynchronous reset/preset signals --overloadrules STARC05-1.3.1.3+severity=Warning - -//-rules STARC05-1.3.1.7 // A flip-flop must not have both asynchronous set and asynchronous reset - --rules STARC05-1.4.3.4 // Flip-flop clock signals must not be used as non-clock signals --overloadrules STARC05-1.4.3.4+severity=Warning - --rules STARC05-2.1.4.5 // Flip-flop clock signals must not be used as non-clock signals --overloadrules STARC05-2.1.4.5+severity=Warning - --rules STARC05-2.4.1.5 // Do not use two level latches in the same phase clock --overloadrules STARC05-2.4.1.5+severity=Error - --rules STARC05-2.5.1.2 // Logic must not exist in tristate enable conditions - -//-rules STARC05-2.5.1.4 // A tristate bus should not be driven by more than the specified number of drivers -//-overloadrules STARC05-2.5.1.4+severity=Warning - -//-rules TristateConst // Tristate gate enable is constant - -//-rules W391 // Design has a clock driving it on both edges - --rules W392 // Do not use a reset or set with both positive and negative polarity within the samedesign unit - --rules W415 // Variable/signal that does not infer a tristate and has multiple simultaneous drivers --overloadrules W415+msgLabel=W415+severity=Error --assume_driver_load="yes" // Rule will report violation for unloaded signals/variables. --checkconstassign="yes" // Rule will report violation for constant assignments - -//-rules W422L // Multiple clocks in the event control list of latch is not allowed -//-overloadrules W422L+msgLabel=W422L+severity=Warning - --rules STARC05-2.10.1.4a // Signals must not be compared with X or Z. - --rules STARC05-2.10.1.4b // Signals must not be compared with values containing X or Z. - --rules W156 // Do not connect buses in reverse order - --rules STARC05-2.3.3.1 // Do not use multiple clock signals in a single process block - --rules W415a // Signal may be multiply assigned (beside initialization) in the same scope. - --rules W287b // Output port of an instance is not connected - --rules W224 // Multi-bit expression found when one-bit expression expected - --rules W287a // Some inputs to instance are not driven or unconnected - --rules W528 // A signal or variable is set but never read - --rules mixedsenselist // Mixed conditions in sensitivity list may not be synthesizable - --rules W339a // Case equal operator (===) and case not equal (!==) operators may not be synthesizable - --rules STARC05-2.10.3.2a // Bit-width of operands of a logical operator must match. diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_turbo_rtl_custom.tcl b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_turbo_rtl_custom.tcl deleted file mode 100644 index c27750b..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/lint/lint_turbo_rtl_custom.tcl +++ /dev/null @@ -1,114 +0,0 @@ -current_goal lint/lint_turbo_rtl -scenario optional -set_goal_option addrules AllocExpr -set_goal_option addrules DisconnSpec -set_goal_option addrules ForLoopWait -set_goal_option addrules IncompleteType -set_goal_option addrules Info_Case_Analysis -set_goal_option addrules IntGeneric -set_goal_option addrules LinkagePort -set_goal_option addrules LoopBound -set_goal_option addrules NoTimeOut -set_goal_option addrules PortType -set_goal_option addrules PreDefAttr -set_goal_option addrules ResFunction -set_goal_option addrules UserDefAttr -set_goal_option addrules W182g -set_goal_option addrules W182h -set_goal_option addrules W182k -set_goal_option addrules W182n -set_goal_option addrules SignedUnsignedExpr-ML -set_goal_option addrules sim_race01 -set_goal_option overloadrules sim_race01+severity=Warning -set_goal_option addrules W239 -set_goal_option addrules BothPhase -set_goal_option addrules ClockStyle -set_goal_option addrules DiffTimescaleUsed-ML -set_goal_option addrules MultipleWait -set_goal_option addrules NoSigCaseX-ML -set_goal_option addrules SetBeforeRead-ML -set_goal_option addrules SigVarInit -set_goal_option addrules STARC05-2.1.2.5v -set_goal_option addrules STARC05-2.1.8.6 -set_goal_option addrules STARC05-2.10.3.7 -set_goal_option addrules STARC05-2.3.1.4 -set_goal_option addrules STARC05-2.3.2.4 -set_goal_option addrules STARC05-2.3.4.2 -set_goal_option addrules SynthIfStmt -set_goal_option addrules W127 -set_goal_option addrules W129 -set_goal_option addrules W182c -set_goal_option addrules W189 -set_goal_option addrules W190 -set_goal_option addrules W213 -set_goal_option addrules W226 -set_goal_option addrules W245 -set_goal_option addrules W250 -set_goal_option addrules W253 -set_goal_option addrules W254 -set_goal_option addrules W280 -set_goal_option addrules W294 -set_goal_option addrules W425 -set_goal_option addrules W427 -set_goal_option addrules W430 -set_goal_option addrules W443 -set_goal_option overloadrules W443+severity=Warning -set_goal_option addrules W444 -set_goal_option overloadrules W444+severity=Warning -set_goal_option addrules W464 -set_goal_option addrules WhileInSubProg -set_goal_option addrules ArrayIndex -set_goal_option addrules DisallowCaseX-ML -set_goal_option addrules DisallowCaseZ-ML -set_goal_option addrules DisallowXInCaseZ-ML -set_goal_option addrules ParamOverrideMismatch-ML -set_goal_option overloadrules ParamOverrideMismatch-ML+severity=Warning -set_goal_option addrules STARC05-2.3.2.2 -set_goal_option addrules W111 -set_goal_option addrules W159 -set_goal_option addrules W164a -set_goal_option overloadrules W164a+severity=Warning -set_goal_option addrules W164b -set_goal_option addrules W210 -set_goal_option overloadrules W210+severity=Warning -set_goal_option addrules W241 -set_goal_option addrules W342 -set_goal_option addrules W343 -set_goal_option addrules W423 -set_goal_option addrules W446 -set_goal_option overloadrules W446+severity=Error -set_goal_option addrules W456a -set_goal_option addrules W491 -set_goal_option addrules W551 -set_goal_option addrules STARC05-2.3.6.1 -set_goal_option addrules UseMuxBusses -set_goal_option overloadrules UseMuxBusses+severity=Warning -set_goal_option addrules W428 -set_goal_option addrules UndrivenNUnloaded-ML -set_goal_option addrules UnloadedInPort-ML -set_goal_option addrules LogicDepth -set_parameter delaymax 500 -set_goal_option addrules ClockEdges -set_goal_option addrules DisabledAnd -set_goal_option addrules DisabledOr -set_goal_option addrules FlopDataConstant -set_goal_option addrules IntReset -set_goal_option overloadrules IntReset+msgLabel=IntReset+severity=Warning -set_goal_option addrules LatchDataConstant -set_goal_option addrules LatchEnableConstant -set_goal_option addrules LatchGatedClock -set_goal_option overloadrules LatchGatedClock+msgLabel=LatchGatedClock+severity=Warning -set_goal_option addrules LatchReset -set_goal_option addrules LogNMux -set_parameter logmux_max 5 -set_goal_option addrules MuxSelConst -set_goal_option addrules RegOutputs -set_goal_option overloadrules RegOutputs+severity=Warning -set_goal_option addrules SetResetConverge-ML -set_goal_option addrules STARC05-1.3.1.7 -set_goal_option addrules STARC05-2.5.1.4 -set_goal_option overloadrules STARC05-2.5.1.4+severity=Warning -set_goal_option addrules TristateConst -set_goal_option addrules W391 -set_goal_option addrules W422L -set_goal_option overloadrules W422L+msgLabel=W422L+severity=Warning -current_goal none diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/mbist_dft/mbist_dft.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/mbist_dft/mbist_dft.spq deleted file mode 100644 index 3cc903d..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/mbist_dft/mbist_dft.spq +++ /dev/null @@ -1,25 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal File -// -// mbist_dft -// Version: 5.6.0 -// -// Revision History: -// Ver Date Comments -// 5.6.0 26-Nov-2015 First appreance -// -// Copyright Synopsys Inc, 2019. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -mbist_dft -* -The objective of this template is to run the mbist-dft policy in tcl flow. -* -The objective of this template is to run the mbist-dft policy in tcl flow. - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - --policy=mbist-dft --mbist_fast_mode=on --fullpolicy diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/order b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/order deleted file mode 100644 index fdb853c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/order +++ /dev/null @@ -1,95 +0,0 @@ -=methodology+++++++++++++++++++++++++++++++++++++++++++++++++++ -rtl_handoff -* -GuideWare Reference Methodology for rtl_handoff stage of New RTL Block development -* -The rtl_handoff goals are a super-set of the initial_rtl goals. This stage -contains the complete set of recommended RTL Handoff checks. Handoff is -assumed to be the hand-off from the RTL design team to the post-synthesis -implementation team or hand-off to System Integration (sub-system or SoC) -integration. Since the hand-off process is typically iterative, it is not -necessarily expected that all goals will be clean at the first hand-off, but -at least the issues will be known and can be communicated to the consumers -downstream. - -In addition to commonly applicable templates at above design stage, -this methodology also includes a set of Optional templates. Design -teams should inspect these templates for applicability to their design. - -GuideWare Methodology Guide provides detailed description of above -templates, as well as what factors should be reviewed when selecting -optional templates. -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -lint/lint_rtl* -lint/lint_turbo_rtl* -lint/lint_functional_rtl* -!HIDE lint/design_audit* -lint/lint_abstract* -!HIDE adv_lint/adv_lint_setup* -adv_lint/adv_lint_struct* -adv_lint/adv_lint_verify* -!HIDE adv_lint/lint_functional_rtl* -!HIDE constraints/sdc_gen* -constraints/sdc_audit* -constraints/sdc_check* -constraints/sdc_exception_struct* PREREQ: constraints/sdc_check -!HIDE constraints/sdc_hier_equiv* -constraints/sdc_redundancy* -!HIDE constraints/sdc_equiv* -constraints/sdc_abstract* -txv_verification/fp_verification* -txv_verification/mcp_verification* -txv_verification/fp_mcp_verification* -txv_verification/txv_run_audit* -txv_verification/txv_glitch* -txv_verification/txv_rtl_gen* -txv_verification/txv_sdc_migration* -!HIDE cdc/cdc_setup* -cdc/cdc_setup_check* -cdc/clock_reset_integrity* -cdc/cdc_verify_struct* -cdc/cdc_verify* PREREQ: cdc/cdc_verify_struct -rdc/rdc_verify_struct* -cdc/cdc_abstract* PREREQ: cdc/cdc_verify -dft/dft_scan_ready* -dft/dft_best_practice* -dft/dft_bist_ready* -dft/dft_dsm_best_practice* -dft/dft_dsm_random_resistance* -dft/dft_abstract* -power/power_audit* -power/power_activity_check* -power/power_atd* -power/power_gen_pesd* -power/power_calibration* -power/power_est_average* -power/power_est_profiling* -power/power_reduction_adv* -power/power_cge_profiling* -power/power_mem_reduction* -power/power_guidance* -power/power_mode_detection* -power/power_wtc_model* -power/power_wtc_profiler* -power/power_wtc_virtualizer* -power/power_factor_values* -power/power_factor_conditions* -power/power_est_profiling_save* -power/power_cge_profiling_save* -power/power_cge_profiling_est* -power_verification/power_verif_audit* -power_verification/power_verif_noninstr* -power_verification/power_verif_instr_rtl* -power_verification/power_verif_abstract* -physical/lint_physical* -physical/physical_analysis_signoff* -!HIDE physical/physical_analysis_congestion* - - -physical_aware_power/physical_power_postfloorplan* -physical_aware_power/power_est_average* - -rtl2netlist/rtl2netlist_migration* DDR_GOAL - -connectivity_verify/connectivity_verification* diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/lint_physical.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/lint_physical.spq deleted file mode 100644 index a0dcda5..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/lint_physical.spq +++ /dev/null @@ -1,104 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : lint_physical -// Version: 2.0.0 -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 13-Oct-2014 5.3.1.2 Initial version -// 1.1.0 29-Jan-2015 5.4.1 Added option prefer_tech_lib -// 2.0.0 20-May-2015 5.5.0 Removed rule PHY_CriticalObjects and added rules PHY_FaninCone_MM and PHY_FanoutCone_MM -// Overload severity as Warning and updated parameter values for PHY_LargeMux, -// PHY_FaninCone, PHY_FanoutCone and PHY_FanoutCone2 rules. -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -lint_physical -* -Perform design read to create SpyGlass Physical DB for subsequent analysis -* -This goal runs set of rules necessary to provide physical linting solution for -early RTL. - -User inputs required for this goal are - - i) Design RTL - ii) Technology library, compiled using SpyGlass Physical - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -// ---------------------------------------------------------------------------- -// Policy Registration -// ---------------------------------------------------------------------------- - --policy=physical - -// ---------------------------------------------------------------------------- -// General Setup commands -// ---------------------------------------------------------------------------- - --physical_mode // Internal switch --enable_pgnetlist // Power ground pins are handled --prefer_tech_lib // Bind design instances to tech cell even if a module with same name as tech cell is defined in rtl - -// ---------------------------------------------------------------------------- -// Policy Specific Parameter Setting -// ---------------------------------------------------------------------------- - -//-phy_max_msg_count=10000 // Controls the number of messages of each rule to be reported --phy_tech_path=$SPYGLASS_PHYSICAL_HOME/common/genericLib/sgp_tech // Set default technology library to generic tech - -// ---------------------------------------------------------------------------- -// Rule Registration -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Lint Rules -// ---------------------------------------------------------------------------- - --rule PHY_BlackBox // Reports black boxes in the design - --rule PHY_MemorySynthesis // Reports memory variables in the design - --rule PHY_FlopCount // Reports total number of flip-flops in the design -//-phy_enable_sequential_opt='CONSTANT_FLOP HANGING_FLOP FEEDBACK_FLOP' //Controls the sequential optimization - --rule PHY_LargeMux // Reports large mux structures in the design --overloadrules PHY_LargeMux+severity=Warning // Overload rule severity to Warning --phy_largemux_threshold="{100 75}" // Threshold value of large mux rule --phy_largemux_input_threshold=512 // Minimum input size of large mux which are considered for reporting --phy_largemux_select_threshold=16 // Minimum select size of large mux which are considered for reporting --phy_largemux_cong_threshold=0 // Congestion threshold of large mux parent module ignored for large mux scaling - --rule PHY_FaninCone // Reports nodes with high number of sequential elements and ports in their fanin cone --overloadrules PHY_FaninCone+severity=Warning // Overload rule severity to Warning --phy_fanin_threshold=10000 // Minimum threshold for PHY_FaninCone rule - --rule PHY_FaninCone_MM // Reports hardmacros and blackboxes with high number of sequential elements and ports in their fanin cone - --rule PHY_FanoutCone // Reports nodes with high number of sequential elements and ports in their fanout cone --overloadrules PHY_FanoutCone+severity=Warning // Overload rule severity to Warning --phy_fanout_threshold=10000 // Minimum threshold for PHY_FanoutCone rule - --rule PHY_FanoutCone_MM // Reports hardmacros and blackboxes with high number of sequential elements and ports in their fanout cone - --rule PHY_FanoutCone2 // Reports pairs of nodes with high number of sequential elements and ports in their fanout cone --overloadrules PHY_FanoutCone2+severity=Warning // Overload rule severity to Warning --phy_fanoutcone2_metric="{{THRESHOLD 5000 5000}}" // Minimum threshold for PHY_FanoutCone2 rule - --rule PHY_FaninFanoutCone // Reports sequential instances with high number of sequential elements and ports in their fanin and fanout cone - -// ---------------------------------------------------------------------------- -// LEGEND -// ------ -// 1. Rules that are recommended for this use model are enabled by default. -// 2. Rule that are available based on customer request, as well as rule parameter values -// that user can customize are included with comment. -// Uncomment to use these rules or parameters. -// 3. Rules that are not recommended for this use model, are not listed in this file. -// ---------------------------------------------------------------------------- - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion.spq deleted file mode 100644 index 5fb1d7c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion.spq +++ /dev/null @@ -1,170 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare3.0 Goal File -// -// Goal Name : physical_analysis_congestion -// Version: 3.0.0 -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.1.0 31-May-2013 5.1 Removed parameter "phy_criticalobjects_threshold" -// Added new parameter "phy_criticalobjects_metric" -// 2.0.0 30-May-2014 5.3 Guideware 2.0 Content Consistency -// 2.1.0 29-Jan-2015 5.4.1 Added option prefer_tech_lib -// 3.0.0 20-May-2015 5.5.0 Overload severity as Warning and updated parameter values for PHY_LargeMux, -// PHY_FaninCone and PHY_FanoutCone rules. -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -physical_analysis_congestion -* -Perform physical analysis using vendor library, use for congestion analysis and debug -* -This goal runs selected SpyGlass Physical Pre-Floorplan rules together with -user-supplied vendor library. The rules are selected to analyze and debug -congestion aspects of user RTL design. - -User inputs required for this goal are - - i) Design RTL - ii) SDC constraints - iii) Technology library, compiled using SpyGlass Physical - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -// ---------------------------------------------------------------------------- -// Policy Registration -// ---------------------------------------------------------------------------- - --policy=physical - -// ---------------------------------------------------------------------------- -// General Setup commands -// ---------------------------------------------------------------------------- - --mixed // Design language --physical_mode // Internal switch --enable_pgnetlist // Power ground pins are handled --prefer_tech_lib // Bind design instances to tech cell even if a module with same name as tech cell is defined in rtl - -// ---------------------------------------------------------------------------- -// Policy Specific Parameter Setting -// ---------------------------------------------------------------------------- - -// Default tool setting is used - -// ---------------------------------------------------------------------------- -// Rule Registration -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for area estimate -// ---------------------------------------------------------------------------- - --rule PHY_GateCount // Reports NAND2 gate-equivalent area estimate for the input design - -// -rule PHY_GateArea // Reports area estimate for the input design -// -phy_gatearea_cell_util=100 // Standard cell utilization percentage used to scale standard-cell area - --rule PHY_BlackBox // Reports black boxes in the design - -// -rule PHY_FlopCount // Reports total number of flip-flops in the design - -// -rule PHY_DesignResources // Reports design resources in the design - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for timing estimate -// ---------------------------------------------------------------------------- - --rule PHY_LogicDepth_Core_ClkDelay // Reports reg-reg timing paths that exceed specified logic depth (based on percentage of clock period weighted delay) -// -phy_logicdepth_core_clkdelay_threshold=90 // Minimum threshold for PHY_LogicDepth_Core_ClkDelay rule - // Review with user, recommend 90 as CriticalObjects analysis - --rule PHY_LogicDepth_Peri_ClkDelay // Reports PI-PO, PI-reg and reg-PO timing paths that exceed specified logic depth (based on percentage of clock period weighted delay) -// -phy_logicdepth_peri_clkdelay_threshold=45 // Minimum threshold for PHY_LogicDepth_Peri_ClkDelay rule - // Review with user, recommend 45 for CriticalObjects analysis - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for Congestion analysis -// ---------------------------------------------------------------------------- - --rule PHY_CongModules // Reports most congested modules in the input design -// -phy_cong_threshold=7.0 // Minimum threshold for PHY_CongModules rule - // Review with user, value of 7 is recommend for debug purposes - --rule PHY_FaninCone // Reports nodes with high number of sequential elements and ports in their fanin cone --overloadrules PHY_FaninCone+severity=Warning // Overload rule severity to Warning --phy_fanin_threshold=10000 // Minimum threshold for PHY_FaninCone rule - --rule PHY_FanoutCone // Reports nodes with high number of sequential elements and ports in their fanout cone --overloadrules PHY_FanoutCone+severity=Warning // Overload rule severity to Warning --phy_fanout_threshold=10000 // Minimum threshold for PHY_FanoutCone rule - --rule PHY_LargeMux // Reports large mux instances found in the design --overloadrules PHY_LargeMux+severity=Warning // Overload rule severity to Warning --phy_largemux_threshold="{100 75}" // Threshold value of large mux rule -//-phy_largemux_input_threshold=512 // Threshold value of the input pins of a mux instance -//-phy_largemux_select_threshold=16 // Threshold value of the select pins of a mux instance -// -phy_largemux_cong_threshold=7.0 // Threshold value of the congestion score of the parent module of a mux instance - // May use value of 0.0 to ignore congestion score for large mux scaling - --rule PHY_CriticalObjects // Reports critical objects (registers and ports) in the design --phy_criticalobjects_logicdepth_mode="ClkDelay" // Selects the logic depth rule variant used for PHY_CriticalObjects rule - // this must match LogicDepth selection -//-phy_criticalobjects_threshold=4 // Threshold value for PHY_CriticalObjects rule - // review suitable threshold with user -//-phy_criticalobjects_max_objects=10000 // Maximum critical objects to be reported --phy_criticalobjects_metric="{ {FICN {5000 1.0} {20000 2.0} {40000 4.0}} {FOCN {5000 1.0} {20000 2.0} {40000 4.0}} {FILD {90 1.0} {140 2.0} {160 4.0}} {FOLD {90 1.0} {140 2.0} {160 4.0}} {FILM {25 1.0} {100 2.0} {200 4.0}} {FOLM {25 1.0} {100 2.0} {200 4.0}} }" // Select metrics contributing to PHY_CriticalObjects rule - - --rule PHY_CellPinDensity // Reports pin density of technology library cells instantiated in each congested module of the design - --rule PHY_HighFanout // Reports high fanout nodes in the input design -// -phy_highfanout_threshold=500 // Minimum threshold for PHY_HighFanout rule - // Review threshold with users, a value of 1000 is recommend for gross violators - - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for general reports -// ---------------------------------------------------------------------------- - -// -rule PHY_PhysicalSummary // Reports the Area_Congestion_Timing profile for the design at pre-floorplanned stage - --rule PHY_Reports // View all reports generated during SpyGlass Physical flow - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for customer requests -// ---------------------------------------------------------------------------- - -// Review all custom rules with user, including the threshold values - -// -rule PHY_LogicDepth_MM_ClkDelay // Reports PI-memory or reg-memory or memory-reg or memory-PO or memory-memory timing paths that exceed specified logic depth (based on percentage of clock period weighted delay) -// -phy_logicdepth_to_mm_clkdelay_threshold=50.0 // Minimum fanin logic depth threshold for PHY_LogicDepth_MM_ClkDelay rule -// -phy_logicdepth_from_mm_clkdelay_threshold=50.0 // Minimum fanout logic depth threshold for PHY_LogicDepth_MM_ClkDelay rule - -// -rule PHY_FaninCone_MM // Reports memory and black box objects with high number of sequential elements and ports in their fanin cone -// -phy_fanin_mm_threshold=10 // Minimum threshold for PHY_FaninCone_MM rule - -// -rule PHY_FanoutCone_MM // Reports memory and black box objects with high number of sequential elements and ports in their fanout cone -// -phy_fanout_mm_threshold=10 // Minimum threshold for PHY_FanoutCone_MM rule - -// -rule PHY_CriticalObjects_MM // Reports critical objects of memory and black box type in the design -// -phy_criticalobjects_mm_threshold=2.0 // Minimum threshold for PHY_CriticalObjects_MM rule -// -phy_fanin_mm_scale_factor=1.0 // Scaling factor used for calculating FaninCone weightage for PHY_CriticalObjects_MM rule -// -phy_fanout_mm_scale_factor=1.0 // Scaling factor used for calculating FanoutCone weightage for PHY_CriticalObjects_MM rule - // PHY_LargeMux scale factor used is same as for PHY_CriticalObjects rule - ---deprecate_template physical_analysis_congestion+spg-5.6.0+Warning -// ---------------------------------------------------------------------------- -// LEGEND -// ------ -// 1. Rules that are recommended for this use model are enabled by default. -// 2. Rule that are available based on customer request, as well as rule parameter values -// that user can customize are included with comment. -// Uncomment to use these rules or parameters. -// 3. Rules that are not recommended for this use model, are not listed in this file. -// ---------------------------------------------------------------------------- - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion_debug_help.htm deleted file mode 100644 index baa8824..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion_debug_help.htm +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - physical_analysis_congestion - - - - - - - - - - - - - -
    - -
    -

    -physical_analysis_congestion -

    -

    -This goal runs selected SpyGlass Physical Pre-Floorplan rules together with user-supplied vendor library. The rules are selected to analyze and debug congestion aspects of user RTL design. -

    -

    -User inputs required for this goal are: -

    -
      -
    • Design RTL
    • -
    • SDC constraints
    • -
    • Technology library, compiled using SpyGlass Physical
    • -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion_setup.sgs deleted file mode 100644 index 3c826bd..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_congestion_setup.sgs +++ /dev/null @@ -1,89 +0,0 @@ -########################################################################## -# SpyGlass Physical Methodology -# -# Version: 1.0 -# -# Revision History: -# Ver Date Comments -# 1.0 16-Feb-2010 Initial Draft -# 1.1 02-Sep-2010 Support for honoring preset params from prj file -# 1.2 07-Sep-2010 Updated to correctly handle VI 47531 -# -# Copyright Atrenta Inc, 2010. All rights reserved. -########################################################################## -# This is the SGS script to setup PHYSICAL ANALYSIS CONGESTION -########################################################################## - -if {[info exists env(SPYGLASS_PHYSICAL_HOME)] != 0} { - set MY_ENV_SGP_PATH $env(SPYGLASS_PHYSICAL_HOME)/common/sgphysical -} elseif {[info exists env(BP_HOME)] != 0} { - if {[file exists $env(BP_HOME)/sgphysical] != 0} { - set MY_ENV_SGP_PATH $env(BP_HOME)/sgphysical - } else { - set MY_ENV_SGP_PATH $env(BP_HOME)/../../common/sgphysical - } -} else { - return -code error "SPYGLASS_PHYSICAL_HOME/BP_HOME not set" -} - -########################################################################## -# Register Variables to be used in the script here -########################################################################## -# Variable to set path to user-specified technology library -register_variable Q_USER_TECHPATH "SGS_Unset" - -# Variable to set path to user-specified SDC file -register_variable Q_USER_SDCFILE "SGS_Unset" - -########################################################################## -# Initialize variables from value in project file (or corresponding parameter defaults) -########################################################################## -get_property console.parameterValue phy_tech_path -result_variable Q_USER_TECHPATH -get_property console.parameterValue phy_sdc -result_variable Q_USER_SDCFILE - -########################################################################## -# set_property -hide_step_numbering - -set_property -step_header "Introduction" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -set_property -restore_session_log -enable_next_button - -create_form -label "PAC_INTRODUCTION" { - show_html $MY_ENV_SGP_PATH/templates/html/pac_1_introduction.htm -} -set_header_state "Introduction" complete - -########################################################################## -set_property -step_header "Select Technology" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PAC_SELECT_TECH" { - get_dir -text "Select Precompiled technology library directory, usually named sgp_tech" -type {"sgp_tech directory" "*"} -result_variable Q_USER_TECHPATH -geometry { -side bottom } -auto_proceed - show_html $MY_ENV_SGP_PATH/templates/html/pac_2_select_techlib.htm -geometry { -side bottom } -} -set_parameters_value {phy_tech_path get_variable $Q_USER_TECHPATH} -set_header_state "Select Technology" complete - -########################################################################## -set_property -step_header "Select SDC file" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PAC_SELECT_SDC" { - get_file -text "Select SDC file" -type {"SDC File" "*.sdc"} -fileExt { "SDC File" "*.sdc" } -allow_multiple -result_variable Q_USER_SDCFILE -geometry { -side bottom } - show_html $MY_ENV_SGP_PATH/templates/html/pac_3_select_sdc.htm -geometry { -side bottom } -} -set_parameters_value {phy_sdc get_variable $Q_USER_SDCFILE} -set_header_state "Select SDC file" complete - -########################################################################## - -set_property -step_header "Setup optional parameter" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PAC_SETUP_RULEPARA" { - set_parameters {phy_tech_path phy_sdc phy_optimization_effort phy_enable_hbo phy_blackbox_models_tcl_file phy_dont_use_cell_list phy_gatecount_depth phy_gatecount_module_size phy_gatecount_percent_size phy_highfanout_threshold phy_logicdepth_core_clkdelay_merge_bus phy_logicdepth_core_clkdelay_threshold phy_logicdepth_peri_clkdelay_merge_bus phy_logicdepth_peri_clkdelay_threshold phy_logicdepth_scale_factor phy_calculate_fold phy_fanout_scale_factor phy_fanout_threshold phy_fanin_scale_factor phy_fanin_threshold phy_cong_module_size_low phy_cong_module_size_high phy_cong_module_count phy_cong_module_size phy_cong_threshold phy_cong_effort phy_largemux_threshold phy_largemux_input_threshold phy_largemux_select_threshold phy_largemux_merge_mode phy_largemux_cong_threshold phy_largemux_scale_factor phy_enable_sequential_opt phy_criticalobjects_threshold } -geometry { -side bottom } - show_html $MY_ENV_SGP_PATH/templates/html/pac_4_rule_customize.htm -} -set_header_state "Setup optional parameter" complete - -########################################################################## - -set_property -step_header "Setup Complete" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -set_header_state "Setup Complete" complete -create_form -label "PAC_Completed" { - show_text "Setup is successfully completed" -} - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff.spq deleted file mode 100644 index e4efd97..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff.spq +++ /dev/null @@ -1,197 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare3.0 Goal File -// -// Goal Name : physical_analysis_signoff -// Version: 3.0.0 -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 18-Feb-2013 5.0 Initial version -// 1.1.0 31-May-2013 5.1 Added new parameter "phy_criticalobjects_metric" -// 2.0.0 30-May-2014 5.3 Guideware 2.0 Content Consistency -// 2.1.0 29-Jan-2015 5.4.1 Added option prefer_tech_lib -// 3.0.0 20-May-2015 5.5.0 Overload severity as Warning and updated parameter values for PHY_LargeMux, -// PHY_FaninCone and PHY_FanoutCone rules. -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -physical_analysis_signoff -* -Perform physical analysis using vendor library, use for signoff on area, congestion and timing -* -This goal runs selected SpyGlass Physical Pre-Floorplan rules together with -user-supplied vendor library. The rules are selected to signoff for area, -timing and congestion aspects of user RTL design. - -User inputs required for this goal are - - i) Design RTL - ii) SDC constraints - iii) Technology library, compiled using SpyGlass Physical - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -// ---------------------------------------------------------------------------- -// Policy Registration -// ---------------------------------------------------------------------------- - --policy=physical - -// ---------------------------------------------------------------------------- -// General Setup commands -// ---------------------------------------------------------------------------- - --mixed // Design language --physical_mode // Internal switch --enable_pgnetlist // Power ground pins are handled --prefer_tech_lib // Bind design instances to tech cell even if a module with same name as tech cell is defined in rtl - -// ---------------------------------------------------------------------------- -// Policy Specific Parameter Setting -// ---------------------------------------------------------------------------- - --phy_optimization_effort=medium // Controls the complexity and number of transform iterations used during timing optimization - // user may increase to high in .prj file, which may modestly increase runtime - -// ---------------------------------------------------------------------------- -// Rule Registration -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for area estimate -// ---------------------------------------------------------------------------- - --rule PHY_GateCount // Reports NAND2 gate-equivalent area estimate for the input design - --rule PHY_GateArea // Reports area estimate for the input design -// -phy_gatearea_cell_util=100 // Standard cell utilization percentage used to scale standard-cell area - --rule PHY_BlackBox // Reports black boxes in the design - -// -rule PHY_FlopCount // Reports total number of flip-flops in the design - -// -rule PHY_DesignResources // Reports design resources in the design - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for timing estimate -// ---------------------------------------------------------------------------- - -// -rule PHY_LogicDepth_Core // Reports reg-reg timing paths that exceed specified logic depth (calculated on per gate basis) -// -phy_logicdepth_core_threshold=30 // Minimum threshold for PHY_LogicDepth_Core rule - // review threshold with user - -// -rule PHY_LogicDepth_Peri // Reports PI_PO,PI-PIreg and reg-PO timing paths that exceed specified logic depth (calculated on per gate basis) -// -phy_logicdepth_peri_threshold=15 // Minimum threshold for PHY_LogicDepth_Peri rule - // review threshold with user - -// -rule PHY_LogicDepth_Core_Delay // Reports reg-reg timing paths that exceed specified logic depth (based on inverter weighted delay of each instance) -// -phy_logicdepth_core_delay_threshold=100 // Minimum threshold for PHY_LogicDepth_Core_Delay rule - // review threshold with user - -// -rule PHY_LogicDepth_Peri_Delay // Reports PI_PO,PI-reg and reg-PO timing paths that exceed specified logic depth (based on inverter weighted delay of each instance) -// -phy_logicdepth_peri_delay_threshold=50 // Minimum threshold for PHY_LogicDepth_Peri_Delay rule - // review threshold with user - --rule PHY_LogicDepth_Core_ClkDelay // Reports reg-reg timing paths that exceed specified logic depth (based on percentage of clock period weighted delay) -// -phy_logicdepth_core_clkdelay_threshold=120 // Minimum threshold for PHY_LogicDepth_Core_ClkDelay rule - // Review with user, Recommend 120 for gross outlier - --rule PHY_LogicDepth_Peri_ClkDelay // Reports PI-PO, PI-reg and reg-PO timing paths that exceed specified logic depth (based on percentage of clock period weighted delay) -// -phy_logicdepth_peri_clkdelay_threshold=60 // Minimum threshold for PHY_LogicDepth_Peri_ClkDelay rule - // Review with user, Recommend 60 for gross outlier - --rule PHY_Timing // Generates detailed timing report at the pre-floorplanned design database - --rule PHY_TimingModules // Reports timing distribution in the design - --rule PHY_ClockDetail // Reports worst critical paths with respect to each clock in the design - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for Congestion analysis -// ---------------------------------------------------------------------------- - --rule PHY_CongModules // Reports most congested modules in the input design --phy_cong_module_size_low=50000 // Minimum instance count threshold of modules which are gross violators of logical congestion --phy_cong_threshold=8.0 // Minimum threshold for PHY_CongModules rule - // sign-off criteria uses default threshold of 8 - --rule PHY_FaninCone // Reports nodes with high number of sequential elements and ports in their fanin cone --overloadrules PHY_FaninCone+severity=Warning // Overload rule severity to Warning --phy_fanin_threshold=10000 // Minimum threshold for PHY_FaninCone rule - --rule PHY_FanoutCone // Reports nodes with high number of sequential elements and ports in their fanout cone --overloadrules PHY_FanoutCone+severity=Warning // Overload rule severity to Warning --phy_fanout_threshold=10000 // Minimum threshold for PHY_FanoutCone rule - -//-rule PHY_LargeMux // Reports large muxes in the design -//-overloadrules PHY_LargeMux+severity=Warning // Overload rule severity to Warning -//-phy_largemux_threshold="{100 75}" // Threshold value of large mux rule -//-phy_largemux_input_threshold=512 -//-phy_largemux_select_threshold=16 -// -phy_largemux_cong_threshold=7.0 - // May use value of 0.0 to ignore congestion score for large mux scaling - -// -rule PHY_CriticalObjects // Reports critical objects (registers and ports) in the design - // Review with user, recommended as part of Congestion Debug Goal only - // in this goal, default CriticalObjects metric will be FICN, FOCN and FILD. -//-phy_criticalobjects_threshold=4 // Threshold value for PHY_CriticalObjects rule -//-phy_criticalobjects_max_objects=10000 // Maximum critical objects to be reported --phy_calculate_fold=false // Enable reporting of fanout logic depth - // change above to true, if FOLD metric is required in PHY_CriticalObjects --phy_criticalobjects_logicdepth_mode="ClkDelay" // Selects the logic depth rule variant used for PHY_CriticalObjects rule - // this must match LogicDepth selection, if PHY_CriticalObjects rule is enabled --phy_criticalobjects_metric="{ {FICN {5000 1.0} {20000 2.0} {40000 4.0}} {FOCN {5000 1.0} {20000 2.0} {40000 4.0}} {FILD {90 1.0} {140 2.0} {160 4.0}} }" // Select metrics contributing to PHY_CriticalObjects rule - - -// -rule PHY_CellPinDensity // Reports pin density of technology library cells instantiated in each congested module of the design - -// -rule PHY_HighFanout // Reports high fanout nodes in the input design -// -phy_highfanout_threshold=500 // Minimum threshold for PHY_HighFanout rule - // Review threshold with users, a value of 1000 is recommend for gross violators - - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for general reports -// ---------------------------------------------------------------------------- - --rule PHY_PhysicalSummary // Reports the Area_Congestion_Timing profile for the design at pre-floorplanned stage - --rule PHY_Dashboard // Generates datasheet and dashboard reports - --rule PHY_Reports // View all reports generated during SpyGlass Physical flow - -// ---------------------------------------------------------------------------- -// SpyGlass Physical Rules for customer requests -// ---------------------------------------------------------------------------- - -// Review all custom rules with user, including the threshold values - -// -rule PHY_LogicDepth_MM_ClkDelay // Reports PI-memory or reg-memory or memory-reg or memory-PO or memory-memory timing paths that exceed specified logic depth (based on percentage of clock period weighted delay) -// -phy_logicdepth_to_mm_clkdelay_threshold=50.0 // Minimum fanin logic depth threshold for PHY_LogicDepth_MM_ClkDelay rule -// -phy_logicdepth_from_mm_clkdelay_threshold=50.0 // Minimum fanout logic depth threshold for PHY_LogicDepth_MM_ClkDelay rule - -// -rule PHY_FaninCone_MM // Reports memory and black box objects with high number of sequential elements and ports in their fanin cone -// -phy_fanin_mm_threshold=10 // Minimum threshold for PHY_FaninCone_MM rule - -// -rule PHY_FanoutCone_MM // Reports memory and black box objects with high number of sequential elements and ports in their fanout cone -// -phy_fanout_mm_threshold=10 // Minimum threshold for PHY_FanoutCone_MM rule - -// -rule PHY_CriticalObjects_MM // Reports critical objects of memory and black box type in the design -// -phy_criticalobjects_mm_threshold=2.0 // Minimum threshold for PHY_CriticalObjects_MM rule -// -phy_fanin_mm_scale_factor=1.0 // Scaling factor used for calculating FaninCone weightage for PHY_CriticalObjects_MM rule -// -phy_fanout_mm_scale_factor=1.0 // Scaling factor used for calculating FanoutCone weightage for PHY_CriticalObjects_MM rule - // PHY_LargeMux scale factor used is same as for PHY_CriticalObjects rule - -// ---------------------------------------------------------------------------- -// LEGEND -// ------ -// 1. Rules that are recommended for this use model are enabled by default. -// 2. Rule that are available based on customer request, as well as rule parameter values -// that user can customize are included with comment. -// Uncomment to use these rules or parameters. -// 3. Rules that are not recommended for this use model, are not listed in this file. -// ---------------------------------------------------------------------------- - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff_debug_help.htm deleted file mode 100644 index 0834421..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff_debug_help.htm +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - physical_analysis_signoff - - - - - - - - - - - - - -
    - -
    -

    -physical_analysis_signoff -

    -

    -This goal runs selected SpyGlass Physical Pre-Floorplan rules together with user-supplied vendor library. The rules are selected to signoff for area, timing and congestion aspects of user RTL design. -

    -

    -User inputs required for this goal are: -

    -
      -
    • Design RTL
    • -
    • SDC constraints
    • -
    • Technology library, compiled using SpyGlass Physical
    • -
    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff_setup.sgs deleted file mode 100644 index 7ddc7ee..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical/physical_analysis_signoff_setup.sgs +++ /dev/null @@ -1,89 +0,0 @@ -########################################################################## -# SpyGlass Physical Methodology -# -# Version: 1.0 -# -# Revision History: -# Ver Date Comments -# 1.0 16-Feb-2010 Initial Draft -# 1.1 02-Sep-2010 Support for honoring preset params from prj file -# 1.2 07-Sep-2010 Updated to correctly handle VI 47531 -# -# Copyright Atrenta Inc, 2010. All rights reserved. -########################################################################## -# This is the SGS script to setup PHYSICAL ANALYSIS SIGNOFF -########################################################################## - -if {[info exists env(SPYGLASS_PHYSICAL_HOME)] != 0} { - set MY_ENV_SGP_PATH $env(SPYGLASS_PHYSICAL_HOME)/common/sgphysical -} elseif {[info exists env(BP_HOME)] != 0} { - if {[file exists $env(BP_HOME)/sgphysical] != 0} { - set MY_ENV_SGP_PATH $env(BP_HOME)/sgphysical - } else { - set MY_ENV_SGP_PATH $env(BP_HOME)/../../common/sgphysical - } -} else { - return -code error "SPYGLASS_PHYSICAL_HOME/BP_HOME not set" -} - -########################################################################## -# Register Variables to be used in the script here -########################################################################## -# Variable to set path to user-specified technology library -register_variable Q_USER_TECHPATH "SGS_Unset" - -# Variable to set path to user-specified SDC file -register_variable Q_USER_SDCFILE "SGS_Unset" - -########################################################################## -# Initialize variables from value in project file (or corresponding parameter defaults) -########################################################################## -get_property console.parameterValue phy_tech_path -result_variable Q_USER_TECHPATH -get_property console.parameterValue phy_sdc -result_variable Q_USER_SDCFILE - -########################################################################## -# set_property -hide_step_numbering - -set_property -step_header "Introduction" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -set_property -restore_session_log -enable_next_button - -create_form -label "PASO_INTRODUCTION" { - show_html $MY_ENV_SGP_PATH/templates/html/paso_1_introduction.htm -} -set_header_state "Introduction" complete - -########################################################################## -set_property -step_header "Select Technology" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PASO_SELECT_TECH" { - get_dir -text "Select Precompiled technology library directory, usually named sgp_tech" -type {"sgp_tech directory" "*"} -result_variable Q_USER_TECHPATH -geometry { -side bottom } -auto_proceed - show_html $MY_ENV_SGP_PATH/templates/html/paso_2_select_techlib.htm -geometry { -side bottom } -} -set_parameters_value {phy_tech_path get_variable $Q_USER_TECHPATH} -set_header_state "Select Technology" complete - -########################################################################## -set_property -step_header "Select SDC file" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PASO_SELECT_SDC" { - get_file -text "Select SDC file" -type {"SDC File" "*.sdc"} -fileExt { "SDC File" "*.sdc" } -allow_multiple -result_variable Q_USER_SDCFILE -geometry { -side bottom } - show_html $MY_ENV_SGP_PATH/templates/html/paso_3_select_sdc.htm -geometry { -side bottom } -} -set_parameters_value {phy_sdc get_variable $Q_USER_SDCFILE} -set_header_state "Select SDC file" complete - -########################################################################## - -set_property -step_header "Setup optional parameter" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PASO_SETUP_RULEPARA" { - set_parameters {phy_tech_path phy_sdc phy_optimization_effort phy_enable_hbo phy_blackbox_models_tcl_file phy_dont_use_cell_list phy_gatecount_depth phy_gatecount_module_size phy_gatecount_percent_size phy_gatearea_depth phy_gatearea_module_size phy_gatearea_percent_size phy_gatearea_cell_util phy_logicdepth_core_clkdelay_merge_bus phy_logicdepth_core_clkdelay_threshold phy_logicdepth_peri_clkdelay_merge_bus phy_logicdepth_peri_clkdelay_threshold phy_fanout_threshold phy_fanin_threshold phy_cong_module_size_low phy_cong_module_size_high phy_cong_module_count phy_cong_module_size phy_cong_threshold phy_cong_effort phy_enable_sequential_opt } -geometry { -side bottom } - show_html $MY_ENV_SGP_PATH/templates/html/paso_4_rule_customize.htm -} -set_header_state "Setup optional parameter" complete - -########################################################################## - -set_property -step_header "Setup Complete" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -set_header_state "Setup Complete" complete -create_form -label "PASO_Completed" { - show_text "Setup is successfully completed" -} - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/.submethodology_help deleted file mode 100644 index 4791a85..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/.submethodology_help +++ /dev/null @@ -1,9 +0,0 @@ -The Physical_aware_power methodology enables to run physical aware power estimation flow. This flow is the integration of SpyGlass Physical and SpyGlass Power products. The RTL design is synthesized using SpyGlass Physical timing optimization engine and power estimated using SpyGlass Power. The power estimation is accurate and close to silicon numbers. - -The following goals are part of this methodology. All the options relevant to this flow are enabled in the goals. - -1. physical_power_postfloorplan: The goal runs SpyGlass Physical and generates timing optimized netlist, capacitance and slew on input RTL design. - -2. power_est_average: The goal runs SpyGlass Power and estimates accurate power using above netlist, capacitance and slew values. - -Access to the licenses are required to run this flow. For a list of licenses, contact Synopsys Support. diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/doc/power_est_average.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/doc/power_est_average.htm deleted file mode 100644 index 4e17132..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/doc/power_est_average.htm +++ /dev/null @@ -1,5 +0,0 @@ - -

    -Introduction -

    -

    This goal estimates the average power of the design. You can supply the power data for standard cells in a sglib file. You can supply the activity data with a file such as VCD, FSDB or SAIF, or for an early estimate, by giving activity values for clocks and other key nets. diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/physical_power_postfloorplan.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/physical_power_postfloorplan.spq deleted file mode 100644 index 2c8f142..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/physical_power_postfloorplan.spq +++ /dev/null @@ -1,62 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Template -// To be used with products released by Synopsys only -// -// physical_power_postfloorplan-mixed -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 31-May-2013 5.1 Initial version -// 1.1.0 23-Jan-2014 5.2.1 Removed all rules -// -// Copyright Synopsys Inc, 2013. All rights reserved. -// -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -physical_power_postfloorplan -* -Perform physical analysis of the design block and generate the timing optimized design DB. -* -This goal performs Early Physical Analysis of the design and generates the timing-optimized design DB. This DB can be used to correctly estimate design power. -Design inputs required for physical analysis are - - i) Design RTL - ii) Library .lib & .lef - iii) SDC constraints - -The physical constraints for SpyGlass Physical Analysis can be specified in either of the following two formats: - - i) User-specified DEF file: - - - Block size & aspect ratio - - Pin placement (optional) - - Hard-macro pre-placements (optional) - - Placement or Routing Blockages (optional) - - ii) User-specified parameters - - - Block height & width - - Block utilization and aspect ratio - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - --mixed --policy=physical --physical_mode --enable_pgnetlist --policy=power_est -//-rule PHY_PhysicalSummary_FP -//-rule PHY_Timing_FP -//-rule PHY_CongestionMap_FP -//-rule PHY_Reports -//-rule PHY_Dashboard --rule sgdc2sdc --phy_vt_value=high --phy_preserve_vt=false --enable_physical_aware_pe --phy_enable_macro_flattening=true -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/physical_power_postfloorplan_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/physical_power_postfloorplan_setup.sgs deleted file mode 100644 index e1ae7b3..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/physical_power_postfloorplan_setup.sgs +++ /dev/null @@ -1,204 +0,0 @@ -########################################################################## -# SpyGlass Physical Methodology -# -# Version: 0.1 -# -# Revision History: -# Ver Date Comments -# 0.1 16-Feb-2010 Initial Draft -# 1.1 02-Sep-2010 Support for honoring preset params from prj file -# 1.2 07-Sep-2010 Updated to correctly handle VI 47531 -# -# Copyright Synopsys Inc, 2010. All rights reserved. -########################################################################## -# This is the SGS script to setup PHYSICAL ANALYSIS POSTFLOORPLAN -########################################################################## - -if {[info exists env(SPYGLASS_PHYSICAL_HOME)] != 0} { - set MY_ENV_SGP_PATH $env(SPYGLASS_PHYSICAL_HOME)/common/sgphysical -} elseif {[info exists env(BP_HOME)] != 0} { - if {[file exists $env(BP_HOME)/sgphysical] != 0} { - set MY_ENV_SGP_PATH $env(BP_HOME)/sgphysical - } else { - set MY_ENV_SGP_PATH $env(BP_HOME)/../../common/sgphysical - } -} else { - return -code error "SPYGLASS_PHYSICAL_HOME/BP_HOME not set" -} - -########################################################################## -# Register Variables to be used in the script here -# All variables pick up their default value from corresponding parameter defaults (if applicable) -# The value "SGS_Unset" is just a dummy value -########################################################################## -# Variable to set path to user-specified technology library -register_variable Q_USER_TECHPATH "SGS_Unset" - -# Variable to set path to user-specified SDC file -register_variable Q_USER_SDCFILE "SGS_Unset" - -# Variable to check how user would like to specify the FP constraints -register_variable Q_USER_FP_CHOICE "None" - -register_variable Q_USER_DEFFILE "SGS_Unset" -register_variable Q_USER_BLOCKUTIL "SGS_Unset" -register_variable Q_USER_STDCELLUTIL "SGS_Unset" -register_variable Q_USER_ASPECTR "SGS_Unset" - -# Variable to check how user would like to specify the FP constraints -#register_variable Q_USER_PE_CHOICE "Do not generate power report" - -#register_variable Q_USER_PE_FLAG "SGS_Unset" -#register_variable Q_USER_PE_ACTIVITY "SGS_Unset" -#register_variable Q_USER_PE_PROB "SGS_Unset" -#register_variable Q_USER_PE_FILENAME "SGS_Unset" -#register_variable Q_USER_PE_FILETYPE "SGS_Unset" -#register_variable Q_USER_PE_TOPMODULE "SGS_Unset" -#register_variable Q_USER_PE_STARTTIME "SGS_Unset" -#register_variable Q_USER_PE_ENDTIME "SGS_Unset" - -########################################################################## -# Initialize from Project settings -########################################################################## - -get_property console.parameterValue phy_tech_path -result_variable Q_USER_TECHPATH -get_property console.parameterValue phy_sdc -result_variable Q_USER_SDCFILE - -get_property console.parameterValue phy_def_file -result_variable Q_USER_DEFFILE -get_property console.parameterValue phy_aspect_ratio -result_variable Q_USER_ASPECTR -get_property console.parameterValue phy_block_utilization -result_variable Q_USER_BLOCKUTIL -get_property console.parameterValue phy_std_cell_utilization -result_variable Q_USER_STDCELLUTIL - -#get_property console.parameterValue phy_pi_activity -result_variable Q_USER_PE_ACTIVITY -#get_property console.parameterValue phy_pi_probability -result_variable Q_USER_PE_PROB -#get_property console.parameterValue phy_sim_data_file -result_variable Q_USER_PE_FILENAME -#get_property console.parameterValue phy_sim_file_type -result_variable Q_USER_PE_FILETYPE -#get_property console.parameterValue phy_sim_top_module -result_variable Q_USER_PE_TOPMODULE -#get_property console.parameterValue phy_sim_start_time -result_variable Q_USER_PE_STARTTIME -#get_property console.parameterValue phy_sim_end_time -result_variable Q_USER_PE_ENDTIME - -########################################################################## -########################################################################## - -set_property -step_header "Introduction" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -set_property -hide_step_numbering - -create_form -label "PAPR_INTRODUCTION" { - show_html $MY_ENV_SGP_PATH/templates/html/pppf_1_introduction.htm -} -set_header_state "Introduction" complete - -########################################################################## -set_property -step_header "Select Technology Library" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PAPR_SELECT_TECH" { - get_dir -text "Specify Technology Library" -type {"sgp_tech directory" "*"} -result_variable Q_USER_TECHPATH -geometry { -side bottom } - show_html $MY_ENV_SGP_PATH/templates/html/pppf_2_select_techlib.htm -geometry { -side bottom } -} -set_parameters_value {phy_tech_path get_variable $Q_USER_TECHPATH} -set_header_state "Select Technology Library" complete - -########################################################################## -set_property -step_header "Select SDC file" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PAPR_SELECT_SDC" { - get_file -text "Select SDC file" -type {"SDC File" "*.sdc"} -fileExt { "SDC File" "*.sdc" } -allow_multiple -result_variable Q_USER_SDCFILE -geometry { -side bottom } - show_html $MY_ENV_SGP_PATH/templates/html/pppf_3_select_sdc.htm -geometry { -side bottom } -} -set_parameters_value {phy_sdc get_variable $Q_USER_SDCFILE} -set_header_state "Select SDC file" complete - -########################################################################## -set_property -step_header "Specify FP constraints" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -create_form -label "PAPR_SET_FP_CONSTR" { - get_choice -text "Select how you would like to specify FP contraints" -list {"None" "DEF Input" "Block Utilization" "Std. cell Utilization"} -result_variable Q_USER_FP_CHOICE -geometry { -side bottom } - show_html $MY_ENV_SGP_PATH/templates/html/pppf_4_select_fp1.htm -geometry { -side bottom } -} -sgsIf { $Q_USER_FP_CHOICE == "None" } { - show_text "You have selected Default FP Initialization method which is 70 percent std. cell utilization. Please Click Next to proceed." - set_parameters_value {phy_std_cell_utilization "70.0"} - set_parameters_value {phy_aspect_ratio "1.0"} - set_parameters_value {phy_def_file "NULL"} - set_parameters_value {phy_block_utilization "NULL"} -} -sgsIf { $Q_USER_FP_CHOICE == "DEF Input" } { - create_form -label "FP_DEFFILE" { - get_file -text "Select DEF file: " -type {"DEF File" "*"} -result_variable Q_USER_DEFFILE -geometry { -side bottom } - show_text "You have selected FP Initialization by input DEF file. Please select DEF file:" -geometry { -side bottom } - } - set_parameters_value {phy_def_file get_variable $Q_USER_DEFFILE} - set_parameters_value {phy_std_cell_utilization "NULL"} - set_parameters_value {phy_block_utilization "NULL"} -} -sgsIf { $Q_USER_FP_CHOICE == "Block Utilization" } { - create_form -label "FP_BLOCKUTIL" { - get_string -text "Specify Block Aspect Ratio (Width/Height)" -result_variable Q_USER_ASPECTR -geometry { -side bottom } - get_string -text "Specify Block Utilization percentage (range 1-99)" -result_variable Q_USER_BLOCKUTIL -geometry { -side bottom } - show_text "You have selected FP Initialization based on user-specified Block utilization and aspect ratio" -geometry { -side bottom } - } - set_parameters_value {phy_block_utilization get_variable $Q_USER_BLOCKUTIL} - set_parameters_value {phy_aspect_ratio get_variable $Q_USER_ASPECTR} - set_parameters_value {phy_def_file "NULL"} - set_parameters_value {phy_std_cell_utilization "NULL"} -} -sgsIf { $Q_USER_FP_CHOICE == "Std. cell Utilization" } { - create_form -label "FP_STDCELLUTIL" { - get_string -text "Specify Block Aspect Ratio (Width/Height)" -result_variable Q_USER_ASPECTR -geometry { -side bottom } - get_string -text "Specify Std. Cell Utilization percentage (range 1-99)" -result_variable Q_USER_STDCELLUTIL -geometry { -side bottom } - show_text "You have selected FP Initialization based on user-specified Std. Cell utilization and aspect ratio" -geometry { -side bottom } - } - set_parameters_value {phy_std_cell_utilization get_variable $Q_USER_STDCELLUTIL} - set_parameters_value {phy_aspect_ratio get_variable $Q_USER_ASPECTR} - set_parameters_value {phy_def_file "NULL"} - set_parameters_value {phy_block_utilization "NULL"} -} -set_header_state "Specify FP constraints" complete - -########################################################################## -#set_property -step_header "Specify Power-est Setup" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -#create_form -label "PAPR_SET_PE_CONSTR" { - #get_choice -text "Select how you would like to specify Power-est setup" -list {"Default Prob. model" "FSDB/VCD input" "Do not generate power report"} -result_variable Q_USER_PE_CHOICE -geometry { -side bottom } - #show_html $MY_ENV_SGP_PATH/templates/html/pppf_5_setup_powerest.htm -geometry { -side bottom } -#} -#sgsIf { $Q_USER_PE_CHOICE == "Default Prob. model" } { - #create_form -label "PE_PROB" { - #get_string -text "Specify PROBABILITY for primary inputs (range 0.0-1.0)" -result_variable Q_USER_PE_PROB -geometry { -side bottom } - #get_string -text "Specify ACTIVITY for primary inputs (range 0.0-1.0)" -result_variable Q_USER_PE_ACTIVITY -geometry { -side bottom } - #show_text "You have selected Power-est based on default activity & probability specification on primary inputs." -geometry { -side bottom } - #} - #sgsSet Q_USER_PE_FLAG "true" - #set_parameters_value {phy_pi_activity get_variable $Q_USER_PE_ACTIVITY} - #set_parameters_value {phy_pi_probability get_variable $Q_USER_PE_PROB} - #set_parameters_value {phy_sim_data_file "NULL"} -#} -#sgsIf { $Q_USER_PE_CHOICE == "FSDB/VCD input" } { - #create_form -label "PE_FSDB" { - #get_string -text "Specify End time for activity data in FSDB/VCD" -result_variable Q_USER_PE_ENDTIME -geometry { -side bottom } - #get_string -text "Specify Start time for activity data in FSDB/VCD" -result_variable Q_USER_PE_STARTTIME -geometry { -side bottom } - #get_string -text "Specify module path name in FSDB/VCD file" -result_variable Q_USER_PE_TOPMODULE -geometry { -side bottom } - #get_choice -text "Select file type" -list {"FSDB" "VCD"} -result_variable Q_USER_PE_FILETYPE -buttons -geometry { -side bottom } - #get_file -text "Select FSDB/VCD file" -type {"FSDB/VCD File" "*"} -result_variable Q_USER_PE_FILENAME -geometry { -side bottom } - #show_text "You have selected Power-est based on activity data from user-input FSDB/VCD file" -geometry { -side bottom } - #} - #sgsSet Q_USER_PE_FLAG "true" - #set_parameters_value {phy_sim_data_file get_variable $Q_USER_PE_FILENAME} - #set_parameters_value {phy_sim_file_type get_variable $Q_USER_PE_FILETYPE} - #set_parameters_value {phy_sim_top_module get_variable $Q_USER_PE_TOPMODULE} - #set_parameters_value {phy_sim_start_time get_variable $Q_USER_PE_STARTTIME} - #set_parameters_value {phy_sim_end_time get_variable $Q_USER_PE_ENDTIME} -#} -#sgsIf { $Q_USER_PE_CHOICE == "Do not generate power report" } { - #show_text "You have selected NOT to report power-est sections in the physical summary report." - #sgsSet Q_USER_PE_FLAG "false" -#} -#set_parameters_value {phy_power_metric_report get_variable $Q_USER_PE_FLAG} -#set_header_state "Specify Power-est Setup" complete -# -########################################################################## -########################################################################## - -set_property -step_header "Setup Complete" -hide_label -show_index -enable_next_button -hide_quality_bar -show_progress_bar -set_header_state "Setup Complete" complete -create_form -label "PAPR_Completed" { - set_parameters {phy_tech_path phy_sdc phy_def_file phy_optimization_effort phy_enable_hbo phy_blackbox_models_tcl_file phy_dont_use_cell_list phy_def_file phy_def_out_file phy_block_utilization phy_std_cell_utilization phy_aspect_ratio } -geometry { -side bottom } - show_text "Setup is successfully completed. You may review final parameter values as below." -} - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/power_est_average.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/power_est_average.spq deleted file mode 100644 index 6c53cc2..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/power_est_average.spq +++ /dev/null @@ -1,34 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_est_average -// Version: 1.1 -// -// Revision History: -// Ver Date Comments -// 1.0 01-jul-2008 For Spyglass 4.1 release -// 1.1 15-may-2009 For Spyglass 4.3 release -// -// Copyright Synopsys Inc, 2008. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_est_average mixed -* -Estimates the average power of the design -* -This goal estimates the average power of the design. You can -supply the power data for standard cells in a sglib file. You -can supply the activity data with a file such as VCD, FSDB or -SAIF, or for an early estimate, by giving activity values for -clocks and other key nets. -=cut+++++++++++ - --mixed --policy=power_est --rules PEPWR02 --rules poweraudit --enable_physical_aware_pe ---flat_disable_remove_rtlc_buffer -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/power_est_average_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/power_est_average_debug_help.htm deleted file mode 100644 index 79e7d98..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/power_est_average_debug_help.htm +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - power_est_average - - - - - - - - - - - - - -


    - -
    -

    -power_est_average -

    -

    -This goal produces a report of the average power estimation. The power browser displays the power in a graphical form. To see this, select the PEPWR02 rule in the message tree and double click on it. The pe_summary.rpt report file contains the same overall power information as the graphical browser. It has several sections, including a summary, hierarchical power, clock power, and memory power. -

    -

    -The pe_design_stats.rpt report file contains information about the number of registers and combnational gates in the design; it also contains information about cells without power models. Several other reports are generated. For details, please see the Power Estimation Reports section of the Power Estimation Rule Reference Guide. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_1_introduction.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_1_introduction.htm deleted file mode 100644 index 9bd14e9..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_1_introduction.htm +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - -
    - -

    Introduction

    - -

    - This template performs Early Physical Analysis of the design and generates the timing-optimized design DB. This DB can be used to correctly estimate design power. - The following input is required from user: -

    - -

    1.    -Select Technology Library

    - -

    2.    -Select SDC file

    - -

    3.    -Specify Floorplanning Constraints (Optional)

    - - -

    Please Click Next to proceed.

    - -

     

    - -
    - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_2_select_techlib.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_2_select_techlib.htm deleted file mode 100644 index 68c47e9..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_2_select_techlib.htm +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - -
    - -

    1. Select Technology

    - -

    - This template requires a technology library to be selected for physical analysis. This template does not support a generic library. hence, user must specify a precompiled technology library in order to run this template. -

    - -

       -

    - -

    Please select technology library, then Click Next to proceed.

    - -

     

    - -
    - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_3_select_sdc.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_3_select_sdc.htm deleted file mode 100644 index 08577ef..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_3_select_sdc.htm +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - -
    - -

    2. Select SDC File

    - -

    - This template requires an SDC file, that defines following design information: -

    - -

    A)    -Clock definitions, defining all clocks and their frequency

    - -

    B)    -Input and Output port delays (Recommended, but not mandatory)

    - -

    C)    -Timing Exceptions (Recommended, but not mandatory)

    - -

     

    - -

    Please select SDC file using File Browser button.

    - -

     

    - -
    - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_4_select_fp1.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_4_select_fp1.htm deleted file mode 100644 index 72086f6..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_4_select_fp1.htm +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - -
    - -

    3. Select Floorplanning method

    - -

    - This template allows user to optionally specify FP constraints to control the floorplan method. Available choices are: -

    - -

    1)    -None - software defaults to 70 percent standard cell utilization, and square aspect ratio.

    - -

    2)    -DEF file - input by user

    - -

    3)    -Block utilization and aspect ratio - input by user

    - -

    4)    -Std. cell utilization and aspect ratio - input by user

    - -

     

    - -

    Please select the FP method you would like to use:

    - -

     

    - -
    - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_5_setup_powerest.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_5_setup_powerest.htm deleted file mode 100644 index d23a9c5..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/pppf_5_setup_powerest.htm +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - -
    - -

    4. Select model or data for Power-Estimation report generation:

    - -

    - This template allows you to select one of the following options: -

    - -

    1)    -Generate power-estimate report based on statistical primary input activity

    - -

    2)    -Generate power-estimate report based on input VCD or FSDB file (Recommended method)

    - -

    3)    -Do not generate power-estimate report (Default method)

    - -

     

    - -

    Please select the Power-estimation method you would like to use:

    - -

     

    - -
    - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/regression_run.tcl b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/regression_run.tcl deleted file mode 100644 index a9d32c4..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/physical_aware_power/regression_run.tcl +++ /dev/null @@ -1 +0,0 @@ -define_regression physical_aware_power_est -goals { physical_power_postfloorplan power_est_average } diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/.submethodology_help deleted file mode 100644 index 387c47c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/.submethodology_help +++ /dev/null @@ -1 +0,0 @@ -Expand to select the recommended goals for power estimation and reduction. The goals are applicable to the RTL stage of design. diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check.spq deleted file mode 100644 index 75cfd04..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check.spq +++ /dev/null @@ -1,44 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_activity_check -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.1.0 Initial version -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_activity_check mixed -* -Performs activity analysis -* -This goal analyzes activity for a simulation testbench. For -simulation data such as VCD or FSDB, it produces a graph of -activity over time. -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PESAE04 //Reports activity captured by simulation file for the design. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check_debug_help.htm deleted file mode 100644 index a47307b..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_activity_check - - - - - - - - - - - - - -
    - -
    -

    -power_activity_check -

    -

    -This goal displays a graph of activity over time for the selected simulation database. Select the PESAE04 rule in the message tree, open it, and double click on the message to view the graph browser. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check_setup.sgs deleted file mode 100644 index 68934ac..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_activity_check_setup.sgs +++ /dev/null @@ -1,34 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 24-Jun-2009 For Spyglass 4.3 release -# -# Copyright Synopsys Inc, 2009. All rights reserved. -########################################################################## - -register_variable ACTCHECK_SGDC "$PRJFILES_DIR/actcheck.sgdc" -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress - -# Introduction -set_property -step_header "Introduction" -enable_next_button -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_activity_check.htm -set_header_state "Introduction" complete - -# Instance list -set_property -step_header "Specify Instances" -enable_next_button -set_constraints2 {instance_trace} -sgdcFile {get_variable $ACTCHECK_SGDC} -hidden_fields {instance_trace:-clock} -sgdcTag "ACTCHECK_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/instance_trace.htm -set_header_state "Specify Instances" complete - -# Activity file -set_property -step_header "Specify Activity File" -enable_next_button -set_constraints2 {activity_data} -sgdcFile {get_variable $ACTCHECK_SGDC} -hidden_fields {activity_data:-weight,-sim_topname,-instname,-sim_rtl_design_nl,-mode,-use} -sgdcTag "ACTCHECK_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/activity_data.htm -set_header_state "Specify Activity File" complete - -# Closure -set_property -step_header "Setup Closure" -enable_next_button -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs -set_header_state "Setup Closure" complete - -set_sgdc_state -enable $ACTCHECK_SGDC diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd.htm deleted file mode 100644 index fb6f6bb..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd.htm +++ /dev/null @@ -1,666 +0,0 @@ - - - - - - - - - - - - - - - - - - - -
    - -

    Introduction

    - -

    This goal performs activity trigger detection for several -instances of the design. It computes activity over time for each instance and -detects the most significant activity events. It also reports trigger signals -for those events which are found by statistical analysis of the simulation -trace.

    - -

    By default the top most instances of the design are -analyzed, and two parameters are available:

    - -

    -          -pe_atd_max_num_modules_to_report: -defines the maximum number of instances which are analyzed

    - -

    -          -pe_atd_min_module_size: -defines the minimal size of a module to be analyzed (in terms of the number of its -leaf instances)

    - -

    If you wish to manually specify the instances, use next to -create the instance_trace constraint which can be set -in this screen. The activity trigger detection is performed from activity data -in VCD or FSDB format. Use the second screen to create the activity_data -constraint to specify the filename, format, and optionally the start and end -times.

    - -
    - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd.spq deleted file mode 100644 index 025e175..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd.spq +++ /dev/null @@ -1,48 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_atd -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 16-Apr-2015 5.5.0 Initial version -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_atd mixed -* -Performs activity trigger detection -* -This goal analyzes activity for a simulation file. -It detects and reports signals which trigger significant activity change in the design -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEATD01 // activity trigger detection - --pe_atd_min_module_size=50 --pe_atd_enable_surge_detection=yes --pe_atd_enable_glitch_detection=yes --pe_atd_idle_filter_size=5 - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd_debug_help.htm deleted file mode 100644 index 736f572..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd_debug_help.htm +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - power_activity_check - - - - - - - - - - - - - -
    - -
    -

    -power_atd -

    -

    -This goal performs activity trigger detection. It analyses a simulation file and detects signals which trigger significant changes in the design. -Three types of activity events are considered: idle/non-idle changes, -activity up/down surges, and glitches (abrupt and short loss of activity). -The analysis is performed for each instance or a specific set of instances specified through the instance_trace sgdc command. -Signals which are highly correlated to the detected activity events are reported. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd_setup.sgs deleted file mode 100644 index d999bf4..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_atd_setup.sgs +++ /dev/null @@ -1,34 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 24-Jun-2009 For Spyglass 4.3 release -# -# Copyright Synopsys Inc, 2009. All rights reserved. -########################################################################## - -register_variable ATDCHECK_SGDC "$PRJFILES_DIR/atdcheck.sgdc" -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress - -# Introduction -set_property -step_header "Introduction" -enable_next_button -show_html $SPYGLASS_HOME/GuideWare3.0-EarlyAdopter/block/rtl_handoff/power/power_atd.htm -set_header_state "Introduction" complete - -# Instance list -set_property -step_header "Specify Instances" -enable_next_button -set_constraints2 {instance_trace} -sgdcFile {get_variable $ATDCHECK_SGDC} -hidden_fields {instance_trace:-clock} -sgdcTag "ATDCHECK_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/instance_trace.htm -set_header_state "Specify Instances" complete - -# Activity file -set_property -step_header "Specify Activity File" -enable_next_button -set_constraints2 {activity_data} -sgdcFile {get_variable $ATDCHECK_SGDC} -hidden_fields {activity_data:-weight,-sim_topname,-instname,-sim_rtl_design_nl,-mode,-use} -sgdcTag "ATDCHECK_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/activity_data.htm -set_header_state "Specify Activity File" complete - -# Closure -set_property -step_header "Setup Closure" -enable_next_button -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs -set_header_state "Setup Closure" complete - -set_sgdc_state -enable $ATDCHECK_SGDC diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit.spq deleted file mode 100644 index 3824720..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit.spq +++ /dev/null @@ -1,50 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_audit -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.1.0 Initial version -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_audit mixed -* -Performs audit check on the inputs for power estimation -* -This goal performs an audit of the design to list the key -parameters that will be used in a power estimation. While -running this goal, the input parameters, simulation -information, technology libraries etc should be the same as what -will be used for the actual power estimation run. This goal -will create a pe_audit report that will have the detailed report -of how power estimation will comprehend the various inputs. -Please review this report and make sure that it is in sync with -the expectations. -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules poweraudit //Generates audit reports for Power estimation rules - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit_debug_help.htm deleted file mode 100644 index 4e0dce7..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_audit - - - - - - - - - - - - - -
    - -
    -

    -power_audit -

    -

    -This goal helps to ensure that the library and design data is set up correctly before running power estimation. Select the power audit report in the report menu. Please see the Power Methodology Guide, section 5.4 for details on what to review. In particular, this report will help you to find cells with missing power models, two dimensional array nets which are not annotated in the simulation data, and other possible power estimation problems. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit_setup.sgs deleted file mode 100644 index 20c9336..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_audit_setup.sgs +++ /dev/null @@ -1,50 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 18-Aug-2008 For Spyglass 4.1 release -# 1.1 24-Jun-2009 For Spyglass 4.3 release -# -# Copyright Synopsys Inc, 2008. All rights reserved. -########################################################################## - -register_variable POWEREST_SGDC "$PRJFILES_DIR/powerest.sgdc" -source $SPYGLASS_HOME/auxi/common_setup/init_central.sgs -register_variable USE_BBOX_RESOLUTION 1 -register_variable USE_DESIGN_CLOCKS 1 -source $SPYGLASS_HOME/auxi/common_setup/get_central_status.sgs -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress - -# Introduction -set_property -step_header "Introduction" -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_audit.htm -set_header_state "Introduction" complete - -# Common setup -sgsSet STATUS {get_variable_global {$BBOX_RESOLUTION}} -sgsIf { $STATUS != 1} { - source $SPYGLASS_HOME/auxi/common_setup/bb_resolution/bb_resolution.sgs -} -sgsSet STATUS {get_variable_global {$DESIGN_CLOCKS}} -sgsIf { $STATUS != 1} { - source $SPYGLASS_HOME/.Methodology/Clock-reset/CDC-Setup-Manager/CDC_Setup_Manager_clock_setup.sgs -} -source $SPYGLASS_HOME/auxi/common_setup/power/power_bbox_setup.sgs - -# Activity file -set_property -step_header "Specify Activity File" -enable_next_button -set_constraints2 {activity_data} -sgdcFile {get_variable $POWEREST_SGDC} -hidden_fields {activity_data:-weight,-sim_topname,-instname,-sim_rtl_design_nl,-mode,-use} -sgdcTag "POWEREST_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/activity_data.htm -set_header_state "Specify Activity File" complete - -# VT mix percentage -set_property -step_header "Specify VT Mix" -set_constraints2 {vt_mix_percentage} -sgdcFile {get_variable $POWEREST_SGDC} -sgdcTag "POWEREST_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/vt_mix_percentage.htm -set_header_state "Specify VT Mix" complete - -# Closure -set_property -step_header "Setup Closure" -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs -set_header_state "Setup Closure" complete - -set_sgdc_state -enable $POWEREST_SGDC diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_calibration.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_calibration.spq deleted file mode 100644 index b808c02..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_calibration.spq +++ /dev/null @@ -1,63 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// power_calibration -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 13-Jun-2014 5.3.0 Initial version -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_calibration mixed -* -Generates the calibration data -* -This goal generates calibration data. It generates the sgdc file showing the -percentage cell allocation and percentage distribution of vt_mix in current -design. It generates the clock buffer information from the netlist design and -generates a sgdc file. It also creates a wireload based on input design and -corresponding SPEF file -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --pe_generate_calibration_data=all //configures which all calibration data is to be generated - --pe_calibration_data_dir=./sg_calibration_data //Specify the directory path where the calibration data should be generated - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - - --rules PEVTDIST //Generates the sgdc constraints showing percentage distribution of vt_mix in current design - --rules PECLKTREE //Generates the clock buffer information from the netlist design - --rules PECELLDIST //Generates the sgdc constraints showing the percentage cell allocation in current design - --rules PECWL //creates wireload based on input design and corresponding SPEF file - --rules PESLEWEXTRACT //Extracts the default slew from the design. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_calibration_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_calibration_debug_help.htm deleted file mode 100644 index b93f65f..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_calibration_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_calibration - - - - - - - - - - - - - -
    - -
    -

    -power_calibration -

    -

    -This goal generates calibration data. It generates the sgdc file showing the percentage cell allocation and percentage distribution of vt_mix in current design. It generates the clock buffer information from the netlist design and generates a sgdc file. It also creates a wireload based on input design and corresponding SPEF file -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling.spq deleted file mode 100644 index 5a4cab2..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling.spq +++ /dev/null @@ -1,75 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : power_cge_profiling -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Nov-2016 2017.03 Initial version -// -// Copyright Synopsys Inc, 2016. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_cge_profiling mixed -* -Locates opportunities for power reduction using advanced techniques and reports power savings from these opportunities -This goal enables fsdb trace for PR opportunities and D^Q enable. -* -Locates opportunities for power reduction using advanced -techniques and reports power savings from these -opportunites. For registers that do not have any -enable, this goal finds new enables. For the registers -that already has an enable, this goal finds stronger enables -that will switch off the clock for a larger duration than -the original enable. Additionally this goal estimates -power savings when a memory in design is replaced with an -equivalent half size memory or an equivalent quarter size memory. -=cut++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - --rme_active2 //RTL modification status - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --pe_ignore_clock_xor=1 //This flag is used to enable/disable the handling of Xor gate in clock path while searching for ICG - --pe_enable_fsdb_trace=1 - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPWR18 //Estimates power savings when a memory in design is replaced with an equivalent half size memory or an equivalent quarter size memory. - --rules PEPWR13 //Generates the report for power savings of non gated flops in the design - --rules PEPWR06 //Reports module wise summary of the clock gating enables in the design and their effectiveness. - --rules poweraudit //Generates audit reports for Power estimation rules - --rules PEPWR20 //Finds new clock gating opportunities by ODC(observability don't care) technique and estimates the power savings. - --rules PEPWR21 //Finds new clock gating opportunities by STC(Stability Condition) technique and estimates the power savings. - --rules PEPWR22 //Finds better enable using ODC techniques for registers that are already gated and estimates the power savings. - --rules PEPWR23 //Finds better enable using STC techniques for registers that are already gated and estimates the power savings. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling_est.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling_est.spq deleted file mode 100644 index eadf6ed..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling_est.spq +++ /dev/null @@ -1,61 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_cge_profiling_est -// Version: 1.0 -// -// Revision History: -// Ver Date Comments -// 1.0 21-jul-2014 For Spyglass 5.3.0.2 release -// -// Copyright Synopsys Inc, 2014. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_cge_profiling_est mixed -* -Estimates the average power of the design and reports various power components and activity profiling information -This goal also enables fsdb trace for potential clock gating opportunities -* -Estimates the average power of the design and reports various power components and activity profiling information -=cut+++++++++++ - - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - --pe_run_profiling=1 //Controls the license usage for availability of profiling information during the power estimation runs - --pe_enable_fsdb_trace=1 - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPWR02 //Estimates the leakage, switching and internal powers dissipated during the complete period for the design using activity analysis - --rules PEPWR03 //Estimates power savings when clock gating is implemented to replace data-muxing controlled by enable signal for flip-flops - --rules PEPWR05 //Estimates power savings due to existing clock gatings. - --rules PEPWR06 //Reports module wise summary of the clock gating enables in the design and their effectiveness. - --rules PESTR26 //Reports all the registers in the design along with their frequency information - --rules PESTR27 //Generates clock domain wise activity of the design. - --rules PESTR31 //Clock domain wise clock gating report - --rules poweraudit //Generates audit reports for Power estimation rules - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling_save.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling_save.spq deleted file mode 100644 index 37ad4fb..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_cge_profiling_save.spq +++ /dev/null @@ -1,46 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : power_cge_profiling_save -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 19-Sep-2017 2017.03 Initial version -// -// Copyright Synopsys Inc, 2016. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_cge_profiling_save mixed -* -Saves design database compatible with power_cge_profiling without running any flat rules -* -Saves design database compatible with power_cge_profiling without running any flat rules -=cut++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ --pe_sim_minclk=1 ---exit_on_save --pe_enable_fsdb_trace=1 -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ --rules PEPWR20 //Finds new clock gating opportunities by ODC(observability don't care) technique and estimates the power savings. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average.spq deleted file mode 100644 index 82c534e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average.spq +++ /dev/null @@ -1,48 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_est_average -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.1.0 Initial version -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_est_average mixed -* -Estimates the average power of the design -* -This goal estimates the average power of the design. You can -supply the power data for standard cells in a sglib file. You -can supply the activity data with a file such as VCD, FSDB or -SAIF, or for an early estimate, by giving activity values for -clocks and other key nets. -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules poweraudit //Generates audit reports for Power estimation rules. - --rules PEPWR02 //Estimates the leakage, switching and internal powers dissipated during the complete period for the design using activity analysis. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average_debug_help.htm deleted file mode 100644 index 79e7d98..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average_debug_help.htm +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - power_est_average - - - - - - - - - - - - - -
    - -
    -

    -power_est_average -

    -

    -This goal produces a report of the average power estimation. The power browser displays the power in a graphical form. To see this, select the PEPWR02 rule in the message tree and double click on it. The pe_summary.rpt report file contains the same overall power information as the graphical browser. It has several sections, including a summary, hierarchical power, clock power, and memory power. -

    -

    -The pe_design_stats.rpt report file contains information about the number of registers and combnational gates in the design; it also contains information about cells without power models. Several other reports are generated. For details, please see the Power Estimation Reports section of the Power Estimation Rule Reference Guide. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average_setup.sgs deleted file mode 100644 index 04acf6e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_average_setup.sgs +++ /dev/null @@ -1,50 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 18-Aug-2008 For Spyglass 4.1 release -# 1.1 24-Jun-2009 For Spyglass 4.3 release -# -# Copyright Synopsys Inc, 2008. All rights reserved. -########################################################################## - -register_variable POWEREST_SGDC "$PRJFILES_DIR/powerest.sgdc" -source $SPYGLASS_HOME/auxi/common_setup/init_central.sgs -register_variable USE_BBOX_RESOLUTION 1 -register_variable USE_DESIGN_CLOCKS 1 -source $SPYGLASS_HOME/auxi/common_setup/get_central_status.sgs -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress - -# Introduction -set_property -step_header "Introduction" -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_est_average.htm -set_header_state "Introduction" complete - -# Common setup -sgsSet STATUS {get_variable_global {$BBOX_RESOLUTION}} -sgsIf { $STATUS != 1} { - source $SPYGLASS_HOME/auxi/common_setup/bb_resolution/bb_resolution.sgs -} -sgsSet STATUS {get_variable_global {$DESIGN_CLOCKS}} -sgsIf { $STATUS != 1} { - source $SPYGLASS_HOME/.Methodology/Clock-reset/CDC-Setup-Manager/CDC_Setup_Manager_clock_setup.sgs -} -source $SPYGLASS_HOME/auxi/common_setup/power/power_bbox_setup.sgs - -# Activity file -set_property -step_header "Specify Activity File" -enable_next_button -set_constraints2 {activity_data} -sgdcFile {get_variable $POWEREST_SGDC} -hidden_fields {activity_data:-weight,-sim_topname,-instname,-sim_rtl_design_nl,-mode,-use} -sgdcTag "POWEREST_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/activity_data.htm -set_header_state "Specify Activity File" complete - -# VT mix percentage -set_property -step_header "Specify VT Mix" -set_constraints2 {vt_mix_percentage} -sgdcFile {get_variable $POWEREST_SGDC} -sgdcTag "POWEREST_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/vt_mix_percentage.htm -set_header_state "Specify VT Mix" complete - -# Closure -set_property -step_header "Setup Closure" -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs -set_header_state "Setup Closure" complete - -set_sgdc_state -enable $POWEREST_SGDC diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_profiling.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_profiling.spq deleted file mode 100644 index 36dce8e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_profiling.spq +++ /dev/null @@ -1,58 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_est_profiling -// Version: 1.0 -// -// Revision History: -// Ver Date Comments -// 1.0 21-jul-2014 For Spyglass 5.3.0.2 release -// -// Copyright Synopsys Inc, 2014. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_est_profiling mixed -* -Estimates the average power of the design and reports various power components and activity profiling information -* -Estimates the average power of the design and reports various power components and activity profiling information -=cut+++++++++++ - - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - --pe_run_profiling=1 //Controls the license usage for availability of profiling information during the power estimation runs - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPWR02 //Estimates the leakage, switching and internal powers dissipated during the complete period for the design using activity analysis - --rules PEPWR03 //Estimates power savings when clock gating is implemented to replace data-muxing controlled by enable signal for flip-flops - --rules PEPWR05 //Estimates power savings due to existing clock gatings. - --rules PEPWR06 //Reports module wise summary of the clock gating enables in the design and their effectiveness. - --rules PESTR26 //Reports all the registers in the design along with their frequency information - --rules PESTR27 //Generates clock domain wise activity of the design. - --rules PESTR31 //Clock domain wise clock gating report - --rules poweraudit //Generates audit reports for Power estimation rules - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_profiling_save.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_profiling_save.spq deleted file mode 100644 index fdaad04..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_est_profiling_save.spq +++ /dev/null @@ -1,46 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_est_profiling_save -// Version: 1.0 -// -// Revision History: -// Ver Date Comments -// 1.0 19-Sep-2017 For Spyglass 17.03-SP2-1 release -// -// Copyright Synopsys Inc, 2016. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_est_profiling_save mixed -* -Saves design database compatible with power_est_profiling without running any flat rules -* -Saves design database compatible with power_est_profiling without running any flat rules -=cut++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ --pe_sim_minclk=1 ---exit_on_save - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ --rules PEPWR02 //Estimates the leakage, switching and internal powers dissipated during the complete period for the design using activity analysis - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_factor_conditions.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_factor_conditions.spq deleted file mode 100644 index fbf8837..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_factor_conditions.spq +++ /dev/null @@ -1,49 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass EarlyAdopter Goal File -// -// Goal Name : power_factor_conditions -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 27-Oct-2017 2017.03-SP2-2 Initial version -// -// Copyright Synopsys, 2017. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_factor_conditions mixed -* -Extract cell when conditions from libs. -* -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --pe_wtc_mem_conditions=1 - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEMEMCOND --rules PECHECK04 - - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_factor_values.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_factor_values.spq deleted file mode 100644 index 103b93e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_factor_values.spq +++ /dev/null @@ -1,47 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass EarlyAdopter Goal File -// -// Goal Name : power_factor_values -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 27-Oct-2017 2017.03-SP2-2 Initial version -// -// Copyright Synopsys, 2017. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_factor_values mixed -* -Generate weight model for all nets. -* -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --pe_toggle_activity_bucket_for_swave=1 - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPTAB01 - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify.spq deleted file mode 100644 index 9072036..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify.spq +++ /dev/null @@ -1,45 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_fix_verify -// Version: 1.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0 04-Apr-2015 5.5 Initial version -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_fix_verify mixed -* -Runs automatic RTL modification suggested by power reduction recommendations followed by sequential equivalence checking(SEC) on designs before and after modification. -* -Runs automatic RTL modification suggested by power reduction recommendations followed by sequential equivalence checking(SEC) on designs before and after modification. -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - --sgsyn_opt_file $SPYGLASS_HOME/GuideWare/latest/soc/rtl_handoff/power/red_opt.tcl //Configuration file for synthesis - --disallow_view_delete //To disable view deletion, required For RTL modification engine to work - --classic_mode //To run rules in CLASSIC synthesis mode --pe_generate_equiv_sim_file --pe_disable_goal_consolidation --pe_auto_infer_rme=1 --rme_active - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify_debug_help.htm deleted file mode 100644 index 080edfc..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_fix_verify - - - - - - - - - - - - - -
    - -
    -

    -power_fix_verify -

    -

    -This goal generates modified RTL after a power reduction run is completed and reports the status of each modification as reported by SEC. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify_setup.sgs deleted file mode 100644 index 6c78ebf..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_fix_verify_setup.sgs +++ /dev/null @@ -1,17 +0,0 @@ -set_property -show_index -set_property -hide_step_numbering - -set_property -step_header "Before You Start" -show_progress_bar -hide_quality_bar -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_fix_verify_bys.htm -set_header_state "Before You Start" complete - - -set_property -step_header "Set Parameters" -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_fix_verify_parameters.htm -set_parameters rme_selection -set_header_state "Set Parameters" complete - -set_property -step_header "Setup Closure" -show_text " Setup is complete and verified " -set_header_state "Setup Closure" complete - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_gen_pesd.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_gen_pesd.spq deleted file mode 100644 index 84c4cad..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_gen_pesd.spq +++ /dev/null @@ -1,53 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : power_gen_pesd -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 08-Jan-2015 5.4.1 Initial version -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_gen_pesd mixed -* -Generates the list of Power-Essential signals for power estimation -* -By extracting the Power-Essential signals in a design, this goal generates a -list of Power-Essential signals that can by used to reduce the simulation -data, with minimum loss in power estimation accuracy. -Power-Essential signals are crucial signals that identify key nodes, which -need to be annotated in the design. Tools used for power estimation can -subsequently propagate toggle rate and probability onto other signals with -minimal loss of accuracy. -Use this goal to reduce the size of simulation data represented in FSDB -format. -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commandus -//------------------------------------------------ - --mixed //Allow mixed language --classic_mode //Allow classic mode -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPESD01 -// The PEPESD01 rule generates a list of Power-Essential signals from the -//design, which must be captured during simulation to perform the power -//estimation with reasonable accuracy. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_guidance.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_guidance.spq deleted file mode 100644 index b226e74..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_guidance.spq +++ /dev/null @@ -1,58 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_guidance -// Version: 1.0 -// -// Revision History: -// Ver Date Comments -// 1.0 19-may-2014 For Spyglass 5.3 release - -// -// Copyright Synopsys Inc, 2014. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_guidance mixed -* -Performs high level micro-architectural analysis and reports on aspects of how flops are used in the design. -* -This goal creates various reports reporting information on the use of flops in the design and looking for higher level architectural power reductions. -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PESTR08 //Reports gated clocks that can be shared across the module boundaries. - --rules PESTR09 //Enable signal should be a state signal and latched in the inactive half of the clock cycle. - --rules PESTR10 //Flags cascaded gated clocks in the design. - --rules PESTR11 //Reports clock gating/Memory enable signals that are held at a constant value i.e. being tied high/low - --rules PESTR12 //Flags the gated clocks that may be further gated by power synthesis tools. - --rules PESTR32 //Flag a flop that is never idle and at-least one constant is assigned to it - --rules PRARITH01 //Detection and classification of operator groups with glitchy inputs. - --rules PRCOUNT01 //Detects and report signal that can be used to gate the counter - -//-rules PRFIFOS01 //Detection and classification of FIFOs. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction.spq deleted file mode 100644 index af4f33e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction.spq +++ /dev/null @@ -1,70 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power__mem_reduction -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 25-Nov-2013 5.2.0 Initial version -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_mem_reduction mixed -* -Reports power savings using memory power reduction techniques and register power reduction techniques. -* -Reports power savings using memory power reduction techniques and register power reduction techniques. -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - --rme_active2 //RTL modification status - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --pe_ignore_clock_xor=1 //This flag is used to enable/disable the handling of Xor gate in clock path while searching for ICG - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPWR06 //Reports module wise summary of the clock gating enables in the design and their effectiveness. - --rules PEPWR24 //Finds memory gating opportunities by STC(Stability Condition) technique and estimates the power savings. - --rules PEPWR25 //Finds memory gating opportunities by ODC(observability don't care) technique and estimates power savings. - --rules PEPWR28 //Finds memory gating opportunities by STC(Stability Condition) technique for gating write pin and estimates the power savings. - --rules PEPWR18 //Estimates power savings when a memory in design is replaced with an equivalent half size memory or an equivalent quarter size memory. - --rules PEPWR13 //Generates the report for power savings of non gated flops in the design. - --rules poweraudit //Generates audit reports for Power estimation rules - --rules PEPWR20 //Finds new clock gating opportunities by ODC(observability don't care) technique and estimates the power savings. - --rules PEPWR21 //Finds new clock gating opportunities by STC(Stability Condition) technique and estimates the power savings. - --rules PEPWR22 //Finds better enable using ODC techniques for registers that are already gated and estimates the power savings. - --rules PEPWR23 //Finds better enable using STC techniques for registers that are already gated and estimates the power savings. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction_debug_help.htm deleted file mode 100644 index 75041ba..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_mem_reduction - - - - - - - - - - - - - -
    - -
    -

    -power_mem_reduction -

    -

    -This goal finds a number of potential power saving opportunities in the design. This goal assumes you are early in the design flow and you do not have simulation data or a technology library. So it does not compute the amount of power savings; to see power values, run the power_reduction_adv goal instead. The first result to review should be the PESTR06 spreadsheet. Select the PESTR06 rule in the message tree and double-click to display a spreadsheet. This shows a "scorecard" for each module in the design with statistics on the number of existing explicit, and potential new implicit enables. Next, review the register and memory power reduction opportunites by double clicking on the violation messages of PERES01 and PERES02 rules. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction_setup.sgs deleted file mode 100644 index 2188dc0..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mem_reduction_setup.sgs +++ /dev/null @@ -1,47 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 24-Jun-2009 For Spyglass 4.3 release -# -# Copyright Synopsys Inc, 2009. All rights reserved. -########################################################################## - -register_variable EARLY_SGDC "$PRJFILES_DIR/early.sgdc" -source $SPYGLASS_HOME/auxi/common_setup/init_central.sgs -register_variable USE_BBOX_RESOLUTION 1 -register_variable USE_DESIGN_CLOCKS 1 -source $SPYGLASS_HOME/auxi/common_setup/get_central_status.sgs -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress - -# Introduction -set_property -step_header "Introduction" -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_mem_reduction.htm -set_header_state "Introduction" complete - -# Common setup -sgsSet STATUS {get_variable_global {$BBOX_RESOLUTION}} -sgsIf { $STATUS != 1} { - source $SPYGLASS_HOME/auxi/common_setup/bb_resolution/bb_resolution.sgs -} -sgsSet STATUS {get_variable_global {$DESIGN_CLOCKS}} -sgsIf { $STATUS != 1} { - source $SPYGLASS_HOME/.Methodology/Clock-reset/CDC-Setup-Manager/CDC_Setup_Manager_clock_setup.sgs -} -# Activity file -set_property -step_header "Specify Activity File" -set_constraints2 {activity_data} -sgdcFile {get_variable $EARLY_SGDC} -hidden_fields {activity_data:-weight,-sim_topname,-instname,-sim_rtl_design_nl,-mode,-use} -sgdcTag "EARLY_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/activity_data.htm -set_header_state "Specify Activity File" complete - -set_property -step_header "AutoFix Setup" -enable_next_button -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_autofix.htm -set_parameters rme_active -set_header_state "AutoFix Setup" complete - -# Closure -set_property -step_header "Setup Closure" -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs -set_header_state "Setup Closure" complete - -set_sgdc_state -enable $EARLY_SGDC diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-mixed.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-mixed.spq deleted file mode 100644 index ec19b06..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-mixed.spq +++ /dev/null @@ -1,28 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_mode_detection -// Version: 1.0 -// -// Revision History: -// Ver Date Comments -// 1.0 04-may-2011 For Spyglass 4.6 release -// -// Copyright Atrenta Inc, 2011. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_mode_detection mixed -* -For auto-detection of different design modes based on simulation information -* -This goal automatically detects modes based on logical conditions which -can be specfied using 'mode_condition' constraint. Mode condition can -be creating a logical expression of valid nets in design. Before -creating a 'mode_condition' please also define a mode set using constraint -'mode_set'. -This goal requires simulation data as VCD file(s) or FSDB file(s). -=cut+++++++++++ - --mixed --policy=power_est --rules PESAE08 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-verilog.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-verilog.spq deleted file mode 100644 index bb0dc8c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-verilog.spq +++ /dev/null @@ -1,28 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_mode_detection -// Version: 1.0 -// -// Revision History: -// Ver Date Comments -// 1.0 04-may-2011 For Spyglass 4.6 release -// -// Copyright Atrenta Inc, 2011. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_mode_detection verilog -* -For auto-detection of different design modes based on simulation information -* -This goal automatically detects modes based on logical conditions which -can be specfied using 'mode_condition' constraint. Mode condition can -be creating a logical expression of valid nets in design. Before -creating a 'mode_condition' please also define a mode set using constraint -'mode_set'. -This goal requires simulation data as VCD file(s) or FSDB file(s). -=cut+++++++++++ - --verilog --policy=power_est --rules PESAE08 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-vhdl.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-vhdl.spq deleted file mode 100644 index a5cf02a..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection-vhdl.spq +++ /dev/null @@ -1,28 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_mode_detection -// Version: 1.0 -// -// Revision History: -// Ver Date Comments -// 1.0 04-may-2011 For Spyglass 4.6 release -// -// Copyright Atrenta Inc, 2011. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_mode_detection vhdl -* -For auto-detection of different design modes based on simulation information -* -This goal automatically detects modes based on logical conditions which -can be specfied using 'mode_condition' constraint. Mode condition can -be creating a logical expression of valid nets in design. Before -creating a 'mode_condition' please also define a mode set using constraint -'mode_set'. -This goal requires simulation data as VCD file(s) or FSDB file(s). -=cut+++++++++++ - --vhdl --policy=power_est --rules PESAE08 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection_debug_help.htm deleted file mode 100644 index 8ff6dc1..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_mode_detection_debug_help.htm +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - power_mode_detection - - - - - - - - - - - - - -
    - -
    -

    -power_mode_detection -

    -

    -This goal automatically detects modes based on logical conditions which can be specified using 'mode_condition' constraint. Mode condition can be creating a logical expression of valid nets in design. Before creating a 'mode_condition' please also define a mode set using constraint 'mode_set'. This goal requires simulation data as VCD file(s) or FSDB file(s). -

    -

    -The pe_activity.rpt report file contains information about the detected modes. details, please see the Power Estimation Reports section of the Power Estimation Rule Reference Guide. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv.spq deleted file mode 100644 index 9c474e7..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv.spq +++ /dev/null @@ -1,73 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_reduction_adv -// Version: 1.1.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Feb-2013 5.1.0 Initial version -// 1.1.0 26-Nov-2013 5.2.0 Aligned Guideware to Methodology template -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_reduction_adv mixed -* -Locates opportunities for power reduction using advanced techniques and reports power savings from these opportunities -* -Locates opportunities for power reduction using advanced -techniques and reports power savings from these -opportunites. For registers that do not have any -enable, this goal finds new enables. For the registers -that already has an enable, this goal finds stronger enables -that will switch off the clock for a larger duration than -the original enable. Additionally this goal estimates -power savings when a memory in design is replaced with an -equivalent half size memory or an equivalent quarter size memory. -=cut++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - --rme_active2 //RTL modification status - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --pe_ignore_clock_xor=1 //This flag is used to enable/disable the handling of Xor gate in clock path while searching for ICG - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPWR18 //Estimates power savings when a memory in design is replaced with an equivalent half size memory or an equivalent quarter size memory. - --rules PEPWR13 //Generates the report for power savings of non gated flops in the design - --rules PEPWR06 //Reports module wise summary of the clock gating enables in the design and their effectiveness. - --rules poweraudit //Generates audit reports for Power estimation rules - --rules PEPWR20 //Finds new clock gating opportunities by ODC(observability don't care) technique and estimates the power savings. - --rules PEPWR21 //Finds new clock gating opportunities by STC(Stability Condition) technique and estimates the power savings. - --rules PEPWR22 //Finds better enable using ODC techniques for registers that are already gated and estimates the power savings. - --rules PEPWR23 //Finds better enable using STC techniques for registers that are already gated and estimates the power savings. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv_debug_help.htm deleted file mode 100644 index 62678af..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_reduction_medium_effort - - - - - - - - - - - - - -
    - -
    -

    -power_reduction_medium_effort -

    -

    -This goal finds a number of potential power saving opportunities in the design. Review the new and stronger enables in the design by selecting the PEPWR20, PEPWR21, PEPWR22 and PEPWR23 rules and double-clicking to see the spreadsheet. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv_setup.sgs deleted file mode 100644 index ac90f54..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_reduction_adv_setup.sgs +++ /dev/null @@ -1,57 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 18-Aug-2008 For Spyglass 4.1 release -# 1.1 24-Jun-2009 For Spyglass 4.3 release -# -# Copyright Synopsys Inc, 2008. All rights reserved. -########################################################################## - -register_variable POWEREST_SGDC "$PRJFILES_DIR/powerest.sgdc" -source $SPYGLASS_HOME/auxi/common_setup/init_central.sgs -register_variable USE_BBOX_RESOLUTION 1 -register_variable USE_DESIGN_CLOCKS 1 -source $SPYGLASS_HOME/auxi/common_setup/get_central_status.sgs -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress - -# Introduction -set_property -step_header "Introduction" -#show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_med_reduction.htm -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_reduction_adv.htm -set_header_state "Introduction" complete - -# Common setup -sgsSet STATUS {get_variable_global {$BBOX_RESOLUTION}} -sgsIf { $STATUS != 1} { - source $SPYGLASS_HOME/auxi/common_setup/bb_resolution/bb_resolution.sgs -} -sgsSet STATUS {get_variable_global {$DESIGN_CLOCKS}} -sgsIf { $STATUS != 1} { - source $SPYGLASS_HOME/.Methodology/Clock-reset/CDC-Setup-Manager/CDC_Setup_Manager_clock_setup.sgs -} -source $SPYGLASS_HOME/auxi/common_setup/power/power_bbox_setup.sgs - - -# Activity file -set_property -step_header "Specify Activity File" -set_constraints2 {activity_data} -sgdcFile {get_variable $POWEREST_SGDC} -hidden_fields {activity_data:-weight,-sim_topname,-instname,-sim_rtl_design_nl,-mode,-use} -sgdcTag "POWEREST_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/activity_data.htm -set_header_state "Specify Activity File" complete - -# VT mix percentage -set_property -step_header "Specify VT Mix" -set_constraints2 {vt_mix_percentage} -sgdcFile {get_variable $POWEREST_SGDC} -sgdcTag "POWEREST_SGDC" -html $SPYGLASS_HOME/htmlhelp/power_est/vt_mix_percentage.htm -set_header_state "Specify VT Mix" complete - -set_property -step_header "AutoFix Setup" -enable_next_button -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_autofix.htm -set_parameters rme_active -set_header_state "AutoFix Setup" complete - -# Closure -set_property -step_header "Setup Closure" -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs -set_header_state "Setup Closure" complete - -set_sgdc_state -enable $POWEREST_SGDC diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec.spq deleted file mode 100644 index 01900c0..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec.spq +++ /dev/null @@ -1,55 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_sec -// Version: 1.0.1 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 26-Nov-2013 5.2.0 Initial version -// 1.0.1 13-Jun-2014 5.3.0 Change of goal name -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_sec mixed -* -Performs sequential equivalence checking on designs before and after power optimization. -* -This goal performs sequential equivalence checking on designs before and after power -optimization. The goal runs in DDR (Dual Design Read) mode and reads in 2 designs. The first -design is the modified RTL created by autofix ( or user) based on power reduction recommendations. -The second design is the original RTL. -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=sec - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - --sgsyn_opt_file $SPYGLASS_HOME/GuideWare/latest/soc/rtl_handoff/power/sec_opt.tcl //Configuration file for synthesis - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --sec_abstract_clock=1 //This parameter specifies whether to perform clock abstraction in SEC. - --sec_atime=50 //Specifies the CPU time (in seconds) that the tool takes to perform the functional analysis per assertion. - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Sec_Start01 //Performs sequential equivalence checking on designs before and after power optimization - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec_debug_help.htm deleted file mode 100644 index d307df8..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec_debug_help.htm +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - power_sec - - - - - - - - - - - - - -
    - -
    -

    -power_sec -

    -

    -This goal performs sequential equivalance checking on designs before and after power -optimization. The goal runs in DDR (Dual Design Read) mode and reads in 2 designs. The first -design is the modified RTL created by autofix ( or user) based on power reduction recommendations. -The second design is the original RTL. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec_setup.sgs deleted file mode 100644 index 6e0c198..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_sec_setup.sgs +++ /dev/null @@ -1,26 +0,0 @@ -set_property -show_index -set_property -hide_step_numbering - -set_property -step_header "Before You Start" -show_progress_bar -hide_quality_bar -show_html $SPYGLASS_HOME/.Methodology/SEC/doc/sec-help1.htm -set_header_state "Before You Start" complete - -set_property -step_header "Configure SpyGlass Design Constraint File" -set_constraints -constraints {clock reset} -html $SPYGLASS_HOME/.Methodology/SEC/doc/sec-help2.htm -set_header_state "Configure SpyGlass Design Constraint File" complete - - -set_property -step_header "Set Reference Design" -show_html $SPYGLASS_HOME/.Methodology/SEC/doc/sec-help3.htm -set_reference_design -set_header_state "Set Reference Design" complete - -set_property -step_header "Set Parameters" -show_html $SPYGLASS_HOME/.Methodology/SEC/doc/sec-help4.htm -set_parameters pe_wdir -set_header_state "Set Parameters" complete - -set_property -step_header "Setup Closure" -show_text " Setup is complete and verified " -set_header_state "Setup Closure" complete - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix.spq deleted file mode 100644 index 77932bf..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix.spq +++ /dev/null @@ -1,42 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_selective_autofix -// Version: 1.0.1 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 26-Nov-2013 5.2.0 Initial version -// 1.0.1 13-Jun-2014 5.3.0 Change of goal name -// -// Copyright Synopsys Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_selective_autofix mixed -* -Runs automatic RTL modification based on the power reduction recommendations selected by the user -* -Runs automatic RTL modification based on the power reduction recommendations selected by the user -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - --sgsyn_opt_file $SPYGLASS_HOME/GuideWare/latest/soc/rtl_handoff/power/red_opt.tcl //Configuration file for synthesis - --disallow_view_delete //To disable view deletion, required For RTL modification engine to work - --classic_mode //To run rules in CLASSIC synthesis mode - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix_debug_help.htm deleted file mode 100644 index 6329872..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_selective_autofix - - - - - - - - - - - - - -
    - -
    -

    -power_selective_autofix -

    -

    -This goal regenerates modified RTL after a power reduction run is completed. There is only one rule and it will not generate any messages. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix_setup.sgs deleted file mode 100644 index 60453b5..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_selective_autofix_setup.sgs +++ /dev/null @@ -1,17 +0,0 @@ -set_property -show_index -set_property -hide_step_numbering - -set_property -step_header "Before You Start" -show_progress_bar -hide_quality_bar -show_html $SPYGLASS_HOME/.Methodology/Power/doc/selective_autofix_bys.htm -set_header_state "Before You Start" complete - - -set_property -step_header "Set Parameters" -show_html $SPYGLASS_HOME/.Methodology/Power/doc/selective_autofix_parameters.htm -set_parameters rme_selection -set_header_state "Set Parameters" complete - -set_property -step_header "Setup Closure" -show_text " Setup is complete and verified " -set_header_state "Setup Closure" complete - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_model.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_model.spq deleted file mode 100644 index 0eeaa39..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_model.spq +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass EarlyAdopter Goal File -// -// Goal Name : power_wtc_model -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Oct-2016 2016.06-SP1 Initial version -// -// Copyright Atrenta Inc, 2014. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_wtc_model mixed -* -Generates weight toggle count model for the design -* -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPTAB01 - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_profiler.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_profiler.spq deleted file mode 100644 index 80c2bf3..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_profiler.spq +++ /dev/null @@ -1,41 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass EarlyAdopter Goal File -// -// Goal Name : power_wtc_profiler -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 18-Oct-2016 2016.06-SP1 Initial version -// -// Copyright Atrenta Inc, 2014. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_wtc_profiler mixed -* -Profiles weight toggle count waveform and identifies time windows of peak power -* -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPROFILER01 - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_virtualizer.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_virtualizer.spq deleted file mode 100644 index 5724a75..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/power_wtc_virtualizer.spq +++ /dev/null @@ -1,52 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass EarlyAdopter Goal File -// -// Goal Name : power_wtc_virtualizer -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 04-Apr-2017 2016.06-SP1 Initial version -// -// Copyright Synopsys, 2017. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -power_wtc_virtualizer mixed -* -Run power wtc virtualizer. -* -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=power_est - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //Allow mixed language - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --pe_toggle_act_profiler_debug=1 // this enables virtualizer mode within PEPWR01 --pe_toggle_act_profiler_debug_no_power=1 // do not perform power calculations --pe_toggle_act_profiler_debug_out_fsdb="pwr_act_wtc.fsdb" - -// user must specify pe_toggle_act_profiler_debug_bucket_file generated by power_wtc_model -// user must specify pe_toggle_act_profiler_debug_pwr_num_file generated by PEPWR01 - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules PEPWR01 - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/red_opt.tcl b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/red_opt.tcl deleted file mode 100644 index 9949d63..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power/red_opt.tcl +++ /dev/null @@ -1,3 +0,0 @@ -syn_set_option remove_identical_seq_cells false -syn_set_option preserve_mux 2 -syn_set_option transfer_for_gen_index_value_info 1 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/.submethodology_help deleted file mode 100644 index 59420f8..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/.submethodology_help +++ /dev/null @@ -1,5 +0,0 @@ -Validate voltage/power domain goal overview: - -To check your power intent for level shifters, isolation logic, retention registers and other low power cell types, enter a SpyGlass sgdc file, or a CPF file, or a UPF file. - -Power_verification_RTL checks the intent at the RTL level. Even if you have not added low power cell types to the RTL, SpyGlass will check that the intent is correct and complete. diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_abstract.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_abstract.spq deleted file mode 100644 index 509729b..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_abstract.spq +++ /dev/null @@ -1,28 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Goal Template File -// -// power_verif_abstract -// Version: 1.0 -// -// Revision History: -// Ver Date Comments -// 1.0 27-Nov-2014 For Spyglass 5.4.0 release -// -// Copyright Atrenta Inc, 2014. All rights reserved. -// ---------------------------------------------------------------------------- -=template++++++ -power_verif_abstract mixed -* -Abstraction of a block for Power Verification at a higher level of hierarchy -* -This step is used to abstract a block which is to be used at higher level of -hierarchy for Power Verification. The abstracted model helps in following: - - Less run-time at top-level - - Less noise at top-level as no violations will be reported inside the blocks - - Perform this step after doing Power verification of block. -=cut+++++++++++ --policies=lowpower - --rules PV_Abstract01 //Generates relevant abstraction of the block - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_abstract_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_abstract_setup.sgs deleted file mode 100644 index b096dca..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_abstract_setup.sgs +++ /dev/null @@ -1,19 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 24-Nov-2014 For Spyglass 5.4 release -# -# Copyright Atrenta Inc, 2014. All rights reserved. -########################################################################## - -source $SPYGLASS_HOME/auxi/common_setup/init_central.sgs -source $SPYGLASS_HOME/auxi/common_setup/get_central_status.sgs -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress -set_property -step_header "Introduction" -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_verif_any.htm -set_header_state "Introduction" complete -source $SPYGLASS_HOME/auxi/common_setup/bb_resolution/bb_resolution.sgs -source $SPYGLASS_HOME/.Methodology/Power/pwrintent_step.sgs -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_audit.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_audit.spq deleted file mode 100644 index 6034709..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_audit.spq +++ /dev/null @@ -1,73 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_verif_audit -// Version: 2.1.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// 2.0.0 31-May-2014 Formating changes for consistent look and feel -// 2.1.0 31-May-2015 Added new rules -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -power_verif_audit -* -Audits the power intent -* -Audits the power intent and flags missing, inconsistent and duplicate commands. -This will also report unsupported commands as well as flags non-existent objects - -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ --policy=lowpower - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - - -//------------------------------------------ -// Checks related to UPF -//----------------------------------------- --rules UPFWRN_16 //Reports the usage of an unsupported command --rules UPFWRN_17 //Reports the usage of an unsupported field of a command --rules checkUPF_existence //Checks existence of design objects(instances/nets/pins) specified with UPF commands --rules UPF_lowpower02 //Checks relationship of power nets between commands 'set_domain_supply_net', 'connect_supply_net' and 'add_port_state' --rules UPF_lowpower03 //Checks missing specification of power domain for top design unit --rules UPF_lowpower04 //Checks invalid/duplicate pst state defined in 'add_pst_state' command --rules UPF_lowpower08 //Check invalid specification of pst table using 'create_pst' commands --rules UPF_lowpower09 //Checks if supply port or supply net defined in UPF file is either undriven or multiple driven --rules UPF_lowpower10 //Checks different isolation sense for same isolation signal is specified for a domain. --rules UPF_lowpower11 //Check to ensure supply net must be declared for associated domain where supply net is used --rules UPF_lowpower12 //Specify single isolation/levelshifter strategy on domain element. --rules UPF_lowpower13 //Checks the power switch output port should have same voltage values as parent supply --rules UPF_lowpower14 //Checks the information of supply nets and their states in power state tables is complete --rules UPF_lowpower15 //Reports multi supply cells with missing connect_supply_net command --rules UPF_lowpower16 //Checks the relationship between the bias net and the primary supply net. - -//------------------------------------------ -// Checks related to Reporting -//----------------------------------------- --rules LP_DECOMPILE_CONSTR //Reports user-specified LowPower constraints interpretation details. - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_audit_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_audit_debug_help.htm deleted file mode 100644 index 33946f2..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_audit_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_verif_rtl - - - - - - - - - - - - - -
    - -
    -

    -power_verif_rtl -

    -

    -This goal checks the multiple voltage domain design for correctness of the power intent files. To check that the power intent has been applied correctly, look at the LP_DECOMPILE_CONSTRAINTS report first. Then look for the error messages for the UPF_lowpower*/CPF_lowpower* rules and review messages for each rule. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl.spq deleted file mode 100644 index e114273..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl.spq +++ /dev/null @@ -1,109 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_verif_instr_rtl -// Version: 2.1.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// 2.0.0 31-May-2014 Formating changes for consistent look and feel -// 2.1.0 31-May-2015 Adding new rules -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++ -power_verif_instr_rtl -* -Verifies proper usage of power management circuitry in RTL -* -This goal verifies the proper usage of power management circuitry -in the earliest possible design stage. For design teams that -insert level shifters and isolation logic into the RTL, this goal -will check the design against the power intent. It will ensure -that level shifters protect each voltage domain crossing and the -proper type of isolation logic is inserted at the output of each -power domain. -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ --policy=lowpower - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - - -//------------------------------------------ -// Checks related to UPF -//----------------------------------------- --rules UPFWRN_16 //Reports the usage of an unsupported command --rules UPFWRN_17 //Reports the usage of an unsupported field of a command --rules checkUPF_existence //Checks existence of design objects(instances/nets/pins) specified with UPF commands --rules UPF_lowpower02 //Checks relationship of power nets between commands 'set_domain_supply_net', 'connect_supply_net' and 'add_port_state' --rules UPF_lowpower03 //Checks missing specification of power domain for top design unit --rules UPF_lowpower04 //Checks invalid/duplicate pst state defined in 'add_pst_state' command --rules UPF_lowpower08 //Check invalid specification of pst table using 'create_pst' commands --rules UPF_lowpower09 //Checks if supply port or supply net defined in UPF file is either undriven or multiple driven --rules UPF_lowpower10 //Checks different isolation sense for same isolation signal is specified for a domain. --rules UPF_lowpower11 //Check to ensure supply net must be declared for associated domain where supply net is used --rules UPF_lowpower12 //Specify single isolation/levelshifter strategy on domain element. --rules UPF_lowpower13 //Checks the power switch output port should have same voltage values as parent supply --rules UPF_lowpower14 //Checks the information of supply nets and their states in power state tables is complete --rules UPF_lowpower15 //Reports multi supply cells with missing connect_supply_net command --rules UPF_lowpower16 //Checks the relationship between the bias net and the primary supply net. - - -//------------------------------------------ -// Checks related to Reporting -//----------------------------------------- --rules LP_DECOMPILE_CONSTR //Reports user-specified LowPower constraints interpretation details. - -//------------------------------------------ -// Non-instrumented checks -//------------------------------------------ --rules LPISO04A //Check for missing Isolation Strategy of Power Domain outputs --rules LPISO04B //Check for incorrect Isolation Strategy of Power Domain - //outputs, -no_isolation given --rules LPISO05 //Check for redundant Isolation Strategy of Power Domain outputs - --rules LPLSH01 //Checks that cell defined in command 'map_level_shifter' has - // attribute 'is_level_shifter' in library --rules LPLSH03 //Check for incorrect Level Shifter Strategy, -no_shift given --rules LPLSH04 //Check for redundant Level Shifter Strategy --rules LPLSH05 //Check for missing Level Shifter Strategy - -//------------------------------------------ -// Instrumented rtl checks -//------------------------------------------ --rules LPSVM12A //Isolation signal should be in always-on domain. --rules LPSVM53 //Ensure that the always-on pin of a cell should always come from an always-on domain. - --rules LPSVM04 //Find missing/incorrect level shifters --overloadrules LPSVM04A+severity=Error --overloadrules LPSVM04B+severity=Error --overloadrules LPSVM04C+severity=Error --overloadrules LPSVM04D+severity=Error --overloadrules LPSVM04E+severity=Error - --rules LPSVM08 //Find missing isolation logic --rules LPSVM09 //Find incorrect isolation logic - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl_debug_help.htm deleted file mode 100644 index 44839fe..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_verif_rtl - - - - - - - - - - - - - -
    - -
    -

    -power_verif_rtl -

    -

    -This goal checks the multiple voltage domain design for electrical correctness before synthesis. To check that the power intent has been applied correctly, look at the LP_DECOMPILE_CONSTRAINTS report first. The two key rules are LPSVM04 for level shifters, and LPSVM08 for isolation logic. Review the LPSVM08 violations before reviewing LPSVM09; many errors will generate one message for each rule. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl_setup.sgs deleted file mode 100644 index 439b777..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_instr_rtl_setup.sgs +++ /dev/null @@ -1,20 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 18-Aug-2008 For Spyglass 4.1 release -# 1.1 24-Jun-2009 For Spyglass 4.3 release -# -# Copyright Atrenta Inc, 2009. All rights reserved. -########################################################################## - -source $SPYGLASS_HOME/auxi/common_setup/init_central.sgs -source $SPYGLASS_HOME/auxi/common_setup/get_central_status.sgs -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress -set_property -step_header "Introduction" -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_verif_any.htm -set_header_state "Introduction" complete -source $SPYGLASS_HOME/auxi/common_setup/bb_resolution/bb_resolution.sgs -source $SPYGLASS_HOME/.Methodology/Power/pwrintent_step.sgs -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr.spq deleted file mode 100644 index 867c7a9..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr.spq +++ /dev/null @@ -1,92 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : power_verif_noninstr -// Version: 2.1.0 -// -// Revision History: -// Ver Date Comments -// 1.0.0 18-Feb-2013 Initial version -// 2.0.0 31-May-2014 Formating changes for consistent look and feel -// 2.1.0 31-May-2015 Adding new rules -// -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -power_verif_noninstr -* -Verifies proper usage of power management circuitry in Non-Instrmented RTL -* -This goal verifies the proper usage of power management circuitry -in the earliest possible design stage. For design teams that -insert level shifters and isolation logic during Synthesis, this goal -will check the design against the power intent.It will ensure that -level shifters and isolation strategies defined in UPF files are -correct to protect each voltage domain crossing for isolation and -level shifting power domain. -=cut++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ --policy=lowpower - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - - -//------------------------------------------ -// Checks related to UPF -//----------------------------------------- --rules UPFWRN_16 //Reports the usage of an unsupported command --rules UPFWRN_17 //Reports the usage of an unsupported field of a command --rules checkUPF_existence //Checks existence of design objects(instances/nets/pins) specified with UPF commands --rules UPF_lowpower02 //Checks relationship of power nets between commands 'set_domain_supply_net', 'connect_supply_net' and 'add_port_state' --rules UPF_lowpower03 //Checks missing specification of power domain for top design unit --rules UPF_lowpower04 //Checks invalid/duplicate pst state defined in 'add_pst_state' command --rules UPF_lowpower08 //Check invalid specification of pst table using 'create_pst' commands --rules UPF_lowpower09 //Checks if supply port or supply net defined in UPF file is either undriven or multiple driven --rules UPF_lowpower10 //Checks different isolation sense for same isolation signal is specified for a domain. --rules UPF_lowpower11 //Check to ensure supply net must be declared for associated domain where supply net is used --rules UPF_lowpower12 //Specify single isolation/levelshifter strategy on domain element. --rules UPF_lowpower13 //Checks the power switch output port should have same voltage values as parent supply --rules UPF_lowpower14 //Checks the information of supply nets and their states in power state tables is complete --rules UPF_lowpower15 //Reports multi supply cells with missing connect_supply_net command --rules UPF_lowpower16 //Checks the relationship between the bias net and the primary supply net. - - -//------------------------------------------ -// Checks related to Reporting -//----------------------------------------- --rules LP_DECOMPILE_CONSTR //Reports user-specified LowPower constraints interpretation details. - -//------------------------------------------ -// Non-instrumented checks -//------------------------------------------ --rules LPISO04A //Check for missing Isolation Strategy of Power Domain outputs --rules LPISO04B //Check for incorrect Isolation Strategy of Power Domain outputs, -no_isolation given --rules LPISO05 //Check for redundant Isolation Strategy of Power Domain outputs - --rules LPLSH01 //Checks that cell defined in command 'map_level_shifter' has attribute 'is_level_shifter' in library --rules LPLSH03 //Check for incorrect Level Shifter Strategy, -no_shift given --rules LPLSH04 //Check for redundant Level Shifter Strategy --rules LPLSH05 //Check for missing Level Shifter Strategy - - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr_debug_help.htm deleted file mode 100644 index 9e6cf4f..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr_debug_help.htm +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - power_verif_noninstr - - - - - - - - - - - - - -
    - -
    -

    -power_verif_noninstr -

    -

    -This goal checks the multiple voltage domain design for correctness and completeness of the power intent files. To check that the power intent has been applied correctly, look at the LP_DECOMPILE_CONSTRAINTS report first. Then look for the error messages for the UPF_lowpower*/CPF_lowpower* rules and review messages for each rule. Then review the messages for LPLSH* and LPISO* rules for the completeness/correctness for strategy specified for level shifting and isolation respectively. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr_setup.sgs deleted file mode 100644 index 439b777..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/power_verification/power_verif_noninstr_setup.sgs +++ /dev/null @@ -1,20 +0,0 @@ -########################################################################## -# SpyGlass Goal Setup File -# -# Revision History: -# Ver Date Comments -# 1.0 18-Aug-2008 For Spyglass 4.1 release -# 1.1 24-Jun-2009 For Spyglass 4.3 release -# -# Copyright Atrenta Inc, 2009. All rights reserved. -########################################################################## - -source $SPYGLASS_HOME/auxi/common_setup/init_central.sgs -source $SPYGLASS_HOME/auxi/common_setup/get_central_status.sgs -set_property -hide_quality_bar -show_index -hide_step_numbering -show_progress -set_property -step_header "Introduction" -show_html $SPYGLASS_HOME/.Methodology/Power/doc/power_verif_any.htm -set_header_state "Introduction" complete -source $SPYGLASS_HOME/auxi/common_setup/bb_resolution/bb_resolution.sgs -source $SPYGLASS_HOME/.Methodology/Power/pwrintent_step.sgs -source $SPYGLASS_HOME/.Methodology/Power/closure_step.sgs diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rdc/rdc_verify_struct.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rdc/rdc_verify_struct.spq deleted file mode 100644 index c917828..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rdc/rdc_verify_struct.spq +++ /dev/null @@ -1,110 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : rdc_verify_struct -// Version: 1.15.0 -// -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 06-July-2015 5.5 Initial version -// 1.12.0 16-Nov-2016 2016.06-SP2 Rules Clock_info02 and Reset_info02 removed -// 1.13.0 03-Feb-2017 2017.03 Parameter validate_qual_enable added -// 1.14.0 26-Apr-2017 2017.03-SP1 Parameters check_multiclock_bbox, ignore_qualifier_mismatch_rdc, enable_diff_clkdom_rdc, enable_or_sync added -// 1.15.0 04-Jun-2017 2017.03-SP2 Value of parameter report_all_reset_cross changed from 'no' to 'yes' -// 1.16.0 18-July-2017 2017.12 Parameter report_common_reset added -// Parameter use_inferred_abstract_port added -// 1.17.0 22-Jan-2018 2017.12 Option use_advcdc_features added -// Copyright Atrenta Inc, 2016. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -rdc_verify_struct mixed -* -Reset Domain Crossing Verification -* -This step is used to report reset domain crossings (RDC). It also performs -synchronization analysis, dynamic clock switching checks to identify the -RDC which will not cause the design issues. - -It also provides reset matrix view that shows the RDC count between each reset pair. -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=clock-reset - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - --mixed //allow mixed language --enable_const_prop_thru_seq //allow to propagate beyond the sequential elements --use_advcdc_features //Run Advanced CDC Rules in restore mode - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --enable_mux_sync=all //MUX Synchronization schemes --enable_and_sync=yes //Enables the AND Gate Synchronization Scheme --enable_debug_data=yes //Enables annotation of debug information, such as clock, reset, quasi_static signals, and domain information on nets in the schematic --hier_wild_card=no //Specifies the format of specifying hierarchies by using wildcard expressions in all the constraints used by the SpyGlass CDC solution --strict_sync_check=yes //Allows combinational logic between the source and destination flip-flops --enable_sim_check_rdc=yes //enable/disable simulation checks in Ar_resetcross01 --report_sync_rdc=all //enable/disable reporting of synchronized reset domain crossings in Ar_resetcross01. --report_for_single_busbit=no //Specifies whether single bit of a bus is to be reported by Ar_resetcross01 --report_all_reset_cross=yes //enable the reporting the Ar_resetcross01 rules on reset crossings with destination recieving no clear/set. --validate_qual_enable=rdc //Enable/disable functional analysis at each source qualifier merging gate --ignore_qualifier_mismatch_rdc=yes //to enable/disable checks to find out mismatches of qualifier's clock and reset domains with that of destination object in reset domain crossing --enable_diff_clkdom_rdc=yes //To control whether different clock domain RDC should be reported --enable_or_sync=yes //To enable the "Or Gate Synchronization" scheme --check_multiclock_bbox=yes //If a BBox has multiple clocks then do NOT ignore inputs --report_common_reset=yes //To avoid multiple Reset_info09a violations and report common reset source --use_inferred_abstract_port=yes - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Clock_info03a // Reports unconstrained clock nets --overloadrules Clock_info03a+severity=Error - --rules Clock_info05 // MUX descriptions where two or more clock signals converge --overloadrules Clock_info05+severity=Error - --rules Reset_info09a // Reports Unconstrained asynchronous reset nets --overloadrules Reset_info09a+severity=Error - --rules Clock_info05b // Combinational gates other than MUXes where two or more clock signals converge --overloadrules Clock_info05b+severity=Error - --rules Clock_info03b //Flip-flops,latches where the data pins are tied to a constant value - --rules Clock_info03c // Reports Flip-flops or latches where the clock/enable pin is set to a constant --overloadrules Clock_info03c+severity=Error - --rules Setup_port01 //Reports unconstrained ports summary for top design unit - --rules Setup_blackbox01 //Reports unconstrained pins summary for black-boxes - --rules Clock_info15 // Generates clock domain information for primary ports - --rules Info_Case_Analysis // Constant propagation in schematic display - --rules Ar_resetcross01 // Reports reset domain crossings (RDC) --overloadrules Ar_resetcross01+msgLabel=AR_RESETCROSS01_WRN_RSN+severity=Error --overloadrules Ar_resetcross01+msgLabel=AR_RESETCROSS01_WRN_RSN_SINGLE_BIT+severity=Error --overloadrules Ar_resetcross01+msgLabel=AR_RESETCROSS01_WRN_RSN_BUS_DECOMPRESS+severity=Error --overloadrules Ar_resetcross01+msgLabel=AR_RESETCROSS01_WRN_RSN_DIFF_CLK+severity=Error --overloadrules Ar_resetcross01+msgLabel=AR_RESETCROSS01_WRN_RSN_SINGLE_BIT_DIFF_CLK+severity=Error --overloadrules Ar_resetcross01+msgLabel=AR_RESETCROSS01_WRN_RSN_BUS_DECOMPRESS_DIFF_CLK+severity=Error - --rules Ar_resetcross_matrix01 // Generates reset crossing matrix view - - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rdc/rdc_verify_struct_setup.sgs b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rdc/rdc_verify_struct_setup.sgs deleted file mode 100644 index b6c0f5d..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rdc/rdc_verify_struct_setup.sgs +++ /dev/null @@ -1,4 +0,0 @@ -## Register all variables -####END - -source $SPYGLASS_HOME/.Methodology/Clock-reset/CDC-Setup-Manager/CDC_Setup_Manager_setup.sgs diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/regression_run.tcl b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/regression_run.tcl deleted file mode 100644 index ebec061..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/regression_run.tcl +++ /dev/null @@ -1,49 +0,0 @@ -################################################################################ -# Regression List -# The following regression goals will be available with this methodology. -################################################################################ - -######################################## -# default list of recommend goals to run for sign-off -######################################## -set regression_mandatory_list { lint/lint_rtl - adv_lint/adv_lint_verify - constraints/sdc_audit - constraints/sdc_check - constraints/sdc_redundancy - constraints/sdc_exception_struct - cdc/clock_reset_integrity - cdc/cdc_verify - dft/dft_scan_ready - dft/dft_best_practice - dft/dft_dsm_best_practice - power/power_est_average - power_verification/power_verif_noninstr - txv_verification/fp_mcp_verification - } - -######################################## -# additional goals to run for sign-off -######################################## -set regression_optional_list { lint/lint_abstract - constraints/sdc_abstract - constraints/sdc_equiv - constraints/sdc_hier_equiv - cdc/cdc_abstract - dft/dft_abstract - power/power_audit - power_verification/power_verif_audit - } - - -######################################## -# define/register the actual regression sets -######################################## -define_regression mandatory -goals "$regression_mandatory_list" - -define_regression optional -goals "$regression_optional_list" - -# note this goal is a superset of the mandatory and optional goals -define_regression all -goals "$regression_mandatory_list $regression_optional_list" - -define_regression physical_aware_power_est -goals { physical_aware_power/physical_power_postfloorplan physical_aware_power/power_est_average } diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rtl2netlist/rtl2netlist_migration.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rtl2netlist/rtl2netlist_migration.spq deleted file mode 100644 index b3898ab..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rtl2netlist/rtl2netlist_migration.spq +++ /dev/null @@ -1,50 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : rtl2netlist_migration -// Version: 1.0.0 -// Note: It is a beta feature and contact Atrenta support if you are interested -// in using it. -// Revision History: -// Ver Date SG Ver Comments -// 1.0.0 15-Apr-2015 5.5 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -rtl2netlist_migration mixed -* -Migration of RTL to netlist constraints and object names referred in RTL results -* -This goal is used to migrate following from RTL to netlist: - 1- SGDC constraints - 2- Netlist name mapping of object names referred in RTL - -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policy=rtl2netlist,clock-reset - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ --mixed //allow mixed language - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Netlist_constraint_migration01 // Migrates the constraints specified at RTL to netlist --rules Gen_inference_file01 // Maps the rtl result object names to its corresponding netlist object names present in the netlist - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rtl2netlist/rtl2netlist_migration_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rtl2netlist/rtl2netlist_migration_debug_help.htm deleted file mode 100644 index 8ad7f50..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/rtl2netlist/rtl2netlist_migration_debug_help.htm +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - cdc_setup_check - - - - - - - - - - - - - -
    - -
    -

    -cdc_setup_check -

    -

    -This goal is used to migrate following from RTL to netlist: - 1- SGDC constraints - 2- Netlist name mapping of object names referred in RTL -

    - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/.submethodology_help b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/.submethodology_help deleted file mode 100644 index f6fe739..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/.submethodology_help +++ /dev/null @@ -1,5 +0,0 @@ -TXV verifies correctness of timing exception constraints like false path and multicycle path. This is done using formal methods. -User can use TXV to verify the following timing exception constraints (provided by the user) - -A) False path constraint combinationally and/or sequentially -B) Multicycle path constraints -This methodology helps designers prepare the design by setting up and cleaning up SDC files diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_mcp_verification.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_mcp_verification.spq deleted file mode 100644 index 1887e1c..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_mcp_verification.spq +++ /dev/null @@ -1,72 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : adv_fp_mcp_verification -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 10-Mar-2015 5.4.1 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++ -fp_mcp_verification -* -False Path and Multicycle Path Verification -* -This template is used to verify false paths and multicycle paths in timing constraints. - -The only difference between this template and the one that exists in Guideware2.0 -is that this template contains two additional parameters and two additional -constraints rules. -Parameters: - 1. 'txv_enable_new_report' set to 'yes' - 2. 'txv_mcp_reactive_flow' set to 'new_flow' -Constraints rules: - 1. Show_Case_Analysis - 2. Show_Clock_Propagation - -* -For more details about this goal, please refer to the SpyGlass-TXV-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ - --mixed -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=txv --policies=constraints - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --txv_enable_new_report=yes // This parameter provides backward compatibility for Spreadsheet reporting --txv_mcp_reactive_flow=new_flow // This parameter runs the MCP verification in reactive mode --pt=no // This parameter determines that parsing, verification and generation should follow Design Compiler behavior - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Txv_MCP_StartEnd01 // Reports Multi-cycle path with missing -start/-end option when the involved clocks have different periods --rules MCP_Check01 // Multi-cycle path command does not satisfy setup/hold criteria --rules Txv_FP_Warn04 // False path uses same clock in its -from and -to lists --rules Txv_FP_Warn05 // // False path does not support the options, such as setup, hold, rise or fall --rules Txv_Info05 // Multiple paths exist from the clock pin of a sequential cell to different clock sources --rules Txv_Info06 //txv_assess report --rules Txv_MCP_Warn05 // Multicycle path does not support the options, such as rise or fall --rules Txv_resetvalue01 // Reports missing '-value' field in 'reset' constraint --rules Txv_FP01 // fp verification rule --rules Txv_MCP01 // mcp verification rule --rules Txv_Info01 // this rule should be added as user can refer to vho only through this rule violation --rules Show_Case_Analysis // Constraint Rule: Highlights case-analysis settings --rules Show_Clock_Propagation // Constraint Rule: Shows clock propagation for the port/pin -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_mcp_verification_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_mcp_verification_debug_help.htm deleted file mode 100644 index e145c7e..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_mcp_verification_debug_help.htm +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - fp_mcp_verification - - - - - - - - - - - - - -
    - -
    -

    -fp_mcp_verification -

    -

    -This goal is used to verify false path timing constraints. For faster debug and violations resolution, you can first close non functional failures as follow: -

    -

    -1. Analyze and fix setup issues reported by following rules -

    -

    -Txv_clockperiod02*, Txv_Reset03*, Txv_resetvalue01*, Clk_Gen06, Txv_FP_Warn04, Txv_FP_Warn05, Txv_MCP_Warn04, Txv_MCP_Warn05, FP_Inconclusive_Verif01, FP_Inconclusive_Verif02, MCP_Inconclusive_Verif01, MCP_Inconclusive_Verif02, MCP_As_FP_Verif06i, MCP05 -

    -

    -*: these violations need to be fixed only for sequential exception verification -

    -

    -2. Analyze and fix timing exceptions failure due to non functional reasons reported by following rules -

    -

    -Txv_FP_Nontop, MCP_Nontop, FP_Skip_Verif02, MCP_Skip_Verif02, MCP_Skip_Verif03, FP_Fail_Verif01, FP_Fail_Verif05, MCP_Info02 -

    -

    -3. Analyze and fix timing exceptions failing based on functional verification. These failures are reported by following rules -

    -

    -FP_Fail_Verif03, FP_Fail_Verif04, MCP_Fail_Verif01a, MCP_Fail_Verif01b, MCP_Fail_Verif01c, MCP_Fail_Verif02a, MCP_Fail_Verif02b, MCP_Fail_Verif02c -

    -

    -4. Analyze exceptions where functional verification did not complete and proceed with more runs to conclude the verification as needed. The following rules need to be reviewed -

    -

    -Rules FP_Incomplete_Verif01, FP_Incomplete_Verif02, MCP_Incomplete_Verif01, MCP_Incomplete_Verif02, MCP_Incomplete_Verif03 -

    -

    -The goal needs to be run again whenever the setup, exceptions, or the design has been changed. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_verification.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_verification.spq deleted file mode 100644 index 770ecba..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_verification.spq +++ /dev/null @@ -1,69 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare2.0 Goal File -// -// Goal Name : fp_verification -// Version: 1.0.0 -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 10-Mar-2015 5.4.1 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// --------- - -=template++++++ -fp_verification -* -False Path Verification -* -This template is used to verify false paths in timing constraints. The given -false path is correct if there exists no input vectors that can sensitize the -given path. If the given false path is incorrect, a witness or counter -example is provided. Both combinational and sequential false paths can be -verified. - -The only difference between this template and the one that exists in Guideware2.0 -is that this template contains one additional parameters and two additional -constraints rules. -Parameter: - 'txv_enable_new_report' set to 'yes' -Constraints rules: - 1. Show_Case_Analysis - 2. Show_Clock_Propagation - -For more details about this goal, please refer to the SpyGlass-TXV-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ - --mixed -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=txv --policies=constraints - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --txv_enable_new_report=yes // This parameter provides backward compatibility for Spreadsheet reporting --pt=no // This parameter determines that parsing, verification and generation should follow Design Compiler behavior - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Txv_FP_Warn04 // False path uses same clock in its -from and -to lists --rules Txv_FP_Warn05 // False path does not support the options, such as setup, hold, rise or fall --rules Txv_Info05 // Multiple paths exist from the clock pin of a sequential cell to different clock sources --rules Txv_Info06 //txv_assess report --rules Txv_resetvalue01 // Reports missing '-value' field in 'reset' constraint --rules Txv_FP01 // fp verification rule --rules Txv_Info01 // this rule should be added as user can refer to vho only through this rule violation --rules Show_Case_Analysis // Constraint Rule: Highlights case-analysis settings --rules Show_Clock_Propagation // Constraint Rule: Shows clock propagation for the port/pin -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_verification_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_verification_debug_help.htm deleted file mode 100644 index 1aa9681..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/fp_verification_debug_help.htm +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - fp_verification - - - - - - - - - - - - - -
    - -
    -

    -fp_verification -

    -

    -This goal is used to verify false path and multi-cycle path timing constraints. For faster debug and resolution of the violations, you can first close non functional failures as follow: -

    -

    -1. Analyze and fix setup issues reported by the following rules: -

    -

    -Txv_clockperiod02*, Txv_resetvalue01*, Clk_Gen06, Txv_FP_Warn04, Txv_FP_Warn05, FP_Inconclusive_Verif01, FP_Inconclusive_Verif02 -

    -

    -*: these violations need to be fixed only for sequential exception verification -

    -

    -2. Analyze and fix timing exceptions failure due to non functional reasons reported by the following rules -

    -

    -Txv_FP_Nontop, FP_Skip_Verif02, FP_Fail_Verif01, FP_Fail_Verif05 -

    -

    -3. Analyze and fix timing exceptions failing based on functional verification. These failures are reported by following rules -

    -

    -FP_Fail_Verif03, FP_Fail_Verif04 -

    -

    -4. Analyze exceptions where functional verification did not complete and proceed with more runs to conclude the verification as needed. Following rules need to be reviewed -

    -

    -FP_Incomplete_Verif01, FP_Incomplete_Verif02 -

    -

    -The goal needs to be run again whenever the setup, exceptions, or the design has been changed. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/mcp_verification.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/mcp_verification.spq deleted file mode 100644 index 32d76fa..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/mcp_verification.spq +++ /dev/null @@ -1,71 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : txv_debug -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 09-Mar-2015 5.4.1 Initial version -// -// Copyright Atrenta Inc, 2015. All rights reserved. -// ----------------------------------------------------------------------------- - -=template++++++ -mcp_verification -* -Multicycle Path Verification -* -This template is used to verify multicycle paths in timing constraints by -analyzing the sequential state space. The given multicycle path of N cycles -is correct if the transition that originates from the start point can arrive -at the end point in N or more clock cycles. Over-constrained multipliers can -also be verified. - -The only difference between this template and the one that exists in Guideware2.0 -is that this template contains two additional parameters and two additional -constraints rules. -Parameters: - 1. 'txv_enable_new_report' set to 'yes' - 2. 'txv_mcp_reactive_flow' set to 'new_flow' -Constraints rules: - 1. Show_Case_Analysis - 2. Show_Clock_Propagation - -For more details about this goal, please refer to the SpyGlass-TXV-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. - -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --mixed --policies=txv --policies=constraints - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --txv_enable_new_report=yes // This parameter provides backward compatibility for Spreadsheet reporting --txv_mcp_reactive_flow=new_flow // This parameter runs the MCP verification in reactive mode --pt=no // This parameter determines that parsing, verification and generation should follow Design Compiler behavior - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Txv_MCP_StartEnd01 // Reports Multi-cycle path with missing -start/-end option when the involved clocks have different periods --rules MCP_Check01 // Multi-cycle path command does not satisfy setup/hold criteria --rules Txv_Info05 // Multiple paths exist from the clock pin of a sequential cell to different clock sources --rules Txv_Info06 // txv_assess report --rules Txv_MCP_Warn05 // Multicycle path does not support the options, such as rise or fall --rules Txv_resetvalue01 // Reports missing '-value' field in 'reset' constraint --rules Txv_MCP01 // mcp verification rule --rules Txv_Info01 // this rule should be added as user can refer to vho only through this rule violation --rules Show_Case_Analysis // Constraint Rule: Highlights case-analysis settings --rules Show_Clock_Propagation // Constraint Rule: Shows clock propagation for the port/pin -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/mcp_verification_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/mcp_verification_debug_help.htm deleted file mode 100644 index 39b3c25..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/mcp_verification_debug_help.htm +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - mcp_verification - - - - - - - - - - - - - -
    - -
    -

    -mcp_verification -

    -

    -This goal is used to verify multi-cycle path timing constraints. For faster debug and violations resolution, you can first close non functional failures as follow: -

    -

    -1. Analyze and fix setup issues reported by the following rules -

    -

    -Txv_clockperiod02*, Txv_Reset03*, Txv_resetvalue01*, Clk_Gen06, Txv_MCP_Warn04, Txv_MCP_Warn05, MCP_Inconclusive_Verif01, MCP_Inconclusive_Verif02, MCP_As_FP_Verif06, MCP05 -

    -

    -*: these violations need to be fixed only for sequential exception verification -

    -

    -2. Analyze and fix timing exceptions failure due to non functional reasons reported by the following rules -

    -

    -MCP_Nontop, MCP_Skip_Verif02, MCP_Skip_Verif03, MCP_Info02 -

    -

    -3. Analyze and fix timing exceptions failing based on functional verification reported by following rules -

    -

    -MCP_Fail_Verif01a, MCP_Fail_Verif01b, MCP_Fail_Verif01c, MCP_Fail_Verif02a, MCP_Fail_Verif02b, MCP_Fail_Verif02c -

    -

    -4. Analyze exceptions where functional verification did not complete and proceed with more runs to conclude the verification as needed. The following rules need to be reviewed -

    -

    -MCP_Incomplete_Verif01, MCP_Incomplete_Verif02, MCP_Incomplete_Verif03 -

    -

    -The goal needs to be run again whenever the setup, exceptions, or the design has been changed. -

    - - - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_glitch.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_glitch.spq deleted file mode 100644 index 28a0afb..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_glitch.spq +++ /dev/null @@ -1,23 +0,0 @@ -// ----------------------------------------------------------------------------- -// SpyGlass Goal Template File for Clock to clock False Path Generation from RTL -// -// Copyright Atrenta Inc, 2008. All rights reserved. -// ----------------------------------------------------------------------------- -=template++++++ -txv_glitch -* -Failed due to Glitch because of reconvergence -* -The rule flags false-path commands where there is a probablity of a glitch -because of reconvergence from 'from' point. This rule checks for reconvergence -if and only if no clock is specified in the from list of the false path. - -The failed false-path commands are also listed in the autogenerated -txv_fail_ file in the $CWD/_reports/txv directory. -=cut+++++++++++ - - --mixed --policies=txv --pt=no // This parameter determines that parsing, verification and generation should follow Design Compiler behavior --rules Txv_FP_Glitch01 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_rtl_gen.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_rtl_gen.spq deleted file mode 100644 index 97afdd1..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_rtl_gen.spq +++ /dev/null @@ -1,26 +0,0 @@ -// ----------------------------------------------------------------------------- -// SpyGlass Goal Template File for Clock to clock False Path Generation from RTL -// -// Copyright Atrenta Inc, 2008. All rights reserved. -// ----------------------------------------------------------------------------- -=template++++++ -txv_rtl_gen -* -clock to clock False Path Generation -* -This template is used to report pair of unrelated clocks. If parameter txv_verify_c2c -is set to 'yes', it reports clock to clock false paths after validation. If parameter -txv_verify_c2c is set to 'no', it reports candidate for clock to clock false paths. -This template also reports the terminals on which generated clocks should be specified -and interacting clock pairs with non integer period ratio. - -For more details about this goal, please refer to the SpyGlass-TXV-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. -=cut+++++++++++ - - --mixed --policies=txv --pt=no // This parameter determines that parsing, verification and generation should follow Design Compiler behavior --rules Txv_Info08 --rules Txv_Info09 --rules Txv_C2C_Fp diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_run_audit.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_run_audit.spq deleted file mode 100644 index 2707b58..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_run_audit.spq +++ /dev/null @@ -1,78 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : txv_run_audit -// Version: 1.0.1 -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 30-Oct-2014 5.4.0 Initial version -// -// Copyright Atrenta Inc, 2014. All rights reserved. -// ----------------------------------------------------------------------------- - -=template++++++ -txv_run_audit -* -Run TXV in audit mode -* -This template is used to run TXV in audit mode. In audit mode, only -structural (non-functional) verification is performed. Constraints which -require functional verification are not verified. They are reported under -'Skip' category in this mode. - -For more details about this goal, please refer to the SpyGlass-TXV-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. - -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --mixed --policies=txv -#-policies=constraints - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --txv_run_audit=yes -#-txv_detect_te_overlap=no --pt=no // This parameter determines that parsing, verification and generation should follow Design Compiler behavior - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Txv_MCP_StartEnd01 // Reports Multi-cycle path with missing -start/-end option when the involved clocks have different periods --rules MCP_Check01 // Multi-cycle path command does not satisfy setup/hold criteria -#-rules Txv_clockperiod02 // This rule reports the clocks rounded with their actual period and rounded value --rules Txv_FP_Warn04 // False path uses same clock in its -from and -to lists --rules Txv_FP_Warn05 // // False path does not support the options, such as setup, hold, rise or fall --rules Txv_Info05 // Multiple paths exist from the clock pin of a sequential cell to different clock sources --rules Txv_Info06 //txv_assess report --rules Txv_MCP_Warn05 // Multicycle path does not support the options, such as rise or fall --rules Txv_resetvalue01 // Reports missing '-value' field in 'reset' constraint --rules Txv_FP01 // fp verification rule --rules Txv_MCP01 // mcp verification rule --rules Txv_Info01 // this rule should be added as user can refer to vho only through this rule violation -#-rules Show_Case_Analysis -#-rules Clk_Gen33 -#-rules Clk_Gen23 -#-rules Clk_Gen02 -#-rules Clk_Gen03 -#-rules Clk_Gen08 -#-rules Clk_Gen09 -#-rules Clk_Gen22 -#-rules Clk_Gen06 // Multiple paths exist from the clock pin of a sequential cell to different clock sources -#-rules TE_Methodology02 -#-rules SDC_Methodology66 -#-rules SDC_Methodology67 -#-rules MCP05 // Multi-cycle path command does not satisfy setup/hold criteria -#-rules Clk_Gen01a -#-rules Clk_Gen01b -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_run_audit_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_run_audit_debug_help.htm deleted file mode 100644 index db96e76..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_run_audit_debug_help.htm +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - mcp_verification - - - - - - - - - - - - - -
    - -
    -

    -mcp_verification -

    -

    -This goal is used to audit set_multicycle_path and set_false_path timing constraints. When this goal is run only structural (non-functional) verification is performed. Constraints which require functional verification are skipped. This provides a quick overview of timing exception verification. -

    - - -
    - -
    - - - -
    - - - - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_sdc_migration.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_sdc_migration.spq deleted file mode 100644 index 9a9f524..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/txv_verification/txv_sdc_migration.spq +++ /dev/null @@ -1,49 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass Methodology2.0 Goal File -// -// Goal Name : txv_sdc_migration -// Version: 1.0.1 -// -// Revision History: -// Ver Date SG Version Comments -// 1.0.0 27-Nov-2014 5.4.0 Initial version -// -// Copyright Atrenta Inc, 2014. All rights reserved. -// ----------------------------------------------------------------------------- - -=template++++++ -txv_sdc_migration -* -Migrate netlist constraints to RTL -* -This template is used to convert netlist design constraints to rtl level design constraints. -It is used on customer designs where we have rtl design but constraints on netlist. - -For more details about this goal, please refer to the SpyGlass-TXV-Methodology.pdf file in the doc subdirectory of your SpyGlass installation. - -=cut+++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --mixed -#-policies=txv --policies=constraints - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - --pt=no // This parameter determines that parsing, verification and generation should follow Design Compiler behavior - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules SDC_Methodology73 - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/del_tmp_files.sh b/src/UWE_projectCode/tmp/tmp/Scripts/del_tmp_files.sh deleted file mode 100644 index c623688..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/del_tmp_files.sh +++ /dev/null @@ -1,17 +0,0 @@ -find . -name "command.log" -exec rm -fr "{}" \; -find . -name "pt_shell_command.log" -exec rm -fr "{}" \; -find . -name "pt.log" -exec rm -fr "{}" \; -find . -name "default.svf" -exec rm -fr "{}" \; -find . -name "*_constr.pt" -exec rm -fr "{}" \; -find . -name "alib-52" -exec rm -fr "{}" \; -find . -name "lib2db.log" -exec rm -fr "{}" \; -find . -name "synopsysdc" -exec rm -fr "{}" \; -find . -name "analyzed" -exec rm -fr "{}" \; -find . -name "*~" -exec rm -fr "{}" \; -find . -name "filenames_*.log" -exec rm -fr "{}" \; -find . -name "*.lck" -exec rm -fr "{}" \; -find . -name "*fm_shell_command*.log" -exec rm -fr "{}" \; -find . -name "*FM_WORK*" -exec rm -fr "{}" \; -find . -name "*formality*_svf" -exec rm -fr "{}" \; -find . -name "*formality*.log" -exec rm -fr "{}" \; -find . -name "filenames.log" -exec rm -fr "{}" \; diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/error_find.perl b/src/UWE_projectCode/tmp/tmp/Scripts/error_find.perl deleted file mode 100644 index 3813ec2..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/error_find.perl +++ /dev/null @@ -1,9 +0,0 @@ -#! /usr/bin/perl -open(USER,"dc.log") || die "can't open"; -open(Data,">error.txt") || die "can't open"; -while(){chomp;if($_ eq ""){next;} if($_=~/#+/){next;} -#if(/Warning\:/) {print Data "$_\n";} -if(/Error\:/) {print Data "$_\n";} -} -close(USER); -close(Data); diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/ezeco_setup.sh b/src/UWE_projectCode/tmp/tmp/Scripts/ezeco_setup.sh deleted file mode 100644 index b2d6934..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/ezeco_setup.sh +++ /dev/null @@ -1,101 +0,0 @@ -moduleName=`tclsh setModuleName.tcl` -echo $moduleName - -PP=`setPP.sh` -echo "PP = ${PP}" - -while read line -do - echo $line - R1_PATH=`echo $line` - echo $R1_PATH -done < dc.work/R1_PATH.txt - -echo $ECO_COMM - -EZ_FLOW=$1 -echo $EZ_FLOW -echo $EZECO_HOME - -if [ ${EZ_FLOW} == "dc" ]; then - POSTFIX="" -fi - -if [ ${EZ_FLOW} == "dft" ]; then - POSTFIX="_dft" -fi - -if [ ${EZ_FLOW} == "pr" ]; then - POSTFIX="_pr" -fi - -echo $POSTFIX - -cp $EZECO_HOME/scripts/easyeco_setup.template.script ./ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - -sed -i "s?easyeco.lic?$EZECO_HOME/../easyeco.lic?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - -sed -i "s?lib /lib/std2.lib?lib_file ez.work/lib.f?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i '/std1.lib/d' ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i '/std3.lib/d' ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - -if [ -e $R1_PATH/result/${moduleName}${POSTFIX}.v ]; then - sed -i "s?old.v?$R1_PATH/result/${moduleName}${POSTFIX}.v?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -else - sed -i "s?old.v?$R1_PATH/result/${moduleName}${POSTFIX}.sv?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -fi -if [ -e $R1_PATH/result/${moduleName}.v ]; then - sed -i "s?old_syn.v?$R1_PATH/result/${moduleName}.v?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -else - sed -i "s?old_syn.v?$R1_PATH/result/${moduleName}.sv?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -fi - -if [ ${EZ_FLOW} == "dc" ] ; then - if [ -e ${PP}/result/${moduleName}.sv ]; then - sed -i "s?new.v?${PP}/result/${moduleName}.sv?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - else - sed -i "s?new.v?${PP}/result/${moduleName}.v?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - fi -fi - -if [ ${EZ_FLOW} == "dft" ]; then - if [ -e ${R1_PATH}/result/${moduleName}_eco.v ]; then - sed -i "s?new.v?${R1_PATH}/result/${moduleName}_eco.v?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - else - sed -i "s?new.v?${R1_PATH}/result/${moduleName}_eco.sv?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - fi -fi - -if [ ${EZ_FLOW} == "pr" ]; then - if [ -e ${R1_PATH}/result/${moduleName}_eco.v ]; then - sed -i "s?new.v?${R1_PATH}/result/${moduleName}_eco.v?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - else - sed -i "s?new.v?${R1_PATH}/result/${moduleName}_eco.sv?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - fi -fi - -sed -i "s?old1.svf old2.svf?$R1_PATH/fm_svf.txt?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "s?new1.svf new2.svf?${PP}/fm_svf.txt?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - - -sed -i "s?lef lef?#lef lef?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "s?def old.def?#def old.def?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - -sed -i "s?ecoed.v?ez.work/$ECO_COMM/${moduleName}${POSTFIX}_eco.sv?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "s?ecoed.script?ez.work/$ECO_COMM/ecoed${POSTFIX}.script?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "s?ecoed.log?ez.work/$ECO_COMM/ecoed${POSTFIX}.log?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i '/debug/a\fast' ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - -sed -i "s?map_constant_by_tie_cell?#map_constant_by_tie_cell?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "s?spare_module?#spare_module?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - -sed -i "s?spare_instance?#spare_instance?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "s?spare_filler?#spare_filler?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "s?eco_gate_array_cell?#eco_gate_array_cell?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "s?# ignore_optimized_ff_in_setup?ignore_optimized_ff_in_setup?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i '/ignore_optimized_ff_in_setup/a\ignore_false_add_port' ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "/ignore_optimized_ff_in_setup/a\include ez.work/dont_use_cells.tcl" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script -sed -i "/ignore_optimized_ff_in_setup/a\ignore_false_eco_sub_module_input" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - -sed -i "s?top top?top ${moduleName}?" ez.work/$ECO_COMM/easyeco${POSTFIX}_setup.script - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/ezlec.sh b/src/UWE_projectCode/tmp/tmp/Scripts/ezlec.sh deleted file mode 100644 index 468b7bf..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/ezlec.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -# You may add the directory of the ezlec executable to PATH by $ export PATH=$PATH: -# or modify the "ezlec" below to the absolute path of ezlec executable -# Options description: -# old_file_list and new_file_list: paths to the file containing the list of RTL files. -# old_root and new_root: root module name in the old/new design from which the comparison starts. -# output_dir: path to the output directory -# rtlec_log_file: path to the RTL-EC log file -#ezlec --old_file_list old.f --new_file_list new.f \ - -moduleName=`tclsh setModuleName.tcl` -echo $moduleName - -while read line -do - echo $line - R1_PATH=`echo $line` - echo $R1_PATH -done < dc.work/R1_PATH.txt - -if [ -d ./ez.work/R1src ]; then - echo "R1 src already exit" -else - cp $R1_PATH/update_RTL_SVN.sh ./src/ - cd src - chmod +x update_RTL_SVN.sh - ./update_RTL_SVN.sh - rm ./update_RTL_SVN.sh - cd - - mkdir ./ez.work/R1src - cp -r ./src/* ./ez.work/R1src/ - grep 'Opening include file' $R1_PATH/dc.log > ez.work/R1src/R1_filelist.f - sed -i 's?Opening include file ./src?./ez.work/R1src?' ez.work/R1src/R1_filelist.f - sed -i 's?Opening include file ??' ez.work/R1src/R1_filelist.f - sed -i '/filelist/d' ez.work/R1src/R1_filelist.f -fi - -cd src -svn up -cd - - -cp -r ./src ./ez.work/$ECO_COMM/ - -ezeco -in ./ez.work/$ECO_COMM/easyeco_setup.script -write_ungroup_info_from_svf -cp old_ungroup_list.rpt ez.work/${ECO_COMM}/old_ungroup_list.rpt -cp new_ungroup_list.rpt ez.work/${ECO_COMM}/new_ungroup_list.rpt - -if [ ${moduleName} == "gsm_sub_top" ]; then - OLD_TOP=gsm_top - NEW_TOP=gsm_top -else - OLD_TOP=${moduleName} - NEW_TOP=${moduleName} -fi - -echo ${LAST_ECO} -if [ ${LAST_ECO} == "" ]; then - OLD_FILE=ez.work/R1src/R1_filelist.f -else - OLD_FILE=${LAST_ECO}/ECO_filelist.f -fi -echo ${OLD_FILE} - -echo ${PP} -grep 'Opening include file' ${PP}/dc.log > ez.work/${ECO_COMM}/ECO_filelist.f -sed -i 's?Opening include file ??' ez.work/${ECO_COMM}/ECO_filelist.f -sed -i '/filelist/d' ez.work/${ECO_COMM}/ECO_filelist.f - -ezlec --old_file_list ${OLD_FILE} --new_file_list ./ez.work/${ECO_COMM}/ECO_filelist.f \ - --old_top ${OLD_TOP} --new_top ${NEW_TOP} \ - --old_root ${moduleName} --new_root ${moduleName} \ - --output_dir ez.work/${ECO_COMM} \ - --old_flatten_paths_list old_ungroup_list.rpt \ - --new_flatten_paths_list new_ungroup_list.rpt \ - --rtlec_log_file ez.work/${ECO_COMM}/rtlec.log diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/filelist_gen.sh b/src/UWE_projectCode/tmp/tmp/Scripts/filelist_gen.sh deleted file mode 100644 index 0fb6d6a..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/filelist_gen.sh +++ /dev/null @@ -1,58 +0,0 @@ -echo "######################################################################" -echo "=====================Filelist_Generator===============================" -echo "This script is used for generating the initial version of the filelist" -echo "for your designed unit. Users should modified it manually in order to " -echo "make it correct for both simulation and synthesis. " -echo "Currently, only .h .vh .v .vp are supported. If other files are needed" -echo "to be included, please do it manually! " -echo "======================================================================" -echo "This script is generated by LI CHEN. 2020.05.28." -echo "======================================================================" -echo "######################################################################" - - -dir=`tclsh $RELATIVEPATH/ProjectPathSetting.tcl` -moduleName=`tclsh setModuleName.tcl` - -if [ ! -d ${dir}/src/${moduleName} ]; then - echo "Source code is not exist, exit." - exit -fi - -echo "The source code path is $dir/src/${moduleName}, the module name is $moduleName" - -#echo "Please type the dir name of your design unit: " -#read dir - -if [ -e ${dir}/src/${moduleName}/${moduleName}_filelist.v ]; then - mv ${dir}/src/${moduleName}/${moduleName}_filelist.v ${dir}/src/${moduleName}/${moduleName}_filelist_before.v -fi - -if [ `find $dir/src/${moduleName} -name "*.h"` ]; then - echo "//=============define files==============" >>${dir}/src/${moduleName}/${moduleName}_filelist.v -fi - -for hfile in `find $dir/src/${moduleName} -name "*.h"` -do - echo '`'"include" '"'$hfile'"' >> ${dir}/src/${moduleName}/${moduleName}_filelist.v -done - -for vhfile in `find $dir/src/${moduleName} -name "*.vh"` -do - echo '`'"include" '"'$vhfile'"' >> ${dir}/src/${moduleName}/${moduleName}_filelist.v -done - -echo "//=============design files==============" >> ${dir}/src/${moduleName}/${moduleName}_filelist.v - - -for vfile in `find $dir/src/${moduleName} -name "*.v"` -do - echo '`'"include" '"'$vfile'"' >> ${dir}/src/${moduleName}/${moduleName}_filelist.v -done - -for vpfile in `find $dir/src/${moduleName} -name "*.vp"` -do - echo '`'"include" '"'$vpfile'"' >> ${dir}/src/${moduleName}/${moduleName}_filelist.v -done - -echo "${dir}/src/${moduleName}/${moduleName}_filelist.v is generated successfully!" diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/get_CURRENT_DESIGN.sh b/src/UWE_projectCode/tmp/tmp/Scripts/get_CURRENT_DESIGN.sh deleted file mode 100644 index 331dcb2..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/get_CURRENT_DESIGN.sh +++ /dev/null @@ -1,3 +0,0 @@ -design=`tclsh setModuleName.tcl` -echo $design - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/get_DBs_info.sh b/src/UWE_projectCode/tmp/tmp/Scripts/get_DBs_info.sh deleted file mode 100644 index bfa7227..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/get_DBs_info.sh +++ /dev/null @@ -1,23 +0,0 @@ -moduleName=`tclsh setModuleName.tcl` -echo $moduleName - -PP=`setPP.sh` -echo "PP = ${PP}" - -grep '\.db' ${PP}/report/${moduleName}_area.txt > tmp.log - -sed -i "1i\ " RTL_DC_info.log -sed -i "1i\################################" RTL_DC_info.log -while read line -do - #echo $line - d=`echo $line | cut -d' ' -f3` - #echo $d - p=${d%/*} - dd=${d##*/} - ddd=${dd%)*} - #echo $ddd - #echo $p - sed -i "1i\# Use $ddd in `realpath $p`" RTL_DC_info.log -done < tmp.log -sed -i "1i\######### DBs Info###############" RTL_DC_info.log diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/get_PROJECT_PATH.sh b/src/UWE_projectCode/tmp/tmp/Scripts/get_PROJECT_PATH.sh deleted file mode 100644 index a2c4401..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/get_PROJECT_PATH.sh +++ /dev/null @@ -1,3 +0,0 @@ -dir=`tclsh ProjectPathSetting.tcl` -echo $dir - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/quick_start b/src/UWE_projectCode/tmp/tmp/Scripts/quick_start deleted file mode 100644 index f7bcf24..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/quick_start +++ /dev/null @@ -1,70 +0,0 @@ -echo "######################################################################" -echo "=====================quick start===============================" -echo "This script is used for generating the initial version of the files " -echo "used by synthesizing. Users should modified files manually if necessary." -echo "======================================================================" -echo "This script is generated by LIU CHANG. 2020.05.28." -echo "======================================================================" -echo "Last modifed 2020.05.29." -echo "======================================================================" -echo "######################################################################" - -if [ -e ProjectPathSetting.tcl ]; then - echo "project path is exist" -else - read -p "Please type the PROJECTPATH : " projectpath - n=${projectpath%?} - c1="${projectpath##$n}" - if [ "$c1" == "/" ]; then - projectpath_=$n - else - projectpath_=$projectpath - fi - echo $projectpath_ - echo "set PROJECTPATH ${projectpath_}" > ProjectPathSetting.tcl - echo 'puts ${PROJECTPATH}' >> ProjectPathSetting.tcl - echo "ProjectPathSetting.tcl is generated successfully!" -fi - -if [ -e ./src ]; then - echo "./src is exist." -else - read -p "Please type the source code path: " sourcecodepath - ln -s ${sourcecodepath} ./src - echo "./src soft link is created." -fi - -if [ -e setModuleName.tcl ]; then - echo "../setModuleName.tcl is exist." -else - read -p "Please type the name of top module: " moduleName - echo "set Design ${moduleName}" > setModuleName.tcl - echo 'puts ${Design}' >> setModuleName.tcl - echo " setModuleName.tcl is created." - - cp -r $RELATIVEPATH/Template/* ./ - touch tmp.log - echo "copy files in Template here." - - filelistpath=`find ./src/ -maxdepth 1 -name '*flist*' -type f` - echo $filelistpath - filelistname=${filelistpath#*src/} - echo $filelistname - echo '`'"include" '"./'$filelistname'"' > ./dc.work/filelist.v - - incdirlistpath=`find ./src/ -maxdepth 1 -name '*incdir*' -type f` - echo $incdirlistpath - incdirlistname=${incdirlistpath#*src/} - echo $incdirlistname - echo -f ./src/$incdirlistname \ > ./nc.work/sim_filelist.f - - echo ./dc.work/filelist.v \ >> ./nc.work/sim_filelist.f - echo " " >> ./nc.work/sim_filelist.f - echo //Add simulation files bellow >> ./nc.work/sim_filelist.f - echo "./$moduleName/dc.work/filelist.v is generated successfully!" - echo "./$moduleName/nc.work/sim_filelist.f is generated successfully!" - mv ./spyglass.work/demo.prj ./spyglass.work/$moduleName.prj - mv ./spyglass.work/waiver/demo.awl ./spyglass.work/waiver/$moduleName.awl -fi - - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/report_dc_summary.sh b/src/UWE_projectCode/tmp/tmp/Scripts/report_dc_summary.sh deleted file mode 100644 index 4e9d183..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/report_dc_summary.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/sh - -moduleName=`tclsh setModuleName.tcl` -echo $moduleName - -PP=`setPP.sh` -echo "PP = ${PP}" - -if [ ! -f dc.work/syn_summary.log ]; then - echo "Date"$'\t'$'\t'"|"$'\t'"RTL"$'\t'"|"$'\t'"Area"$'\t'$'\t'$'\t'"(Comb Area,"$'\t'$'\t'"NonComb Area,"$'\t'"Block Area )"$'\t'"|"$'\t'"Cells"$'\t'"(Comb Cells,"$'\t'"Seq Cells)"$'\t'"|"$'\t'"Slack(reg2reg)" > dc.work/syn_summary.log -fi - -PP_date=${PP#*dc.work/${moduleName}_} -echo "PP_date = $PP_date" - -Revision=`grep 'Revision' RTL_DC_info.log` -RTL=`echo $Revision | cut -d' ' -f2` -echo RTL = $RTL - -area=`grep 'Cell Area' ${PP}/report/${moduleName}_qor.txt` -Area=`echo $area | cut -d' ' -f3` -echo Area = $Area - -Conarea=`grep 'Combinational Area:' ${PP}/report/${moduleName}_qor.txt` -ConArea=`echo $Conarea | cut -d' ' -f3` -echo ConArea = $ConArea - -NonConarea=`grep 'Noncombinational Area:' ${PP}/report/${moduleName}_qor.txt` -NonConArea=`echo $NonConarea | cut -d' ' -f3` -if [ -z $NonConArea ]; then - NonConarea=`grep -A1 'Noncombinational Area:' ${PP}/report/${moduleName}_qor.txt | grep -A1 -v 'Noncombinational Area:'` - NonConArea=`echo $NonConarea | cut -d' ' -f1` -fi -echo NonConArea = $NonConArea - -Blockarea=`grep 'Noncombinational Area:' ${PP}/report/${moduleName}_qor.txt` -BlockArea=`echo $Blockarea | cut -d' ' -f4` -if [ -z $BlockArea ]; then - Blockarea=`grep -A1 'Macro/Black Box Area:' ${PP}/report/${moduleName}_qor.txt | grep -A1 -v 'Macro/Black Box Area:'` - BlockArea=`echo $Blockarea | cut -d' ' -f1` -fi -echo BlockArea = $BlockArea - -cell=`grep 'Leaf Cell Count' ${PP}/report/${moduleName}_qor.txt` -cellNum=`echo $cell | cut -d' ' -f4` -echo Cells = $cellNum - -Comcell=`grep 'Combinational Cell Count' ${PP}/report/${moduleName}_qor.txt` -ComcellNum=`echo $Comcell | cut -d' ' -f4` -echo ComCells = $ComcellNum - -Seqcell=`grep 'Sequential Cell Count' ${PP}/report/${moduleName}_qor.txt` -SeqcellNum=`echo $Seqcell | cut -d' ' -f4` -echo SeqCells = $SeqcellNum - -slack=`grep -A4 'reg2reg' ${PP}/report/${moduleName}_qor.txt | grep 'Critical Path Slack:'` -Slack=`echo $slack | cut -d' ' -f4` -echo Slack = $Slack - -#grep '.db' ${PP}/report/${moduleName}_area.txt > tmp.log -# -#while read line -#do -# #echo $line -# d=`echo $line | cut -d' ' -f3` -# #echo $d -# p=${d%/*} -# dd=${d##*/} -# ddd=${dd%)*} -# #echo $ddd -# #echo $p -#done < tmp.log - -echo "$PP_date"$'\t'"$RTL"$'\t'"$Area"$'\t'"$ConArea"$'\t'"$NonConArea"$'\t'"$BlockArea"$'\t'$'\t'"$cellNum"$'\t'$'\t'"$ComcellNum"$'\t'$'\t'"$SeqcellNum"$'\t'$'\t'$'\t'"$Slack" >> dc.work/syn_summary.log diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/runAll.sh b/src/UWE_projectCode/tmp/tmp/Scripts/runAll.sh deleted file mode 100644 index 771edd8..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/runAll.sh +++ /dev/null @@ -1,108 +0,0 @@ -MODULES=(DDR_top PCIE_Top RapidIO_top DMA0_wrapper RA14S_top SMC_BankMem) -MASK=( 1 1 1 1 0 1) - -i=0 -for m in ${MODULES[@]} -do - echo $i ${MASK[$i]} - if [ ${MASK[$i]} == 1 ]; then - echo $m - if [ $m == SMC_BankMem ]; then - gnome-terminal --geometry=100x30+100*$i+0 --window --title="$m" -x csh -c "cd Syn_SubModule/$m; make flow; cd ../SMC_Top; make flow; cd ../../; touch ${m}_done.tmp; exec csh" - else - gnome-terminal --geometry=100x30+100*$i+0 --window --title="$m" -x csh -c "cd Syn_SubModule/$m; make flow; cd ../../; touch ${m}_done.tmp; exec csh" - fi - fi - i=$(($i+1)) -done - -j=1 -while [ $j == 1 ] -do - echo "sleep 1" - sleep 1 - i=0 - k=0 - for m in ${MODULES[@]} - do - if [ ${MASK[$i]} == 1 ]; then - if [ -f ${m}_done.tmp ]; then - echo $i $m "continue" - i=$(($i+1)) - continue - else - echo $i $m "break" - k=1 - break - fi - fi - i=$(($i+1)) - done - if [ $k == 0 ]; then - j=0 - fi -done - -gnome-terminal --geometry=100x30+100*$i+0 --window --title="M8024V_SuperNode" -x csh -c "cd Syn_SubModule/M8024V_SuperNode; make flow; cd ../../; touch M8024V_SuperNode_done.tmp; exec csh" - -j=1 -while [ $j == 1 ] -do - echo "sleep 1" - sleep 1 - k=0 - if [ ! -f M8024V_SuperNode_done.tmp ]; then - echo "M8024V_SuperNode break" - k=1 - else - echo "M8024V_SuperNode continue" - fi - if [ $k == 0 ]; then - j=0 - fi -done - -date=`date +%Y_%m%d_%H%M` -echo $date -reportfile=flow_${date}.report -touch reportfile -i=0 -for m in ${MODULES[@]} -do - if [ ${MASK[$i]} == 1 ]; then - echo $m >> $reportfile - cat Syn_SubModule/${m}/R0_check.result >> $reportfile - echo " " >> $reportfile - echo " " >> $reportfile - fi - i=$(($i+1)) -done - -echo "M8024V_SuperNode:" >> $reportfile -cat Syn_SubModule/M8024V_SuperNode/R0_check.result >> $reportfile -echo " " >> $reportfile -echo " " >> $reportfile - -gnome-terminal --geometry=100x30+110*$i+0 --window --title="M8024V_FullChip" -x csh -c "cd Syn_Top; make flow; cd ..; touch M8024V_FullChip_done.tmp; exec csh" - -j=1 -while [ $j == 1 ] -do - echo "sleep 1" - sleep 1 - k=0 - if [ ! -f M8024V_FullChip_done.tmp ]; then - echo "M8024V_FullChip break" - k=1 - else - echo "M8024V_FullChip continue" - fi - if [ $k == 0 ]; then - j=0 - fi -done - -echo "M8024V_FullChip:" >> $reportfile -cat Syn_Top/R0_check.result >> $reportfile - -rm *_done.tmp diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/setPP.sh b/src/UWE_projectCode/tmp/tmp/Scripts/setPP.sh deleted file mode 100644 index 2acb7a6..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/setPP.sh +++ /dev/null @@ -1,12 +0,0 @@ -dir=`tclsh ./Tcls/ProjectPathSetting.tcl` -moduleName=`tclsh ./Tcls/setModuleName.tcl` -#echo $dir -#echo $moduleName -if [ ${PP} == "./" ]; then - #echo "PP = ./" - find ./dc.work -maxdepth 1 -name "${moduleName}_202*" | sort > tmp.log - PP=`tail -n 1 tmp.log` - echo ${PP} -else - echo ${PP} -fi diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/tab_change b/src/UWE_projectCode/tmp/tmp/Scripts/tab_change deleted file mode 100644 index a1459d5..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/tab_change +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -#author: wdzs-liusheng -#date:2018.7.18 -PROJECTPATH=`tclsh $RELATIVEPATH/ProjectPathSetting.tcl` -if grep -n " " -r $PROJECTPATH -R --include=*.{v,sv} re . - then - echo -e "there is TAB in the .v or .sv file of your directory. \c" - echo -e "please type N=2/4/8, here N means replacing 1*TAB with N*BLANKSPACE. \c" - echo -e "Usually, in UltraEdit N=2; in DVT, N=4; and in Nedit, N=8." - echo -e "N=\c"; - read N - case $N in - 2) sed -i "s/\t/ /g" `grep " " -rl $PROJECTPATH --include=*.{v,sv} re .`;; - 4) sed -i "s/\t/ /g" `grep " " -rl $PROJECTPATH --include=*.{v,sv} re .`;; - 8) sed -i "s/\t/ /g" `grep " " -rl $PROJECTPATH --include=*.{v,sv} re .`;; - esac - else - echo "there is no TAB in the .v or .sv file of your directory" -fi - diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/temp_files_cleaner.sh b/src/UWE_projectCode/tmp/tmp/Scripts/temp_files_cleaner.sh deleted file mode 100644 index affb9af..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/temp_files_cleaner.sh +++ /dev/null @@ -1,41 +0,0 @@ -echo "############################################################" -echo "This script is used for deleting temporary files and .svn files" -echo "Created by LI CHEN, 2020/5/28 ." -echo "###########################################################" - -echo "Please type the directory you want to delete temporary files and .svn files: " -read arg - -cd $arg - -find . -name "*.bak" -find . -name "*~" -find . -name "*.log" -find . -name "*.swp" -echo "Are you sure to delete these files? (y/n)" -read arga - -case $arga in -Y|y) -rm -f `find . -name "*.bak"` -rm -f `find . -name "*~"` -rm -f `find . -name "*.log"` -rm -f `find . -name "*.swp"` -echo "Deleted!" -;; -*) -;; -esac - -echo "Do you want to delete .svn in this dir? (y/n)" -read argb - -case $argb in -Y|y) rm -rf `find . -name ".svn"` -echo "Deleted!" - ;; -*) -;; -esac - -#deleting more files or directories can be extendied. diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/tmp.log b/src/UWE_projectCode/tmp/tmp/Scripts/tmp.log deleted file mode 100644 index e69de29..0000000 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/warning_find.perl b/src/UWE_projectCode/tmp/tmp/Scripts/warning_find.perl deleted file mode 100644 index 27b42b1..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/warning_find.perl +++ /dev/null @@ -1,9 +0,0 @@ -#! /usr/bin/perl -open(USER,"dc.log") || die "can't open"; -open(Data,">warning.txt") || die "can't open"; -while(){chomp;if($_ eq ""){next;} if($_=~/#+/){next;} -if(/Warning\:/) {print Data "$_\n";} -#if(/Error\:/) {print Data "$_\n";} -} -close(USER); -close(Data); diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/#syn_main.tcl# b/src/UWE_projectCode/tmp/tmp/Tcls/#syn_main.tcl# deleted file mode 100644 index b79db47..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/#syn_main.tcl# +++ /dev/null @@ -1,345 +0,0 @@ -set run_dc true -set run_pt false - -set RTL_DC_ID "" -set RTL_SIM_ID "" - -source -echo "./ProjectPathSetting.tcl" - -#-------------------------------------------------------------- -# NOTE: CHANGE DESIGN NAME TO YOUR OWN -source -echo "./setModuleName.tcl" - -source -echo "${PROJECTPATH}/syn/synopsys_dc.setup" - -if { [string match *FullChip $Design]} then { - echo "current design is $Design" - #source -echo "RTL_SIM_ID.tcl" - #source -echo "RTL_DC_ID.tcl" - if { $RTL_DC_ID != $RTL_SIM_ID} then { - echo "RTL_DC_ID != RTL_SIM_ID" - echo "RTL_DC_ID = $RTL_DC_ID" - echo "RTL_SIM_ID = $RTL_SIM_ID" - return - } -} - -#-------------------------------------------------------------- -#Reload ddc -echo $env(LOADDDC) -if { $env(LOADDDC) == "TRUE"} { - read_ddc $env(PP)/report/${Design}.ddc - return -} -#-------------------------------------------------------------- -set dc_date [exec date +%Y_%m%d_%H%M] -exec mkdir dc.work/${Design}_${dc_date} -exec mkdir dc.work/${Design}_${dc_date}/result -exec mkdir dc.work/${Design}_${dc_date}/report - -remove_design -all - -#-------------------------------------------------------------- - -set view_command_win {true} -set_host_options -max_cores 16 - -set compile_enable_async_mux_mapping {true} -set template_naming_style {%s_%p} -set template_parameter_style {%d} -set template_separator_style {_} - -set hdl_keep_licenses {false} -set hdlin_ff_always_async_set_reset {true} -set hdlin_latch_always_async_set_reset {true} -set hdlin_ff_always_sync_set_reset {false} -##set hdlin_use_carry_in true -set hdlin_check_no_latch {true} -set hdlin_mux_size_limit {32} -set hdlin_shorten_long_module_name true -set hdlin_while_loop_iterations 8192 -set hdlin_module_name_limit 128 - -set verilogout_equation {false} -set verilogout_single_bit {false} -set verilogout_higher_designs_first {true} -set verilogout_no_tri {true} -#set verilogout_show_unconnected_pins {false} -set verilogout_show_unconnected_pins {true} - -define_name_rules M2G_MODULE_LEVEL -allowed "A-Z a-z 0-9 _" ; -define_name_rules M2G_MODULE_LEVEL -first_restricted "0-9" ; -define_name_rules M2G_MODULE_LEVEL -replacement_char "_" ; -define_name_rules M2G_MODULE_LEVEL -collapse_name_space ; -define_name_rules M2G_MODULE_LEVEL -case_insensitive ; -define_name_rules M2G_MODULE_LEVEL -remove_internal_net_bus ; -define_name_rules M2G_MODULE_LEVEL -equal_ports_nets ; -define_name_rules M2G_MODULE_LEVEL -add_dummy_nets ; -define_name_rules M2G_MODULE_LEVEL -max_length 128 -type port ; -define_name_rules M2G_MODULE_LEVEL -max_length 64 -type cell ; -define_name_rules M2G_MODULE_LEVEL -max_length 64 -type net ; - -set default_name_rules M2G_MODULE_LEVEL ; - -set bus_dimension_separator_style {_} -set bus_naming_style {%s[%d]} -set bus_range_separator_style {:} -set bus_inference_descending_sort {true} -set bus_inference_style {%s[%d]} -#set write_name_nets_same_as_ports {false} -set write_name_nets_same_as_ports {true} -set bus_minus_style {-%d} -set bus_extraction_style {%s[%d:%d]} - -set change_names_dont_change_bus_members {false} -set uniquify_naming_style %s_%d - -set compile_instance_name_prefix {U} -set compile_instance_name_suffix {} - -set compile_preserve_subdesign_interfaces {true} -set compile_assume_fully_decoded_three_state_busses {false} -set compile_disable_hierarchical_inverter_opt {true} -set enable_recovery_removal_arcs {false} - -set fsm_auto_inferring {true} -set gen_show_created_symbols {true} -set case_analysis_with_logic_constants {true} -set power_cg_auto_identify {true} -set compile_auto_ungroup_count_leaf_cells {true} -set compile_auto_ungroup_override_wlm {true} - -set compile_delete_unloaded_sequential_cells {true} -set compile_seqmap_propagate_constants {true} -set compile_seqmap_propagate_high_effort {true} -set compile_seqmap_propagate_constants_size_only {true} - -set_svf dc.work/${Design}_${dc_date}/report/${Design}.svf - -#-------------------------------------------------------------- -#void warning Info # -#-------------------------------------------------------------- -#suppress_message HDL-193 -#suppress_message LINT-45 -#suppress_message OPT-1056 -#suppress_message PWR-877 -#set suppress_errors {VHDL-2285} - -#-------------------------------------------------------------- -#read↦ link↦ Check design# -#-------------------------------------------------------------- -source -echo "./dc.work/specific_filelist.tcl" -analyze -f SVERILOG -library work -vcs "-f ./nc.work/sim_filelist.f" -redirect -append -file dc.log {elaborate $Design} -current_design $Design -#link -if { [link] == 0} { - echo "Link failed!" - echo $env(CHECKCODE) - if { $env(CHECKCODE) == "TRUE"} { - exit - } - return -} - -#**set timing_enable_multiple_clocks_per_reg true -check_design > dc.work/${Design}_${dc_date}/report/${Design}_check_design.txt - -echo $env(CHECKCODE) -if { $env(CHECKCODE) == "TRUE"} { - echo "Link success!" - exit -} - -#-------------------------------------------------------------- -# set library -# NOTE: ADD YOUR OWN LIBRARY -# ------------------------------------------------------------- -#set_operating_conditions ssg_cworst_max_0p81v_m40c -#set zerowireload Zero -#set auto_wire_load_selection false -#set_wire_load_mode top -##set_wire_load_model -name "$zerowireload" [current_design] -#current_design $Design -source -echo "${PROJECTPATH}/syn/set_library.tcl" - -#------------------------------------------------------------------ -#set_dont_use -source -echo "${PROJECTPATH}/syn/dont_use.tcl" -#------------------------------------------------------------------ - -#remove_license HDL-Compiler - -#change name before compile -report_names -rules verilog -hierarchy > dc.work/${Design}_${dc_date}/report/rename_info_1.rpt -redirect -append -file dc.log {change_names -rules verilog -hierarchy -verbose} -report_names -rules M2G_MODULE_LEVEL -hierarchy > dc.work/${Design}_${dc_date}/report/rename_info_2.rpt -redirect -append -file dc.log {change_names -rules M2G_MODULE_LEVEL -hierarchy -verbose} - - -#-------------------------------------------------------------- -# read clock set and input output constraints -# NOTE: CHANGE FILE NAME TO YOUR OWN -# --------------------------------------------------------------- -echo $env(DEBUGSDC) -if { $env(DEBUGSDC) == "TRUE"} { - return -} - -redirect -append -file dc.log {source -echo "$env(SDCPATH)/${Design}.sdc"} -source -echo "$env(SDCPATH)/synopsys.sdc" - -#----------------------------------------------------------------- -#set dont_touch design -#----------------------------------------------------------------- -source -echo ./dc.work/syn_specific.tcl - -uniquify -dont_skip_empty_designs - -#---------------------------------------------------------------------------- -#set UPF file -#NOTE: -# -#load_upf MatrixIP_top_u2.upf -#set upf_allow_DD_primary_with_supply_sets true -#set_voltage 0.81 -object_list {VDD VDD1sw VDD2sw} -#set_voltage 0.0 -object_list {VSS} -##insert_mv_cells -isolation -verbose -#check_mv_design -verbose - -#-------------------------------------------------------------- -#check design -report_port -verbose > dc.work/${Design}_${dc_date}/report/${Design}_port.txt -report_clock > dc.work/${Design}_${dc_date}/report/${Design}_clock.txt - - -set_fix_multiple_port_nets -all -buffer_constants -feedthroughs [ get_designs "*" ] - -current_design $Design - -#set_ultra_optimization true - -set_max_dynamic_power 0.0 - -#ungroup -all -flatten - -#set ports_clock_root [filter_collection [get_attribute [get_clocks] sources] object_class==port] -#group_path -name REGOUT -to [all_outputs] -#group_path -name REGIN -from [remove_from_collection [all_inputs] $ports_clock_root] -#group_path -name FEEDTHROUGH -from [remove_from_collection [all_inputs] $ports_clock_root] -to [all_outputs] - -group_path -name in2reg -from [all_inputs] -critical_range 1000.0 -group_path -name reg2out -to [all_outputs] -critical_range 1000.0 -group_path -name in2out -from [all_inputs] -to [all_outputs] -critical_range 1000.0 -group_path -name reg2reg -from [all_registers] -to [all_registers] -critical_range 1000.0 - -#set_compile_directives -constant_propagation true [get_cells -hierarchical *] - -set_cost_priority -delay -set_critical_range 0.2 $Design -redirect -append -file dc.log {remove_unconnected_ports [get_cells -hier * ] } - -check_design > dc.work/${Design}_${dc_date}/report/${Design}_check_design_aftercom.txt -analyze_datapath_extraction > dc.work/${Design}_${dc_date}/report/${Design}_analyze_datapath_extraction.rpt - -compile_ultra -no_autoungroup -timing_high_effort -gate_clock -no_seq_output_inversion -scan -#compile_ultra -no_autoungroup -timing_high_effort -gate_clock -no_seq_output_inversion - -#foreach_in_collection desig [remove_from_collection [get_designs "*"] [get_designs {FADDSUB_top}]] { -# lappend rename_design_list $desig -#} - -#rename_design $rename_design_list -prefix FADDSUB_ -rename_design [remove_from_collection [get_designs "*"] $Design] -prefix ${Design}_ - - -#-------------------------------------------------------------- -#write_report - -if { [llength [get_cells main_gate -hier -filter "clock_gating_logic == true"]] != 0 } { - remove_clock_gating_check [get_cells main_gate -hier -filter "clock_gating_logic == true"] -} - - -report_names -rules verilog -hierarchy > dc.work/${Design}_${dc_date}/report/rename_info_3.rpt -redirect -append -file dc.log {change_names -rules verilog -hierarchy -verbose} -report_names -rules M2G_MODULE_LEVEL -hierarchy > dc.work/${Design}_${dc_date}/report/rename_info_4.rpt -redirect -append -file dc.log {change_names -rules M2G_MODULE_LEVEL -hierarchy -verbose} - -#write_report -write -format verilog -hierarchy $Design -output dc.work/${Design}_${dc_date}/result/${Design}.sv -write -format ddc -hierarchy -output dc.work/${Design}_${dc_date}/report/${Design}.ddc -report_timing -max 1000 -transition_time -capacitance > dc.work/${Design}_${dc_date}/report/${Design}_timing.txt -report_constraint -all_violators > dc.work/${Design}_${dc_date}/report/${Design}_constraint.txt -write_script > dc.work/${Design}_${dc_date}/report/${Design}.sdc -write_sdc -nosplit dc.work/${Design}_${dc_date}/report/${Design}.sdc -report_design > dc.work/${Design}_${dc_date}/report/${Design}_design.txt -report_reference -hierarchy > dc.work/${Design}_${dc_date}/report/${Design}_reference.rpt -report_net > dc.work/${Design}_${dc_date}/report/${Design}_net.rpt -report_names -hierarchy > dc.work/${Design}_${dc_date}/report/${Design}_names.rpt -report_resources -hierarchy > dc.work/${Design}_${dc_date}/report/${Design}_resource.rpt -report_multibit -hier > dc.work/${Design}_${dc_date}/report/${Design}_multibit.rpt -report_power > dc.work/${Design}_${dc_date}/report/${Design}_power.txt -report_qor > dc.work/${Design}_${dc_date}/report/${Design}_qor.txt -report_clock_tree_power > dc.work/${Design}_${dc_date}/report/${Design}_clkpower.txt -report_clock_gating > dc.work/${Design}_${dc_date}/report/${Design}_clock_gating.txt -report_area -nosplit -hierarchy > dc.work/${Design}_${dc_date}/report/${Design}_area.txt -report_timing -max 100 -transition_time -capacitance -group in2reg > dc.work/${Design}_${dc_date}/report/${Design}_in2reg -report_timing -max 100 -transition_time -capacitance -group reg2out > dc.work/${Design}_${dc_date}/report/${Design}_reg2out -report_timing -max 100 -transition_time -capacitance -group in2out > dc.work/${Design}_${dc_date}/report/${Design}_in2out -report_timing -max 100 -transition_time -capacitance -group reg2reg > dc.work/${Design}_${dc_date}/report/${Design}_reg2reg -check_timing -include {gated_clock clock_crossing} > dc.work/${Design}_${dc_date}/report/${Design}_check_timing.rpt -#report_timing \ -# -path full_clock \ -# -transition_time \ -# -crosstalk_delta \ -# -capacitance \ -# -input_pins \ -# -nets \ -# -delay max \ -# -derate \ -# -max_paths 100 > ${dc_date}/timing/${DESIGN}_${dc_date}_timing_dc.txt -# - -set_svf -off - -check_mv_design -verbose > dc.work/${Design}_${dc_date}/report/${Design}_check_upf.log - -#remove_design -hierarchy MatrixIP_Core_Scalar_PG -#remove_design -hierarchy MatrixIP_Core_Vector_PG - -#write -format verilog -hierarchy $Design -output dc.work/${Design}_${dc_date}/result/${Design}_hier.sv -#exec rm ../Netlist_9T_125C/${Design}.v -#exec cp dc.work/${Design}_${dc_date}/result/${Design}.sv ../Netlist_9T_125C/${Design}.v -#-------------------------------------------------------------- -#quit - -set dc_date0 [exec date +%Y_%m%d_%H%M] -echo ${dc_date} ${dc_date0} - -exec $env(SCRIPTPATH)/get_DBs_info.sh -exec $env(SCRIPTPATH)/report_dc_summary.sh -exec cp dc.work/${Design}_${dc_date}/report/${Design}_check_design.txt dc.work/${Design}_${dc_date}/check_design.txt -exec cp dc.work/${Design}_${dc_date}/report/${Design}_check_timing.rpt dc.work/${Design}_${dc_date}/check_timing.txt -exec cp dc.log dc.work/${Design}_${dc_date}/dc.log -exec cp command.log dc.work/${Design}_${dc_date}/command.log -exec cp RTL_DC_info.log dc.work/${Design}_${dc_date}/RTL_DC_info.log -exec cp RTL_DC_ID.tcl dc.work/${Design}_${dc_date}/RTL_DC_ID.tcl -exec cp update_RTL_SVN.sh dc.work/${Design}_${dc_date}/update_RTL_SVN.sh - -#remove_sdc -#source -echo "${PROJECTPATH}/syn/SDC/${Design}.sdc" - -source -echo "./dc.work/syn_specific_after.tcl" - -if { [file exists dc.work/${Design}_${dc_date}/result/${Design}.sv] == 1} { -exec mkdir NetlistSubmit/${Design}_${dc_date} -exec cp dc.work/${Design}_${dc_date}/result/${Design}.sv NetlistSubmit/${Design}_${dc_date}/ -exec cp dc.work/${Design}_${dc_date}/report/${Design}_qor.txt NetlistSubmit/${Design}_${dc_date}/ -#exec cp dc.work/${Design}_${dc_date}/report/${Design}_memory_clock.rpt NetlistSubmit/${Design}_${dc_date}/ -} - -echo $env(FLOW) -if { $env(FLOW) == "TRUE"} { - exit -} diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swm b/src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swm deleted file mode 100644 index 7dec6b60ef27c341dc89a95612f3814119ac75ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swn b/src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swn deleted file mode 100644 index 1c6231ec981690915f9982bd920d8691dc055ea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 O+T_bln=OpV`T1|TUL;ol diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swo b/src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swo deleted file mode 100644 index 5e63db137024aa5b501b17eb4f6fcc3d23a13d83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNTWlOx8JO{3HC%$ePZ=axA$ zwl^zNi3*8_f&dALydV|cAPGVs5{g7og^*B%1QHbzLeNS;%TvPx<%z;~&Y9VrUB~vi z3lc~((&zQg{I~O;^Z)1n&+N+Z^5iu6SmhxN*WH@-zTgZRyOoxV!6h zD)haGdFF0}pM}8c#q-t34XTTV!>hdMQCGLUN@O^@G3U>759A&g&;xfZJvcftEQAyb zhsizfT^dkc&YpW9_dxD}+yl7>au4Jl$UTsIAosxklLw+;pY}8ien(=opM2iZ^ZBpj zI-lGRdY-?PJg+79f7kQ;oyqsdlF$1R1*x9ocK(rjAooD-f!qVR2XYVO9>_hAdm#5f z?t$C`xd(C&{1-f+O z;0Fga?fbyzfv12Iz=wbvcWK%$fNudUzyU141Pq`E90K+Mf4WoCegs?vE&~p53b+q= z;|@*xDewYt8Tbyc3Y-UKfC^9sZUKIe-!424TmrrhTm)u;!@%F)rD?wft^t>T3&0fc zQQ!gK4&bi`H0>wAa{vcU1E+ukz)QDj+LwW4;C|rM{hIb|AO;==-n>=Qt^?PAF9Od3 z7BB&P82INt*av(M_yXVolfVRU2>1sMO5Oy14O{^(11;c_!0o`RIH-9AcoFyp5CAj4 zy}%93p_s=z@&9%gXAv=cH?SQ>^*Hir?A1d*4yeDz!q7GuU3Xm4io%#}YTFVUe(Xim zVY)>P<~Tgd5cumXq()tdheR*3t!9?O&^eTQy3^z~r|WjqppIX+4Qluvk905Ul2>OQ zVgCSNv|B7IzbMo+XCi)l+?P49wG4Fy4?EVw6q%$XR1u>qG3V^& z3WJbw7OsIZUNITB>mJlWm!%tmLrq85eAv=e2BV%1r98GQdxNyP=d7CsIwZ}~CYCjp zLG0NVVoZ&Y0FS}Qro%{y(~_w)HFU48GIxcAoxw;B@qleap>9OB zk6DufTP1$BWF9Y>=ag}h+x9@3JTI3_^<+J?;Uzg9k41PcMy7Kb_+e*B6ou)#P-bRS zXtTwlU>bl9!Txr+MX>LkePr~}M7x;DKKXUiq-N~8Se{r5eKN5NF#=Vtm%Xsb ze85!1AuS135v+YGmFWzjCT2FW*I2)7zT@ZtGNB6K0FmA&XUGBv)L2R~Btuf5g+5s= zJLD1aACE%YKr$tT;qtM5nRUlOZU@iF@)JZaUnJlqQnieJWJeo$+>axbuVWAS++#uw z4d9%*9H_ zp0Fk3B3lY8+XNyZyG(4(X^Kzwlr}|IVkU$jH`7v}#H0mLQYR>bh1*>{z{>3^CTPP) z1fc|wQz~<;;lpQSY$7#te znY1)fnm(ru>VQoR^F~4z#i5t{t7DTe4Kl>MwU5lr9Z81SaX|%7HQORBMKU#evR12& z9U&)9kiz2p(s*H$v@~Wk{O;#kah^H8ZW6&hsM(sbTm9`Bf%q!b7v>kI=)&YQove`) zWT^A4AV=CwR~yTa$uHYe9X>&Ng(-iCyGjs9G72|I)L>Y(Qg4y_afpqn+%Zz}h+k|g zoj0LS!|0GGULy`sgheD-zBVUAYMmC;1f3Oo5@OAjdF<#Zl+j}iJ4mU{we8ZXTx^zA zEI7H|xe+!4?1YFy@r&|qi-%fs^Ru5GA6uL|xj3;Yo(uQ^N6JIMAc@350rha#Fe_Eu zpO!g(25Ci&q)29F7srp2v5Av2r^iWcd|~qR44FAOJx&&9$>Xz2^JMnS%;2k~*Oa-? zKaWjxPLCQ3EQ;VFWseNH&eW1Zp?yb9D{ja;VeCq;{~q9L=+Ey4-a;?_8t^MX^y=RPz63lCc)(M@`+@fX_W=8WTY;V(gcJ{K`F$d*FZA18NIp8+Mf0 z(@#y!p4oOomk%}Uz(rY=7(qW(Qm1?n#~eNiXT$N0)k=sgs;(IpIW~_L;uX~X8S+fQ zrD~@=E4<)`m1rZ?lc*!)Kd6wSufc9hn|(<=#QS$+j=cq*$ONhwcTR?@y? zEA8dm*o z(y9&b(5q=hoDD|*>H(#fM@QnvgMjYWD` zM9S&OelzVaNEruLLA=X~L8IT5KB7Xn!L*LXW@B=Wj-f-L%c$jXay)ms zZ;l1Le9$F_rk1z6mK<@BG7i61e9p)xc3$YJ``;2LabSt~lx+g#YZiQ9Ss02|M5xN6 zjR0K-jy8sep`pEsHmfSYggn^=WltKC;1kW2h$tz^6h~l;JehuT^d{Q8jr4{m4tQ}T z&utIWpiT_i_Y55^pN)4z=tVQ6M(A_ATX9z55GT@833vk`&tmZo0+zNFi@^}_dPeQ% zf?7Eyu~}%#CJ<7#J;RAjMp|{)ZzgQA7{J>os799Al=gJ}d3%%5Nm@AQ5r;LYRbnFK z6qI|%RnEGlEZ^hdc%(iG?0H2bd;{sWy-@@a*|ToNH;`&!zR4y2j<9pVv h_)^t6UT>1J=kvh9d2%K}b*-&!zU+0_LYa)ue*-tsF}(l) diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swp b/src/UWE_projectCode/tmp/tmp/Tcls/.syn_main.tcl.swp deleted file mode 100644 index d1fa3271a5b6531e2849f944664dc410208b0bdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 ${dc_date}/check_design.txt - -current_design $DESIGN -set timing_enable_multiple_clocks_per_reg true - -current_design $DESIGN -change_names -rules verilog -hierarchy -verbose > ${dc_date}/change_names_0.v - -set BACKEND false -source "../../SDC/$DESIGN.sdc" - -source "../../SDC/DontUseCells.sdc" - -set_dont_touch_network [all_clocks] - -report_clock -check_timing -include {gated_clock clock_crossing} > ${dc_date}/check_timing.txt - -current_design $DESIGN - -foreach_in_collection design_name [get_designs *] { - current_design $design_name - set_fix_multiple_port_nets -all -buffer_constants - set_fix_multiple_port_nets -feedthroughs - set_max_fanout 40 $design_name -} - -current_design $DESIGN - -#set_wire_load_mode segmented -remove_wire_load_model -set_operating_conditions SS0P99VN40C -set_wire_load_model -name ZeroWLM -uniquify -force - -set_ultra_optimization true -set compile_seqmap_propagate_constants true - -set_driving_cell -lib_cell STN_BUF_S_4 -library RHSTD_ss0p99vn40c [remove_from_collection [all_inputs] {clk rstn}] -set_input_transition 0.05 [all_inputs] -set_max_transition 0.1 $DESIGN -set_load 0.015 [all_outputs] -set_max_fanout 10 $DESIGN -set_max_fanout 1 [all_inputs] -set_fanout_load 10 [all_outputs] -set_max_area 0.0 -#set_max_dynamic_power 0.0 - -set_cost_priority -delay -set_critical_range 0.3 $DESIGN - -#compile_ultra -no_autoungroup -gate_clock -scan -compile_ultra -no_autoungroup -timing_high_effort_script -gate_clock -no_seq_output_inversion -scan -#set_max_capacitance 3.0 $DESIGN -#compile_ultra -incremental - -set_fix_multiple_port_nets -all -buffer_constants -feedthroughs -change_names -rules verilog -hierarchy -verbose > ${dc_date}/change_names_3.v - -write -format ddc -hierarchy $DESIGN -output ${dc_date}/ddc/${DESIGN}_${dc_date}_ultra.ddc - -report_area > ${dc_date}/area/${DESIGN}_${dc_date}_area_ultra.txt -report_power > ${dc_date}/power/${DESIGN}_${dc_date}_power_ultra.txt -report_area -nosplit -hierarchy > ${dc_date}/area/${DESIGN}_${dc_date}_area_ultra_ALL.txt -report_qor > ${dc_date}/qor/${DESIGN}_${dc_date}_qor.txt -report_constraint -all_violators > ${dc_date}/constraint/${DESIGN}_${dc_date}_constraint.txt -write_sdc -nosplit ${dc_date}/sdc/${DESIGN}_${dc_date}.sdc -#report_transitive_fanout -clock_tree > ${dc_date}/clock.info - - -#report_timing -max 50 > ${dc_date}/timing/${DESIGN}_${dc_date}_setup.rpt -#report_timing -delay min -max 50 > ${dc_date}/timing/${DESIGN}_${dc_date}_hold.rpt - -report_timing \ - -path full_clock \ - -transition_time \ - -crosstalk_delta \ - -capacitance \ - -input_pins \ - -nets \ - -delay max \ - -derate \ - -max_paths 100 > ${dc_date}/timing/${DESIGN}_${dc_date}_timing_detailed.txt - -set_svf -off - -write -format verilog -hierarchy $DESIGN -output ${dc_date}/result/${DESIGN}_${dc_date}_ultra.v - -check_timing -include {gated_clock clock_crossing} > ${dc_date}/check_timing_1.txt - -exec date - -exit diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/cdc_goal.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/cdc_goal.tcl deleted file mode 100644 index 3361831..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/cdc_goal.tcl +++ /dev/null @@ -1,120 +0,0 @@ -#--------------------------------------------------------- -# CDC Hierarchical flow settings -#--------------------------------------------------------- -#set_option decompile_block_constraints yes -#set_option abstract_file_name_style short -#set_option include_block_interface abstract -#set_option use_block_interface yes - -#--------------------------------------------------------- -# sdc constraint to check cdc settings -#--------------------------------------------------------- -#set_option sdc2sgdc yes -#set_option sdc2sgdcfile ./${top-module-name}.sdc2sgdc.out - -#--------------------------------------------------------- -# CDC goal settings -#--------------------------------------------------------- -proc cdc_setup_check_add_settings {} { - -#set_option sdc_domain_mode sta_scg -#set_parameter sdc_generated_clocks yes; ## sdc generated clocks translated as sgdc clocks -#set_parameter pt supermode ; ##supports largest set of SDC queries -#set_parameter show_all_sdc_violations yes ; ##enables reporting of *all* issues in sdc -#set_parameter tc_ignored_commands sdc_ignored.txt; ## file containing list of sdc commands to be ignored for cdc -#set_parameter tc_stop_parsing_ignored_commands yes; ## avoids parsing of sdc commands ignored in tc_ignored_commands file -set_parameter use_inferred_abstract_port no -set_goal_option overloadrules { Reset_check12+severity=Error+msgLabel=NORMAL_WARNING Reset_check12+severity=Info+msgLabel=CORNER_WARNING } -} - -proc cdc_verify_struct_add_settings {} { - -#set_goal_option addrule { Ac_abstract01 } ; ##used for CDC hierarchical flow -#set_goal_option block_abstract yes ; ##used for CDC hierarchical flow -set_goal_option report { CDC-detailed-report SynchInfo moresimple} -set_parameter dump_sync_info detailed_mod -set_parameter show_module_in_spreadsheet yes -set_parameter enable_ac_sync_qualdepth yes -set_parameter conv_sync_as_src yes -set_parameter conv_src_seq_depth 0 -set_parameter check_multiclock_bbox yes -set_parameter cdc_qualifier_depth 3 -set_parameter conv_sync_seq_depth 1 -set_parameter handle_combo_arc yes -set_parameter allow_combo_logic yes -set_parameter report_common_reset yes -set_parameter allow_merged_qualifier strict -set_parameter show_clock_tag_debug_data yes - -set_goal_option addrules { Clock_sync05a Clock_sync06a } -set_goal_option overloadrule { Clock_sync05a+severity=Error } -set_goal_option overloadrule { Clock_sync06a+severity=Error } -set_goal_option overloadrules Reset_sync02+severity=Error - -#set_parameter enable_sync no ; ## disable automatically recognize synchronization scheme -#set_parameter enable_clock_gate_sync no ;## disable automatically recognize synchronization scheme -#set_parameter enable_multiflop_sync no ; ## disbale automatically recognize synchronization scheme -#set_parameter enable_mux_sync none ; ## disable automatically recognize synchronization scheme -#set_parameter enable_and_sync no ; ## disable automatically recognize synchronization scheme -#set_parameter glitch_protect_cell "gp_and,gp_mux" ; ## specify glitch protect cell naem - -#set_parameter synchronize_cells "sync1,sync2" ; ## user defined synchronizer for scalar control signal -#set_parameter reset_synchronize_cells "sync1,sync2" ; ## user defined synchronizer for scalar control signal -#set_parameter synchronize_data_cells "sync1,sync2" ; ## user defined synchronizer for vector control signal -#set_parameter msg_inst_mod_report all ; ## - -#set_parameter report_all_flops yes ; ## report all flops for Reset_sync02 -#set_parameter enable_reset_cone_spreadsheet yes ; ## enable spreadsheet for Reset_sync02 -} - -proc cdc_verify_add_settings {} { - -#set_parameter fa_proof_mode cdr; ## enable coverage driven formal (cdf) mode -#set_parameter fa_enable_cdr_coverage yes; ## with previous -#set_parameter fa_enable_cdr_reactive no; ## with previous -#set_parameter fa_coverage_witness yes; ## show waveform for partially-proved in cdf mode -#set_parameter fa_atime 200; ## increase maximum time (in sec) spent verifying each property -#set_parameter fa_enable_rca yes; ## enable root cause analysis for 0% coverage and vacuously-proved properties -##set_parameter fa_msgmode audit; ## enable cdc_verify to create property file then quit without verifying -##set_parameter fa_propfile ; ## enables manual selection of properties to verify (useful for focusing effort) -#set_parameter cdc_bus_compress none; ## make Ac_glitch03 and Ac_cdc01a check all bits of vectored destination -set_parameter cdc_dump_assertions sva -set_parameter fa_audit yes - -} - -current_goal cdc/cdc_setup -#set_goal_option addrules {Setup_port01 Setup_blackbox01} -current_goal none - -current_goal cdc/cdc_setup_check -read_file -type awl waiver/cdc.awl -cdc_setup_check_add_settings -current_goal none - - - - -current_goal cdc/clock_reset_integrity -read_file -type awl waiver/cdc.awl - -current_goal none - - - - -current_goal cdc/cdc_verify_struct -read_file -type awl waiver/cdc.awl -cdc_setup_check_add_settings -cdc_verify_struct_add_settings -current_goal none - - - - -current_goal cdc/cdc_verify -read_file -type awl waiver/cdc.awl -cdc_setup_check_add_settings -cdc_verify_struct_add_settings -cdc_verify_add_settings -current_goal none diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/common_options.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/common_options.tcl deleted file mode 100644 index 5735127..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/common_options.tcl +++ /dev/null @@ -1,22 +0,0 @@ -set_option project_read_only yes -set_option mthresh 1000000 -set_option dw yes -set_option disable_amg yes -set_option show_lib yes -set_option allow_duplicate_files true -set_option allow_module_override yes -set_option sort yes -set_option prefer_tech_lib yes -set_option enable_pgnetlist_all_products yes -set_option enable_pgnetlist yes -set_option max_err_count 0 -set_option perflog yes -set_option enable_unified_naming_search yes -set_option nosavepolicies all -set_option report_max_inst {-1} -set_option report_inst_backref yes -set_option report_ip_waiver yes -set_option enable_elapsed_time yes -set_option disable_html_report {datasheet dashboard html} -set_option pragma {synopsys synthesis} - diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/compile.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/compile.tcl deleted file mode 100644 index a33e599..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/compile.tcl +++ /dev/null @@ -1,34 +0,0 @@ -sh mkdir synopsysdc -sh mkdir synopsysdc/grlib -define_design_lib grlib -path synopsysdc/grlib -sh mkdir synopsysdc/techmap -define_design_lib techmap -path synopsysdc/techmap -sh mkdir synopsysdc/gaisler -define_design_lib gaisler -path synopsysdc/gaisler -sh mkdir synopsysdc/work -define_design_lib work -path synopsysdc/work -analyze -f VHDL -library grlib $PROJECTPATH/LEON3LIB/grlib/stdlib/version.vhd -analyze -f VHDL -library grlib $PROJECTPATH/LEON3LIB/grlib/stdlib/config.vhd -analyze -f VHDL -library grlib $PROJECTPATH/LEON3LIB/grlib/stdlib/stdlib.vhd -analyze -f VHDL -library grlib $PROJECTPATH/LEON3LIB/grlib/stdlib/stdio.vhd -analyze -f VHDL -library grlib $PROJECTPATH/LEON3LIB/grlib/util/util.vhd -analyze -f VHDL -library grlib $PROJECTPATH/LEON3LIB/grlib/amba/amba.vhd -analyze -f VHDL -library grlib $PROJECTPATH/LEON3LIB/grlib/amba/devices.vhd -analyze -f VHDL -library techmap $PROJECTPATH/SPI/gencomp.vhd -analyze -f VHDL -library gaisler $PROJECTPATH/LEON3LIB/gaisler/uart/uart.vhd -analyze -f VHDL -library work $PROJECTPATH/UART/CONV.vhd -analyze -f VHDL -library work $PROJECTPATH/UART/CONV_1.vhd -analyze -f VHDL -library work $PROJECTPATH/UART/apbuart.vhd -analyze -f VHDL -library work $PROJECTPATH/UART/apbuart_top.vhd -analyze -f VHDL -library techmap $PROJECTPATH/SPI/SPI_syncram_2p_tx.vhd -analyze -f VHDL -library techmap $PROJECTPATH/SPI/SPI_syncram_2p_rx.vhd -analyze -f VHDL -library gaisler $PROJECTPATH/SPI/spictrlx_extended.vhd - -if {$DESIGN=={SMC_Top}} then { -analyze -f SVERILOG -library work -define {_USE_SYNED_COREPAC_ _USE_SYNED_SMC_BANKPORT_} $PROJECTPATH/DM6672VList.v -} else { -analyze -f SVERILOG -library work -define {_USE_SYNED_COREPAC_} $PROJECTPATH/DM6672VList.v -} - -analyze -f VERILOG -library work $PROJECTPATH/CorePac/MBIST_Ctrl/mgc_utility.v - diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/copyLib.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/copyLib.tcl deleted file mode 100644 index 28fdda7..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/copyLib.tcl +++ /dev/null @@ -1,25 +0,0 @@ -source -echo "$env(RELATIVEPATH)/ProjectPathSetting.tcl" -set run_dc true -source "${PROJECTPATH}/syn/synopsys_dc.setup" - -#echo $design_library - -foreach lib $design_library { - set strs [string trimright $lib db] - #echo $strs - if {$strs == "cdn_hs_phy_top."} { - break - } - echo ${strs}lib - #78-82 - exec find /space/PRJ_Back_End/FT-M8024V/ -name ${strs}lib | xargs -n1 -I \{\} cp \{\} ${PROJECTPATH}/syn/db-8024/tmp - exec find /space/PRJ_Back_End/FT-M8024V/ -name "u028efuhc01603218400_wc.lib" | grep "V1P1" | xargs -n1 -I \{\} cp \{\} ${PROJECTPATH}/syn/db-8024/tmp - #only read ,cann't gzip - exec find /space/PRJ_Back_End/FT-M8024V/ -name "*FXTDC012NSHJ0C_ssg0p81vm40c.lib*" | xargs -n1 -I \{\} cp \{\} ${PROJECTPATH}/syn/db-8024/tmp - #two - exec find /space2/Library/UMC28HPC/IP -name "*FXPLL357HJ0C_ssg0p81vm40c.lib*" | grep -v "Z-old_version" |xargs -n1 -I \{\} cp \{\} ${PROJECTPATH}/syn/db-8024/tmp - exec find /space/PRJ_Back_End/FT-M8024V/ -name "*TCSU2802_core_WC.lib*" |xargs -n1 -I \{\} cp \{\} ${PROJECTPATH}/syn/db-8024/tmp - exec find /space/PRJ_Back_End/FT-M8024V/ -name "*foj0c_qrs18_io_ssg0p81v1p62vm40c.lib*" | grep "V1.6.7" | xargs -n1 -I \{\} cp \{\} ${PROJECTPATH}/syn/db-8024/tmp - #echo $libs -} -exit diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/custom_options.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/custom_options.tcl deleted file mode 100644 index b3c0265..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/custom_options.tcl +++ /dev/null @@ -1,48 +0,0 @@ -#--------------------------------------------------------- -# Increase the threshold limit for the size of the macro -# in order to completely simulate the macro. -# Resolve FLAT_504 message -#--------------------------------------------------------- -set_option define_cell_sim_depth 14 - -#--------------------------------------------------------- -# Enable module based report for block owner to review -#--------------------------------------------------------- -#set_option enable_module_based_reporting yes - -#--------------------------------------------------------- -# Option to enable SystemVerilog syntax -#--------------------------------------------------------- -set_option enableSV09 yes - -#--------------------------------------------------------- -# Option to enable Verilog2005 syntax -#--------------------------------------------------------- -set_option enableV05 yes - -#--------------------------------------------------------- -# Libraries setting -#--------------------------------------------------------- -#set_option v /path/to/your/library/file.v -#set_option y /path/to/your/library/directory -#set_option libext { .v .sv .vhd .vh } - -#--------------------------------------------------------- -# define macro and include file path setting -#--------------------------------------------------------- -#set_option define your-macro -#set_option incdir /path/to/your/include/directory - - -#--------------------------------------------------------- -# grey box or blackbox setting -#--------------------------------------------------------- -#set_option stop eth_miim -#set_option stop module-name -set_option stop DW_lp_fp_multifunc -#set_option stopfile RTL-file-name -#set_option stopdir HDL-directory -#set_option ignoredu module-name -#set_option ignorefile RTL-file-name -#set_option ignoredir HDL-directory - diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/formality.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/formality.tcl deleted file mode 100644 index 71ae6f6..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/formality.tcl +++ /dev/null @@ -1,136 +0,0 @@ -source "./ProjectPathSetting.tcl" - -exec date - -source "./setModuleName.tcl" - -set PP [exec bash $env(SCRIPTPATH)/setPP.sh] -echo "PP = ${PP}" - -set netlistfile ./${PP}/result/$Design.sv -#set sdcfile ./${PP}/report/$Design.sdc -set svffile ./${PP}/report/$Design.svf - -############################################ -#setup -############################################ -set run_dc false -set run_pt false -set synopsys_auto_setup true -#set hdlin_unresolved_modules black_box -#set hdlin_dwroot /space/CAD_Front_End/Synopsys2013/H-2013.03-SP2/ -#set hdlin_dwroot /CAD/Synopsys2015/syn_vK-2015.06/ -set hdlin_dwroot /space/CAD_Front_End/Synopsys2019/syn/ - -if {$Design=={PCIE_Top}} then { -set hdlin_ignore_translate true -set verification_verify_unread_tech_cell_pins false -} - -############################################ -#SVF -############################################ -set_svf $svffile - -source -echo "${PROJECTPATH}/syn/synopsys_dc.setup" - -############################################ -#Read db -############################################ -#read_db RHSTD_ss0p99vn40c.db -read_db $link_library - -if {$Design=={SMC_Top}} then { -read_db $PROJECTPATH/syn/db_sc12l28/SMC_BankMem.db -} - -############################################ -#RTL code -############################################ -if { [string match *fullchip* $Design]} then { -echo "current design is $Design" -read_vhdl -container r -libname grlib $PROJECTPATH/src/LEON3LIB/grlib/stdlib/version.vhd -read_vhdl -container r -libname grlib $PROJECTPATH/src/LEON3LIB/grlib/stdlib/config.vhd -read_vhdl -container r -libname grlib $PROJECTPATH/src/LEON3LIB/grlib/stdlib/stdlib.vhd -read_vhdl -container r -libname grlib $PROJECTPATH/src/LEON3LIB/grlib/stdlib/stdio.vhd -read_vhdl -container r -libname grlib $PROJECTPATH/src/LEON3LIB/grlib/util/util.vhd -read_vhdl -container r -libname grlib $PROJECTPATH/src/LEON3LIB/grlib/amba/amba.vhd -read_vhdl -container r -libname grlib $PROJECTPATH/src/LEON3LIB/grlib/amba/devices.vhd -read_vhdl -container r -libname techmap $PROJECTPATH/src/SPI/rtl/gencomp.vhd -read_vhdl -container r -libname gaisler $PROJECTPATH/src/SPI/rtl/SPI_syncram_2p_tx.vhd -read_vhdl -container r -libname gaisler $PROJECTPATH/src/SPI/rtl/SPI_syncram_2p_rx.vhd -read_vhdl -container r -libname gaisler $PROJECTPATH/src/SPI/rtl/spictrlx_extended.vhd -} - -read_sverilog -container r -libname work -define {_USE_SYNED_COREPAC_} -f ./nc.work/sim_filelist.f - -###read_verilog -container r -libname work $PROJECTPATH/CorePac/MBIST_Ctrl/mgc_utility.v - -set_top r:/work/$Design - - -############################################ -#netlist -############################################ -read_verilog -container i -libname work -01 $netlistfile - -set_top i:/work/$Design - -if {$Design=={PCIE_Top}} then { -set_constant -type port r:/WORK/PCIE_Top/mbist_en 0 -set_constant -type port i:/WORK/PCIE_Top/mbist_en 0 -set_constant -type port r:/WORK/PCIE_Top/test_en 0 -set_constant -type port i:/WORK/PCIE_Top/test_en 0 -set_constant -type port r:/WORK/PCIE_Top/test_clk 0 -set_constant -type port i:/WORK/PCIE_Top/test_clk 0 -set_constant -type port r:/WORK/PCIE_Top/scan_reset 0 -set_constant -type port i:/WORK/PCIE_Top/scan_reset 0 - -} -############################################ -#match -############################################ -#if {$Design=={RapidIO_top}} then { -#set_constant -type port r:/WORK/RapidIO_top/mbist_en 0 -#set_constant -type port i:/WORK/RapidIO_top/mbist_en 0 -#} - -match - -############################################ -#verify -############################################ -if {$Design=={M8024V_FullChip}} then { -set_dont_verify { -r:/WORK/M8024V_FullChip/AAAA_M8024V_top/AAA_efuse/efuse_ctrl_state/u028efuhc01603218400/VDD -r:/WORK/M8024V_FullChip/AAAA_M8024V_top/AAA_efuse/efuse_ctrl_state/u028efuhc01603218400/VSS -r:/WORK/M8024V_FullChip/AAAA_M8024V_top/AAA_efuse/efuse_ctrl_state/u028efuhc01603218400/VQPS -} -} - -if {$Design=={M66AK_FullChip}} then { -set_dont_verify { -r:/WORK/M66AK_FullChip/AAAA_M66AK/AAA_EFUSE/efuse_ctrl_state/u028efuhc01603218400/VDD -r:/WORK/M66AK_FullChip/AAAA_M66AK/AAA_EFUSE/efuse_ctrl_state/u028efuhc01603218400/VSS -r:/WORK/M66AK_FullChip/AAAA_M66AK/AAA_EFUSE/efuse_ctrl_state/u028efuhc01603218400/VQPS -} -} - -if {$Design=={M6674_FullChip}} then { -set_dont_verify { -r:/WORK/M6674_FullChip/AAAA_M6674/AAA_EFUSE/efuse_ctrl_state/u028efuhc01603218400/VDD -r:/WORK/M6674_FullChip/AAAA_M6674/AAA_EFUSE/efuse_ctrl_state/u028efuhc01603218400/VSS -r:/WORK/M6674_FullChip/AAAA_M6674/AAA_EFUSE/efuse_ctrl_state/u028efuhc01603218400/VQPS -} -} - -verify - -exec date - -exec cp fm.log ${PP}/fm.log -exec cp formality_svf/svf.txt ${PP}/fm_svf.txt - -exit - -##debug## diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/genus_flow.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/genus_flow.tcl deleted file mode 100644 index ac7dbbf..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/genus_flow.tcl +++ /dev/null @@ -1,644 +0,0 @@ - -#if {[file exists /proc/cpuinfo]} { -# sh grep "model name" /proc/cpuinfo -# sh grep "cpu MHz" /proc/cpuinfo -#} -# -#puts "Hostname : [info hostname]" - -############################################################################## -## Preset global variables and attributes -############################################################################## - -source -echo "./ProjectPathSetting.tcl" - -source -echo "./setModuleName.tcl" -#set Design fullchip_top -#for example : set Design M66AK_FullChip - -######set Generic & Map & Optional's effort -set GEN_EFF medium -set MAP_OPT_EFF high -set DATE [clock format [clock seconds] -format "%b%d-%T"] -#set ET_WORKDIR -set _OUTPUTS_PATH ${Design}_${DATE}/outputs_${DATE} -set _REPORTS_PATH ${Design}_${DATE}/reports_${DATE} -set _LOG_PATH ${Design}_${DATE}/logs_${DATE} -set_db invs_temp_dir ${Design}_${DATE}/invs_temp_dir_${DATE} -set_db innovus_executable "/space/CAD_Back_End/Cadence20/INNOVUS20.11.000-ISR1/bin/innovus" -set_db statistics_log_data true -set_db source_verbose true -set_db / .information_level 9 - -##Uncomment and specify machine names to enable super-threading. -###set_db / .super_thread_servers {} -###For design size of 1.5M - 5M gates, use 8 to 16 CPUs. For designs > 5M gates, use 16 to 32 CPUs -set_db / .max_cpus_per_server 32 - -set_db init_blackbox_for_undefined false -set_db ui_respects_preserve false -##Default undriven/unconnected setting is 'none'. -set_db / .hdl_unconnected_value none -set_db hdl_track_filename_row_col true -set_db "message:GLO-32" .truncate false -set_db "message:GLO-34" .truncate false - -############################################################################## -#set lib or hdl search path -############################################################################### -set_db / .init_lib_search_path " \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/SerDes/Latest/pma/timing/9M_2Xa1Xd_h_3Xe_vhv_2Z/lib_pg/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/SerDes_X1/Latest/pma/timing/1P11M_DV_3DM_Q1_3Q2_2B_2TMa_ALPA2_14SHK/lib_pg/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/Memory/Latest/memory_lib_dbs/ssgs_ccw0p72vn40c/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/CoreLib/Latest/RVT/lib/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/CoreLib/Latest/LVT/lib/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/CoreLib/Latest/ULVT/lib/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/VTsensor/Latest/Lib/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/PLL/P1232/Latest/lib/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/GPIO/Latest/syn/1p8v/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/efuse/Latest/S14NSFPEFUSE_PIPO1KB_V0.2.3/Lib/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/PSensor/Latest/Lib/ \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/SerDes/Latest \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/SerDes/Latest/upcs/include \ - /space/PRJ_Front_End/M7004V/hardmacro_backend/ip/SerDes/Latest/phy/include \ - /space/PRJ_Front_End/M7004V/src/DSPCORE/ARF/lib/ \ - /space/PRJ_Front_End/M7004V/src/DSPCORE/VRF/lib/ \ - $PROJECTPATH/syn/db \ - " -set_db / .init_hdl_search_path " \ - ./src \ - /home/admin/liuchang/M7004V/src/LEON3LIB/grlib/stdlib \ - /home/admin/liuchang/M7004V/src/LEON3LIB/grlib/util \ - /home/admin/liuchang/M7004V/src/LEON3LIB/gaisler/uart \ - /home/admin/liuchang/M7004V/src/LEON3LIB/grlib/amba \ - /home/admin/liuchang/M7004V/src/SPI/rtl \ - " - -############################################################### -## Library setup -############################################################### -set_db library "RHSTD_LVT_ssg0p72vm40c_ccs.lib" - -read_libs " \ - RHSTD_LVT_ssg0p72vm40c_ccs.lib \ - RHSTD_RVT_ssg0p72vm40c_ccs.lib \ - RHSTD_ULVT_ssg0p72vm40c_ccs.lib \ - S14NSFPVT_V0.1.1_ssg_V1p62v0p72_-40C.lib \ - P1232_ssg0p72vm40c.lib \ - SPC14NSFPD18RN_ss_V0p72_-40C.lib \ - S14NSFPEFUSE_PIPO1KB_V0.1.1_ssg_V1p62v0p72_-40C.lib \ - S14NSFPPS_V0.1.1_ssg_V0p72_-40C.lib \ - AM_RAM1024W39B.lib \ - ARF_16X36_6W_7R_WC.lib \ - VRF_32X32_8W_14R_WC.lib \ - BTB.lib \ - CAC_RAM_TP_128W67.lib \ - CrossNet_MEM32W100.lib \ - CrossNet_MEM32W120.lib \ - CrossNet_MEM32W68.lib \ - CrossNet_MEM32W84.lib \ - CrossNet_MEM256W33.lib \ - CrossNet_MEM256W54.lib \ - CrossNet_MEM256W58.lib \ - CrossNet_MEM256W61.lib \ - DCACHE_DATA.lib \ - DCACHE_DATA_ECC.lib \ - DCACHE_TAG.lib \ - DCACHE_TAG_ECC.lib \ - DMA_RFSP64W39B.lib \ - GHB.lib \ - gsm_data_sp_8192w137b.lib \ - gsm_tag_sp_1024w23b.lib \ - ICACHE_DATA.lib \ - ICACHE_TAG.lib \ - IP.lib \ - L1P_RAMSP256W23B.lib \ - L1P_RAMSP256W33B.lib \ - L2CACHE_DATA_ECC_4K.lib \ - L2CACHE_TAGS.lib \ - L2_PREFETCH_STRIDE_QUEUE.lib \ - L2_SNOOP_TAG.lib \ - L2_TLB.lib \ - RAMSP512W13B.lib \ - RAMSP512W28B.lib \ - RAMSP_D768W76.lib \ - RAMTP_D128W72.lib \ - RAMTP_D32W100.lib \ - RAMTP_D32W118.lib \ - RAMTP_D32W46.lib \ - RAMTP_D32W66.lib \ - RAMTP_D32W84.lib \ - RAMTP_D32W72.lib \ - RAMTP_D352W72.lib \ - RAMTP_D416W74.lib \ - RAMTP_D48W70.lib \ - RAMTP_D512W15.lib \ - RAMTP_D512W74.lib \ - RAMTP_D544W32.lib \ - RAMTP_D544W40.lib \ - RBL_512w64b_ROM0.lib \ - RBL_512w64b_ROM1.lib \ - RBL_512w64b_ROM2.lib \ - RBL_512w64b_ROM3.lib \ - SPI_syncram_2p.lib \ - Txfifo_512x76.lib \ - xgmac_dmi_sram.lib \ - xgmac_ec_ef_sram.lib \ - xgmac_fifo.lib \ - dwc_e25mp_pma_x4_ns_ss0p72vn40c_cworst_CCworst_pg.lib.gz \ - dwc_e25mp_pma_x1_ns_ss0p72vn40c_rcworst_CCworst_pg.lib \ - RA14S_1024x72.lib \ - RA14S_32x72.lib \ - SRIO_SP_256W40.lib \ - SRIO_SP_64W128.lib \ - SRIO_SP_64W16.lib \ - SRIO_TP_1024W36.lib \ - SRIO_TP_128W12.lib \ - SRIO_TP_128W20.lib \ - SRIO_TP_128W30.lib \ - SRIO_TP_128W76.lib \ - SRIO_TP_256W13.lib \ - SRIO_TP_256W70.lib \ - SRIO_TP_256W84.lib \ - SRIO_TP_288W72.lib \ - SRIO_TP_320W10.lib \ - SRIO_TP_320W128.lib \ - SRIO_TP_32W102.lib \ - SRIO_TP_32W70.lib \ - SRIO_TP_32W84.lib \ - SRIO_TP_32W88.lib \ - SRIO_TP_512W72.lib \ - SRIO_TP_512W74.lib \ - SRIO_TP_64W70.lib \ - SRIO_TP_64W92.lib \ - gsm_sub_top.lib \ - CORTEXA15.lib \ - gsm_top.lib \ - mt32_core_wrapper.lib \ - RA14S_top.lib \ - SRIO_top.lib \ - dmu.lib \ - " - -#set_operating_conditions ssgnp_0p675v_125c_cworst_CCworst_T -#source -echo "../common/dc_setup.tcl" -#source -echo "../common/dc_file_RH.tcl" - -#################################################################################### -#Physical Flow needs the files (LEF CAP_TABLE QRC DEF) -################################################################################### -#set_db / .init_lef_files "" -####You can read lef files in two ways. read_physical -lef or source -echo "...." -####read_physical -lef -#read_physical -lef "/space3/Library/SMIC12SFe/Techfile/PRTechFile/INNOVUS_12SFE_9T_v1p0b/TF/1P11M_DV_3DM_Q1_3Q2_2B_2TMa_ALPA2.lef \ -# /space3/Library/SMIC12SFe/Techfile/PRTechFile/INNOVUS_12SFE_9T_v1p0/TF/DFM_via_SFP/1P11M_DV_3DM_Q1_3Q2_2B_2TMa_DFM_via_SFP.lef \ -# /space/PRJ_Back_End/FT-M7004V_RH/CoreLib/Latest/LVT/lef/RHSTD_LVT.lef \ -# /home/project/FT-M7004V_RH/GPIO/Latest/lef/SPC14NSFPD18RN_1P11M_DV_3DM_Q1_3Q2_2B_2TMa.lef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/crossnet/CrossNet_MEM32W100/CrossNet_MEM32W100.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/crossnet/CrossNet_MEM32W68/CrossNet_MEM32W68.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/crossnet/CrossNet_MEM32W84/CrossNet_MEM32W84.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/crossnet/CrossNet_MEM32W120/CrossNet_MEM32W120.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/crossnet/CrossNet_MEM256W33/CrossNet_MEM256W33.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/crossnet/CrossNet_MEM256W54/CrossNet_MEM256W54.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/crossnet/CrossNet_MEM256W58/CrossNet_MEM256W58.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/crossnet/CrossNet_MEM256W61/CrossNet_MEM256W61.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/spi/SPI_syncram_2p/SPI_syncram_2p.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/rgmii/Txfifo_512x76/Txfifo_512x76.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/boot/RBL_512w64b_ROM1/RBL_512w64b_ROM1.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/boot/RBL_512w64b_ROM2/RBL_512w64b_ROM2.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/boot/RBL_512w64b_ROM0/RBL_512w64b_ROM0.plef \ -# /home/project/FT-M7004V_RH/Memory/Latest/memory/boot/RBL_512w64b_ROM3/RBL_512w64b_ROM3.plef \ -# /home/project/FT-M7004V_RH/PLL/P1232/Latest/lef/P1232.lef \ -# /home/project/FT-M7004V_RH/efuse/V1P0/S14NSFPEFUSE_PIPO1KB_V0.2.3/Lef/S14NSFPEFUSE_PIPO1KB_V0.2.3_5M.lef \ -# /space3/Library/7004V/Block_B4DFT/CORTEXA15/lef/CORTEXA15.lef \ -# /space3/Library/7004V/Block_B4DFT/gsm_sub_top/lef/gsm_sub_top.lef \ -# /space3/Library/7004V/Block_B4DFT/mt32_core_wrapper/lef/mt32_core_wrapper.lef \ -# /space3/Library/7004V/Block_B4DFT/pcie_top_wrapper/lef/pcie_top_wrapper_H.lef \ -# /space3/Library/7004V/Block_B4DFT/RA14S_top/lef/RA14S_top.lef \ -# /space3/Library/7004V/Block_B4DFT/SRIO_top/lef/SRIO_top_V.lef \ -# /space3/Library/7004V/Block_B4DFT/xgmac_x1_top_wrapper/lef/xgmac_x1_top_wrapper.lef \ -# /home/project/FT-M7004V_RH/VTsensor/Latest/Lef/S14NSFPVT_V0.3.1_6M.lef" - -#source -echo "/space3/Library/7004V/Block_B4DFT/FullChip_top/lef/fullchip_top.lef" -###for example : source -echo "lef_for_M66AK_FullChip.tcl" -## Provide either cap_table_file or the qrc_tech_file -#set_db / .cap_table_file "........." -#for example : set_db / .cap_table_file "/space2/Library/UMC28HPC/arm_tech/r14p0/cadence_captable/1p8m1a1u/Cmax.captbl" -#read_qrc "/space3/Library/SMIC12SFe/Techfile/QRC/SMIC_CCIQRC_12SFE_0818_1P11M_DV_3DM_Q1_3Q2_2B_2TMa_ALPA2_14SHK_V1.0_REV4_1/rulefiles/CMAX/qrcTechFile" -#for example : read_qrc "/space2/Library/UMC28HPC/Techfile/QRC/UMC_G-DF-LOGIC_MIXED_MODE28N-1P8M1A1U-HPC_AL28K_QRC-LPE_V0.4.P1/Cmax/qrcTechFile" -##generates _reg[] format -## - - - -################################################# -#Making DRC the Highest Priority -################################################### - -set_db / .drc_first true - - - -############################################# -#Datapath -############################################### -set_db dp_analytical_opt standard - - - -########################################################### -#insert clock gate -############################################################ -set_db / .lp_insert_clock_gating true - - - - -#################################################################### -## Load Design -#################################################################### -read_hdl -f ./nc.work/sim_filelist.f -#read_hdl -language sv -define _SYN_TOP_ "sys_filelist.v" -#read_hdl "../../../netlist_toDFT/RH/fullchip_top/AsyncClockSwitching_3_0_0.v ../../../netlist_toDFT/RH/fullchip_top/AsyncClockSwitching_2_0_0.v" -read_hdl -language vhdl -library grlib stdio.vhd -read_hdl -language vhdl -library grlib config.vhd -read_hdl -language vhdl -library grlib version.vhd -read_hdl -language vhdl -library grlib stdlib.vhd -read_hdl -language vhdl -library grlib amba.vhd - -read_hdl -language vhdl -library grlib util.vhd -read_hdl -language vhdl -library gaisler uart.vhd -read_hdl -language vhdl -library grlib devices.vhd -read_hdl -language vhdl -library techmap gencomp.vhd -read_hdl -language vhdl -library grlib spictrlx_extended.vhd -read_hdl -language vhdl -library grlib SPI_syncram_2p_rx.vhd -read_hdl -language vhdl -library grlib SPI_syncram_2p_tx.vhd -#for example:read_hdl -sv "66xDSPList_2.v" - -elaborate $Design -puts "Runtime & Memory after 'read_hdl'" -time_info Elaboration - -init_design -check_design -unresolved -check_timing_intent - -exit - - -#create_ple_model $Design -out_file PLE_file -################################################################################## -#DEF -#################################################################################### -#set_db read_def_libcell_mismatch_error false -#read_def "/space3/Library/7004V/Block_B4DFT/FullChip_top/def/fullchip_top.def.gz" -#for example: read_def "/home/user/dft/jn/FT-M66AK/DEF/M66AK_FullChip.def" - - - -##################################################################### -### Constraints Setup -##################################################################### -read_sdc "/home/user1/dft1/FT-M7004V/netlist_toDFT/RH/fullchip_top/fullchip_top.sdc" -#for example:read_sdc /home/user/dft/jn/FT-M66AK/GENUS_FULLCHIP_CWORST/submit/M66AK_FullChip/M66AK_FullChip.sdc - - - - -####################################################################### -#create new directory -####################################################################### -# -if {![file exists ${_LOG_PATH}]} { - file mkdir ${_LOG_PATH} - puts "Creating directory ${_LOG_PATH}"} - -## -if {![file exists ${_OUTPUTS_PATH}]} { - file mkdir ${_OUTPUTS_PATH} - puts "Creating directory ${_OUTPUTS_PATH}" -} -# -if {![file exists ${_REPORTS_PATH}]} { - file mkdir ${_REPORTS_PATH} - puts "Creating directory ${_REPORTS_PATH}" -} - - -################################################################################## -#Timing Setup -################################################################################## - -set_db time_recovery_arcs false - -#report_timing -lint -# -# - - -################################################################################### -#dont -#################################################################################### -#source -echo "/home/user/dft/jn/FT-M3000+/GENUS/VPE/common/set_dont_use.tcl" -#set_dont_touch mz_fmac -#set_dont_touch [get_cells -hierarchical -filter "ref_name == PREICG_X5B_A12PP140ZTR_C30"] -#set_dont_touch VRF_32X64_8W_14R_1 -#set_dont_touch VRF_32X64_8W_14R_0 -#[ -hierarchical | -of_objects list [-leaf] -#| pattern [-hsc string] [-regexp [-nocase]] ] -#[-quiet] -#get_cells [-hierarchical -filter ["ref_name == PREICG_X5B_A12PP140ZTR_C30"| "is_dont_touch {true}"] - - - -################################################################################### -## Define cost groups (clock-clock, clock-output, input-clock, input-output) -################################################################################### - -## Uncomment to remove already existing costgroups before creating new ones. -## delete_obj [vfind /designs/* -cost_group *] - -if {[llength [all_registers]] > 0} { - define_cost_group -name I2R -design $Design - define_cost_group -name R2O -design $Design - define_cost_group -name R2R -design $Design - - path_group -from [all_inputs] -to [all_registers] -group I2R -name I2R - path_group -from [all_registers] -to [all_outputs] -group R2O -name R2O - path_group -from [all_registers] -to [all_registers] -group R2R -name R2R -} - -define_cost_group -name I2O -design $Design -path_group -from [all_inputs] -to [all_outputs] -group I2O -name I2O -#foreach cg [vfind / -cost_group *] { -##Divide into corresponding PATH GROUPs and report -# report_timing -cost_group [list $cg] >> $_REPORTS_PATH/${Design}_pretim.rpt -#} -report_timing -group R2R > $_REPORTS_PATH/${Design}_R2R_pretim.rpt -report_timing -group I2R > $_REPORTS_PATH/${Design}_I2R_pretim.rpt -report_timing -group R2O > $_REPORTS_PATH/${Design}_R2O_pretim.rpt -report_timing -group I2O > $_REPORTS_PATH/${Design}_I2O_pretim.rpt - -#set_db auto_ungroup none -#ungroup -threshold 5 - - -################################################################################################## -## DFF ---> SDFF Mapping to Complex Sequential Cells -################################################################################################## - -set_db / .dft_scan_style muxed_scan -set_db / .dft_prefix DFT_ -# For VDIO customers, it is recommended to set the value of the next two attributes to false. -set_db / .use_scan_seqs_for_non_dft true -set_db "design:$Design" .dft_scan_map_mode force_all - - -###################################################################################### -##### Retime -###################################################################################### -# -# -#set rt_modules {module:/ module:/ module:/} -#foreach mod $rt_modules { -# set_db $mod .retime true -# ####Uncomment to prevent registers from being moved across the subdesign boundaries -# ##set_db $subd .retime_hard_region true -# ####Uncomment to minimize issues with Conformal LEC -# ##set_db $mod .boundary_opto false -#} -#####Setting 'retime' attribute on the top-level as shown below -#####is not recommended due to possible verification/ECO issues unless for very small designs -###set_db "design:$Design" .retime true -# -#####set dont_retime on registers which should not be retimed -#set dont_rt_flops "inst: inst: inst: ..." -#foreach rtf $rt_flops { -# set_db $rtf .dont_retime true -#} -## Enable verification flow -#set_db / .retime_verification_flow true - -#################################################### -#### To turn off sequential merging on the design -#### uncomment & use the following attributes. -set_db / .optimize_merge_flops true -set_db / .optimize_merge_latches true -#### For a particular instance use attribute 'optimize_merge_seqs' to turn off sequential merging. - - - -########################################### -#Setting Boundary Optimization -########################################### -set_db boundary_opto true -set_db boundary_optimize_constant_hpins true -set_db boundary_optimize_equal_opposite_hpins true -set_db boundary_optimize_feedthrough_hpins true -set_db boundary_optimize_invert_hpins true - - - -############################################## -#Optimizing Total Negative Slack -############################################## -set_db tns_opto true -set_db tns_critical_range 0.2 - -################################## -#Datapath -#################################### -set_db "design:$Design" .dp_csa basic -set_db dp_rewriting advanced -set_db dp_speculation basic -set_db dp_sharing advanced - - -###################################################### -# Allow merging of combinational hierarchical instances -###################################################### - -#set_db merge_combinational_hier_instances true - - - -############################################################### -#Low Power -################################################################## - -set_db "design:$Design" .lp_clock_gating_auto_cost_grouping true -set_db lp_clock_gating_infer_enable true - -#declone_clock_gate -hierarchical -##Power root attributes -#set_db / .lp_clock_gating_prefix -set_db / .lp_power_analysis_effort high -set_db / .lp_power_unit mW -set_db / .lp_toggle_rate_unit /ns -set_db "design:$Design" .lp_clock_gating_extract_common_enable true -set_db lp_insert_discrete_clock_gating_logic true - - - -####################################################################################### -## Leakage/Dynamic power/Clock Gating setup. -####################################################################################### -## The attribute has been set to default value "medium" -## you can try setting it to high to explore MVT QoR for low power optimization -set_db / .leakage_power_effort medium -#set_db "design:$Design" .lp_clock_gating_cell [vfind /lib* -lib_cell ] -#set_db "design:$Design" .max_leakage_power 0.0 -set_db "design:$Design" .lp_power_optimization_weight 0.99 -set_db "design:$Design" .max_dynamic_power 100 - -#set_db "design:$Design" .lp_clock_gating_test_signal -## read_tcf -## read_saif -## read_vcd - -#decrypt PLE_file - -#################################################################################################### -## Synthesizing to generic -#################################################################################################### - -set_db / .syn_generic_effort $GEN_EFF -syn_generic -physical - -puts "Runtime & Memory after 'syn_generic -physical'" -time_info GENERIC -report_dp > $_REPORTS_PATH/generic/${Design}_datapath.rpt -write_snapshot -outdir $_REPORTS_PATH -tag generic -report_summary -directory $_REPORTS_PATH - - -#### Build RTL power models -#build_rtl_power_models -design $Design -clean_up_netlist [-clock_gating_logic] [-relative ] -#report power -rtl - - - -#################################################################### -#Enabling Cell Merging to Multibit Cells -#################################################################### - -set_db use_multibit_cells true - -#################################################################################################### -## Synthesizing to gates -#################################################################################################### - - -## Add '-auto_identify_shift_registers' to 'syn_map' to automatically -## identify functional shift register segments. Not applicable for n2n flow. -set_db / .syn_map_effort $MAP_OPT_EFF - -set_db dp_ungroup_during_syn_map true -set_db optimize_net_area true - -syn_map -physical -puts "Runtime & Memory after 'syn_map -physical'" -time_info MAPPED -write_snapshot -outdir $_REPORTS_PATH -tag map -report_summary -directory $_REPORTS_PATH -report_dp > $_REPORTS_PATH/map/${Design}_datapath.rpt - - -#foreach cg [vfind / -cost_group *] { -# report_timing -cost_group [list $cg] > $_REPORTS_PATH/${Design}_[vbasename $cg]_post_map.rpt -#} -report_timing -group R2R > $_REPORTS_PATH/${Design}_R2R_post_map.rpt -report_timing -group I2R > $_REPORTS_PATH/${Design}_I2R_post_map.rpt -report_timing -group R2O > $_REPORTS_PATH/${Design}_R2O_post_map.rpt -report_timing -group I2O > $_REPORTS_PATH/${Design}_I2O_post_map.rpt - -###The files are used for conformal -write_do_lec -revised_design fv_map -logfile ${_LOG_PATH}/rtl2intermediate.lec.log > ${_OUTPUTS_PATH}/rtl2intermediate.lec.do - -####################################################################################################### -## Optimize Netlist -####################################################################################################### -set_db / .syn_opt_effort $MAP_OPT_EFF -syn_opt -physical -write_snapshot -outdir $_REPORTS_PATH -tag syn_opt -report_summary -directory $_REPORTS_PATH - -puts "Runtime & Memory after 'syn_opt -physical'" -time_info OPT - -#foreach cg [vfind / -cost_group *] { -# report_timing -cost_group [list $cg] > $_REPORTS_PATH/${Design}_[vbasename $cg]_post_opt.rpt -#} -report_timing -group R2R > $_REPORTS_PATH/${Design}_R2R_post_opt.rpt -report_timing -group I2R > $_REPORTS_PATH/${Design}_I2R_post_opt.rpt -report_timing -group R2O > $_REPORTS_PATH/${Design}_R2O_post_opt.rpt -report_timing -group I2O > $_REPORTS_PATH/${Design}_I2O_post_opt.rpt - - - -## Uncomment to remove assigns & insert tiehilo cells during Incremental synthesis -##set_db / .remove_assigns true -##set_remove_assign_options -buffer_or_inverter -design -##set_db / .use_tiehilo_for_const - -###################################################################################### -#incremental opto -###################################################################################### -#########Actually,incremental opto should be run in the Genus Physical Flow. -#########However,it always reports errors in this flow(3rd).This problem has not been solved yet.Thus,we shield incremental opto momentarily. -#########We can use incremental opto in 1st(Simple PLE Flow)\2nd(Spatial Flow) Flow and other cases except 3rd(Genus Physical Flow) Flow. - -## An effort of low was selected to minimize runtime of incremental opto. -## If your timing is not met, rerun incremental opto with a different effort level -#syn_opt -physical -incremental -#write_snapshot -outdir $_REPORTS_PATH -tag syn_opt_low_incr -#report_summary -directory $_REPORTS_PATH -#puts "Runtime & Memory after 'syn_opt -physical -incremental'" -#time_info INCREMENTAL_POST_SCAN_CHAINS - - -############################################# -#Preserving Instances and Modules -############################################## -set_db "design:$Design" .preserve true - - - -###################################################################################################### -## write backend file set (verilog, SDC, config, etc.) -###################################################################################################### -report_area -detail >$_REPORTS_PATH/${Design}_area_detail.rpt -report_clock_gating > $_REPORTS_PATH/${Design}_clockgating.rpt -report_power > $_REPORTS_PATH/${Design}_power.rpt -report_gates -power > $_REPORTS_PATH/${Design}_gates_power.rpt -report_area > $_REPORTS_PATH/${Design}_area.rpt -report_dp > $_REPORTS_PATH/${Design}_datapath_incr.rpt -report_messages > $_REPORTS_PATH/${Design}_messages.rpt -write_snapshot -outdir $_REPORTS_PATH -tag final -report_summary -directory $_REPORTS_PATH -write_hdl > ${_OUTPUTS_PATH}/${Design}_m.v -write_script > ${_OUTPUTS_PATH}/${Design}_m.script -write_sdc > ${_OUTPUTS_PATH}/${Design}_m.sdc -report_ple > $_REPORTS_PATH/ple.rpt -check_design -all > Check_D -write_design -innovus -#write_design -innovus > ${_OUTPUTS_PATH}/${Design}_genp_output.v -#write_design -innovus -base_name > invs_temp_dir/${Design}_genp_output.v - - -################################# -### write_do_lec -################################# -write_do_lec -golden_design fv_map -revised_design ${_OUTPUTS_PATH}/${Design}_m.v -logfile ${_LOG_PATH}/intermediate2final.lec.log > ${_OUTPUTS_PATH}/intermediate2final.lec.do -##Uncomment if the RTL is to be compared with the final netlist.. -write_do_lec -revised_design ${_OUTPUTS_PATH}/${Design}_m.v -logfile ${_LOG_PATH}/rtl2final.lec.log > ${_OUTPUTS_PATH}/rtl2final.lec.do - -puts "Final Runtime & Memory." -time_info FINAL -puts "============================" -puts "Synthesis Finished ........." -puts "============================" - -file copy [get_db / .stdout_log] ${_LOG_PATH}/. - -##quit diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/lib_to_db.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/lib_to_db.tcl deleted file mode 100644 index 382e1da..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/lib_to_db.tcl +++ /dev/null @@ -1,7 +0,0 @@ -set PP [exec bash $env(SCRIPTPATH)/setPP.sh] -echo "PP = ${PP}" - -source "setModuleName.tcl" -read_lib ./${PP}/result/$Design.lib -write_lib $Design -o ./${PP}/result/$Design.db -exit diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/lint_goal.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/lint_goal.tcl deleted file mode 100644 index 7a532ad..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/lint_goal.tcl +++ /dev/null @@ -1,25 +0,0 @@ -#--------------------------------------------------------- -# Lint Hierarchical flow settings -#--------------------------------------------------------- -#set_option decompile_block_constraints yes -#set_option abstract_file_name_style short -#set_option include_block_interface abstract -#set_option use_block_interface yes - -#--------------------------------------------------------- -# Lint turbo flow settings -#--------------------------------------------------------- -#set_option turbo yes -#set_option smart_rule_execution yes -#set_option honor_spq_parameter_with_turbo yes -#set_option disable_turbo_param yes - -current_goal lint/lint_rtl -read_file -type awl $env(SPYGLASSWORK)/waiver/lint.awl -source $env(TCLPATH)/spyglass_lint_rules.tcl -#set_goal_option ignorerules {W164a W164b} -current_goal none - -current_goal lint/design_audit -set_goal_option report {Audit} -current_goal none diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/power_goal.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/power_goal.tcl deleted file mode 100644 index 37b43cf..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/power_goal.tcl +++ /dev/null @@ -1,113 +0,0 @@ -#--------------------------------------------------------- -# power product specific options -#--------------------------------------------------------- -set_option enable_precompile_vlog no -set_option remove_work yes -set_option include_opt_data yes - -#--------------------------------------- -# Synthesis control settings -#--------------------------------------- -# Hierarchical boundary optimization (HBO) can be enabled if SpyGlass reported -# RTL design area is very much higher than reference design run area -# Change the below variable value to 'yes' to enable HBO in the relevant goals -set ENABLE_HBO_FLOW no - -#current_methodology $SPYGLASS_HOME/GuideWare/2018.09-EarlyAdopter/block/rtl_handoff -#--------------------------------------- -# Globally used parameter settings -#--------------------------------------- - -#Tcl proc which defines commonly used PE settings -proc pwr_recommended_est_setting_proc {} { - #global PROJECT_DIR_PATH - # Set the clock gating threshold to match that used by power synthesis - set_parameter sgsyn_clock_gating_threshold 3 - # Set the targeted synthesis to select scan flops - set_goal_option use_scan_flops yes - # Enables monitor on clock and enable nets to improve accuracy - set_parameter pe_enable_monitor_on_clock_nets yes - set_parameter pe_enable_monitor_on_enable_nets yes - #To increase amount of nets covered under monitors - set_parameter pe_logic_depth 25 - # Enable multi-process synthesis to save runtime - global env - if { [ file exists $env(TCLPATH)/synth_options.tcl ] } { - set_option sgsyn_opt_file $env(TCLPATH)/synth_options.tcl - } - #To display the additional clock-gating efficiency metrics - set_parameter pe_enable_advance_cgemetric 1 - set_parameter pe_num_unset_nets 2000000 - #set_parameter pe_generate_fsdb 1 - #set_parameter pe_enable_component_power_graph 1 - #set_parameter pe_enable_component_activity_graph 1 - #set_parameter pe_report_power_for_each_simfile 1 - #set_parameter pe_num_clock_cycles_avg_power 10 -} -# end pwr_recommended_est_setting_proc -################### Optional GOAL ################################## -## Grading vectors and finding activity hotspots ## -#################################################################### -current_goal power/power_activity_check - # Specifies the intervals (in terms of number of cycles of the fastest clock) - # at which activity values should be averaged. - set_parameter pe_num_clock_cycles_avg_act 100 - # Enables monitor on clock and enable nets to improve accuracy - set_parameter pe_enable_monitor_on_clock_nets yes - set_parameter pe_enable_monitor_on_enable_nets yes - set_parameter pe_num_unset_nets 2000000 -current_goal none - -################### Mandatory GOAL ################################# -## Power Audit for checking the data integrity ## -#################################################################### -current_goal power/power_audit - # Use settings defined in the Tcl proc - pwr_recommended_est_setting_proc -current_goal none - -proc DefinePowerEstGoal {goal_name} { - global ENABLE_HBO_FLOW - - ################### Optional GOAL ################################ - ## Power Estimation on Original RTL without calibration data ## - ################################################################## - #current_goal power/$goal_name -scenario NoCalibData - current_goal power/$goal_name - # Use settings defined in the Tcl proc - pwr_recommended_est_setting_proc - # HBO flow is enabled if the top level variable is set - if { $ENABLE_HBO_FLOW == "yes" } { - set_goal_option enable_hbo yes - } - ##Uncomment below parameters to display component power/activity graphs in n-cycle mode - #set_parameter pe_num_clock_cycles_avg_power 100 - #set_parameter pe_enable_component_power_graph 1 - #set_parameter pe_enable_component_activity_graph 1 - current_goal none - } -# end proc DefinePowerEstGoal - -#power_est_average : power estimation. -DefinePowerEstGoal power_est_average -#power_est_profiling : power estimation + profiling. -DefinePowerEstGoal power_est_profiling - -################### Recommended GOAL ############################### -## CGE profiling across multiple simulation files (New in 2017.03)## -## This is a LCA feature in 2017.03 and needs additional license ## -#################################################################### -#current_goal power/power_cge_profiling -scenario NoCalibData -current_goal power/power_cge_profiling - # Use settings defined in the Tcl proc - pwr_recommended_est_setting_proc - # HBO flow is enabled if the top level variable is set - if { $ENABLE_HBO_FLOW == "yes" } { - set_goal_option enable_hbo yes - } - - - - -current_goal none - diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/pt.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/pt.tcl deleted file mode 100644 index af8ecad..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/pt.tcl +++ /dev/null @@ -1,84 +0,0 @@ -source "./ProjectPathSetting.tcl" - -set sh_enable_page_mode true -set power_enable_analysis true -set run_dc false -set run_pt true - -source "./setModuleName.tcl" -set pt_date [exec date +%Y_%m%d_%H%M] - -set PP [exec bash $env(SCRIPTPATH)/setPP.sh] -echo "PP = ${PP}" - -source "${PROJECTPATH}/syn/synopsys_dc.setup" - -set timing_non_unate_clock_compatibility true - -echo $env(FLAT) -if { $env(FLAT) == "TRUE"} { -source "./dc.work/filelist_pt.v" -set sdcfile1 $env(SDCPATH)/${Design}_flatten.sdc -} else { -set netlistfile ./${PP}/result/$Design.sv -set sdcfile1 $env(SDCPATH)/${Design}.sdc -} -#set sdcfile1 ./${PP}/report/$Design.sdc -set sdcfile2 ${PROJECTPATH}/syn/SDC/synopsys.sdc -set specialfile ./dc.work/syn_specific.tcl - -read_verilog $netlistfile -current_design $Design - -link_design - -source -echo $sdcfile1 -source -echo $sdcfile2 -source -echo $specialfile -source -echo "${PROJECTPATH}/syn/set_library.tcl" - -echo $env(DEBUGSDC) -if { $env(DEBUGSDC) == "TRUE"} { - return -} - -check_timing -include {clock_crossing} -verbose > check_timing_pt.txt -if { $env(FLAT) == "TRUE"} { -exec perl $env(SCRIPTPATH)/clock_cross.pl check_timing_pt.txt ${Design}_FLAT_clock_cross.log -} else { -exec perl $env(SCRIPTPATH)/clock_cross.pl check_timing_pt.txt ${Design}_clock_cross.log -} - -group_path -name in2reg -from [all_inputs] -group_path -name reg2out -to [all_outputs] -group_path -name in2out -from [all_inputs] -to [all_outputs] -group_path -name reg2reg -from [all_registers] -to [all_registers] - -report_timing -group [get_path_groups] -max_paths 1000 -transition_time -capacitance > report_timing_pt.txt - -echo $env(CHECKTIMING) -if { $env(CHECKTIMING) == "TRUE"} { - return -} - -if { ! [string match *FullChip $Design]} then { -echo "current design is $Design" -set extract_model_clock_transition_limit 0.4 -set extract_model_capacitance_limit 0.4 -set extract_model_data_transition_limit 0.4 -set extract_model_num_capacitance_points 5 -set extract_model_num_clock_transition_points 5 -set extract_model_num_data_transition_points 5 -extract_model -output ./${PP}/result/$Design -format lib -library_cell -} - -exec cp pt.log ${PP}/pt.log -exec cp check_timing_pt.txt ${PP}/check_timing_pt.txt -exec cp report_timing_pt.txt ${PP}/report_timing_pt.txt -if { $env(FLAT) == "TRUE"} { -exec cp ${Design}_FLAT_clock_cross.log ${PP}/${Design}_FLAT_clock_cross.log -} else { -exec cp ${Design}_clock_cross.log ${PP}/${Design}_clock_cross.log -} - -exit diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/rdc_goal.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/rdc_goal.tcl deleted file mode 100644 index 89d60e0..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/rdc_goal.tcl +++ /dev/null @@ -1,59 +0,0 @@ -#--------------------------------------------------------- -# sdc constraint to check cdc settings -#--------------------------------------------------------- -#set_option sdc2sgdc yes -#set_option sdc2sgdcfile ./${top-module-name}.sdc2sgdc.out - -proc cdc_verify_struct_add_settings {} { - -#set_goal_option addrule { Ac_abstract01 } ; ##used for CDC hierarchical flow -#set_goal_option block_abstract yes ; ##used for CDC hierarchical flow -set_goal_option report { CDC-detailed-report SynchInfo } -set_parameter dump_sync_info detailed_mod -set_parameter show_module_in_spreadsheet yes -set_parameter enable_ac_sync_qualdepth yes -set_parameter conv_sync_as_src yes -set_parameter conv_src_seq_depth 0 -set_parameter check_multiclock_bbox yes -set_parameter cdc_qualifier_depth 3 -set_parameter conv_sync_seq_depth 1 -set_parameter handle_combo_arc yes -set_parameter allow_combo_logic yes -set_parameter report_common_reset yes -set_parameter allow_merged_qualifier strict - -set_goal_option addrules { Clock_sync05a Clock_sync06a } -set_goal_option overloadrule { Clock_sync05a+severity=Error } -set_goal_option overloadrule { Clock_sync06a+severity=Error } -set_goal_option overloadrules Reset_sync02+severity=Error - -#set_parameter enable_sync no ; ## disable automatically recognize synchronization scheme -#set_parameter enable_clock_gate_sync no ;## disable automatically recognize synchronization scheme -#set_parameter enable_multiflop_sync no ; ## disbale automatically recognize synchronization scheme -#set_parameter enable_mux_sync none ; ## disable automatically recognize synchronization scheme -#set_parameter enable_and_sync no ; ## disable automatically recognize synchronization scheme -#set_parameter glitch_protect_cell "gp_and,gp_mux" ; ## specify glitch protect cell naem - -#set_parameter synchronize_cells "sync1,sync2" ; ## user defined synchronizer for scalar control signal -#set_parameter reset_synchronize_cells "sync1,sync2" ; ## user defined synchronizer for scalar control signal -#set_parameter synchronize_data_cells "sync1,sync2" ; ## user defined synchronizer for vector control signal -#set_parameter msg_inst_mod_report all ; ## - -#set_parameter report_all_flops yes ; ## report all flops for Reset_sync02 -#set_parameter enable_reset_cone_spreadsheet yes ; ## enable spreadsheet for Reset_sync02 -} - -proc rdc_verify_struct_add_settings {} { -#set_goal_option treat_import_as_ip_block yes -#set_parameter report_flop_reset_info yes -set_parameter report_reset_type all -} - -current_goal rdc/rdc_verify_struct -read_file -type awl waiver/rdc.awl -cdc_verify_struct_add_settings -rdc_verify_struct_add_settings -current_goal none - - - diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/sdc_goal.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/sdc_goal.tcl deleted file mode 100644 index 195f057..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/sdc_goal.tcl +++ /dev/null @@ -1,42 +0,0 @@ - -proc sdc_add_settings {} { - -} - -current_goal constraints/sdc_gen -read_file -type awl waiver/sdc.awl -sdc_add_settings -current_goal none - - -current_goal constraints/sdc_audit -read_file -type awl waiver/sdc.awl -sdc_add_settings -current_goal none - -current_goal constraints/sdc_check -read_file -type awl waiver/sdc.awl -sdc_add_settings -current_goal none - -current_goal constraints/sdc_exception_struct -read_file -type awl waiver/sdc.awl -sdc_add_settings -current_goal none - - -current_goal constraints/sdc_redundancy -read_file -type awl waiver/sdc.awl -sdc_add_settings -current_goal none - -current_goal constraints/sdc_equiv -read_file -type awl waiver/sdc.awl -sdc_add_settings -current_goal none - -current_goal constraints/sdc_hier_equiv -read_file -type awl waiver/sdc.awl -sdc_add_settings -current_goal none - diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/spyglass_lint_rules.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/spyglass_lint_rules.tcl deleted file mode 100644 index 3618e20..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/spyglass_lint_rules.tcl +++ /dev/null @@ -1,140 +0,0 @@ -set_goal_option rules { -ArrayIndex -BitOrder-ML -#checkOPPinConnectedToNet_a -CheckTimeUnitandPrecision-ML -CombLoop -DeadCode -DisallowCaseX-ML -DisallowXInCaseZ-ML -HangingInstInput-ML -HangingInst-ML -#HangingInstOutput-ML -FlopClockConstant -FlopEConst -NoExprInPort-ML -SepStateMachine -SetBeforeRead-ML -#sim_race01 -sim_race02 -STARC05-2.2.3.3 -STARC05-2.3.6.1 -STARC05-2.8.1.6 -STARC05-2.10.3.5 -STARC05-2.11.3.1 -STARC05-3.2.3.1 -STARC05-3.2.3.2 -STARC05-2.3.2.2 -STARC-1.4.3.4 -STARC-2.3.6.1 -STARC-2.8.1.4 -STARC-3.2.3.2 -SYNTH_5255 -SYNTH_5192 -UndrivenInTerm-ML -W120 -W122 -W123 -W154 -W18 -W19 -W192 -W193 -W245 -W263 -W287a -W337 -W398 -W414 -W415 -W415a -W422 -W423 -W442a -W480 -W490 -W502 -WRN_27 -} - -set_goal_option overloadrules W398+severity=ERROR -set_goal_option overloadrules W480+severity=ERROR -set_goal_option overloadrules W122+severity=ERROR -set_goal_option overloadrules W123+severity=ERROR -set_goal_option overloadrules FlopClockConstant+severity=ERROR -set_goal_option overloadrules W415+severity=ERROR -set_goal_option overloadrules W415a+severity=WARNING ## -set_goal_option overloadrules STARC-3.2.3.2+severity=ERROR -set_goal_option overloadrules W120+severity=WARNING -set_goal_option overloadrules W154+severity=ERROR -set_goal_option overloadrules W18+severity=ERROR -set_goal_option overloadrules W19+severity=ERROR -set_goal_option overloadrules W192+severity=ERROR -set_goal_option overloadrules W193+severity=ERROR -set_goal_option overloadrules W423+severity=ERROR -set_goal_option overloadrules ArrayIndex+severity=ERROR -set_goal_option overloadrules DisallowCaseX-ML+severity=ERROR -set_goal_option overloadrules STARC-2.3.6.1+severity=ERROR -set_goal_option overloadrules STARC-2.8.1.4+severity=ERROR -set_goal_option overloadrules STARC05-3.2.3.1+severity=ERROR -set_goal_option overloadrules STARC05-2.3.2.2+severity=ERROR -set_goal_option overloadrules UndrivenInTerm-ML+severity=ERROR -set_goal_option overloadrules STARC05-2.2.3.3+severity=ERROR -#set_goal_option overloadrules checkOPPinConnectedToNet_a+severity=WARNING -set_goal_option overloadrules CombLoop+severity=ERROR -set_goal_option overloadrules CheckTimeUnitandPrecision-ML+severity=ERROR -set_goal_option overloadrules DisallowXInCaseZ-ML+severity=ERROR -set_goal_option overloadrules HangingInstInput-ML+severity=ERROR -set_goal_option overloadrules HangingInst-ML+severity=ERROR -#set_goal_option overloadrules HangingInstOutput-ML+severity=WARNING -set_goal_option overloadrules STARC-1.4.3.4+severity=ERROR -set_goal_option overloadrules STARC05-2.11.3.1+severity=ERROR -set_goal_option overloadrules W263+severity=ERROR -set_goal_option overloadrules FlopEConst+severity=ERROR -set_goal_option overloadrules W287a+severity=ERROR -set_goal_option overloadrules BitOrder-ML+severity=ERROR -set_goal_option overloadrules STARC05-2.10.3.5+severity=ERROR -set_goal_option overloadrules SepStateMachine+severity=ERROR -set_goal_option overloadrules SYNTH_5255+severity=ERROR -set_goal_option overloadrules W442a+severity=ERROR -set_goal_option overloadrules W337+severity=ERROR -set_goal_option overloadrules W414+severity=ERROR -set_goal_option overloadrules W422+severity=ERROR -set_goal_option overloadrules SYNTH_5192+severity=ERROR -set_goal_option overloadrules SetBeforeRead-ML+severity=ERROR -set_goal_option overloadrules STARC05-2.3.6.1+severity=ERROR -set_goal_option overloadrules STARC05-3.2.3.2+severity=ERROR -#set_goal_option overloadrules sim_race01+severity=WARNING -set_goal_option overloadrules sim_race02+severity=ERROR -set_goal_option overloadrules WRN_27+severity=ERROR -set_goal_option overloadrules W490+severity=ERROR -set_goal_option overloadrules STARC05-2.8.1.6+severity=ERROR -set_goal_option overloadrules W245+severity=ERROR -set_goal_option overloadrules W502+severity=ERROR -set_goal_option overloadrules W71+severity=WARNING -set_goal_option overloadrules W116+severity=WARNING -set_goal_option overloadrules W362+severity=WARNING -set_goal_option overloadrules UndrivenInTerm-ML+severity=WARNING -set_goal_option overloadrules W164a+severity=WARNING -set_goal_option overloadrules NoExprInPort-ML+severity=WARNING -set_goal_option overloadrules DeadCode+severity=WARNING -set_goal_option overloadrules W240+severity=WARNING -set_goal_option overloadrules STARC-2.6.2.2+severity=WARNING -set_goal_option overloadrules W164b+severity=WARNING -set_goal_option overloadrules SignedUnsignedExpr-ML+severity=WARNING - - -set_parameter assume_driver_load both -set_parameter checkInHierarchy yes -set_parameter checkRTLCInst yes -set_parameter handle_greybox yes -set_parameter instname {/^[a-zA-Z0-9_]+$/} -set_parameter check_static_value yes -set_parameter strict yes -set_parameter report_reset_type all -set_parameter report_underflow_expressions yes -set_parameter report_max_val_overflow yes -set_parameter handle_equivalent_drivers yes -set_parameter checkconstassign yes -set_parameter check_bbox_driver yes -set_parameter ignore_sync_reset yes diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/syn_main.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/syn_main.tcl deleted file mode 100644 index c6dbde1..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/syn_main.tcl +++ /dev/null @@ -1,347 +0,0 @@ -set run_dc true -set run_pt false - -set RTL_DC_ID "" -set RTL_SIM_ID "" - -source -echo "./ProjectPathSetting.tcl" - -#-------------------------------------------------------------- -# NOTE: CHANGE DESIGN NAME TO YOUR OWN -source -echo "./setModuleName.tcl" - -source -echo "./synopsys_dc.setup" - -if { [string match *FullChip $Design]} then { - echo "current design is $Design" - #source -echo "RTL_SIM_ID.tcl" - #source -echo "RTL_DC_ID.tcl" - if { $RTL_DC_ID != $RTL_SIM_ID} then { - echo "RTL_DC_ID != RTL_SIM_ID" - echo "RTL_DC_ID = $RTL_DC_ID" - echo "RTL_SIM_ID = $RTL_SIM_ID" - return - } -} - -#-------------------------------------------------------------- -#Reload ddc -echo $env(LOADDDC) -if { $env(LOADDDC) == "TRUE"} { - read_ddc $env(PP)/report/${Design}.ddc - return -} -#-------------------------------------------------------------- -set dc_date [exec date +%Y_%m%d_%H%M] -exec mkdir dc.work/${Design}_${dc_date} -exec mkdir dc.work/${Design}_${dc_date}/result -exec mkdir dc.work/${Design}_${dc_date}/report - -remove_design -all - -#-------------------------------------------------------------- - -set view_command_win {true} -set_host_options -max_cores 16 - -set compile_enable_async_mux_mapping {true} -set template_naming_style {%s_%p} -set template_parameter_style {%d} -set template_separator_style {_} - -set hdl_keep_licenses {false} -set hdlin_ff_always_async_set_reset {true} -set hdlin_latch_always_async_set_reset {true} -set hdlin_ff_always_sync_set_reset {false} -##set hdlin_use_carry_in true -set hdlin_check_no_latch {true} -set hdlin_mux_size_limit {32} -set hdlin_shorten_long_module_name true -set hdlin_while_loop_iterations 8192 -set hdlin_module_name_limit 128 - -set verilogout_equation {false} -set verilogout_single_bit {false} -set verilogout_higher_designs_first {true} -set verilogout_no_tri {true} -#set verilogout_show_unconnected_pins {false} -set verilogout_show_unconnected_pins {true} - -define_name_rules M2G_MODULE_LEVEL -allowed "A-Z a-z 0-9 _" ; -define_name_rules M2G_MODULE_LEVEL -first_restricted "0-9" ; -define_name_rules M2G_MODULE_LEVEL -replacement_char "_" ; -define_name_rules M2G_MODULE_LEVEL -collapse_name_space ; -define_name_rules M2G_MODULE_LEVEL -case_insensitive ; -define_name_rules M2G_MODULE_LEVEL -remove_internal_net_bus ; -define_name_rules M2G_MODULE_LEVEL -equal_ports_nets ; -define_name_rules M2G_MODULE_LEVEL -add_dummy_nets ; -define_name_rules M2G_MODULE_LEVEL -max_length 128 -type port ; -define_name_rules M2G_MODULE_LEVEL -max_length 64 -type cell ; -define_name_rules M2G_MODULE_LEVEL -max_length 64 -type net ; - -set default_name_rules M2G_MODULE_LEVEL ; - -set bus_dimension_separator_style {_} -set bus_naming_style {%s[%d]} -set bus_range_separator_style {:} -set bus_inference_descending_sort {true} -set bus_inference_style {%s[%d]} -#set write_name_nets_same_as_ports {false} -set write_name_nets_same_as_ports {true} -set bus_minus_style {-%d} -set bus_extraction_style {%s[%d:%d]} - -set change_names_dont_change_bus_members {false} -set uniquify_naming_style %s_%d - -set compile_instance_name_prefix {U} -set compile_instance_name_suffix {} - -set compile_preserve_subdesign_interfaces {true} -set compile_assume_fully_decoded_three_state_busses {false} -set compile_disable_hierarchical_inverter_opt {true} -set enable_recovery_removal_arcs {false} - -set fsm_auto_inferring {true} -set gen_show_created_symbols {true} -set case_analysis_with_logic_constants {true} -set power_cg_auto_identify {true} -set compile_auto_ungroup_count_leaf_cells {true} -set compile_auto_ungroup_override_wlm {true} - -set compile_delete_unloaded_sequential_cells {true} -set compile_seqmap_propagate_constants {true} -set compile_seqmap_propagate_high_effort {true} -set compile_seqmap_propagate_constants_size_only {true} - -set_svf dc.work/${Design}_${dc_date}/report/${Design}.svf - -#-------------------------------------------------------------- -#void warning Info # -#-------------------------------------------------------------- -#suppress_message HDL-193 -#suppress_message LINT-45 -#suppress_message OPT-1056 -#suppress_message PWR-877 -#set suppress_errors {VHDL-2285} - -#-------------------------------------------------------------- -#read↦ link↦ Check design# -#-------------------------------------------------------------- -set DESIGN_RTL_DIR ../cv32e40p-master/rtl - -source -echo "./dc.work/specific_filelist.tcl" -analyze -f SVERILOG -library work -vcs "-f ./nc.work/sim_filelist.f" -redirect -append -file dc.log {elaborate $Design} -current_design $Design -#link -if { [link] == 0} { - echo "Link failed!" - echo $env(CHECKCODE) - if { $env(CHECKCODE) == "TRUE"} { - exit - } - return -} - -#**set timing_enable_multiple_clocks_per_reg true -check_design > dc.work/${Design}_${dc_date}/report/${Design}_check_design.txt - -echo $env(CHECKCODE) -if { $env(CHECKCODE) == "TRUE"} { - echo "Link success!" - exit -} - -#-------------------------------------------------------------- -# set library -# NOTE: ADD YOUR OWN LIBRARY -# ------------------------------------------------------------- -#set_operating_conditions ssg_cworst_max_0p81v_m40c -#set zerowireload Zero -#set auto_wire_load_selection false -#set_wire_load_mode top -##set_wire_load_model -name "$zerowireload" [current_design] -#current_design $Design -source -echo "${PROJECTPATH}/syn/set_library.tcl" - -#------------------------------------------------------------------ -#set_dont_use -source -echo "${PROJECTPATH}/syn/dont_use.tcl" -#------------------------------------------------------------------ - -#remove_license HDL-Compiler - -#change name before compile -report_names -rules verilog -hierarchy > dc.work/${Design}_${dc_date}/report/rename_info_1.rpt -redirect -append -file dc.log {change_names -rules verilog -hierarchy -verbose} -report_names -rules M2G_MODULE_LEVEL -hierarchy > dc.work/${Design}_${dc_date}/report/rename_info_2.rpt -redirect -append -file dc.log {change_names -rules M2G_MODULE_LEVEL -hierarchy -verbose} - - -#-------------------------------------------------------------- -# read clock set and input output constraints -# NOTE: CHANGE FILE NAME TO YOUR OWN -# --------------------------------------------------------------- -echo $env(DEBUGSDC) -if { $env(DEBUGSDC) == "TRUE"} { - return -} - -redirect -append -file dc.log {source -echo "$env(SDCPATH)/${Design}.sdc"} -source -echo "$env(SDCPATH)/synopsys.sdc" - -#----------------------------------------------------------------- -#set dont_touch design -#----------------------------------------------------------------- -source -echo ./dc.work/syn_specific.tcl - -uniquify -dont_skip_empty_designs - -#---------------------------------------------------------------------------- -#set UPF file -#NOTE: -# -#load_upf MatrixIP_top_u2.upf -#set upf_allow_DD_primary_with_supply_sets true -#set_voltage 0.81 -object_list {VDD VDD1sw VDD2sw} -#set_voltage 0.0 -object_list {VSS} -##insert_mv_cells -isolation -verbose -#check_mv_design -verbose - -#-------------------------------------------------------------- -#check design -report_port -verbose > dc.work/${Design}_${dc_date}/report/${Design}_port.txt -report_clock > dc.work/${Design}_${dc_date}/report/${Design}_clock.txt - - -set_fix_multiple_port_nets -all -buffer_constants -feedthroughs [ get_designs "*" ] - -current_design $Design - -#set_ultra_optimization true - -set_max_dynamic_power 0.0 - -#ungroup -all -flatten - -#set ports_clock_root [filter_collection [get_attribute [get_clocks] sources] object_class==port] -#group_path -name REGOUT -to [all_outputs] -#group_path -name REGIN -from [remove_from_collection [all_inputs] $ports_clock_root] -#group_path -name FEEDTHROUGH -from [remove_from_collection [all_inputs] $ports_clock_root] -to [all_outputs] - -group_path -name in2reg -from [all_inputs] -critical_range 1000.0 -group_path -name reg2out -to [all_outputs] -critical_range 1000.0 -group_path -name in2out -from [all_inputs] -to [all_outputs] -critical_range 1000.0 -group_path -name reg2reg -from [all_registers] -to [all_registers] -critical_range 1000.0 - -#set_compile_directives -constant_propagation true [get_cells -hierarchical *] - -set_cost_priority -delay -set_critical_range 0.2 $Design -redirect -append -file dc.log {remove_unconnected_ports [get_cells -hier * ] } - -check_design > dc.work/${Design}_${dc_date}/report/${Design}_check_design_aftercom.txt -analyze_datapath_extraction > dc.work/${Design}_${dc_date}/report/${Design}_analyze_datapath_extraction.rpt - -compile_ultra -no_autoungroup -timing_high_effort -gate_clock -no_seq_output_inversion -scan -#compile_ultra -no_autoungroup -timing_high_effort -gate_clock -no_seq_output_inversion - -#foreach_in_collection desig [remove_from_collection [get_designs "*"] [get_designs {FADDSUB_top}]] { -# lappend rename_design_list $desig -#} - -#rename_design $rename_design_list -prefix FADDSUB_ -rename_design [remove_from_collection [get_designs "*"] $Design] -prefix ${Design}_ - - -#-------------------------------------------------------------- -#write_report - -if { [llength [get_cells main_gate -hier -filter "clock_gating_logic == true"]] != 0 } { - remove_clock_gating_check [get_cells main_gate -hier -filter "clock_gating_logic == true"] -} - - -report_names -rules verilog -hierarchy > dc.work/${Design}_${dc_date}/report/rename_info_3.rpt -redirect -append -file dc.log {change_names -rules verilog -hierarchy -verbose} -report_names -rules M2G_MODULE_LEVEL -hierarchy > dc.work/${Design}_${dc_date}/report/rename_info_4.rpt -redirect -append -file dc.log {change_names -rules M2G_MODULE_LEVEL -hierarchy -verbose} - -#write_report -write -format verilog -hierarchy $Design -output dc.work/${Design}_${dc_date}/result/${Design}.sv -write -format ddc -hierarchy -output dc.work/${Design}_${dc_date}/report/${Design}.ddc -report_timing -max 1000 -transition_time -capacitance > dc.work/${Design}_${dc_date}/report/${Design}_timing.txt -report_constraint -all_violators > dc.work/${Design}_${dc_date}/report/${Design}_constraint.txt -write_script > dc.work/${Design}_${dc_date}/report/${Design}.sdc -write_sdc -nosplit dc.work/${Design}_${dc_date}/report/${Design}.sdc -report_design > dc.work/${Design}_${dc_date}/report/${Design}_design.txt -report_reference -hierarchy > dc.work/${Design}_${dc_date}/report/${Design}_reference.rpt -report_net > dc.work/${Design}_${dc_date}/report/${Design}_net.rpt -report_names -hierarchy > dc.work/${Design}_${dc_date}/report/${Design}_names.rpt -report_resources -hierarchy > dc.work/${Design}_${dc_date}/report/${Design}_resource.rpt -report_multibit -hier > dc.work/${Design}_${dc_date}/report/${Design}_multibit.rpt -report_power > dc.work/${Design}_${dc_date}/report/${Design}_power.txt -report_qor > dc.work/${Design}_${dc_date}/report/${Design}_qor.txt -report_clock_tree_power > dc.work/${Design}_${dc_date}/report/${Design}_clkpower.txt -report_clock_gating > dc.work/${Design}_${dc_date}/report/${Design}_clock_gating.txt -report_area -nosplit -hierarchy > dc.work/${Design}_${dc_date}/report/${Design}_area.txt -report_timing -max 100 -transition_time -capacitance -group in2reg > dc.work/${Design}_${dc_date}/report/${Design}_in2reg -report_timing -max 100 -transition_time -capacitance -group reg2out > dc.work/${Design}_${dc_date}/report/${Design}_reg2out -report_timing -max 100 -transition_time -capacitance -group in2out > dc.work/${Design}_${dc_date}/report/${Design}_in2out -report_timing -max 100 -transition_time -capacitance -group reg2reg > dc.work/${Design}_${dc_date}/report/${Design}_reg2reg -check_timing -include {gated_clock clock_crossing} > dc.work/${Design}_${dc_date}/report/${Design}_check_timing.rpt -#report_timing \ -# -path full_clock \ -# -transition_time \ -# -crosstalk_delta \ -# -capacitance \ -# -input_pins \ -# -nets \ -# -delay max \ -# -derate \ -# -max_paths 100 > ${dc_date}/timing/${DESIGN}_${dc_date}_timing_dc.txt -# - -set_svf -off - -check_mv_design -verbose > dc.work/${Design}_${dc_date}/report/${Design}_check_upf.log - -#remove_design -hierarchy MatrixIP_Core_Scalar_PG -#remove_design -hierarchy MatrixIP_Core_Vector_PG - -#write -format verilog -hierarchy $Design -output dc.work/${Design}_${dc_date}/result/${Design}_hier.sv -#exec rm ../Netlist_9T_125C/${Design}.v -#exec cp dc.work/${Design}_${dc_date}/result/${Design}.sv ../Netlist_9T_125C/${Design}.v -#-------------------------------------------------------------- -#quit - -set dc_date0 [exec date +%Y_%m%d_%H%M] -echo ${dc_date} ${dc_date0} - -exec $env(SCRIPTPATH)/get_DBs_info.sh -exec $env(SCRIPTPATH)/report_dc_summary.sh -exec cp dc.work/${Design}_${dc_date}/report/${Design}_check_design.txt dc.work/${Design}_${dc_date}/check_design.txt -exec cp dc.work/${Design}_${dc_date}/report/${Design}_check_timing.rpt dc.work/${Design}_${dc_date}/check_timing.txt -exec cp dc.log dc.work/${Design}_${dc_date}/dc.log -exec cp command.log dc.work/${Design}_${dc_date}/command.log -exec cp RTL_DC_info.log dc.work/${Design}_${dc_date}/RTL_DC_info.log -exec cp RTL_DC_ID.tcl dc.work/${Design}_${dc_date}/RTL_DC_ID.tcl -exec cp update_RTL_SVN.sh dc.work/${Design}_${dc_date}/update_RTL_SVN.sh - -#remove_sdc -#source -echo "${PROJECTPATH}/syn/SDC/${Design}.sdc" - -source -echo "./dc.work/syn_specific_after.tcl" - -if { [file exists dc.work/${Design}_${dc_date}/result/${Design}.sv] == 1} { -exec mkdir NetlistSubmit/${Design}_${dc_date} -exec cp dc.work/${Design}_${dc_date}/result/${Design}.sv NetlistSubmit/${Design}_${dc_date}/ -exec cp dc.work/${Design}_${dc_date}/report/${Design}_qor.txt NetlistSubmit/${Design}_${dc_date}/ -#exec cp dc.work/${Design}_${dc_date}/report/${Design}_memory_clock.rpt NetlistSubmit/${Design}_${dc_date}/ -} - -echo $env(FLOW) -if { $env(FLOW) == "TRUE"} { - exit -} diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/synth_options.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/synth_options.tcl deleted file mode 100644 index bf11fa2..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/synth_options.tcl +++ /dev/null @@ -1,12 +0,0 @@ -# File added as part of PowerKit_M2017.03-SP1_v1 - -# Synthesis command to enable multi process synthesis -syn_set_global_option enable_multi_process 2 -# Synthesis command to control maximum number of parallel synth process -syn_set_global_option max_core_count_for_multi_process 4 - -# To enable new ABC engine -# Disabled by default i.e old ABC engine is used -# Enable only under product team guidance. -# Usefull in case of Syntheis crash or Higher synth Area with old ABC -##syn_set_global_option select_new_ABC 1 diff --git a/src/UWE_projectCode/tmp/tmp/Tcls/txv_goal.tcl b/src/UWE_projectCode/tmp/tmp/Tcls/txv_goal.tcl deleted file mode 100644 index fe53347..0000000 --- a/src/UWE_projectCode/tmp/tmp/Tcls/txv_goal.tcl +++ /dev/null @@ -1,34 +0,0 @@ -proc txv_fp_add_settings {} { -set_parameter tc_domain_mode STA -set_parameter pt no -} - - -proc txv_mcp_add_settings {} { -set_parameter tc_domain_mode STA -set_parameter pt no -set_goal_option addrules {Txv_Gen_Assert} -set_goal_option ignorerules {Txv_MCP01} -} - -current_goal txv_verification/fp_verification -read_file -type awl waiver/txv.awl -txv_fp_add_settings -current_goal none - -current_goal txv_verification/mcp_verification -read_file -type awl waiver/txv.awl -txv_mcp_add_settings -current_goal none - -current_goal txv_verification/mcp_verification -scenario TBA -read_file -type awl waiver/txv.awl -txv_mcp_add_settings -set_parameter txv_mcp_time_based_sva_gen yes -current_goal none - -current_goal txv_verification/fp_mcp_verification -read_file -type awl waiver/txv.awl -txv_mcp_add_settings -txv_fp_add_settings -current_goal none diff --git a/src/UWE_projectCode/tmp/tmp/Template/command.log b/src/UWE_projectCode/tmp/tmp/Template/command.log deleted file mode 100644 index 5a5892d..0000000 --- a/src/UWE_projectCode/tmp/tmp/Template/command.log +++ /dev/null @@ -1,6627 +0,0 @@ -#@ # -#@ # Running dc_shell Version O-2018.06-SP1 for linux64 -- Jul 19, 2018 -#@ # Date: Tue Feb 28 19:57:38 2023 -#@ # Run by: UWE@Frontend -#@ - -source /EDA/Synopsys/syn/O-2018.06-SP1/admin/setup/.synopsys_dc.setup -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/admin/setup/.synopsys_dc.setup - -#@ # -#@ # ".synopsys_dc.setup" Initialization File for -#@ # -#@ # Dc_Shell and Design_Analyzer -#@ # -#@ # The variables in this file define the behavior of many parts -#@ # of the Synopsys Synthesis Tools. Upon installation, they should -#@ # be reviewed and modified to fit your site's needs. Each engineer -#@ # can have a .synopsys file in his/her home directory or current -#@ # directory to override variable settings in this file. -#@ # -#@ # Each logical grouping of variables is commented as to their -#@ # nature and effect on the Synthesis Commands. Examples of -#@ # variable groups are the Compile Variable Group, which affects -#@ # the designs produced by the COMPILE command, and the Schematic -#@ # Variable Group, which affects the output of the create_schematic -#@ # command. -#@ # -#@ # You can type "man _variables" in dc_shell or -#@ # design_analyzer to get help about a group of variables. -#@ # For instance, to get help about the "system" variable group, -#@ # type "help system_variables". You can also type -#@ # "man ", to get help on the that variable's -#@ # group. -#@ # -#@ -#@ # System variables -#@ set sh_command_abbrev_mode "Anywhere" -#@ set sh_continue_on_error "true" -#@ update_app_var -default true sh_continue_on_error -#@ set sh_enable_page_mode "true" -#@ update_app_var -default true sh_enable_page_mode -#@ set sh_source_uses_search_path "true" -#@ update_app_var -default true sh_source_uses_search_path -#@ if {$synopsys_program_name == "dc_shell" || $synopsys_program_name == "de_shell" || $synopsys_program_name == "dc_sms_shell" } { -#@ set sh_new_variable_message "false" -#@ update_app_var -default false sh_new_variable_message -#@ } else { -#@ set sh_new_variable_message "true" -#@ update_app_var -default true sh_new_variable_message -#@ } -#@ -#@ if {$synopsys_program_name == "dc_shell"} { -#@ set html_log_enable "false" -#@ set html_log_filename "default.html" -#@ } -#@ -#@ if {$synopsys_program_name == "de_shell"} { -#@ set de_log_html_filename "default.html" -#@ } -#@ -#@ if {$synopsys_program_name == "dc_shell" || $synopsys_program_name == "de_shell"} { -#@ lappend auto_path [file join ${synopsys_root} auxx syn lib] -#@ package require cae -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/tm.tcl - -#@ # -*- tcl -*- -#@ # -#@ # Searching for Tcl Modules. Defines a procedure, declares it as the primary -#@ # command for finding packages, however also uses the former 'package unknown' -#@ # command as a fallback. -#@ # -#@ # Locates all possible packages in a directory via a less restricted glob. The -#@ # targeted directory is derived from the name of the requested package, i.e. -#@ # the TM scan will look only at directories which can contain the requested -#@ # package. It will register all packages it found in the directory so that -#@ # future requests have a higher chance of being fulfilled by the ifneeded -#@ # database without having to come to us again. -#@ # -#@ # We do not remember where we have been and simply rescan targeted directories -#@ # when invoked again. The reasoning is this: -#@ # -#@ # - The only way we get back to the same directory is if someone is trying to -#@ # [package require] something that wasn't there on the first scan. -#@ # -#@ # Either -#@ # 1) It is there now: If we rescan, you get it; if not you don't. -#@ # -#@ # This covers the possibility that the application asked for a package -#@ # late, and the package was actually added to the installation after the -#@ # application was started. It shoukld still be able to find it. -#@ # -#@ # 2) It still is not there: Either way, you don't get it, but the rescan -#@ # takes time. This is however an error case and we dont't care that much -#@ # about it -#@ # -#@ # 3) It was there the first time; but for some reason a "package forget" has -#@ # been run, and "package" doesn't know about it anymore. -#@ # -#@ # This can be an indication that the application wishes to reload some -#@ # functionality. And should work as well. -#@ # -#@ # Note that this also strikes a balance between doing a glob targeting a -#@ # single package, and thus most likely requiring multiple globs of the same -#@ # directory when the application is asking for many packages, and trying to -#@ # glob for _everything_ in all subdirectories when looking for a package, -#@ # which comes with a heavy startup cost. -#@ # -#@ # We scan for regular packages only if no satisfying module was found. -#@ -#@ namespace eval ::tcl::tm { -#@ # Default paths. None yet. -#@ -#@ variable paths {} -#@ -#@ # The regex pattern a file name has to match to make it a Tcl Module. -#@ -#@ set pkgpattern {^([_[:alpha:]][:_[:alnum:]]*)-([[:digit:]].*)[.]tm$} -#@ -#@ # Export the public API -#@ -#@ namespace export path -#@ namespace ensemble create -command path -subcommands {add remove list} -#@ } -#@ -#@ # ::tcl::tm::path implementations -- -#@ # -#@ # Public API to the module path. See specification. -#@ # -#@ # Arguments -#@ # cmd - The subcommand to execute -#@ # args - The paths to add/remove. Must not appear querying the -#@ # path with 'list'. -#@ # -#@ # Results -#@ # No result for subcommands 'add' and 'remove'. A list of paths for -#@ # 'list'. -#@ # -#@ # Sideeffects -#@ # The subcommands 'add' and 'remove' manipulate the list of paths to -#@ # search for Tcl Modules. The subcommand 'list' has no sideeffects. -#@ -#@ proc ::tcl::tm::add {args} { -#@ # PART OF THE ::tcl::tm::path ENSEMBLE -#@ # -#@ # The path is added at the head to the list of module paths. -#@ # -#@ # The command enforces the restriction that no path may be an ancestor -#@ # directory of any other path on the list. If the new path violates this -#@ # restriction an error wil be raised. -#@ # -#@ # If the path is already present as is no error will be raised and no -#@ # action will be taken. -#@ -#@ variable paths -#@ -#@ # We use a copy of the path as source during validation, and extend it as -#@ # well. Because we not only have to detect if the new paths are bogus with -#@ # respect to the existing paths, but also between themselves. Otherwise we -#@ # can still add bogus paths, by specifying them in a single call. This -#@ # makes the use of the new paths simpler as well, a trivial assignment of -#@ # the collected paths to the official state var. -#@ -#@ set newpaths $paths -#@ foreach p $args { -#@ if {$p in $newpaths} { -#@ # Ignore a path already on the list. -#@ continue -#@ } -#@ -#@ # Search for paths which are subdirectories of the new one. If there -#@ # are any then the new path violates the restriction about ancestors. -#@ -#@ set pos [lsearch -glob $newpaths ${p}/*] -#@ # Cannot use "in", we need the position for the message. -#@ if {$pos >= 0} { -#@ return -code error "$p is ancestor of existing module path [lindex $newpaths $pos]." -#@ } -#@ -#@ # Now look for existing paths which are ancestors of the new one. This -#@ # reverse question forces us to loop over the existing paths, as each -#@ # element is the pattern, not the new path :( -#@ -#@ foreach ep $newpaths { -#@ if {[string match ${ep}/* $p]} { -#@ return -code error "$p is subdirectory of existing module path $ep." -#@ } -#@ } -#@ -#@ set newpaths [linsert $newpaths 0 $p] -#@ } -#@ -#@ # The validation of the input is complete and successful, and everything -#@ # in newpaths is either an old path, or added. We can now extend the -#@ # official list of paths, a simple assignment is sufficient. -#@ -#@ set paths $newpaths -#@ return -#@ } -#@ -#@ proc ::tcl::tm::remove {args} { -#@ # PART OF THE ::tcl::tm::path ENSEMBLE -#@ # -#@ # Removes the path from the list of module paths. The command is silently -#@ # ignored if the path is not on the list. -#@ -#@ variable paths -#@ -#@ foreach p $args { -#@ set pos [lsearch -exact $paths $p] -#@ if {$pos >= 0} { -#@ set paths [lreplace $paths $pos $pos] -#@ } -#@ } -#@ } -#@ -#@ proc ::tcl::tm::list {} { -#@ # PART OF THE ::tcl::tm::path ENSEMBLE -#@ -#@ variable paths -#@ return $paths -#@ } -#@ -#@ # ::tcl::tm::UnknownHandler -- -#@ # -#@ # Unknown handler for Tcl Modules, i.e. packages in module form. -#@ # -#@ # Arguments -#@ # original - Original [package unknown] procedure. -#@ # name - Name of desired package. -#@ # version - Version of desired package. Can be the -#@ # empty string. -#@ # exact - Either -exact or ommitted. -#@ # -#@ # Name, version, and exact are used to determine satisfaction. The -#@ # original is called iff no satisfaction was achieved. The name is also -#@ # used to compute the directory to target in the search. -#@ # -#@ # Results -#@ # None. -#@ # -#@ # Sideeffects -#@ # May populate the package ifneeded database with additional provide -#@ # scripts. -#@ -#@ proc ::tcl::tm::UnknownHandler {original name args} { -#@ # Import the list of paths to search for packages in module form. -#@ # Import the pattern used to check package names in detail. -#@ -#@ variable paths -#@ variable pkgpattern -#@ -#@ # Without paths to search we can do nothing. (Except falling back to the -#@ # regular search). -#@ -#@ if {[llength $paths]} { -#@ set pkgpath [string map {:: /} $name] -#@ set pkgroot [file dirname $pkgpath] -#@ if {$pkgroot eq "."} { -#@ set pkgroot "" -#@ } -#@ -#@ # We don't remember a copy of the paths while looping. Tcl Modules are -#@ # unable to change the list while we are searching for them. This also -#@ # simplifies the loop, as we cannot get additional directories while -#@ # iterating over the list. A simple foreach is sufficient. -#@ -#@ set satisfied 0 -#@ foreach path $paths { -#@ if {![interp issafe] && ![file exists $path]} { -#@ continue -#@ } -#@ set currentsearchpath [file join $path $pkgroot] -#@ if {![interp issafe] && ![file exists $currentsearchpath]} { -#@ continue -#@ } -#@ set strip [llength [file split $path]] -#@ -#@ # We can't use glob in safe interps, so enclose the following in a -#@ # catch statement, where we get the module files out of the -#@ # subdirectories. In other words, Tcl Modules are not-functional -#@ # in such an interpreter. This is the same as for the command -#@ # "tclPkgUnknown", i.e. the search for regular packages. -#@ -#@ catch { -#@ # We always look for _all_ possible modules in the current -#@ # path, to get the max result out of the glob. -#@ -#@ foreach file [glob -nocomplain -directory $currentsearchpath *.tm] { -#@ set pkgfilename [join [lrange [file split $file] $strip end] ::] -#@ -#@ if {![regexp -- $pkgpattern $pkgfilename --> pkgname pkgversion]} { -#@ # Ignore everything not matching our pattern for -#@ # package names. -#@ continue -#@ } -#@ try { -#@ package vcompare $pkgversion 0 -#@ } on error {} { -#@ # Ignore everything where the version part is not -#@ # acceptable to "package vcompare". -#@ continue -#@ } -#@ -#@ if {[package ifneeded $pkgname $pkgversion] ne {}} { -#@ # There's already a provide script registered for -#@ # this version of this package. Since all units of -#@ # code claiming to be the same version of the same -#@ # package ought to be identical, just stick with -#@ # the one we already have. -#@ continue -#@ } -#@ -#@ # We have found a candidate, generate a "provide script" -#@ # for it, and remember it. Note that we are using ::list -#@ # to do this; locally [list] means something else without -#@ # the namespace specifier. -#@ -#@ # NOTE. When making changes to the format of the provide -#@ # command generated below CHECK that the 'LOCATE' -#@ # procedure in core file 'platform/shell.tcl' still -#@ # understands it, or, if not, update its implementation -#@ # appropriately. -#@ # -#@ # Right now LOCATE's implementation assumes that the path -#@ # of the package file is the last element in the list. -#@ -#@ package ifneeded $pkgname $pkgversion "[::list package provide $pkgname $pkgversion];[::list source -encoding utf-8 $file]" -#@ -#@ # We abort in this unknown handler only if we got a -#@ # satisfying candidate for the requested package. -#@ # Otherwise we still have to fallback to the regular -#@ # package search to complete the processing. -#@ -#@ if {($pkgname eq $name) -#@ && [package vsatisfies $pkgversion {*}$args]} { -#@ set satisfied 1 -#@ -#@ # We do not abort the loop, and keep adding provide -#@ # scripts for every candidate in the directory, just -#@ # remember to not fall back to the regular search -#@ # anymore. -#@ } -#@ } -#@ } -#@ } -#@ -#@ if {$satisfied} { -#@ return -#@ } -#@ } -#@ -#@ # Fallback to previous command, if existing. See comment above about -#@ # ::list... -#@ -#@ if {[llength $original]} { -#@ uplevel 1 $original [::linsert $args 0 $name] -#@ } -#@ } -#@ -#@ # ::tcl::tm::Defaults -- -#@ # -#@ # Determines the default search paths. -#@ # -#@ # Arguments -#@ # None -#@ # -#@ # Results -#@ # None. -#@ # -#@ # Sideeffects -#@ # May add paths to the list of defaults. -#@ -#@ proc ::tcl::tm::Defaults {} { -#@ global env tcl_platform -#@ -#@ lassign [split [info tclversion] .] major minor -#@ set exe [file normalize [info nameofexecutable]] -#@ -#@ # Note that we're using [::list], not [list] because [list] means -#@ # something other than [::list] in this namespace. -#@ roots [::list [file dirname [info library]] [file join [file dirname [file dirname $exe]] lib] ] -#@ -#@ if {$tcl_platform(platform) eq "windows"} { -#@ set sep ";" -#@ } else { -#@ set sep ":" -#@ } -#@ for {set n $minor} {$n >= 0} {incr n -1} { -#@ foreach ev [::list TCL${major}.${n}_TM_PATH TCL${major}_${n}_TM_PATH ] { -#@ if {![info exists env($ev)]} continue -#@ foreach p [split $env($ev) $sep] { -#@ path add $p -#@ } -#@ } -#@ } -#@ return -#@ } -#@ -#@ # ::tcl::tm::roots -- -#@ # -#@ # Public API to the module path. See specification. -#@ # -#@ # Arguments -#@ # paths - List of 'root' paths to derive search paths from. -#@ # -#@ # Results -#@ # No result. -#@ # -#@ # Sideeffects -#@ # Calls 'path add' to paths to the list of module search paths. -#@ -#@ proc ::tcl::tm::roots {paths} { -#@ lassign [split [package present Tcl] .] major minor -#@ foreach pa $paths { -#@ set p [file join $pa tcl$major] -#@ for {set n $minor} {$n >= 0} {incr n -1} { -#@ set px [file join $p ${major}.${n}] -#@ if {![interp issafe]} {set px [file normalize $px]} -#@ path add $px -#@ } -#@ set px [file join $p site-tcl] -#@ if {![interp issafe]} {set px [file normalize $px]} -#@ path add $px -#@ } -#@ return -#@ } -#@ -#@ # Initialization. Set up the default paths, then insert the new handler into -#@ # the chain. -#@ -#@ if {![interp issafe]} {::tcl::tm::Defaults} -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/tm.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/package.tcl - -#@ # package.tcl -- -#@ # -#@ # utility procs formerly in init.tcl which can be loaded on demand -#@ # for package management. -#@ # -#@ # Copyright (c) 1991-1993 The Regents of the University of California. -#@ # Copyright (c) 1994-1998 Sun Microsystems, Inc. -#@ # -#@ # See the file "license.terms" for information on usage and redistribution -#@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. -#@ # -#@ -#@ namespace eval tcl::Pkg {} -#@ -#@ # ::tcl::Pkg::CompareExtension -- -#@ # -#@ # Used internally by pkg_mkIndex to compare the extension of a file to a given -#@ # extension. On Windows, it uses a case-insensitive comparison because the -#@ # file system can be file insensitive. -#@ # -#@ # Arguments: -#@ # fileName name of a file whose extension is compared -#@ # ext (optional) The extension to compare against; you must -#@ # provide the starting dot. -#@ # Defaults to [info sharedlibextension] -#@ # -#@ # Results: -#@ # Returns 1 if the extension matches, 0 otherwise -#@ -#@ proc tcl::Pkg::CompareExtension {fileName {ext {}}} { -#@ global tcl_platform -#@ if {$ext eq ""} {set ext [info sharedlibextension]} -#@ if {$tcl_platform(platform) eq "windows"} { -#@ return [string equal -nocase [file extension $fileName] $ext] -#@ } else { -#@ # Some unices add trailing numbers after the .so, so -#@ # we could have something like '.so.1.2'. -#@ set root $fileName -#@ while {1} { -#@ set currExt [file extension $root] -#@ if {$currExt eq $ext} { -#@ return 1 -#@ } -#@ -#@ # The current extension does not match; if it is not a numeric -#@ # value, quit, as we are only looking to ignore version number -#@ # extensions. Otherwise we might return 1 in this case: -#@ # tcl::Pkg::CompareExtension foo.so.bar .so -#@ # which should not match. -#@ -#@ if {![string is integer -strict [string range $currExt 1 end]]} { -#@ return 0 -#@ } -#@ set root [file rootname $root] -#@ } -#@ } -#@ } -#@ -#@ # pkg_mkIndex -- -#@ # This procedure creates a package index in a given directory. The package -#@ # index consists of a "pkgIndex.tcl" file whose contents are a Tcl script that -#@ # sets up package information with "package require" commands. The commands -#@ # describe all of the packages defined by the files given as arguments. -#@ # -#@ # Arguments: -#@ # -direct (optional) If this flag is present, the generated -#@ # code in pkgMkIndex.tcl will cause the package to be -#@ # loaded when "package require" is executed, rather -#@ # than lazily when the first reference to an exported -#@ # procedure in the package is made. -#@ # -verbose (optional) Verbose output; the name of each file that -#@ # was successfully rocessed is printed out. Additionally, -#@ # if processing of a file failed a message is printed. -#@ # -load pat (optional) Preload any packages whose names match -#@ # the pattern. Used to handle DLLs that depend on -#@ # other packages during their Init procedure. -#@ # dir - Name of the directory in which to create the index. -#@ # args - Any number of additional arguments, each giving -#@ # a glob pattern that matches the names of one or -#@ # more shared libraries or Tcl script files in -#@ # dir. -#@ -#@ proc pkg_mkIndex {args} { -#@ set usage {"pkg_mkIndex ?-direct? ?-lazy? ?-load pattern? ?-verbose? ?--? dir ?pattern ...?"} -#@ -#@ set argCount [llength $args] -#@ if {$argCount < 1} { -#@ return -code error "wrong # args: should be\n$usage" -#@ } -#@ -#@ set more "" -#@ set direct 1 -#@ set doVerbose 0 -#@ set loadPat "" -#@ for {set idx 0} {$idx < $argCount} {incr idx} { -#@ set flag [lindex $args $idx] -#@ switch -glob -- $flag { -#@ -- { -#@ # done with the flags -#@ incr idx -#@ break -#@ } -#@ -verbose { -#@ set doVerbose 1 -#@ } -#@ -lazy { -#@ set direct 0 -#@ append more " -lazy" -#@ } -#@ -direct { -#@ append more " -direct" -#@ } -#@ -load { -#@ incr idx -#@ set loadPat [lindex $args $idx] -#@ append more " -load $loadPat" -#@ } -#@ -* { -#@ return -code error "unknown flag $flag: should be\n$usage" -#@ } -#@ default { -#@ # done with the flags -#@ break -#@ } -#@ } -#@ } -#@ -#@ set dir [lindex $args $idx] -#@ set patternList [lrange $args [expr {$idx + 1}] end] -#@ if {![llength $patternList]} { -#@ set patternList [list "*.tcl" "*[info sharedlibextension]"] -#@ } -#@ -#@ try { -#@ set fileList [glob -directory $dir -tails -types {r f} -- {*}$patternList] -#@ } on error {msg opt} { -#@ return -options $opt $msg -#@ } -#@ foreach file $fileList { -#@ # For each file, figure out what commands and packages it provides. -#@ # To do this, create a child interpreter, load the file into the -#@ # interpreter, and get a list of the new commands and packages that -#@ # are defined. -#@ -#@ if {$file eq "pkgIndex.tcl"} { -#@ continue -#@ } -#@ -#@ set c [interp create] -#@ -#@ # Load into the child any packages currently loaded in the parent -#@ # interpreter that match the -load pattern. -#@ -#@ if {$loadPat ne ""} { -#@ if {$doVerbose} { -#@ tclLog "currently loaded packages: '[info loaded]'" -#@ tclLog "trying to load all packages matching $loadPat" -#@ } -#@ if {![llength [info loaded]]} { -#@ tclLog "warning: no packages are currently loaded, nothing" -#@ tclLog "can possibly match '$loadPat'" -#@ } -#@ } -#@ foreach pkg [info loaded] { -#@ if {![string match -nocase $loadPat [lindex $pkg 1]]} { -#@ continue -#@ } -#@ if {$doVerbose} { -#@ tclLog "package [lindex $pkg 1] matches '$loadPat'" -#@ } -#@ try { -#@ load [lindex $pkg 0] [lindex $pkg 1] $c -#@ } on error err { -#@ if {$doVerbose} { -#@ tclLog "warning: load [lindex $pkg 0] [lindex $pkg 1]\nfailed with: $err" -#@ } -#@ } on ok {} { -#@ if {$doVerbose} { -#@ tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]" -#@ } -#@ } -#@ if {[lindex $pkg 1] eq "Tk"} { -#@ # Withdraw . if Tk was loaded, to avoid showing a window. -#@ $c eval [list wm withdraw .] -#@ } -#@ } -#@ -#@ $c eval { -#@ # Stub out the package command so packages can require other -#@ # packages. -#@ -#@ rename package __package_orig -#@ proc package {what args} { -#@ switch -- $what { -#@ require { -#@ return; # Ignore transitive requires -#@ } -#@ default { -#@ __package_orig $what {*}$args -#@ } -#@ } -#@ } -#@ proc tclPkgUnknown args {} -#@ package unknown tclPkgUnknown -#@ -#@ # Stub out the unknown command so package can call into each other -#@ # during their initialilzation. -#@ -#@ proc unknown {args} {} -#@ -#@ # Stub out the auto_import mechanism -#@ -#@ proc auto_import {args} {} -#@ -#@ # reserve the ::tcl namespace for support procs and temporary -#@ # variables. This might make it awkward to generate a -#@ # pkgIndex.tcl file for the ::tcl namespace. -#@ -#@ namespace eval ::tcl { -#@ variable dir ;# Current directory being processed -#@ variable file ;# Current file being processed -#@ variable direct ;# -direct flag value -#@ variable x ;# Loop variable -#@ variable debug ;# For debugging -#@ variable type ;# "load" or "source", for -direct -#@ variable namespaces ;# Existing namespaces (e.g., ::tcl) -#@ variable packages ;# Existing packages (e.g., Tcl) -#@ variable origCmds ;# Existing commands -#@ variable newCmds ;# Newly created commands -#@ variable newPkgs {} ;# Newly created packages -#@ } -#@ } -#@ -#@ $c eval [list set ::tcl::dir $dir] -#@ $c eval [list set ::tcl::file $file] -#@ $c eval [list set ::tcl::direct $direct] -#@ -#@ # Download needed procedures into the slave because we've just deleted -#@ # the unknown procedure. This doesn't handle procedures with default -#@ # arguments. -#@ -#@ foreach p {::tcl::Pkg::CompareExtension} { -#@ $c eval [list namespace eval [namespace qualifiers $p] {}] -#@ $c eval [list proc $p [info args $p] [info body $p]] -#@ } -#@ -#@ try { -#@ $c eval { -#@ set ::tcl::debug "loading or sourcing" -#@ -#@ # we need to track command defined by each package even in the -#@ # -direct case, because they are needed internally by the -#@ # "partial pkgIndex.tcl" step above. -#@ -#@ proc ::tcl::GetAllNamespaces {{root ::}} { -#@ set list $root -#@ foreach ns [namespace children $root] { -#@ lappend list {*}[::tcl::GetAllNamespaces $ns] -#@ } -#@ return $list -#@ } -#@ -#@ # init the list of existing namespaces, packages, commands -#@ -#@ foreach ::tcl::x [::tcl::GetAllNamespaces] { -#@ set ::tcl::namespaces($::tcl::x) 1 -#@ } -#@ foreach ::tcl::x [package names] { -#@ if {[package provide $::tcl::x] ne ""} { -#@ set ::tcl::packages($::tcl::x) 1 -#@ } -#@ } -#@ set ::tcl::origCmds [info commands] -#@ -#@ # Try to load the file if it has the shared library extension, -#@ # otherwise source it. It's important not to try to load -#@ # files that aren't shared libraries, because on some systems -#@ # (like SunOS) the loader will abort the whole application -#@ # when it gets an error. -#@ -#@ if {[::tcl::Pkg::CompareExtension $::tcl::file [info sharedlibextension]]} { -#@ # The "file join ." command below is necessary. Without -#@ # it, if the file name has no \'s and we're on UNIX, the -#@ # load command will invoke the LD_LIBRARY_PATH search -#@ # mechanism, which could cause the wrong file to be used. -#@ -#@ set ::tcl::debug loading -#@ load [file join $::tcl::dir $::tcl::file] -#@ set ::tcl::type load -#@ } else { -#@ set ::tcl::debug sourcing -#@ source [file join $::tcl::dir $::tcl::file] -#@ set ::tcl::type source -#@ } -#@ -#@ # As a performance optimization, if we are creating direct -#@ # load packages, don't bother figuring out the set of commands -#@ # created by the new packages. We only need that list for -#@ # setting up the autoloading used in the non-direct case. -#@ if {!$::tcl::direct} { -#@ # See what new namespaces appeared, and import commands -#@ # from them. Only exported commands go into the index. -#@ -#@ foreach ::tcl::x [::tcl::GetAllNamespaces] { -#@ if {![info exists ::tcl::namespaces($::tcl::x)]} { -#@ namespace import -force ${::tcl::x}::* -#@ } -#@ -#@ # Figure out what commands appeared -#@ -#@ foreach ::tcl::x [info commands] { -#@ set ::tcl::newCmds($::tcl::x) 1 -#@ } -#@ foreach ::tcl::x $::tcl::origCmds { -#@ unset -nocomplain ::tcl::newCmds($::tcl::x) -#@ } -#@ foreach ::tcl::x [array names ::tcl::newCmds] { -#@ # determine which namespace a command comes from -#@ -#@ set ::tcl::abs [namespace origin $::tcl::x] -#@ -#@ # special case so that global names have no -#@ # leading ::, this is required by the unknown -#@ # command -#@ -#@ set ::tcl::abs [lindex [auto_qualify $::tcl::abs ::] 0] -#@ -#@ if {$::tcl::x ne $::tcl::abs} { -#@ # Name changed during qualification -#@ -#@ set ::tcl::newCmds($::tcl::abs) 1 -#@ unset ::tcl::newCmds($::tcl::x) -#@ } -#@ } -#@ } -#@ } -#@ -#@ # Look through the packages that appeared, and if there is a -#@ # version provided, then record it -#@ -#@ foreach ::tcl::x [package names] { -#@ if {[package provide $::tcl::x] ne "" -#@ && ![info exists ::tcl::packages($::tcl::x)]} { -#@ lappend ::tcl::newPkgs [list $::tcl::x [package provide $::tcl::x]] -#@ } -#@ } -#@ } -#@ } on error msg { -#@ set what [$c eval set ::tcl::debug] -#@ if {$doVerbose} { -#@ tclLog "warning: error while $what $file: $msg" -#@ } -#@ } on ok {} { -#@ set what [$c eval set ::tcl::debug] -#@ if {$doVerbose} { -#@ tclLog "successful $what of $file" -#@ } -#@ set type [$c eval set ::tcl::type] -#@ set cmds [lsort [$c eval array names ::tcl::newCmds]] -#@ set pkgs [$c eval set ::tcl::newPkgs] -#@ if {$doVerbose} { -#@ if {!$direct} { -#@ tclLog "commands provided were $cmds" -#@ } -#@ tclLog "packages provided were $pkgs" -#@ } -#@ if {[llength $pkgs] > 1} { -#@ tclLog "warning: \"$file\" provides more than one package ($pkgs)" -#@ } -#@ foreach pkg $pkgs { -#@ # cmds is empty/not used in the direct case -#@ lappend files($pkg) [list $file $type $cmds] -#@ } -#@ -#@ if {$doVerbose} { -#@ tclLog "processed $file" -#@ } -#@ } -#@ interp delete $c -#@ } -#@ -#@ append index "# Tcl package index file, version 1.1\n" -#@ append index "# This file is generated by the \"pkg_mkIndex$more\" command\n" -#@ append index "# and sourced either when an application starts up or\n" -#@ append index "# by a \"package unknown\" script. It invokes the\n" -#@ append index "# \"package ifneeded\" command to set up package-related\n" -#@ append index "# information so that packages will be loaded automatically\n" -#@ append index "# in response to \"package require\" commands. When this\n" -#@ append index "# script is sourced, the variable \$dir must contain the\n" -#@ append index "# full path name of this file's directory.\n" -#@ -#@ foreach pkg [lsort [array names files]] { -#@ set cmd {} -#@ lassign $pkg name version -#@ lappend cmd ::tcl::Pkg::Create -name $name -version $version -#@ foreach spec [lsort -index 0 $files($pkg)] { -#@ foreach {file type procs} $spec { -#@ if {$direct} { -#@ set procs {} -#@ } -#@ lappend cmd "-$type" [list $file $procs] -#@ } -#@ } -#@ append index "\n[eval $cmd]" -#@ } -#@ -#@ set f [open [file join $dir pkgIndex.tcl] w] -#@ puts $f $index -#@ close $f -#@ } -#@ -#@ # tclPkgSetup -- -#@ # This is a utility procedure use by pkgIndex.tcl files. It is invoked as -#@ # part of a "package ifneeded" script. It calls "package provide" to indicate -#@ # that a package is available, then sets entries in the auto_index array so -#@ # that the package's files will be auto-loaded when the commands are used. -#@ # -#@ # Arguments: -#@ # dir - Directory containing all the files for this package. -#@ # pkg - Name of the package (no version number). -#@ # version - Version number for the package, such as 2.1.3. -#@ # files - List of files that constitute the package. Each -#@ # element is a sub-list with three elements. The first -#@ # is the name of a file relative to $dir, the second is -#@ # "load" or "source", indicating whether the file is a -#@ # loadable binary or a script to source, and the third -#@ # is a list of commands defined by this file. -#@ -#@ proc tclPkgSetup {dir pkg version files} { -#@ global auto_index -#@ -#@ package provide $pkg $version -#@ foreach fileInfo $files { -#@ set f [lindex $fileInfo 0] -#@ set type [lindex $fileInfo 1] -#@ foreach cmd [lindex $fileInfo 2] { -#@ if {$type eq "load"} { -#@ set auto_index($cmd) [list load [file join $dir $f] $pkg] -#@ } else { -#@ set auto_index($cmd) [list source [file join $dir $f]] -#@ } -#@ } -#@ } -#@ } -#@ -#@ # tclPkgUnknown -- -#@ # This procedure provides the default for the "package unknown" function. It -#@ # is invoked when a package that's needed can't be found. It scans the -#@ # auto_path directories and their immediate children looking for pkgIndex.tcl -#@ # files and sources any such files that are found to setup the package -#@ # database. As it searches, it will recognize changes to the auto_path and -#@ # scan any new directories. -#@ # -#@ # Arguments: -#@ # name - Name of desired package. Not used. -#@ # version - Version of desired package. Not used. -#@ # exact - Either "-exact" or omitted. Not used. -#@ -#@ proc tclPkgUnknown {name args} { -#@ global auto_path env -#@ -#@ if {![info exists auto_path]} { -#@ return -#@ } -#@ # Cache the auto_path, because it may change while we run through the -#@ # first set of pkgIndex.tcl files -#@ set old_path [set use_path $auto_path] -#@ while {[llength $use_path]} { -#@ set dir [lindex $use_path end] -#@ -#@ # Make sure we only scan each directory one time. -#@ if {[info exists tclSeenPath($dir)]} { -#@ set use_path [lrange $use_path 0 end-1] -#@ continue -#@ } -#@ set tclSeenPath($dir) 1 -#@ -#@ # we can't use glob in safe interps, so enclose the following in a -#@ # catch statement, where we get the pkgIndex files out of the -#@ # subdirectories -#@ catch { -#@ foreach file [glob -directory $dir -join -nocomplain * pkgIndex.tcl] { -#@ set dir [file dirname $file] -#@ if {![info exists procdDirs($dir)]} { -#@ try { -#@ source $file -#@ } trap {POSIX EACCES} {} { -#@ # $file was not readable; silently ignore -#@ continue -#@ } on error msg { -#@ tclLog "error reading package index file $file: $msg" -#@ } on ok {} { -#@ set procdDirs($dir) 1 -#@ } -#@ } -#@ } -#@ } -#@ set dir [lindex $use_path end] -#@ if {![info exists procdDirs($dir)]} { -#@ set file [file join $dir pkgIndex.tcl] -#@ # safe interps usually don't have "file exists", -#@ if {([interp issafe] || [file exists $file])} { -#@ try { -#@ source $file -#@ } trap {POSIX EACCES} {} { -#@ # $file was not readable; silently ignore -#@ continue -#@ } on error msg { -#@ tclLog "error reading package index file $file: $msg" -#@ } on ok {} { -#@ set procdDirs($dir) 1 -#@ } -#@ } -#@ } -#@ -#@ set use_path [lrange $use_path 0 end-1] -#@ -#@ # Check whether any of the index scripts we [source]d above set a new -#@ # value for $::auto_path. If so, then find any new directories on the -#@ # $::auto_path, and lappend them to the $use_path we are working from. -#@ # This gives index scripts the (arguably unwise) power to expand the -#@ # index script search path while the search is in progress. -#@ set index 0 -#@ if {[llength $old_path] == [llength $auto_path]} { -#@ foreach dir $auto_path old $old_path { -#@ if {$dir ne $old} { -#@ # This entry in $::auto_path has changed. -#@ break -#@ } -#@ incr index -#@ } -#@ } -#@ -#@ # $index now points to the first element of $auto_path that has -#@ # changed, or the beginning if $auto_path has changed length Scan the -#@ # new elements of $auto_path for directories to add to $use_path. -#@ # Don't add directories we've already seen, or ones already on the -#@ # $use_path. -#@ foreach dir [lrange $auto_path $index end] { -#@ if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} { -#@ lappend use_path $dir -#@ } -#@ } -#@ set old_path $auto_path -#@ } -#@ } -#@ -#@ # tcl::MacOSXPkgUnknown -- -#@ # This procedure extends the "package unknown" function for MacOSX. It scans -#@ # the Resources/Scripts directories of the immediate children of the auto_path -#@ # directories for pkgIndex files. -#@ # -#@ # Arguments: -#@ # original - original [package unknown] procedure -#@ # name - Name of desired package. Not used. -#@ # version - Version of desired package. Not used. -#@ # exact - Either "-exact" or omitted. Not used. -#@ -#@ proc tcl::MacOSXPkgUnknown {original name args} { -#@ # First do the cross-platform default search -#@ uplevel 1 $original [linsert $args 0 $name] -#@ -#@ # Now do MacOSX specific searching -#@ global auto_path -#@ -#@ if {![info exists auto_path]} { -#@ return -#@ } -#@ # Cache the auto_path, because it may change while we run through the -#@ # first set of pkgIndex.tcl files -#@ set old_path [set use_path $auto_path] -#@ while {[llength $use_path]} { -#@ set dir [lindex $use_path end] -#@ -#@ # Make sure we only scan each directory one time. -#@ if {[info exists tclSeenPath($dir)]} { -#@ set use_path [lrange $use_path 0 end-1] -#@ continue -#@ } -#@ set tclSeenPath($dir) 1 -#@ -#@ # get the pkgIndex files out of the subdirectories -#@ foreach file [glob -directory $dir -join -nocomplain * Resources Scripts pkgIndex.tcl] { -#@ set dir [file dirname $file] -#@ if {![info exists procdDirs($dir)]} { -#@ try { -#@ source $file -#@ } trap {POSIX EACCES} {} { -#@ # $file was not readable; silently ignore -#@ continue -#@ } on error msg { -#@ tclLog "error reading package index file $file: $msg" -#@ } on ok {} { -#@ set procdDirs($dir) 1 -#@ } -#@ } -#@ } -#@ set use_path [lrange $use_path 0 end-1] -#@ -#@ # Check whether any of the index scripts we [source]d above set a new -#@ # value for $::auto_path. If so, then find any new directories on the -#@ # $::auto_path, and lappend them to the $use_path we are working from. -#@ # This gives index scripts the (arguably unwise) power to expand the -#@ # index script search path while the search is in progress. -#@ set index 0 -#@ if {[llength $old_path] == [llength $auto_path]} { -#@ foreach dir $auto_path old $old_path { -#@ if {$dir ne $old} { -#@ # This entry in $::auto_path has changed. -#@ break -#@ } -#@ incr index -#@ } -#@ } -#@ -#@ # $index now points to the first element of $auto_path that has -#@ # changed, or the beginning if $auto_path has changed length Scan the -#@ # new elements of $auto_path for directories to add to $use_path. -#@ # Don't add directories we've already seen, or ones already on the -#@ # $use_path. -#@ foreach dir [lrange $auto_path $index end] { -#@ if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} { -#@ lappend use_path $dir -#@ } -#@ } -#@ set old_path $auto_path -#@ } -#@ } -#@ -#@ # ::tcl::Pkg::Create -- -#@ # -#@ # Given a package specification generate a "package ifneeded" statement -#@ # for the package, suitable for inclusion in a pkgIndex.tcl file. -#@ # -#@ # Arguments: -#@ # args arguments used by the Create function: -#@ # -name packageName -#@ # -version packageVersion -#@ # -load {filename ?{procs}?} -#@ # ... -#@ # -source {filename ?{procs}?} -#@ # ... -#@ # -#@ # Any number of -load and -source parameters may be -#@ # specified, so long as there is at least one -load or -#@ # -source parameter. If the procs component of a module -#@ # specifier is left off, that module will be set up for -#@ # direct loading; otherwise, it will be set up for lazy -#@ # loading. If both -source and -load are specified, the -#@ # -load'ed files will be loaded first, followed by the -#@ # -source'd files. -#@ # -#@ # Results: -#@ # An appropriate "package ifneeded" statement for the package. -#@ -#@ proc ::tcl::Pkg::Create {args} { -#@ append err(usage) "[lindex [info level 0] 0] " -#@ append err(usage) "-name packageName -version packageVersion" -#@ append err(usage) "?-load {filename ?{procs}?}? ... " -#@ append err(usage) "?-source {filename ?{procs}?}? ..." -#@ -#@ set err(wrongNumArgs) "wrong # args: should be \"$err(usage)\"" -#@ set err(valueMissing) "value for \"%s\" missing: should be \"$err(usage)\"" -#@ set err(unknownOpt) "unknown option \"%s\": should be \"$err(usage)\"" -#@ set err(noLoadOrSource) "at least one of -load and -source must be given" -#@ -#@ # process arguments -#@ set len [llength $args] -#@ if {$len < 6} { -#@ error $err(wrongNumArgs) -#@ } -#@ -#@ # Initialize parameters -#@ array set opts {-name {} -version {} -source {} -load {}} -#@ -#@ # process parameters -#@ for {set i 0} {$i < $len} {incr i} { -#@ set flag [lindex $args $i] -#@ incr i -#@ switch -glob -- $flag { -#@ "-name" - -#@ "-version" { -#@ if {$i >= $len} { -#@ error [format $err(valueMissing) $flag] -#@ } -#@ set opts($flag) [lindex $args $i] -#@ } -#@ "-source" - -#@ "-load" { -#@ if {$i >= $len} { -#@ error [format $err(valueMissing) $flag] -#@ } -#@ lappend opts($flag) [lindex $args $i] -#@ } -#@ default { -#@ error [format $err(unknownOpt) [lindex $args $i]] -#@ } -#@ } -#@ } -#@ -#@ # Validate the parameters -#@ if {![llength $opts(-name)]} { -#@ error [format $err(valueMissing) "-name"] -#@ } -#@ if {![llength $opts(-version)]} { -#@ error [format $err(valueMissing) "-version"] -#@ } -#@ -#@ if {!([llength $opts(-source)] || [llength $opts(-load)])} { -#@ error $err(noLoadOrSource) -#@ } -#@ -#@ # OK, now everything is good. Generate the package ifneeded statment. -#@ set cmdline "package ifneeded $opts(-name) $opts(-version) " -#@ -#@ set cmdList {} -#@ set lazyFileList {} -#@ -#@ # Handle -load and -source specs -#@ foreach key {load source} { -#@ foreach filespec $opts(-$key) { -#@ lassign $filespec filename proclist -#@ -#@ if { [llength $proclist] == 0 } { -#@ set cmd "\[list $key \[file join \$dir [list $filename]\]\]" -#@ lappend cmdList $cmd -#@ } else { -#@ lappend lazyFileList [list $filename $key $proclist] -#@ } -#@ } -#@ } -#@ -#@ if {[llength $lazyFileList]} { -#@ lappend cmdList "\[list tclPkgSetup \$dir $opts(-name) $opts(-version) [list $lazyFileList]\]" -#@ } -#@ append cmdline [join $cmdList "\\n"] -#@ return $cmdline -#@ } -#@ -#@ interp alias {} ::pkg::create {} ::tcl::Pkg::Create -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/package.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/pkgIndex.tcl - -#@ # Copyright (c) 2016 Synopsys, Inc. This Synopsys software and all -#@ # associated documentation are proprietary to Synopsys, Inc. and may -#@ # only be used pursuant to the terms and conditions of a written -#@ # license agreement with Synopsys, Inc. All other use, reproduction, -#@ # modification, or distribution of the Synopsys software or the -#@ # associated documentation is strictly prohibited. -#@ -#@ package ifneeded cae 1.0 [list source [file join $dir syn.tcl]] -#@ package ifneeded cae::utils 1.0 [list source [file join $dir utils utils.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/iwidgets4.1/pkgIndex.tcl - -#@ # Tcl package index file -#@ package ifneeded iwidgets 4.1 " -#@ package require itk 4 -#@ namespace eval ::iwidgets { -#@ namespace export * -#@ variable library [file dirname [info script]] -#@ variable version 4.1 -#@ } -#@ source [file join $dir colors.itcl] -#@ source [file join $dir roman.itcl] -#@ source [file join $dir buttonbox.itk] -#@ source [file join $dir calendar.itk] -#@ source [file join $dir canvasprintbox.itk] -#@ source [file join $dir shell.itk] -#@ source [file join $dir dialogshell.itk] -#@ source [file join $dir dialog.itk] -#@ source [file join $dir canvasprintdialog.itk] -#@ source [file join $dir labeledframe.itk] -#@ source [file join $dir checkbox.itk] -#@ source [file join $dir labeledwidget.itk] -#@ source [file join $dir entryfield.itk] -#@ source [file join $dir combobox.itk] -#@ source [file join $dir datefield.itk] -#@ source [file join $dir dateentry.itk] -#@ source [file join $dir disjointlistbox.itk] -#@ source [file join $dir extbutton.itk] -#@ source [file join $dir extfileselectionbox.itk] -#@ source [file join $dir extfileselectiondialog.itk] -#@ source [file join $dir feedback.itk] -#@ source [file join $dir fileselectionbox.itk] -#@ source [file join $dir fileselectiondialog.itk] -#@ source [file join $dir finddialog.itk] -#@ source [file join $dir scrolledwidget.itk] -#@ source [file join $dir hierarchy.itk] -#@ source [file join $dir hyperhelp.itk] -#@ source [file join $dir mainwindow.itk] -#@ source [file join $dir menubar.itk] -#@ source [file join $dir messagebox.itk] -#@ source [file join $dir messagedialog.itk] -#@ source [file join $dir notebook.itk] -#@ source [file join $dir optionmenu.itk] -#@ source [file join $dir panedwindow.itk] -#@ source [file join $dir pane.itk] -#@ source [file join $dir promptdialog.itk] -#@ source [file join $dir pushbutton.itk] -#@ source [file join $dir radiobox.itk] -#@ source [file join $dir regexpfield.itk] -#@ source [file join $dir scrolledcanvas.itk] -#@ source [file join $dir scrolledframe.itk] -#@ source [file join $dir scrolledtext.itk] -#@ source [file join $dir scrolledhtml.itk] -#@ source [file join $dir scrolledlistbox.itk] -#@ source [file join $dir selectionbox.itk] -#@ source [file join $dir selectiondialog.itk] -#@ source [file join $dir spindate.itk] -#@ source [file join $dir spinner.itk] -#@ source [file join $dir spinint.itk] -#@ source [file join $dir spintime.itk] -#@ source [file join $dir tabnotebook.itk] -#@ source [file join $dir tabset.itk] -#@ source [file join $dir timefield.itk] -#@ source [file join $dir timeentry.itk] -#@ source [file join $dir toolbar.itk] -#@ source [file join $dir watch.itk] -#@ package provide iwidgets 4.1 -#@ " -#@ -#@ package ifneeded Iwidgets 4.1 " -#@ package require iwidgets 4.1 -#@ package provide Iwidgets 4.1 -#@ " -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/iwidgets4.1/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsTclPro/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ package ifneeded snpsTclPro 1.0 [list source [file join $dir snpsTclPro.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsTclPro/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsTest/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ package ifneeded snpsTest 1.0 [list source [file join $dir snpsTest.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsTest/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsUtils/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ package ifneeded snpsUtils 1.0 [list source [file join $dir snpsUtils.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsUtils/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/pkgIndex.tcl - -#@ package ifneeded Itcl 3.4 {load {} Itcl} -#@ package ifneeded tbcload 1.7 {load {} tbcload} -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/reg/pkgIndex.tcl - -#@ if {([info commands ::tcl::pkgconfig] eq "") -#@ || ([info sharedlibextension] ne ".dll")} return -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/reg/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/dde/pkgIndex.tcl - -#@ if {([info commands ::tcl::pkgconfig] eq "") -#@ || ([info sharedlibextension] ne ".dll")} return -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/dde/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/platform/pkgIndex.tcl - -#@ package ifneeded platform 1.0.13 [list source [file join $dir platform.tcl]] -#@ package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]] -#@ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/platform/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/tcltest/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ if {![package vsatisfies [package provide Tcl] 8.5]} {return} -#@ package ifneeded tcltest 2.3.8 [list source [file join $dir tcltest.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/tcltest/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/http/pkgIndex.tcl - -#@ if {![package vsatisfies [package provide Tcl] 8.6]} {return} -#@ package ifneeded http 2.8.8 [list tclPkgSetup $dir http 2.8.8 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/http/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/msgcat/pkgIndex.tcl - -#@ if {![package vsatisfies [package provide Tcl] 8.5]} {return} -#@ package ifneeded msgcat 1.5.2 [list source [file join $dir msgcat.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/msgcat/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/http1.0/pkgIndex.tcl - -#@ # Tcl package index file, version 1.0 -#@ # This file is generated by the "pkg_mkIndex" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ package ifneeded http 1.0 [list tclPkgSetup $dir http 1.0 {{http.tcl source {httpCopyDone httpCopyStart httpEof httpEvent httpFinish httpMapReply httpProxyRequired http_code http_config http_data http_formatQuery http_get http_reset http_size http_status http_wait}}}] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/http1.0/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/opt/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ if {![package vsatisfies [package provide Tcl] 8.2]} {return} -#@ package ifneeded opt 0.4.6 [list source [file join $dir optparse.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/opt/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/syn.tcl - -#@ # Copyright (c) 2016 Synopsys, Inc. This Synopsys software and all -#@ # associated documentation are proprietary to Synopsys, Inc. and may -#@ # only be used pursuant to the terms and conditions of a written -#@ # license agreement with Synopsys, Inc. All other use, reproduction, -#@ # modification, or distribution of the Synopsys software or the -#@ # associated documentation is strictly prohibited. -#@ -#@ # primary file of syn package -#@ -#@ # require all the sub-packages (if any) -#@ -#@ # name of the provided package -#@ -#@ package provide cae 1.0 -#@ -#@ # create command group after loading sub packages -#@ # because last group is listed first by "help" -#@ -#@ create_command_group "syn" -info "synthesis utilities" -#@ -#@ namespace eval ::cae { -#@ variable selfdir [file dirname [info script]] -#@ variable scripts [list auto_path_groups.tcl ] -#@ variable script -#@ } -#@ -#@ # source encrypted version if available -#@ # encrypted commands must use "define_proc_attributes -hide_body" -#@ -#@ foreach ::cae::script ${::cae::scripts} { -#@ if { [file exists ${::cae::selfdir}/${::cae::script}.e] } { -#@ source ${::cae::selfdir}/${::cae::script}.e -#@ } else { -#@ source ${::cae::selfdir}/${::cae::script} -#@ } -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/auto_path_groups.tcl - -#@ # Copyright (c) 2016-2017 Synopsys, Inc. This Synopsys software and all -#@ # associated documentation are proprietary to Synopsys, Inc. and may -#@ # only be used pursuant to the terms and conditions of a written -#@ # license agreement with Synopsys, Inc. All other use, reproduction, -#@ # modification, or distribution of the Synopsys software or the -#@ # associated documentation is strictly prohibited. -#@ -#@ package require cae::utils -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/utils/utils.tcl - -#@ # Copyright (c) 2016 Synopsys, Inc. This Synopsys software and all -#@ # associated documentation are proprietary to Synopsys, Inc. and may -#@ # only be used pursuant to the terms and conditions of a written -#@ # license agreement with Synopsys, Inc. All other use, reproduction, -#@ # modification, or distribution of the Synopsys software or the -#@ # associated documentation is strictly prohibited. -#@ -#@ # primary file of cae::utils package -#@ -#@ # name of the provided package -#@ -#@ package provide cae::utils 1.0 -#@ -#@ namespace eval ::cae::utils { -#@ } -#@ -#@ proc ::cae::utils::msg { type s } { -#@ switch -glob -- ${type} { -#@ i* { return "INFO: ${s}" } -#@ w* { return "WARNING: ${s}" } -#@ e* { return "ERROR: ${s}" } -#@ } -#@ return -#@ } -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/utils/utils.tcl - -#@ -#@ namespace eval ::cae { -#@ -#@ # note: check if these are all necessary -#@ variable auto_path_groups_messages {ATTR-3 OPT-806 OPT-774 UID-101 TIM-134 TIM-99 OPT-806 MWUI-203 MW-212 TIM-112} -#@ -#@ # default prefix for path groups -#@ variable auto_path_groups_prefix synopsys_pg_ -#@ # default slack for path groups -#@ variable auto_path_groups_slack 0.0 -#@ # default max for path groups -#@ variable auto_path_groups_max 0 -#@ # default verbosity -#@ variable auto_path_groups_verbose false -#@ # default priority -#@ variable auto_path_groups_priority 1 -#@ # default min_regs_per_hierarchy -#@ variable auto_path_groups_min_regs_per_hierarchy 10 -#@ # registers path group suffix -#@ variable auto_path_groups_reg_suffix to_regs_ -#@ # macro path group suffix -#@ variable auto_path_groups_to_macro_suffix to_macros_ -#@ # macro path group suffix -#@ variable auto_path_groups_from_macro_suffix from_macros_ -#@ # ICG path group suffix -#@ variable auto_path_groups_icg_suffix to_ICGs -#@ # input path group suffix -#@ variable auto_path_groups_input_suffix inputs -#@ # output path group suffix -#@ variable auto_path_groups_output_suffix outputs -#@ # feedthrough path group suffix -#@ variable auto_path_groups_feedthrough_suffix feedthrough -#@ # user path groups -#@ variable auto_path_groups_user_path_groups_file auto_path_groups.user_path_groups.tcl -#@ } -#@ -#@ proc create_auto_path_groups { args } { -#@ variable ::cae::auto_path_groups_messages -#@ variable ::cae::auto_path_groups_prefix -#@ variable ::cae::auto_path_groups_slack -#@ variable ::cae::auto_path_groups_max -#@ variable ::cae::auto_path_groups_verbose -#@ variable ::cae::auto_path_groups_priority -#@ variable ::cae::auto_path_groups_min_regs_per_hierarchy -#@ variable ::cae::auto_path_groups_reg_suffix -#@ variable ::cae::auto_path_groups_to_macro_suffix -#@ variable ::cae::auto_path_groups_from_macro_suffix -#@ variable ::cae::auto_path_groups_icg_suffix -#@ variable ::cae::auto_path_groups_input_suffix -#@ variable ::cae::auto_path_groups_output_suffix -#@ variable ::cae::auto_path_groups_feedthrough_suffix -#@ variable ::cae::auto_path_groups_user_path_groups_file -#@ -#@ set options(-slack) ${auto_path_groups_slack} -#@ set options(-max) ${auto_path_groups_max} -#@ set options(-prefix) ${auto_path_groups_prefix} -#@ set options(-verbose) ${auto_path_groups_verbose} -#@ set options(-priority) ${auto_path_groups_priority} -#@ set options(-min_regs_per_hierarchy) ${auto_path_groups_min_regs_per_hierarchy} -#@ set options(-exclude) [list] -#@ set options(-user_path_groups_file) ${auto_path_groups_user_path_groups_file} -#@ -#@ parse_proc_arguments -args ${args} options -#@ -#@ if { [info exists options(-file)] } { -#@ if { [catch {open $options(-file) w} fileId] } { -#@ return -code error [::cae::utils::msg e ${fileId}] -#@ } -#@ } -#@ -#@ # save user path groups -#@ if { ![info exists options(-skip)] } { -#@ echo [::cae::utils::msg i "Saving user path groups to $options(-user_path_groups_file)..."] -#@ if { [file exist $options(-user_path_groups_file)] } { -#@ echo [::cae::utils::msg w "File $options(-user_path_groups_file) already exists and will be overwritten..."] -#@ } -#@ if { [catch {open "| grep \"^group_path\" > $options(-user_path_groups_file)" w} channelId] } { -#@ return -code error [::cae::utils::msg e ${channelId}] -#@ } -#@ redirect -channel ${channelId} { write_script -nosplit } -#@ set r [catch {close ${channelId}} msg] -#@ switch ${r} { -#@ 0 { echo [::cae::utils::msg i "User path groups saved"] } -#@ 1 { echo [::cae::utils::msg i "No user path groups to save"] } -#@ default { return -code error [::cae::utils::msg e ${msg}] } -#@ } -#@ } -#@ -#@ set total 0 -#@ -#@ suppress_message ${auto_path_groups_messages} -#@ switch -- $options(-mode) { -#@ "rtl" { -#@ # create one path group per hierarchy -#@ -#@ echo [::cae::utils::msg i "Collecting hierarchies without optimize_registers..."] -#@ set optimize_registers_cells [get_cells -hier -filter {is_hierarchical==true && optimize_registers==true}] -#@ if { $options(-verbose) } { -#@ set optimize_registers_cells_names [lsort [get_object_name ${optimize_registers_cells}]] -#@ echo [::cae::utils::msg i "cells with optimize_registers: ${optimize_registers_cells_names}"] -#@ } -#@ set optimize_registers_sub_cells {} -#@ foreach_in_collection cell ${optimize_registers_cells} { -#@ redirect -file /dev/null {current_instance ${cell}} -#@ append_to_collection optimize_registers_sub_cells [get_cells -hier -filter {is_hierarchical==true && (optimize_registers==false || undefined(optimize_registers))}] -#@ } -#@ redirect -file /dev/null {current_instance} -#@ if { $options(-verbose) } { -#@ set optimize_registers_sub_cells_names [lsort [get_object_name ${optimize_registers_sub_cells}]] -#@ echo [::cae::utils::msg i "sub-cells of cells with optimize_registers: ${optimize_registers_sub_cells_names}"] -#@ } -#@ set path_group_cells [get_cells -hier -filter {is_hierarchical==true && is_sequential==true && (optimize_registers==false || undefined(optimize_registers))}] -#@ set path_group_cells [remove_from_collection ${path_group_cells} ${optimize_registers_sub_cells}] -#@ -#@ echo [::cae::utils::msg i "Collected [sizeof_collection ${path_group_cells}] hierarchies without optimize_registers"] -#@ -#@ set path_group_names [lsort [get_object_name ${path_group_cells}]] -#@ -#@ if { $options(-verbose) } { -#@ echo [::cae::utils::msg i "cells for which path groups will be created:"] -#@ foreach path_group_name ${path_group_names} { -#@ echo [::cae::utils::msg i " ${path_group_name}"] -#@ } -#@ } -#@ -#@ echo [::cae::utils::msg i "Creating path groups for hierarchies without optimize_registers..."] -#@ set counter 0 -#@ foreach path_group_name ${path_group_names} { -#@ set number_of_registers [sizeof_collection [get_cells ${path_group_name}/* -filter "is_hierarchical==false && is_sequential==true"]] -#@ if { ${number_of_registers} > $options(-min_regs_per_hierarchy) } { -#@ echo [::cae::utils::msg i "Number of sequential cells found in ${path_group_name} hierarchy: ${number_of_registers}"] -#@ set command "group_path -name $options(-prefix)${auto_path_groups_reg_suffix}${counter} -to \[get_cells ${path_group_name}/* -filter \"is_hierarchical==false && is_sequential==true\"\] -priority $options(-priority)" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ } else { -#@ echo [::cae::utils::msg i "Not enough sequential cells found in ${path_group_name} hierarchy (${number_of_registers}), skipping..."] -#@ } -#@ } -#@ echo [::cae::utils::msg i "Number of reg path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ } -#@ "mapped" { -#@ # create one path group per hierarchy not meeting timing -#@ -#@ array unset fail -#@ echo [::cae::utils::msg i "Collecting hierarchies with timing violations..."] -#@ foreach_in_collection pin [all_registers -data_pins] { -#@ set slack [get_attribute ${pin} max_slack] -#@ if { ${slack} < $options(-slack) && ${slack} != "" } { -#@ set cell [get_cells -of_objects ${pin}] -#@ set full_name [get_attribute ${cell} full_name] -#@ set name [get_attribute ${cell} name] -#@ if {[string length ${full_name}] > [string length ${name}]} { -#@ set length [expr [string length ${full_name}] - [string length ${name}] - 1] -#@ set hierarchy [string range ${full_name} 0 [expr ${length} - 1]] -#@ } else { -#@ set hierarchy "" -#@ } -#@ if { ![info exists fail(${hierarchy})] || -#@ ([info exists fail(${hierarchy})] && ${slack} < $fail(${hierarchy})) } { -#@ set fail(${hierarchy}) ${slack} -#@ } -#@ } -#@ } -#@ echo [::cae::utils::msg i "Collected [array size fail] hierarchies with timing violations"] -#@ -#@ if { $options(-max) > 0 } { -#@ echo [::cae::utils::msg i "Keeping only $options(-max) hierarchies with worst timing violations"] -#@ set hierarchy_slack_list [lsort -stride 2 -index 1 -real -increasing [array get fail]] -#@ set hierarchy_slack_list [lrange ${hierarchy_slack_list} 0 [expr {2 * $options(-max) - 1}]] -#@ array unset fail -#@ array set fail ${hierarchy_slack_list} -#@ } -#@ -#@ set path_group_names [lsort [array names fail]] -#@ -#@ if { $options(-verbose) } { -#@ echo [::cae::utils::msg i "hierarchies for which path groups will be created:"] -#@ foreach path_group_name ${path_group_names} { -#@ echo [::cae::utils::msg i " ${path_group_name} $fail(${path_group_name})"] -#@ } -#@ } -#@ -#@ echo [::cae::utils::msg i "Creating path groups for hierarchies with timing violations..."] -#@ set counter 0 -#@ foreach path_group_name ${path_group_names} { -#@ if { ${path_group_name} == "" } { -#@ set command "group_path -name $options(-prefix)${auto_path_groups_reg_suffix}${counter} -to \[get_cells * -filter {is_hierarchical==false && is_sequential==true}\] -priority $options(-priority)" -#@ } else { -#@ set command "group_path -name $options(-prefix)${auto_path_groups_reg_suffix}${counter} -to \[get_cells ${path_group_name}/* -filter {is_hierarchical==false && is_sequential==true}\] -priority $options(-priority)" -#@ } -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ } -#@ echo [::cae::utils::msg i "Number of reg path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ -#@ } -#@ -#@ } -#@ -#@ # macro path groups -#@ if { [lsearch $options(-exclude) macro] == -1} { -#@ echo [::cae::utils::msg i "Creating macro path groups..."] -#@ if { [shell_is_in_topographical_mode] } { -#@ #set macro_cells [all_macro_cells] -#@ set macro_cells [remove_from_collection [all_macro_cells] [get_cells -quiet -hier -all -filter "is_physical_only==true"]] -#@ } else { -#@ set macro_cells [get_cells -hier * -filter "is_macro_cell == true"] -#@ } -#@ if { [sizeof_collection ${macro_cells}] != 0 } { -#@ set path_group_names [get_object_name ${macro_cells}] -#@ set counter 0 -#@ foreach path_group_name ${path_group_names} { -#@ set command "group_path -name $options(-prefix)${auto_path_groups_to_macro_suffix}${counter} -to \[get_cells ${path_group_name}\] -priority $options(-priority)" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ set command "group_path -name $options(-prefix)${auto_path_groups_from_macro_suffix}${counter} -from \[get_cells ${path_group_name}\] -priority $options(-priority)" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ } -#@ echo [::cae::utils::msg i "Number of macro path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ } else { -#@ echo [::cae::utils::msg i "No macro found, skipping..."] -#@ } -#@ } -#@ -#@ # ICG path groups -#@ if { [lsearch $options(-exclude) ICG] == -1} { -#@ echo [::cae::utils::msg i "Creating ICG path groups..."] -#@ set all_icg_cells [get_cells -hier -filter "full_name=~*latch || full_name=~*u_clkgate && defined(clock_gating_integrated_cell)"] -#@ if { [sizeof_collection ${all_icg_cells}] } { -#@ set counter 0 -#@ set command "group_path -name $options(-prefix)${auto_path_groups_icg_suffix} -to \[get_cells -hier -filter \"full_name=~*latch || full_name=~*u_clkgate && defined(clock_gating_integrated_cell)\"\] -priority $options(-priority)" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ echo [::cae::utils::msg i "Number of ICG path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ } else { -#@ echo [::cae::utils::msg i "No ICG found, skipping..."] -#@ } -#@ } -#@ -#@ # IO path groups -#@ if { [lsearch $options(-exclude) IO] == -1} { -#@ echo [::cae::utils::msg i "Creating IO path groups..."] -#@ set counter 0 -#@ set command "group_path -name $options(-prefix)${auto_path_groups_input_suffix} -from \[ remove_from_collection \[all_inputs\] \[get_ports \[get_attribute \[get_clocks -filter defined(sources)\] sources\]\] \]" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ set command "group_path -name $options(-prefix)${auto_path_groups_output_suffix} -to \[all_outputs\]" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ set command "group_path -name $options(-prefix)${auto_path_groups_feedthrough_suffix} -from \[ remove_from_collection \[all_inputs\] \[get_ports \[get_attribute \[get_clocks -filter defined(sources)\] sources\]\] \] -to \[all_outputs\]" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ echo [::cae::utils::msg i "Number of IO path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ } -#@ -#@ unsuppress_message ${auto_path_groups_messages} -#@ -#@ echo [::cae::utils::msg i "Total number of path groups created: ${total}"] -#@ -#@ if { [info exists options(-file)] } { -#@ close ${fileId} -#@ } -#@ -#@ return -#@ } -#@ -#@ define_proc_attributes create_auto_path_groups -command_group syn -dont_abbrev -hide_body -info "Creates path groups for current design" -define_args { -#@ { -mode "creates path groups for unmapped/mapped netlist" mode one_of_string {required value_help {values {rtl mapped}}} } -#@ { -exclude "excludes specific path groups (IO ICG macro) (default: empty list)" list list {optional} } -#@ { -slack "slack value used to select hierarchy violating timing (default: 0.0) - mapped mode only" slack float optional } -#@ { -max "maximum number of paths groups (default: 0=unlimited) - mapped mode only" max int optional } -#@ { -min_regs_per_hierarchy "minimum number of registers per hierarchy (default: 10) - rtl mode only" min_regs int optional } -#@ { -prefix "path group name prefix (default: synopsys_pg_)" prefix string optional } -#@ { -file "file name to dump group_path commands" file_name string optional } -#@ { -verbose "verbose mode" "" boolean optional } -#@ { -user_path_groups_file "save user path groups to this file" file_name string optional } -#@ { -skip "do not save user path groups" "" boolean optional } -#@ } -#@ -#@ proc remove_auto_path_groups { args } { -#@ variable ::cae::auto_path_groups_messages -#@ variable ::cae::auto_path_groups_prefix -#@ variable ::cae::auto_path_groups_verbose -#@ variable ::cae::auto_path_groups_user_path_groups_file -#@ -#@ set options(-prefix) ${auto_path_groups_prefix} -#@ set options(-verbose) ${auto_path_groups_verbose} -#@ set options(-user_path_groups_file) ${auto_path_groups_user_path_groups_file} -#@ -#@ parse_proc_arguments -args ${args} options -#@ -#@ if { [info exists options(-file)] } { -#@ if {[catch {open $options(-file) w } fileId] } { -#@ return -code error [::cae::utils::msg e ${fileId}] -#@ } -#@ } -#@ -#@ suppress_message ${auto_path_groups_messages} -#@ set path_group_names [get_object_name [get_path_group -filter "full_name =~ $options(-prefix)*"]] -#@ foreach path_group_name ${path_group_names} { -#@ set command "remove_path_group ${path_group_name}" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ } -#@ echo [::cae::utils::msg i "Number of path groups removed: [llength ${path_group_names}]"] -#@ unsuppress_message ${auto_path_groups_messages} -#@ -#@ if { [info exists options(-file)] } { -#@ close ${fileId} -#@ } -#@ -#@ # restore user path groups -#@ if { ![info exists options(-skip)] } { -#@ echo [::cae::utils::msg i "Restoring user path groups from $options(-user_path_groups_file)..."] -#@ if { [file exist $options(-user_path_groups_file)] } { -#@ if { [file size $options(-user_path_groups_file)] != 0} { -#@ source -continue_on_error $options(-user_path_groups_file) -#@ } else { -#@ echo [::cae::utils::msg i "No user path groups to restore"] -#@ } -#@ file delete -force $options(-user_path_groups_file) -#@ } else { -#@ echo [::cae::utils::msg w "File $options(-user_path_groups_file) doesn't exist"] -#@ } -#@ } -#@ -#@ return -#@ } -#@ -#@ define_proc_attributes remove_auto_path_groups -command_group syn -dont_abbrev -hide_body -info "Removes path groups for current design" -define_args { -#@ { -prefix "path group name prefix (default: synopsys_pg)" prefix string optional } -#@ { -file "file name to dump group_path commands" file_name string optional } -#@ { -verbose "verbose mode" "" boolean optional } -#@ { -user_path_groups_file "restore user path groups from this file" file_name string optional } -#@ { -skip "do not restore user path groups" "" boolean optional } -#@ } -#@ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/auto_path_groups.tcl - -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/syn.tcl - -#@ -#@ if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ set sh_enable_line_editing "true" -#@ set sh_line_editing_mode "emacs" -#@ } -#@ -#@ if {$synopsys_program_name == "icc_shell"} { -#@ if {"$sh_output_log_file" == ""} { -#@ set sh_output_log_file "icc_output.txt" -#@ } -#@ -#@ ## the variable sh_redirect_progress_messages only makes it possible -#@ ## for some commands to redirect progress messages to the log file,thereby -#@ ## bypassing the console and reducing the volume of messages on the console. -#@ set sh_redirect_progress_messages true -#@ } -#@ -#@ -#@ # Suppress new variable messages for the following variables -#@ array set auto_index {} -#@ set auto_oldpath "" -#@ -#@ # Enable customer support banner on fatal -#@ if { $sh_arch == "linux" || $sh_arch == "amd64" || $sh_arch == "linux64" || $sh_arch == "suse32" || $sh_arch == "suse64" || $sh_arch == "sparcOS5" || $sh_arch == "sparc64" || $sh_arch == "x86sol32" || $sh_arch == "x86sol64" || $sh_arch == "rs6000" || $sh_arch == "aix64" } { -#@ setenv SYNOPSYS_TRACE "" -#@ } -#@ -#@ # -#@ # Load the procedures which make up part of the user interface. -#@ # -#@ if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ source $synopsys_root/auxx/syn/.dc_common_procs.tcl -#@ if {$synopsys_program_name != "dc_sms_shell"} { -#@ source $synopsys_root/auxx/syn/.dc_procs.tcl -#@ } -#@ alias list_commands help -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/.dc_common_procs.tcl - -#@ ############################################################################## -#@ # -#@ # -#@ # FILE: auxx/syn/.dc_common_procs.tcl -#@ # -#@ # ABSTRACT: These procedures are part of the PrimeTime and DC -#@ # user interface. -#@ # They are loaded by .synopsys_pt.setup and .synopsys_dc.setup. -#@ # -#@ ############################################################################## -#@ # -#@ # -#@ -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: group_variable -#@ # -#@ # ABSTRACT: Add a variable to the specified variable group. -#@ # This command is typically used by the system -#@ # administrator only. -#@ # -#@ # Below the proc is the command which creates the command -#@ # help information and semantic data for the argument. -#@ # -#@ # RETURNS: 1 if it is successful. -#@ # error code if the variable does not exist. -#@ # error code of the variable is already in the group. -#@ # -#@ # SYNTAX: group_variable group_name variable_name -#@ # -#@ ############################################################################## -#@ # -#@ -#@ -#@ proc group_variable { args } { -#@ global _Variable_Groups -#@ -#@ parse_proc_arguments -args $args resarr -#@ set group $resarr(group) -#@ set var $resarr(variable_name) -#@ -#@ if { ![info exists _Variable_Groups($group)] } { -#@ set _Variable_Groups($group) "" -#@ } -#@ -#@ # Verify that var exists as a global variable -#@ -#@ set cmd "uplevel #0 \{info exists $var\}" -#@ if { ![eval $cmd] } { -#@ return -code error "Variable '$var' is not defined." -#@ } -#@ -#@ # Only add it if it's not already there -#@ -#@ if { [lsearch $_Variable_Groups($group) $var] == -1 } { -#@ lappend _Variable_Groups($group) $var -#@ } -#@ -#@ return 1 -#@ } -#@ -#@ define_proc_attributes group_variable -info "Add a variable to a variable group" -command_group "Builtins" -permanent -dont_abbrev -define_args { -#@ {group "Variable group name" group} -#@ {variable_name "Variable name" variable_name}} -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: print_variable_group -#@ # -#@ # ABSTRACT: Shows variables and their values defined in the given group. -#@ -#@ # -#@ # Below the proc is the command which creates the command -#@ # help information and semantic data for the argument. -#@ # -#@ # RETURNS: 1 if it is successful. -#@ # error code of the variable group does not exist. -#@ # -#@ # SYNTAX: print_variable_group group_name -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc print_variable_group { args } { -#@ global _Variable_Groups -#@ -#@ parse_proc_arguments -args $args resarr -#@ set group $resarr(group) -#@ -#@ if { [string compare $group "all"] == 0 } { -#@ set cmd "uplevel #0 \{printvar\}" -#@ return [eval $cmd] -#@ } -#@ -#@ if { ![info exists _Variable_Groups($group)] } { -#@ return -code error "Variable group '$group' does not exist." -#@ } -#@ -#@ # Print out each global variable in the list. To be totally bulletproof, -#@ # test that each variable in the group is still defined. If not, remove -#@ # it from the list. -#@ -#@ foreach var [lsort $_Variable_Groups($group)] { -#@ set cmd "uplevel #0 \{info exists $var\}" -#@ if { ![eval $cmd] } { -#@ # Remove it -#@ set n [lsearch $_Variable_Groups($group) $var] -#@ set $_Variable_Groups($group) [lreplace $_Variable_Groups($group) $n $n] -#@ } else { -#@ # Print it. -#@ set cmd "uplevel #0 \{set $var\}" -#@ set val [eval $cmd] -#@ echo [format "%-25s = \"%s\"" $var $val] -#@ } -#@ } -#@ -#@ return 1 -#@ } -#@ -#@ define_proc_attributes print_variable_group -info "Print the contents of a variable group" -command_group "Builtins" -permanent -define_args {{group "Variable group name" group}} -#@ -#@ -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: _Variable_Groups_Get_Groups -#@ # -#@ # ABSTRACT: Return a list of all variable groups. This command is hidden -#@ # and is used by Design Vision. -#@ # -#@ # RETURNS: Tcl list of all variable groups including group all -#@ # -#@ # SYNTAX: _Variable_Groups_Get_Groups -#@ ############################################################################## -#@ # -#@ -#@ proc _Variable_Groups_Get_Groups { } { -#@ global _Variable_Groups -#@ -#@ set groups [array names _Variable_Groups] -#@ append groups " all" -#@ return $groups -#@ } -#@ define_proc_attributes _Variable_Groups_Get_Groups -hidden -#@ -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: _Variable_Groups_Get_Variables_Of_Group -#@ # -#@ # ABSTRACT: Return a list of all variables of a variable group. -#@ # It also works for pseudo group all. -#@ # -#@ # RETURNS: Tcl list of all variables of a variable group including -#@ # pseudo group all -#@ # -#@ # SYNTAX: _Variable_Groups_Get_Groups -#@ ############################################################################## -#@ # -#@ -#@ proc _Variable_Groups_Get_Variables_Of_Group { group } { -#@ global _Variable_Groups -#@ -#@ if { [string compare $group "all"] == 0 } { -#@ set itr [array startsearch _Variable_Groups] -#@ for { } { [array anymore _Variable_Groups $itr]} { } { -#@ set index [array nextelement _Variable_Groups $itr] -#@ append vars $_Variable_Groups($index) -#@ } -#@ array donesearch _Variable_Groups $itr -#@ return $vars -#@ } -#@ -#@ if { ![info exists _Variable_Groups($group)] } { -#@ return -code error "Variable group '$group' does not exist." -#@ } -#@ -#@ # Test if all variables in the list of variables are still defined. -#@ # Remove not existing variables. -#@ foreach var [lsort $_Variable_Groups($group)] { -#@ set cmd "uplevel #0 \{info exists $var\}" -#@ if { ![eval $cmd] } { -#@ # Remove it -#@ set n [lsearch $_Variable_Groups($group) $var] -#@ set $_Variable_Groups($group) [lreplace $_Variable_Groups($group) $n $n] -#@ } -#@ } -#@ return $_Variable_Groups($group) -#@ } -#@ define_proc_attributes _Variable_Groups_Get_Variables_Of_Group -hidden -#@ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/.dc_common_procs.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/.dc_procs.tcl - -#@ ############################################################################## -#@ # -#@ # -#@ # FILE: auxx/syn/.dc_procs.tcl -#@ # -#@ # ABSTRACT: These procedures are part of the Design Compiler Tcl -#@ # user interface. -#@ # They are loaded by .synopsys_dc.setup. -#@ # -#@ ############################################################################## -#@ # -#@ # -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_verilog -#@ # -#@ # ABSTRACT: Emulate PT's read_verilog command in DC: -#@ # -#@ # Usage: read_verilog # Read one or more verilog files -#@ # *[-hdl_compiler] (Use HDL Compiler (ignored)) -#@ # file_names (Files to read) -#@ # -#@ # Modified: Bharat 11/17/99. Use uplevel to ensure that the command -#@ # sees user/hidden variables from the top level. Star 92970. -#@ # -#@ # Modified: Evan Rosser, 12/5/01. Support -netlist and -rtl flags. -#@ # -#@ ############################################################################## -#@ # -#@ -#@ if { $synopsys_program_name != "icc_shell" } { -#@ proc read_verilog { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format verilog %s %s [list %s]} [array names ra -rtl] [array names ra -netlist] $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_verilog -info " Read one or more verilog files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-netlist "Use structural Verilog netlist reader" "" boolean optional} -#@ {-rtl "Use RTL Verilog compiler (Presto or HDLC)" "" boolean optional} -#@ {-hdl_compiler "Use HDL Compiler (ignored)" "" boolean {hidden optional}} -#@ } -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_sverilog -#@ # -#@ # ABSTRACT: Emulate PT's read_sverilog command in DC: -#@ # -#@ # Usage: read_sverilog # Read one or more systemverilog files -#@ # *[-hdl_compiler] (Use HDL Compiler (ignored)) -#@ # file_names (Files to read) -#@ # -#@ # Modified: Yong Xiao, 01/31/2003: Copied from read_verilog to support -#@ # systemverilog input. -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc read_sverilog { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format sverilog %s %s [list %s]} [array names ra -rtl] [array names ra -netlist] $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_sverilog -info " Read one or more systemverilog files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-netlist "Use structural Verilog netlist reader" "" boolean optional} -#@ {-rtl "Use RTL Systemverilog compiler (Presto or HDLC)" "" boolean optional} -#@ {-hdl_compiler "Use HDL Compiler (ignored)" "" boolean {hidden optional}} -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_vhdl -#@ # -#@ # ABSTRACT: Emulate PT's read_vhdl command in DC: -#@ # -#@ # Usage: read_vhdl # Read one or more vhdl files -#@ # file_names (Files to read) -#@ # -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc read_vhdl { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format vhdl %s [list %s]} [array names ra -netlist] $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_vhdl -info " Read one or more vhdl files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-netlist "Use structural VHDL netlist reader" "" boolean optional} -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_db -#@ # -#@ # ABSTRACT: Emulate PT's read_db command in DC: -#@ # -#@ # Usage: -#@ # read_db # Read one or more db files -#@ # *[-netlist_only] (Do not read any attributes from db (ignored)) -#@ # *[-library] (File is a library DB (ignored)) -#@ # file_names (Files to read) -#@ # -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc read_db { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format db [list %s]} $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_db -info " Read one or more db files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-netlist_only "Do not read any attributes from db (ignored)" "" boolean {hidden optional}} -#@ {-library "File is a library DB (ignored)" "" boolean {hidden optional}} -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_edif -#@ # -#@ # ABSTRACT: Emulate PT's read_edif command in DC: -#@ # -#@ # Usage: -#@ # read_edif # Read one or more edif files -#@ # *[-complete_language] (Use ptxr to read the file (ignored)) -#@ # file_names (Files to read) -#@ # -#@ # -#@ ############################################################################## -#@ # -#@ proc read_edif { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format edif [list %s]} $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_edif -info " Read one or more edif files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-complete_language "Use ptxr to read the file (ignored)" "" boolean {hidden optional}} -#@ } -#@ -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_ddc -#@ # -#@ # ABSTRACT: Shorthand for "read_file -format ddc": -#@ # -#@ # Usage: -#@ # read_ddc # Read one or more ddc files -#@ # *[-scenarios] only read constraints for specified scenarios -#@ # *[-active_scenarios] only activate the specified scenarios -#@ # file_names (Files to read) -#@ # -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc read_ddc { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "read_file -format ddc" -#@ if { [ info exists ra(-scenarios) ] } { -#@ set cmd "$cmd -scenarios { $ra(-scenarios) }" -#@ } -#@ if { [ info exists ra(-active_scenarios) ] } { -#@ set cmd "$cmd -active_scenarios { $ra(-active_scenarios) }" -#@ } -#@ set cmd "$cmd { $ra(file_names) }" -#@ return [uplevel \#0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_ddc -info "Read one or more ddc files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-scenarios "list of scenarios to be read from ddc file" -#@ scenario_list list optional} -#@ {-active_scenarios "list of scenarios to be made active" -#@ active_scenario_list list optional}} -#@ -#@ -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: source_tcl_file -#@ # -#@ # ABSTRACT: generic procedure to source another tcl file -#@ # -#@ # Arguments: -#@ # filename tcl filename -#@ # dir directory to check for file -#@ # msg verbose message -#@ # verbose verbose mode -#@ # -#@ # Usage: -#@ # -#@ ############################################################################## -#@ # -#@ proc source_tcl_file { filename dir msg {verbose 1} } { -#@ set __qual_pref_file [file join $dir $filename] -#@ if {[file exists $__qual_pref_file]} { -#@ if { $verbose } { -#@ echo $msg $__qual_pref_file -#@ } -#@ # use catch to recover from errors in the pref file -#@ echo_trace "Sourcing " $__qual_pref_file -#@ # to speed up sourcing use read and eval -#@ set f [open $__qual_pref_file] -#@ if {[catch {namespace eval :: [read -nonewline $f]} __msg]} { -#@ echo Error: Error during sourcing of $__qual_pref_file -#@ if {$__msg != ""} { echo $__msg } -#@ # actually, it looks like $__msg is always null after -#@ # source fails -#@ } -#@ close $f -#@ } else { -#@ echo_trace "Info: File '" $__qual_pref_file "' does not exist!" -#@ } -#@ } -#@ define_proc_attributes source_tcl_file -hidden -#@ -#@ -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: echo_trace -#@ # -#@ # ABSTRACT: echo only in trace modus -#@ # -#@ ############################################################################## -#@ # -#@ proc echo_trace { args } { -#@ if { [info exists ::env(TCL_TRACE)] } { -#@ echo TRACE\> [join $args "" ] -#@ } -#@ } -#@ define_proc_attributes echo_trace -hidden -#@ -#@ ############################################################################# -#@ # -#@ # Following procedures added for PC write_script -#@ # -#@ # -#@ # -#@ ############################################################################ -#@ -#@ proc set_cell_restriction { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {set_attribute %s -type integer restrictions %s } $ra(cell) $ra(value)] -#@ return [uplevel #0 $cmd] -#@ -#@ } -#@ define_proc_attributes set_cell_restriction -hidden -define_args { {cell "cell_name" cell string required} {value "value" value string required} } -#@ -#@ -#@ proc set_cell_soft_keepout {args} { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {set_keepout_margin -type soft -outer {%d %d %d %d} [list %s] } $ra(llx) $ra(lly) $ra(urx) $ra(ury) $ra(objects)] -#@ return [uplevel #0 $cmd] -#@ -#@ -#@ } -#@ -#@ define_proc_attributes set_cell_soft_keepout -hidden -define_args { {llx "llx" llx float required} {lly "lly" lly float required} {urx "urx" urx float required} {ury "ury" ury float required} {objects "objects" objects list required} } -#@ -#@ proc set_cell_hard_keepout {args} { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {set_keepout_margin -type soft -outer {%d %d %d %d} [list %s] } $ra(llx) $ra(lly) $ra(urx) $ra(ury) $ra(objects)] -#@ return [uplevel #0 $cmd] -#@ -#@ -#@ } -#@ -#@ define_proc_attributes set_cell_hard_keepout -hidden -define_args { {llx "llx" llx float required} {lly "lly" lly float required} {urx "urx" urx float required} {ury "ury" ury float required} {objects "objects" objects list required} } -#@ -#@ set mw_use_pdb_lib_format false -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: write_milkyway -#@ # -#@ # ABSTRACT: wrapper around save_mw_cel to support original write_milkyway -#@ # interface -#@ # if { [info commands open_mw_cel] == "open_mw_cel" } {} -#@ # -#@ ############################################################################## -#@ -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ -#@ proc write_milkyway args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {save_mw_cel -as %s %s %s %s %s} $ra(-output) [array names ra -overwrite] [array names ra -create] [array names ra -all] [array names ra -dps]] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes write_milkyway -hidden -info " Saves the design as milkyway CEL" -define_args {{-output fileName "Name" string {optional}} {-overwrite "Overwrite the current version" "" boolean {optional}} {-create "Create from scratch" "" boolean {hidden optional}} {-all "Save all modified cells" "" boolean {hidden optional}} {-dps "Save internal DPS design" "" boolean {hidden optional}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: read_milkyway -#@ # -#@ # ABSTRACT: wrapper around open_mw_cel to support original read_milkyway -#@ # interface -#@ # MODIFIED: To support DPS in Galileo we need to pass the filtering -#@ # parameters to the DPS command. (Pankaj Goswami, Mar09 2005) -#@ # -#@ ############################################################################## -#@ -#@ proc read_milkyway args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {open_mw_cel %s} $ra() ] -#@ -#@ if {[info exists ra(-library)]} { -#@ set cmd [concat [concat $cmd " -library " ] " $ra(-library) "] -#@ } -#@ -#@ if {[info exists ra(-read_only)]} { -#@ lappend cmd {-readonly} -#@ } -#@ -#@ # DPS specific stuff -#@ set dps_cmd "vh_set_current_partition " -#@ set read_mw_with_dps_filter false -#@ -#@ if {[info exists ra(-vh_module_only)]} { -#@ append dps_cmd "-vh_module_only " -#@ set read_mw_with_dps_filter true -#@ } -#@ -#@ if {[info exists ra(-vh_include)]} { -#@ append dps_cmd [concat " -vh_include " " \{ $ra(-vh_include) \}"] -#@ append dps_cmd " " -#@ set read_mw_with_dps_filter true -#@ } -#@ -#@ if {[info exists ra(-vh_exclude)]} { -#@ append dps_cmd [concat " -vh_exclude" " \{ $ra(-vh_exclude) \}"] -#@ set read_mw_with_dps_filter true -#@ } -#@ -#@ if { $read_mw_with_dps_filter == true } { -#@ # Call the DPS command to store the DPS filtering params. -#@ uplevel #0 $dps_cmd -#@ } else { -#@ # If there is no DPS filtering params, then we need to reset the -#@ # params which might have been stored from the provious command. -#@ append dps_cmd " -vh_reset_partition" -#@ uplevel #0 $dps_cmd -#@ } -#@ # End of DPS stuff -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_milkyway -hidden -info " Read milkyway CEL from disk" -define_args {{-library "library name" "lib_name" string {optional}} {-read_only "open design in read only mode" "" boolean {optional}} {-version "version number of the CEL" "number" string {optional}} {-vh_module_only "open design for DPS module only partition" "" boolean {hidden optional}} {-vh_include "list of designs to be included in the DPS partition" "include_designs" list {hidden optional}} {-vh_exclude "list of designs to be excluded in the DPS partition" "exclude_designs" list {hidden optional}} {"" fileName "CEL name" string {required}}} -#@ -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: set_mw_technology_file -#@ # -#@ # ABSTRACT: wrapper around update_mw_lib -#@ # -#@ # HISTORY : 2009/6/21, yunz, support ALF reader in ICC -#@ # -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] || -#@ ([string match -nocase {*d[ce]_shell*} $synopsys_program_name] && [shell_is_mwlib_enabled]) } { -#@ -#@ proc set_mw_technology_file args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ set lib_name "" -#@ set pdb_file "tech.pdb" -#@ set log_file "log_file" -#@ set alf_file "" -#@ -#@ if {[info exists ra(-technology)] && [info exists ra(-plib)]} { -#@ echo "Error: the $ra(-technology) and $ra(-plib) options are mutually exclusive." -#@ return [uplevel #0 $cmd] -#@ } elseif {[info exists ra(-technology)] && [info exists ra(-alf)]} { -#@ echo "Error: the $ra(-technology) and $ra(-alf) options are mutually exclusive." -#@ return [uplevel #0 $cmd] -#@ } elseif {[info exists ra(-plib)] && [info exists ra(-alf)]} { -#@ echo "Error: the $ra(-plib) and $ra(-alf) options are mutually exclusive." -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ if {[info exists ra(-technology)]} { -#@ -#@ set cmd [format {update_mw_lib -technology %s %s} $ra(-technology) $ra() ] -#@ } -#@ -#@ if {[info exists ra(-alf)]} { -#@ -#@ set cmd [format {update_mw_lib %s} $ra() ] -#@ -#@ set cmd [concat [concat $cmd " -alf " ] " $ra(-alf) "] -#@ } -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes set_mw_technology_file -hide_body -info " Set technology file for the library " -define_args {{-technology "Technology file name" "tech_file" string {optional}} {-alf "alf file name" "file_name" string {optional}} {"" "Library name" "libName" string {required}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: rebuild_mw_lib -#@ # -#@ # ABSTRACT: wrapper around update_mw_lib -#@ # -#@ ############################################################################## -#@ -#@ proc rebuild_mw_lib args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {update_mw_lib -rebuild %s} $ra() ] -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes rebuild_mw_lib -hide_body -info " Rebuild the library " -define_args {{"" "Library name" "libName" string {required}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: set_mw_lib_reference -#@ # -#@ # ABSTRACT: Procedure to set ref lib list or ref ctrl file -#@ # -#@ ############################################################################## -#@ -#@ proc set_mw_lib_reference args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ -#@ if {[info exists ra(-mw_reference_library)]} { -#@ set cmd [format {set_reference_control_file -reference_libraries {%s} %s} $ra(-mw_reference_library) $ra() ] -#@ } -#@ -#@ if {[info exists ra(-reference_control_file)]} { -#@ set cmd [format {set_reference_control_file -file %s %s} $ra(-reference_control_file) $ra() ] -#@ } -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes set_mw_lib_reference -hide_body -info " Set reference for the library " -define_args {{-mw_reference_library "List of reference libraries" "lib_list" list {optional}} {-reference_control_file "Reference control file" "file_name" string {optional}} {"" "Library name" "libName" string {required}}} -#@ -#@ # -#@ ############################################################################## -#@ # -#@ # PROCEDURE: create_mw_lib -#@ # -#@ # ABSTRACT: wrapper around MWUI create_mw_lib -#@ # -#@ ############################################################################## -#@ -#@ proc create_mw_lib args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ set lib_name "" -#@ set pdb_file "tech.pdb" -#@ set log_file "log_file" -#@ -#@ if {[info exists ra(-ignore_case)]} { -#@ set cmd [format {org_create_mw_lib %s} $ra() ] -#@ } else { -#@ set cmd [format {org_create_mw_lib -case_sensitive %s} $ra() ] -#@ } -#@ -#@ if {[info exists ra(-technology)]} { -#@ set cmd [concat [concat $cmd " -technology " ] " $ra(-technology) "] -#@ } -#@ -#@ if {[info exists ra(-ignore_tf_error)]} { -#@ set cmd [concat $cmd " -ignore_tf_error " ] -#@ } -#@ -#@ if {[info exists ra(-hier_separator)]} { -#@ set cmd [concat [concat $cmd " -hier_seperator " ] " $ra(-hier_separator) "] -#@ } -#@ -#@ if {[info exists ra(-bus_naming_style)]} { -#@ set cmd [concat [concat $cmd " -bus_naming_style " ] " {$ra(-bus_naming_style)} "] -#@ } -#@ -#@ -#@ if {[info exists ra(-reference_control_file)]} { -#@ set cmd [concat [concat $cmd " -reference_control_file " ] " $ra(-reference_control_file) "] -#@ } -#@ -#@ if {[info exists ra(-mw_reference_library)]} { -#@ set cmd [concat [concat [concat $cmd " -mw_reference_library {" ] " $ra(-mw_reference_library) "] "}"] -#@ } -#@ -#@ if { ![uplevel #0 $cmd] } { -#@ return 0 -#@ } -#@ -#@ set cmd "" -#@ -#@ if {[info exists ra(-open)]} { -#@ uplevel #0 $cmd -#@ set cmd [format {open_mw_lib %s} $ra() ] -#@ } -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes create_mw_lib -hide_body -info " Create a milkyway library " -define_args {{-technology "Technology file name" "file_name" string {optional}} {-ignore_tf_error "Ignore the error in technology file" "" boolean {hidden optional}} {-hier_separator "Hierarchical separator, default is backslash / " "separator" string {hidden optional}} {-bus_naming_style "Bus naming style" "bus_naming_style" string {optional}} {-ignore_case "Make case insensitive" "" boolean {hidden optional}} {-case_sensitive "Make case sensitive" "" boolean {hidden optional}} {-mw_reference_library "List of reference libraries" "lib_list" list {optional}} {-reference_control_file "Reference control file" "file_name" string {optional}} {-open "Open the library after creation" "" boolean {optional}} {"" "Library name to create" "libName" string {required}}} -#@ -#@ # -#@ ############################################################################## -#@ # -#@ # PROCEDURE: report_mw_lib -#@ # -#@ # ABSTRACT: wrapper around MWUI report_mw_lib -#@ # -#@ ############################################################################## -#@ -#@ proc report_mw_lib args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ -#@ if {[info exists ra(-mw_reference_library)]} { -#@ if {[info exists ra()]} { -#@ set cmd [format {org_report_mw_lib -mw_reference_library %s} $ra() ] -#@ } else { -#@ set cmd [format {org_report_mw_lib -mw_reference_library} ] -#@ } -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ if {[info exists ra(-unit_range)]} { -#@ if {[info exists ra()]} { -#@ set cmd [format {org_report_mw_lib -unit_range %s} $ra() ] -#@ } else { -#@ echo "Error : Library name must be specified when using this option" -#@ return 0; -#@ } -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ } -#@ -#@ define_proc_attributes report_mw_lib -hide_body -info " Report information about the library " -define_args {{-unit_range "Report unit range of library" "" boolean {optional}} {-mw_reference_library "Report list of reference libraries" "" boolean {optional}} {"" "Library to be reported" "libName" string {optional}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: close_mw_lib -#@ # -#@ # ABSTRACT: Wrapper around close_mw_lib to handle -save option properly -#@ # - save_mw_cel to save current cel with dc_netlist -#@ # - close_mw_cel to close current cel -#@ # - save_open_cels to save other open cels before closing library -#@ # -#@ ############################################################################## -#@ -#@ proc close_mw_lib args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ if {$args == ""} { -#@ set cmd [format {icc_is_dc_up} ] -#@ if {[uplevel #0 $cmd]} { -#@ set cmd [format {remove_design -quiet -designs} ] -#@ if {[uplevel #0 $cmd]} { -#@ set cmd [format {org_close_mw_lib } ] -#@ return [uplevel #0 $cmd] -#@ } else { -#@ return 0 -#@ } -#@ } else { -#@ set cmd [format {org_close_mw_lib } ] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ -#@ if {[info exists ra(-save)]} { -#@ -#@ set cmd [format {save_mw_cel} ] -#@ if {![uplevel #0 $cmd]} { -#@ return -#@ } -#@ -#@ set cmd [format {close_mw_cel} ] -#@ if {![uplevel #0 $cmd]} { -#@ return -#@ } -#@ -#@ set cmd [format {save_open_cels} ] -#@ if {![uplevel #0 $cmd]} { -#@ return -#@ } -#@ } -#@ -#@ set cmd [format {org_close_mw_lib} ] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ define_proc_attributes close_mw_lib -hide_body -info " Closes the milkyway library " -define_args {{-save "Save open cels" "" boolean {optional}} {"" "libraries to be closed" "lib list" list {hidden optional}}} -#@ } else { -#@ define_proc_attributes close_mw_lib -hide_body -info " Closes the milkyway library " -define_args {{-no_save "Don't save open cels" "" boolean {hidden optional}} {"" "libraries to be closed" "lib list" list {hidden optional}}} -#@ } -#@ ############################################################################## -#@ # -#@ # PROCEDURE: write_mw_lib_files -#@ # -#@ # ABSTRACT: Write technology or reference control file -#@ # History: Yun Zhang 2012/12/11, public option -stream_layer_map_file -#@ # History: Yun Zhang 2012/9/5. support new hidden option -vt_cell_placement_properties -#@ # History: Yun Zhang 2011/12/5. add new hidden option -stream_layer_map_file -#@ # -#@ ############################################################################## -#@ proc write_mw_lib_files args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ -#@ if {[info exists ra(-reference_control_file)]} { -#@ #Option -reference_contrl_file, -plib and -technology are exclusive. -#@ # If both of them are set at the same time, error reported. -#@ # 9000273455, by xqsun, 2009/2/4 -#@ if {[info exists ra(-technology)]} { -#@ echo "Error: Cannot specify '-reference_control_file' with '-technology'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-plib)]} { -#@ echo "Error: Cannot specify '-reference_control_file' with '-plib'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-vt_cell_placement_properties)]} { -#@ echo "Error: Cannot specify '-reference_control_file' with '-vt_cell_placement_properties'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-stream_layer_map_file)]} { -#@ echo "Error: Cannot specify '-reference_control_file' with '-stream_layer_map_file'.(CMD-001)" -#@ return 0 -#@ } else { -#@ set cmd [format {report_mw_lib_ref_ctrl_file -output %s %s} $ra(-output) $ra() ] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ -#@ if {[info exists ra(-technology)]} { -#@ if {[info exists ra(-plib)]} { -#@ echo "Error: Cannot specify '-technology' with '-plib'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-vt_cell_placement_properties)]} { -#@ echo "Error: Cannot specify '-technology' with '-vt_cell_placement_properties'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-stream_layer_map_file)]} { -#@ echo "Error: Cannot specify '-technology' with '-stream_layer_map_file'.(CMD-001)" -#@ return 0 -#@ } else { -#@ set cmd [format {org_report_mw_lib -output %s %s} $ra(-output) $ra() ] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ -#@ if {[info exists ra(-vt_cell_placement_properties)]} { -#@ if {[info exists ra(-stream_layer_map_file)]} { -#@ echo "Error: Cannot specify '-vt_cell_placement_properties' with '-stream_layer_map_file'.(CMD-001)" -#@ return 0 -#@ } else { -#@ set cmd [format {org_report_mw_lib -vt_cell_placement_properties -output %s %s} $ra(-output) $ra() ] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ -#@ if {[info exists ra(-stream_layer_map_file)]} { -#@ set cmd [format {org_report_mw_lib -stream_layer_map_file %s -output %s %s} $ra(-stream_layer_map_file) $ra(-output) $ra() ] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ } -#@ -#@ define_proc_attributes write_mw_lib_files -hide_body -info " Write technology or reference control file " -define_args {{-technology "Dump technology file" "" boolean {optional}} {-vt_cell_placement_properties "Dump multi-VT cells' implant layer information of library" "" boolean {optional hidden}} {-reference_control_file "Dump reference control file" "" boolean {optional}} {-stream_layer_map_file "Dump layer map file during stream in/out" "" string {optional}} {-output "Output file" "file_name" string {required}} {"" "Library to be reported" "libName" string {required}}} -#@ } -#@ ############################################################################## -#@ # -#@ # PROCEDURE: close_mw_cel -#@ # -#@ # ABSTRACT: Wrapper around close_mw_cel to add -save option -#@ # remove_timing_design is the command to shutdown dc netlist -#@ # -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ -#@ proc close_mw_cel args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ global mw_is_all_views -#@ set cmd [format {icc_is_dc_up} ] -#@ set dc_is_up [uplevel #0 $cmd] -#@ -#@ set cmd_close [format {org_close_mw_cel} ] -#@ -#@ if {[info exists ra(-all_views)]} { -#@ set cmd_close [format {%s -all_views} $cmd_close] -#@ set mw_is_all_views 1 -#@ } -#@ if {[info exists ra(-all_versions)]} { -#@ set cmd_close [format {%s -all_versions} $cmd_close] -#@ } -#@ if {[info exists ra(-save)]} { -#@ set cmd_close [format {%s -save} $cmd_close] -#@ } -#@ if {[info exists ra(-verbose)]} { -#@ set cmd_close [format {%s -verbose} $cmd_close] -#@ } -#@ if {[info exists ra(-hierarchy)]} { -#@ set cmd_close [format {%s -hierarchy} $cmd_close] -#@ } -#@ -#@ ui_util_clean_saved_lib_attr $args -#@ -#@ set cmd "" -#@ set lcels "" -#@ set is_current_closed 1 -#@ -#@ if {[info exists ra()]} { -#@ set lcels $ra() -#@ } -#@ set len [string length $lcels] -#@ if {$len > 0} { -#@ set is_current_closed [is_current_mw_cel $lcels] -#@ set cmd_close [format {%s {%s}} $cmd_close $lcels] -#@ } -#@ if {[uplevel #0 $cmd_close]} { -#@ set mw_is_all_views 0 -#@ if {$dc_is_up == 1} { -#@ if {$is_current_closed == 1} { -#@ set cmd [format {remove_design -quiet -designs} ] -#@ return [uplevel #0 $cmd] -#@ } -#@ return 1 -#@ } else { -#@ return 1 -#@ } -#@ } else { -#@ set mw_is_all_views 0 -#@ return 0 -#@ } -#@ } -#@ -#@ define_proc_attributes close_mw_cel -hide_body -info " Closes the design " -define_args {{-save "Save the design" "" boolean {optional}} {-discard "Discard any changes" "" boolean {optional hidden}} {-verbose "Print out debugging messages" "" boolean {optional hidden}} {-hierarchy "Close top design and its child designs" "" boolean {optional}} {-all_views "Close all views of the design" "" boolean {optional}} {-all_versions "Close all versions of the design" "" boolean {optional}} {"" "designs to be closed" "design list" list {optional}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: save_all_mw_cel -#@ # -#@ # ABSTRACT: Wrapper around save_mw_cel to save all the open cels. Needed for Black box flow. -#@ # -#@ ############################################################################## -#@ -#@ proc save_all_mw_cels { } { -#@ set top_cel [get_attribute [current_mw_cel] name] -#@ -#@ set cels [fp_get_open_cells] -#@ -#@ foreach cel $cels { -#@ if {$cel != $top_cel} { -#@ current_mw_cel $cel -#@ -#@ save_mw_cel -#@ } -#@ } -#@ -#@ current_mw_cel $top_cel -#@ -#@ save_mw_cel -#@ } -#@ -#@ icc_hide_cmd save_all_mw_cels -#@ -#@ ############################################################################## -#@ # PROCEDURE: execute_command_and_create_cel_from_scratch -#@ # ABSTRACT: This procedure executes the given command and creates the CEL -#@ # from scratch after executing this command. -#@ ############################################################################## -#@ proc execute_command_and_create_cel_from_scratch {org_cmd_name args} { -#@ global mw_create_cel_force -#@ global mw_enable_auto_cel -#@ global mw_force_auto_cel -#@ -#@ set lib [current_mw_lib] -#@ -#@ # If no MW lib, design is not from MW. Execute the original command -#@ # and return. -#@ if {$lib == ""} { -#@ return [eval $org_cmd_name $args] -#@ } -#@ -#@ # Get values of few variables. -#@ set incr_mode $mw_create_cel_force -#@ set mw_create_cel_force TRUE -#@ -#@ # Get auto cel mode, disable it temporarily if enabled. -#@ set auto_cel_mode $mw_enable_auto_cel -#@ set mw_enable_auto_cel FALSE -#@ -#@ # Check if the already existing CEL is auto-CEL. -#@ set auto_cel 0 -#@ if {[is_cel_auto_cel]} { -#@ set auto_cel 1 -#@ } elseif {![get_top_cel_mwid]} { -#@ set auto_cel 1 -#@ } -#@ -#@ -#@ # Run the original command, if not successful restore the incr_mode -#@ # variable and return. No CEL is created. -#@ if {![eval $org_cmd_name $args]} { -#@ set mw_create_cel_force $incr_mode -#@ set mw_enable_auto_cel $auto_cel_mode -#@ return 0 -#@ } -#@ -#@ # Restore auto_cel mode -#@ set mw_enable_auto_cel $auto_cel_mode -#@ -#@ # Now create auto or real CEL depending on what the original CEL was. -#@ if {$auto_cel == "1"} { -#@ # Force creation of auto-CEL, since commands other than read_def/pdef -#@ # do not decouple CEL from DC. -#@ -#@ set mw_force_auto_cel TRUE -#@ set cmd [format {save_mw_cel -auto}] -#@ } else { -#@ if [get_top_cel_mwid] { -#@ set cmd [format {save_mw_cel -create}] -#@ echo "Information: Command not supported by incr. update or write-thru." -#@ echo " Creating new CEL from scratch, old CEL will be closed." -#@ } -#@ } -#@ -#@ # Create the Auto CEL or normal CEL from scratch. -#@ if {![uplevel #0 $cmd]} { -#@ set mw_create_cel_force $incr_mode -#@ set mw_force_auto_cel FALSE -#@ return 0 -#@ } -#@ -#@ set mw_create_cel_force $incr_mode -#@ set mw_force_auto_cel FALSE -#@ return 1 -#@ } -#@ -#@ define_proc_attributes execute_command_and_create_cel_from_scratch -hidden -hide_body -#@ -#@ ############################################################################## -#@ # PROCEDURE: read_def -#@ # ABSTRACT: Wrapper around read_def to handle incremental update properly -#@ # if MW based read_def is used, bypass the wrapper -#@ # enable_milkyway_def_reader_writer must be TRUE and use_pdb_lib_format must -#@ # be false for MW read_Def to be run, use wrapper if either condition fails -#@ ############################################################################## -#@ rename -force dc_read_def org_read_def -#@ icc_hide_cmd org_read_def -#@ proc dc_read_def args { -#@ parse_proc_arguments -args $args ra -#@ -#@ return [eval execute_command_and_create_cel_from_scratch "org_read_def" $args] -#@ } -#@ -#@ define_proc_attributes dc_read_def -hide_body -info " Read a def file " -define_args {{-design "name of design for which clusters are to be read" "" string {optional}} {-quiet "do not print out any warnings" "" boolean {optional}} {-verbose "print out more warnings" "" boolean {optional}} {-allow_physical_cells "allow physical cells" "" boolean {optional}} {-allow_physical_ports "allow physical ports" "" boolean {optional}} {-allow_physical_nets "allow physical nets" "" boolean {optional}} {-skip_signal_nets "skip signal nets" "" boolean {optional}} {-incremental "incremental" "" boolean {optional}} {-enforce_scaling "enforce_scaling" "" boolean {optional}} {-move_bounds "move bounds" "" boolean {optional}} {"" "input def file names" "input_def_file_name" string {required}}} -#@ -#@ -#@ ############################################################################## -#@ # PROCEDURE: group -#@ # ABSTRACT: Wrapper around group to handle incremental update properly -#@ ############################################################################## -#@ rename -force group org_group -#@ icc_hide_cmd org_group -#@ proc group args { -#@ parse_proc_arguments -args $args ra -#@ return [eval execute_command_and_create_cel_from_scratch "org_group" $args] -#@ } -#@ -#@ define_proc_attributes group -hide_body -info " create new hierarchy" -define_args {{-except "cells not to be included in the group" "exclude_list" list {optional}} -#@ {-design_name "name of design created for new hierarchy" "design_name" string {optional}} -#@ {-cell_name "name of cell created for new hierarchy" "cell_name" string {optional}} -#@ {-logic "group any combinational elements" "" boolean {optional}} -#@ {-pla "group any PLA elements" "" boolean {optional}} -#@ {-fsm "group all elements part of a finite state machine" "" boolean {optional}} -#@ {-hdl_block "name of hdl_block to group" "" string {optional}} -#@ {-hdl_bussed "group all bussed gates under this block" "" boolean {optional}} -#@ {-hdl_all_blocks "group all hdl blocks under this block" "" boolean {optional}} -#@ {-soft "set the group_name attribute" "" boolean {optional}} -#@ {"" "cells to be included in the group" "cell_list" list {optional}}} -#@ -#@ ############################################################################## -#@ # PROCEDURE: copy_design -#@ # ABSTRACT: Wrapper around copy_design to handle incremental update properly -#@ ############################################################################## -#@ rename -force copy_design org_copy_design -#@ icc_hide_cmd org_copy_design -#@ proc copy_design args { -#@ parse_proc_arguments -args $args ra -#@ return [eval execute_command_and_create_cel_from_scratch "org_copy_design" $args] -#@ } -#@ -#@ define_proc_attributes copy_design -hide_body -info " copy_design" -define_args {{"" "List of designs to be copied" "design_list" list {required}} -#@ {"" "Name of new design or target file" "target_name" string {required}}} -#@ -#@ ############################################################################## -#@ # PROCEDURE: create_design -#@ # ABSTRACT: Wrapper around create_design to handle incremental update properly -#@ ############################################################################## -#@ rename -force create_design org_create_design -#@ icc_hide_cmd org_create_design -#@ proc create_design args { -#@ parse_proc_arguments -args $args ra -#@ return [eval execute_command_and_create_cel_from_scratch "org_create_design" $args] -#@ } -#@ -#@ define_proc_attributes create_design -hide_body -info " Creates a design in dc_shell memory" -define_args {{"" "name of the design to create" "" string {required}} -#@ {"" "name of file for design; optional" "" string {optional}}} -#@ -#@ ############################################################################## -#@ # PROCEDURE: reset_design -#@ # ABSTRACT: Wrapper around reset_design to handle incremental update properly -#@ ############################################################################## -#@ #rename -force reset_design org_reset_design -#@ #icc_hide_cmd org_reset_design -#@ #proc reset_design args { -#@ # parse_proc_arguments -args $args ra -#@ # return [eval execute_command_and_create_cel_from_scratch "org_reset_design" $args] -#@ #} -#@ -#@ ############################################################################## -#@ # PROCEDURE: rename_design -#@ # ABSTRACT: Wrapper around rename_design to handle incremental update properly -#@ ############################################################################## -#@ rename -force rename_design org_rename_design -#@ icc_hide_cmd org_rename_design -#@ proc rename_design args { -#@ parse_proc_arguments -args $args ra -#@ return [eval execute_command_and_create_cel_from_scratch "org_rename_design" $args] -#@ } -#@ -#@ define_proc_attributes rename_design -hide_body -info " rename_design" -define_args {{"" "List of designs to be renamed" "design_list" list {required}} -#@ {"" "Name of new design or target file" "target_name" string {required}}} -#@ -#@ } -#@ -#@ ############################################################################## -#@ # If we are in icc_shell (i.e. Galileo) then -#@ # load the procedures to switch between DC and Milkyway collections. -#@ # Set the default to MW collection unless otherwise specified. -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ # load the procedures that switch between DC and MW collections -#@ source $synopsys_root/auxx/syn/collection_procs.tcl -#@ -#@ set CS mw -#@ -#@ # see if the user wants DC -#@ if {! [catch {getenv USE_DC_COLLECTIONS_ONLY}] && -#@ [getenv USE_DC_COLLECTIONS_ONLY] } { -#@ set CS dc -#@ } -#@ -#@ # set the collection source now -#@ redirect /dev/null { -#@ if {[catch {set_collection_mode -handle $CS}]} { -#@ catch {set_collection_option -handle $CS} -#@ } -#@ } -#@ -#@ unset CS -#@ } -#@ -#@ ############################################################################## -#@ # procedure for route command -#@ # echo the command to a temp tcl file for seperate process to pick up -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ rename -force route org_route -#@ icc_hide_cmd org_route -#@ proc route args { -#@ set route_cmd_file_name ".route_cmd.tcl" -#@ set route_cmd_temp_file_name ".route_cmd.tcl.temp" -#@ set fp [open $route_cmd_file_name "w"] -#@ set route_cmd [concat "sep_proc_route " $args " -child"] -#@ puts $fp $route_cmd -#@ close $fp -#@ -#@ uplevel #0 rename -force route route_temp_proc -#@ uplevel #0 rename -force org_route route -#@ set status [ uplevel #0 route $args ] -#@ uplevel #0 rename -force route org_route -#@ uplevel #0 rename -force route_temp_proc route -#@ -#@ if { [info exist status ] == 1 } { -#@ return $status -#@ } -#@ return -#@ } -#@ } -#@ -#@ ############################################################################## -#@ # Tcl Command: set_ignore_cell -#@ # Description: Load the command only in IC Compiler (icc_shell) -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ source $synopsys_root/auxx/syn/psyn/ideal_cell.tcl.e -#@ } -#@ -#@ ############################################################################## -#@ # Tcl Command: check_physical_design -#@ # Description: Load the command only in IC Compiler (icc_shell) -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ # Load the compiled Tcl byte-code: -#@ # 9000784997: Do not log to command.log when sourcing .tbc files -#@ set prev_sh_source_logging [get_app_var sh_source_logging] -#@ set_app_var sh_source_logging 0 -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_core.tbc -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_utils.tbc -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_flows.tbc -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_reports.tbc -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_ui.tbc -#@ source $synopsys_root/auxx/syn/psyn/sanity_setup_opt.tbc -#@ source $synopsys_root/auxx/syn/psyn/sanity_setup_cmd.tbc -#@ source $synopsys_root/auxx/syn/psyn/sanity_setup_rpt.tbc -#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc -#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc -#@ source $synopsys_root/auxx/syn/psyn/msgParser.tbc -#@ source $synopsys_root/auxx/syn/psyn/displacement_gui.tbc -#@ source $synopsys_root/auxx/syn/psyn/categorize_timing_gui.tbc -#@ set_app_var sh_source_logging $prev_sh_source_logging -#@ -#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e -#@ source $synopsys_root/auxx/syn/psyn/propagate_all_clocks.tcl.e -#@ } -#@ -#@ if { [string match -nocase {*dc_shell*} $synopsys_program_name] && [shell_is_in_topographical_mode] } { -#@ # 9000784997: Do not log to command.log when sourcing .tbc files -#@ set prev_sh_source_logging [get_app_var sh_source_logging] -#@ set_app_var sh_source_logging 0 -#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc -#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc -#@ set_app_var sh_source_logging $prev_sh_source_logging -#@ -#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e -#@ } -#@ -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] || [string match -nocase {*dc_shell*} $synopsys_program_name] || [string match -nocase {*de_shell*} $synopsys_program_name] } { -#@ source $synopsys_root/auxx/syn/psyn/write_timing_context.tcl.e; -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ source $synopsys_root/auxx/syn/psyn/write_scenarios.tbc; -#@ } -#@ } -#@ -#@ if { $synopsys_program_name == "de_shell" } { -#@ # 9000784997: Do not log to command.log when sourcing .tbc files -#@ set prev_sh_source_logging [get_app_var sh_source_logging] -#@ set_app_var sh_source_logging 0 -#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc -#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc -#@ set_app_var sh_source_logging $prev_sh_source_logging -#@ -#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e -#@ } -#@ -#@ ############################################################################## -#@ # ICC setup and hiding commands/procs etc -#@ ############################################################################## -#@ -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ #set save_mw_cel_lib_setup TRUE -#@ #set auto_restore_mw_cel_lib_setup FALSE -#@ -#@ alias create_wiring_keepout create_wiring_keepouts -#@ alias get_wiring_keepout get_wiring_keepouts -#@ alias get_placement_keepout get_placement_keepouts -#@ alias create_placement_keepout create_placement_keepouts -#@ -#@ icc_hide_cmd execute_command_and_create_cel_from_scratch -#@ icc_hide_cmd dc_read_def -#@ icc_hide_cmd read_edif -#@ icc_hide_cmd read_sverilog -#@ icc_hide_cmd read_vhdl -#@ icc_hide_cmd set_collection_mode -#@ icc_hide_cmd return_dc_collection -#@ icc_hide_cmd return_mw_collection -#@ set mw_use_pdb_lib_format true -#@ } -#@ -#@ -#@ ############################################################################## -#@ # Tcl Command: get_dont_touch_nets -#@ # Description: wrapper of "get_nets -filter dont_touch_reason==mv" -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ -#@ proc get_dont_touch_nets args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {get_nets}] -#@ -#@ if {[info exists ra()]} { -#@ set cmd [format {%s {%s}} $cmd $ra()] -#@ } -#@ if {[info exists ra(-type)]} { -#@ set cmd [format {%s -filter dont_touch_reasons=~*%s*} $cmd $ra(-type)] -#@ } -#@ if {[info exists ra(-hierarchical)]} { -#@ set cmd [format {%s -hierarchical} $cmd] -#@ } -#@ if {[info exists ra(-quiet)]} { -#@ set cmd [format {%s -quiet} $cmd] -#@ } -#@ if {[info exists ra(-regexp)]} { -#@ set cmd [format {%s -regexp} $cmd] -#@ } -#@ if {[info exists ra(-nocase)]} { -#@ set cmd [format {%s -nocase} $cmd] -#@ } -#@ if {[info exists ra(-exact)]} { -#@ set cmd [format {%s -exact} $cmd] -#@ } -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes get_dont_touch_nets -info " Get dont_touch nets " -permanent -define_args { {"" "Match net names against patterns" "patterns" list {optional}} {-type "Match net dont_touch reasons" "reasons" list {required}} {-hierarchical "Search level-by-level in current instance" "" boolean {optional}} {-quiet "Suppress all messages" "" boolean {optional hidden}} {-regexp "Patterns are full regular expressions" "" boolean {optional hidden}} {-nocase "With -regexp, matches are case-insensitive" "" boolean {optional hidden}} {-exact "Wildcards are considered as plain characters" "" boolean {optional hidden}} } -#@ -#@ alias get_dont_touch_net get_dont_touch_nets -#@ } -#@ -#@ -#@ ############################################################################## -#@ # return the first {index value} pair in Tcl array ary. -#@ ############################################################################## -#@ proc _snps_array_peek { level ary } { -#@ upvar #$level $ary loc_ary -#@ set ret [list] -#@ if {[catch {set token [array startsearch loc_ary]}]} { -#@ return $ret -#@ } -#@ while {[array anymore loc_ary $token]} { -#@ set k [array nextelement loc_ary $token] -#@ set v $loc_ary($k) -#@ set ret [list $k $v] -#@ break -#@ } -#@ array donesearch loc_ary $token -#@ return $ret; -#@ } -#@ define_proc_attributes _snps_array_peek -hidden -#@ -#@ -#@ ############################################################################## -#@ # Tcl Command: filter_collection -#@ # Description: DC wrapper for filter_collection with fixes of direction filter -#@ # -#@ # This is a fix for DC's filter using "direction" attribute. This -#@ # attribute is of integer type, but user wants a string format -#@ ############################################################################## -#@ if {[string match -nocase {*icc_shell*} $synopsys_program_name] == 0} { -#@ rename -force -hidden filter_collection _real_filter_collection -#@ proc filter_collection {args} { -#@ parse_proc_arguments -args $args ra -#@ -#@ set regexp "" -#@ set nocase "" -#@ if {[info exist ra(-regexp)]} { -#@ set regexp "-regexp" -#@ } -#@ if {[info exist ra(-nocase)]} { -#@ set nocase "-nocase" -#@ } -#@ set coll $ra(collection1) -#@ -#@ # _real_filter_collection silently returns in this error condition -#@ if {[catch {set coll_size [sizeof_collection $coll]}] || $coll_size <= 0} { -#@ return [list] -#@ } -#@ -#@ if {$::sh_translate_direction_attribute == true} { -#@ set filter_expr [replace_direction $coll $ra(expression)] -#@ } else { -#@ set filter_expr $ra(expression) -#@ } -#@ -#@ # if $ra(expression) is not empty but filter_expr is, collection is heterogrnous -#@ # and expression has "direction" as substring. We have to walk through all objects -#@ if {[string length $filter_expr] == 0 && [string length $ra(expression)] != 0} { -#@ set part1 [format {_real_filter_collection %s %s } $regexp $nocase] -#@ set results "" -#@ set subclxn "" -#@ set subsize [expr [sizeof_collection $coll]/80 + 10] -#@ set counter 0 -#@ foreach_in_collection obj $coll { -#@ incr counter -#@ set cmd [format {%s %s {%s}} $part1 $obj [replace_direction $obj $ra(expression)]] -#@ append_to_collection subclxn [uplevel #0 $cmd] -#@ if {[expr $counter % $subsize] == 0} { -#@ append_to_collection results $subclxn -#@ set subclxn "" -#@ } -#@ } -#@ if {[sizeof_collection $subclxn] != 0} { -#@ append_to_collection results $subclxn -#@ } -#@ return $results -#@ } else { -#@ set cmd [format {_real_filter_collection %s %s %s {%s}} $regexp $nocase $coll $filter_expr] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ define_proc_attributes filter_collection -info " Filter a collection, resulting in new collection " -permanent -define_args { {-regexp "Operators =~ and !~ use regular expressions" "" boolean {optional}} {-nocase "Case insensitive string match" "" boolean {optional}} {collection1 "Collection to filter" "collection1" string {required}} {expression "Filter expression" "expression" string {required}} } -#@ -#@ } -#@ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/.dc_procs.tcl - -#@ -#@ # Temporary fix for the LMC_HOME variable- set it to an empty string -#@ -#@ if { [catch {getenv LMC_HOME } __err ] != 0 } { -#@ setenv LMC_HOME "" -#@ } -#@ -#@ -#@ # -#@ # -#@ # Site-Specific Variables -#@ # -#@ # These are the variables that are most commonly changed at a -#@ # specific site, either upon installation of the Synopsys software, -#@ # or by specific engineers in their local .synopsys files. -#@ # -#@ # -#@ -#@ # from the System Variable Group -#@ set link_library { * your_library.db } -#@ -#@ set search_path [list . ${synopsys_root}/libraries/syn ${synopsys_root}/minpower/syn ${synopsys_root}/dw/syn_ver ${synopsys_root}/dw/sim_ver] -#@ set target_library your_library.db -#@ set synthetic_library "" -#@ set command_log_file "./command.log" -#@ set designer "" -#@ set company "" -#@ set find_converts_name_lists "false" -#@ -#@ set symbol_library your_library.sdb -#@ -#@ # Turn on Formality SVF recording -#@ if { $synopsys_program_name == "dc_shell" || $synopsys_program_name == "de_shell" || $synopsys_program_name == "design_vision" } { -#@ set_svf -default default.svf -#@ } -#@ -#@ # from the Schematic Variable Group -#@ -#@ # from the Plot Variable Group -#@ # [froi] 07/06/2012: Remove old Design Analyzer plot_command variable -#@ #if { $sh_arch == "hp700" } { -#@ # set plot_command "lp -d" -#@ #} else { -#@ # set plot_command "lpr -Plw" -#@ #} -#@ -#@ set view_command_log_file "./view_command.log" -#@ -#@ # from the View Variable group -#@ if { $sh_arch == "hp700" } { -#@ set text_print_command "lp -d" -#@ } else { -#@ set text_print_command "lpr -Plw" -#@ } -#@ # -#@ # System Variable Group: -#@ # -#@ # These variables are system-wide variables. -#@ # -#@ set arch_init_path ${synopsys_root}/${sh_arch}/motif/syn/uid -#@ set auto_link_disable "false" -#@ set auto_link_options "-all" -#@ set uniquify_naming_style "%s_%d" -#@ set verbose_messages "true" -#@ set echo_include_commands "true" -#@ set svf_file_records_change_names_changes "true" -#@ set change_names_update_inst_tree "true" -#@ set change_names_dont_change_bus_members false -#@ set default_name_rules "" -#@ #set tdrc_enable_clock_table_creation "true" -#@ -#@ # -#@ # Compile Variable Group: -#@ # -#@ # These variables affect the designs created by the COMPILE command. -#@ # -#@ set compile_assume_fully_decoded_three_state_busses "false" -#@ set compile_no_new_cells_at_top_level "false" -#@ set compile_dont_touch_annotated_cell_during_inplace_opt "false" -#@ set compile_update_annotated_delays_during_inplace_opt "true" -#@ set compile_instance_name_prefix "U" -#@ set compile_instance_name_suffix "" -#@ set compile_negative_logic_methodology "false" -#@ set compile_disable_hierarchical_inverter_opt "false" -#@ set compile_use_low_timing_effort "false" -#@ set compile_fix_cell_degradation "false" -#@ set compile_preserve_subdesign_interfaces "false" -#@ set compile_enable_constant_propagation_with_no_boundary_opt "true" -#@ set port_complement_naming_style "%s_BAR" -#@ set compile_implementation_selection "true" -#@ set compile_delete_unloaded_sequential_cells "true" -#@ set reoptimize_design_changed_list_file_name "" -#@ set compile_checkpoint_phases "false" -#@ set compile_cpu_limit 0.0 -#@ set compile_log_format " %elap_time %area %wns %tns %drc %endpoint"; -#@ set compile_top_all_paths "false" -#@ set compile_top_acs_partition "false" -#@ set default_port_connection_class "universal" -#@ set compile_hold_reduce_cell_count "false" -#@ set compile_retime_license_behavior "wait" -#@ set dont_touch_nets_with_size_only_cells "false" -#@ if { $synopsys_program_name == "dc_shell" && [shell_is_in_topographical_mode] } { -#@ set dct_prioritize_area_correlation "false" -#@ set compile_error_on_missing_physical_cells "false" -#@ } -#@ -#@ set ldd_return_val 0 -#@ if { [string compare $dc_shell_mode "default"] == 0 } { -#@ set ldd_script ${synopsys_root}/auxx/syn/scripts/list_duplicate_designs.dcsh -#@ alias list_duplicate_designs "include -quiet ldd_script; dc_shell_status = ldd_return_val " -#@ -#@ } -#@ if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ if {$synopsys_program_name != "dc_sms_shell"} { -#@ source ${synopsys_root}/auxx/syn/scripts/list_duplicate_designs.tcl -#@ # 9000784997: Do not log to command.log when sourcing .tbc files -#@ set prev_sh_source_logging [get_app_var sh_source_logging] -#@ set_app_var sh_source_logging 0 -#@ source ${synopsys_root}/auxx/syn/scripts/analyze_datapath.tbc -#@ set_app_var sh_source_logging $prev_sh_source_logging -#@ } -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/scripts/list_duplicate_designs.tcl - -#@ ####################################################################### -#@ # -#@ # list_duplicate_designs.tcl 21 Sept. 2006 -#@ # -#@ # List designs in dc_shell memory that have the same design name -#@ # -#@ # COPYRIGHT (C) 2006, SYNOPSYS INC., ALL RIGHTS RESERVED. -#@ # -#@ ####################################################################### -#@ -#@ proc list_duplicate_designs { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ # Get the list of duplicate designs -#@ set the_pid [pid] -#@ set rand_1 [expr int(rand() * 100000)] -#@ set temp_file_1 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_1] -#@ -#@ redirect $temp_file_1 { foreach_in_collection ldd_design [find design "*"] { -#@ echo [get_object_name $ldd_design] -#@ } } -#@ -#@ set rand_2 [expr int(rand() * 100000)] -#@ set temp_file_2 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_2] -#@ -#@ sh sort $temp_file_1 | uniq -d | tee $temp_file_2 -#@ file delete $temp_file_1 -#@ -#@ # Report duplicates -#@ if { ! [file size $temp_file_2] } { -#@ echo [concat {No duplicate designs found.}] -#@ set ldd_return_val 0 -#@ } else { -#@ set rand_3 [expr int(rand() * 100000)] -#@ set temp_file_3 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_3] -#@ echo {Warning: Multiple designs in memory with the same design name.} -#@ echo {} -#@ echo { Design File Path} -#@ echo { ------ ---- ----} -#@ list_designs -table > $temp_file_3 -#@ echo [sh fgrep -f $temp_file_2 $temp_file_3 | sort | grep -v 'Design.*File.*Path'] -#@ file delete $temp_file_3 -#@ set ldd_return_val 1 -#@ } -#@ -#@ # Clean up -#@ file delete $temp_file_2 -#@ -#@ set list_duplicate_designs1 $ldd_return_val -#@ } -#@ -#@ define_proc_attributes list_duplicate_designs -info " List designs of same names" -permanent -define_args { -#@ } -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/scripts/list_duplicate_designs.tcl - -#@ -#@ -#@ set compile_log_format " %elap_time %area %wns %tns %drc %endpoint"; -#@ -#@ set compile_top_all_paths "false" -#@ alias compile_inplace_changed_list_file_name reoptimize_design_changed_list_file_name -#@ -#@ # -#@ # These variables affects compile, report_timing and report_constraints -#@ # commands. -#@ # -#@ set enable_recovery_removal_arcs "false" -#@ set timing_report_attributes {dont_touch dont_use map_only size_only ideal_net infeasible_paths} -#@ -#@ # -#@ # Multibit Variable Group: -#@ # -#@ # These variables affect the multibit mapping functionality -#@ # -#@ -#@ set bus_multiple_separator_style "," -#@ set bus_multiple_name_separator_style ",," -#@ -#@ # -#@ # ILM Variable Group: -#@ # -#@ # These variables affect Interface Logic Model functionality -#@ # -#@ -#@ set ilm_ignore_percentage 25 -#@ -#@ # -#@ # Estimator Variable Group: -#@ # -#@ # These variables affect the designs created by the ESTIMATE command. -#@ # -#@ set estimate_resource_preference "fast" -#@ alias est_resource_preference estimate_resource_preference -#@ set lbo_lfo_enable_at_pin_count 3 -#@ set lbo_cells_in_regions "false" -#@ -#@ # Synthetic Library Group: -#@ # -#@ # These variable affect synthetic library processing. -#@ # -#@ set cache_dir_chmod_octal "777" -#@ set cache_file_chmod_octal "666" -#@ set cache_read "~" -#@ set cache_read_info "false" -#@ set cache_write "~" -#@ set cache_write_info "false" -#@ set synlib_dont_get_license {} -#@ set synlib_library_list {DW01 DW02 DW03 DW04 DW05 DW06 DW07} -#@ set synlib_wait_for_design_license {} -#@ set synlib_dwhomeip {} -#@ -#@ # -#@ # Insert_DFT Variable Group: -#@ # -#@ #set test_default_client_order [list] -#@ set insert_dft_clean_up "true" -#@ set insert_test_design_naming_style "%s_test_%d" -#@ # /*insert_test_scan_chain_only_one_clock = "false" -#@ # Replace by command line option (star 17215) -- Denis Martin 28-Jan-93*/ -#@ set test_clock_port_naming_style "test_c%s" -#@ set test_scan_clock_a_port_naming_style "test_sca%s" -#@ set test_scan_clock_b_port_naming_style "test_scb%s" -#@ set test_scan_clock_port_naming_style "test_sc%s" -#@ set test_scan_enable_inverted_port_naming_style "test_sei%s" -#@ set test_scan_enable_port_naming_style "test_se%s" -#@ set test_scan_in_port_naming_style "test_si%s%s" -#@ set test_scan_out_port_naming_style "test_so%s%s" -#@ set test_non_scan_clock_port_naming_style "test_nsc_%s" -#@ set test_default_min_fault_coverage 95 -#@ set test_dedicated_subdesign_scan_outs "false" -#@ set test_disable_find_best_scan_out "false" -#@ set test_dont_fix_constraint_violations "false" -#@ set test_isolate_hier_scan_out 0 -#@ set test_mode_port_naming_style "test_mode%s" -#@ set test_mode_port_inverted_naming_style "test_mode_i%s" -#@ set compile_dont_use_dedicated_scanout 1 -#@ set test_mux_constant_si "false" -#@ -#@ # -#@ # Analyze_Scan Variable Group: -#@ # -#@ # These variables affect the designs created by the PREVIEW_SCAN command. -#@ # -#@ set test_preview_scan_shows_cell_types "false" -#@ set test_scan_link_so_lockup_key "l" -#@ set test_scan_link_wire_key "w" -#@ set test_scan_segment_key "s" -#@ set test_scan_true_key "t" -#@ -#@ # -#@ # bsd Variable Group: -#@ -#@ # These variables affect the report generated by the check_bsd command -#@ # and the BSDLout generated by the write_bsdl command. -#@ # -#@ set test_user_test_data_register_naming_style "UTDR%d" -#@ -#@ set test_user_defined_instruction_naming_style "USER%d" -#@ -#@ set test_bsdl_default_suffix_name "bsdl" -#@ -#@ set test_bsdl_max_line_length 80 -#@ -#@ set test_cc_ir_masked_bits 0 -#@ -#@ set test_cc_ir_value_of_masked_bits 0 -#@ -#@ set test_bsd_allow_tolerable_violations "false" -#@ set test_bsd_optimize_control_cell "false" -#@ set test_bsd_control_cell_drive_limit 0 -#@ set test_bsd_manufacturer_id 0 -#@ set test_bsd_part_number 0 -#@ set test_bsd_version_number 0 -#@ set bsd_max_in_switching_limit 60000 -#@ set bsd_max_out_switching_limit 60000 -#@ -#@ # -#@ # TestManager Variable Group: -#@ # -#@ # These variables affect the TestManager methodology. -#@ # -#@ set multi_pass_test_generation "false" -#@ -#@ # -#@ # TestSim Variable Group: -#@ # -#@ # These variables affect the TestSim behavior. -#@ # -#@ # set testsim_print_stats_file "true" -#@ -#@ # Test DRC Variable Group: -#@ # -#@ # These variables affect the check_test command. -#@ # -#@ set test_capture_clock_skew "small_skew" -#@ set test_allow_clock_reconvergence "true" -#@ set test_check_port_changes_in_capture "true" -#@ set test_infer_slave_clock_pulse_after_capture "infer" -#@ -#@ # -#@ # Test Variable Group: -#@ # -#@ # These variables affect the rtldrc, check_test, write_test_protocol -#@ # and write_test command. -#@ # -#@ set test_default_delay 0.0 -#@ set test_default_bidir_delay 0.0 -#@ set test_default_strobe 40.0 -#@ set test_default_strobe_width 0.0 -#@ set test_default_period 100.0 -#@ set test_stil_max_line_length 72 -#@ -#@ #added for B-2008.09-place_opt-004 to disable this option in ICC -#@ -#@ if { $synopsys_program_name != "icc_shell"} { -#@ set test_write_four_cycle_stil_protocol "false" -#@ set test_protocol_add_cycle "true" -#@ set test_stil_multiclock_capture_procedures "false" -#@ set write_test_new_translation_engine "false" -#@ set test_default_scan_style "multiplexed_flip_flop" -#@ set test_jump_over_bufs_invs "true" -#@ set test_point_keep_hierarchy "false" -#@ set test_mux_constant_so "false" -#@ set test_use_test_models "false" -#@ set test_stil_netlist_format "db" -#@ group_variable test "test_protocol_add_cycle" -#@ group_variable test "test_write_four_cycle_stil_protocol" -#@ group_variable test "test_stil_multiclock_capture_procedures" -#@ group_variable test "test_default_scan_style" -#@ group_variable preview_scan "test_jump_over_bufs_invs" -#@ group_variable insert_dft "test_point_keep_hierarchy" -#@ group_variable insert_dft "test_mux_constant_so" -#@ group_variable test "test_stil_netlist_format" -#@ } -#@ set test_rtldrc_latch_check_style "default" -#@ set test_enable_capture_checks "true" -#@ set ctldb_use_old_prot_flow "false" -#@ set test_bsd_default_delay 0.0 -#@ set test_bsd_default_bidir_delay 0.0 -#@ set test_bsd_default_strobe 95.0 -#@ set test_bsd_default_strobe_width 0.0 -#@ -#@ # -#@ # Test Variable Group: -#@ # -#@ # These variables affects the set_scan_state command. -#@ # -#@ -#@ set compile_seqmap_identify_shift_registers_with_synchronous_logic_ascii false -#@ -#@ # -#@ # Write_Test Variable Group: -#@ # -#@ # These variables affect output of the WRITE_TEST command. -#@ # -#@ set write_test_input_dont_care_value "X" -#@ set write_test_vector_file_naming_style "%s_%d.%s" -#@ set write_test_scan_check_file_naming_style "%s_schk.%s" -#@ set write_test_pattern_set_naming_style "TC_Syn_%d" -#@ set write_test_max_cycles 0 -#@ set write_test_max_scan_patterns 0 -#@ # /*retain "tssi_ascii" (equivalent to "tds") for backward compatability */ -#@ set write_test_formats {synopsys tssi_ascii tds verilog vhdl wgl} -#@ set write_test_include_scan_cell_info "true" -#@ set write_test_round_timing_values "true" -#@ -#@ -#@ # -#@ # Schematic and EDIF and Hdl Variable Groups: -#@ # -#@ # These variables affect the schematics created by the -#@ # create_schematic command, define the behavior of the -#@ # DC system EDIF interface, and are for controlling hdl -#@ # reading. -#@ # -#@ set bus_dimension_separator_style {][} -#@ set bus_naming_style {%s[%d]} -#@ -#@ -#@ # -#@ # Schematic and EDIF Variable Groups: -#@ # -#@ # These variables affect the schematics created by the -#@ # create_schematic command and define the behavior of -#@ # the DC system EDIF interface. -#@ # -#@ set bus_range_separator_style ":" -#@ -#@ -#@ # -#@ # EDIF and Io Variable Groups: -#@ # -#@ # These variables define the behavior of the DC system EDIF interface and -#@ # define the behavior of the DC system interfaces, i.e. LSI, Mentor, TDL, SGE,# etc. -#@ -#@ set bus_inference_descending_sort "true" -#@ set bus_inference_style "" -#@ set write_name_nets_same_as_ports "false" -#@ # -#@ # Schematic Variable Group: -#@ # -#@ # These variables affect the schematics created by the -#@ # create_schematic command. -#@ # -#@ set font_library "1_25.font" -#@ set generic_symbol_library "generic.sdb" -#@ -#@ # -#@ # Io Variable Group: -#@ # -#@ # These variables define the behavior of the DC system -#@ # interfaces, i.e. LSI, Mentor, TDL, SGE, etc. -#@ # -#@ #set db2sge_output_directory "" -#@ #set db2sge_scale "2" -#@ #set db2sge_overwrite "true" -#@ #set db2sge_display_symbol_names "false" -#@ -#@ -#@ #set db2sge_display_pin_names "false" -#@ #set db2sge_display_instance_names "false" -#@ #set db2sge_use_bustaps "false" -#@ #set db2sge_use_compound_names "true" -#@ #set db2sge_bit_type "std_logic" -#@ #set db2sge_bit_vector_type "std_logic_vector" -#@ #set db2sge_one_name "'1'" -#@ #set db2sge_zero_name "'0'" -#@ #set db2sge_unknown_name "'X'" -#@ #set db2sge_target_xp "false" -#@ #set db2sge_tcf_package_file "synopsys_tcf.vhd" -#@ #set db2sge_use_lib_section "" -#@ #set db2sge_script "" -#@ #set db2sge_command "" -#@ -#@ # set equationout_and_sign "*" -#@ # set equationout_or_sign "+" -#@ # set equationout_postfix_negation "true" -#@ -#@ # # [wjchen] 2006/08/14: The following variables are obsoleted for DC simpilification. -#@ #set lsiin_net_name_prefix "NET_" -#@ #set lsiout_inverter_cell "" -#@ #set lsiout_upcase "true" -#@ -#@ #set mentor_bidirect_value "INOUT" -#@ #set mentor_do_path "" -#@ #set mentor_input_output_property_name "PINTYPE" -#@ #set mentor_input_value "IN" -#@ #set mentor_logic_one_value "1SF" -#@ #set mentor_logic_zero_one_property_name "INIT" -#@ #set mentor_logic_zero_value "0SF" -#@ #set mentor_output_value "OUT" -#@ #set mentor_primitive_property_name "PRIMITIVE" -#@ #set mentor_primitive_property_value "MODULE" -#@ #set mentor_reference_property_name "COMP" -#@ #set mentor_search_path "" -#@ #set mentor_write_symbols "true" -#@ -#@ ## [wjchen] 0606_simp -#@ #set pla_read_create_flip_flop "false" -#@ #set tdlout_upcase "true" -#@ -#@ # # [wjchen] 2006/08/14: The following4 variables are obsoleted for DC simpilification. -#@ # set xnfout_constraints_per_endpoint "50" -#@ # set xnfout_default_time_constraints true -#@ # set xnfout_clock_attribute_style "CLK_ONLY" -#@ # set xnfout_library_version "" -#@ -#@ # # [wjchen] 2006/08/11: The following 8 variables are obsoleted for DC simpilification. -#@ # set xnfin_family "4000" -#@ # set xnfin_ignore_pins "GTS GSR GR" -#@ # set xnfin_dff_reset_pin_name "RD" -#@ # set xnfin_dff_set_pin_name "SD" -#@ # set xnfin_dff_clock_enable_pin_name "CE" -#@ # set xnfin_dff_data_pin_name "D" -#@ # set xnfin_dff_clock_pin_name "C" -#@ # set xnfin_dff_q_pin_name "Q" -#@ # -#@ -#@ # -#@ # EDIF Variable Group: -#@ # -#@ # These variables define the behavior of the DC system -#@ # EDIF interface. -#@ # -#@ -#@ ##[wjchen] 2006/08/24 -#@ -#@ # set bus_extraction_style {%s[%d:%d]} -#@ -#@ ##[wjchen] 2006/08/24 -#@ #set edifin_autoconnect_offpageconnectors "false" -#@ #set edifin_autoconnect_ports "false" -#@ #set edifin_dc_script_flag "" -#@ #set edifin_delete_empty_cells "true" -#@ #set edifin_delete_ripper_cells "true" -#@ #set edifin_ground_net_name "" -#@ #set edifin_ground_net_property_name "" -#@ #set edifin_ground_net_property_value "" -#@ #set edifin_ground_port_name "" -#@ #set edifin_instance_property_name "" -#@ #set edifin_portinstance_disabled_property_name "" -#@ #set edifin_portinstance_disabled_property_value "" -#@ #set edifin_portinstance_property_name "" -#@ #set edifin_power_net_name "" -#@ #set edifin_power_net_property_name "" -#@ #set edifin_power_net_property_value "" -#@ #set edifin_power_port_name "" -#@ #set edifin_use_identifier_in_rename "false" -#@ #set edifin_view_identifier_property_name "" -#@ #set edifin_lib_logic_1_symbol "" -#@ #set edifin_lib_logic_0_symbol "" -#@ #set edifin_lib_in_port_symbol "" -#@ #set edifin_lib_out_port_symbol "" -#@ #set edifin_lib_inout_port_symbol "" -#@ #set edifin_lib_in_osc_symbol "" -#@ #set edifin_lib_out_osc_symbol "" -#@ #set edifin_lib_inout_osc_symbol "" -#@ #set edifin_lib_mentor_netcon_symbol "" -#@ #set edifin_lib_ripper_bits_property "" -#@ #set edifin_lib_ripper_bus_end "" -#@ #set edifin_lib_ripper_cell_name "" -#@ #set edifin_lib_ripper_view_name "" -#@ #set edifin_lib_route_grid 1024 -#@ #set edifin_lib_templates {} -#@ #set edifout_dc_script_flag "" -#@ #set edifout_design_name "Synopsys_edif" -#@ #set edifout_designs_library_name "DESIGNS" -#@ #set edifout_display_instance_names "false" -#@ #set edifout_display_net_names "false" -#@ #set edifout_external "true" -#@ #set edifout_external_graphic_view_name "Graphic_representation" -#@ #set edifout_external_netlist_view_name "Netlist_representation" -#@ #set edifout_external_schematic_view_name "Schematic_representation" -#@ #set edifout_ground_name "logic_0" -#@ #set edifout_ground_net_name "" -#@ #set edifout_ground_net_property_name "" -#@ #set edifout_ground_net_property_value "" -#@ #set edifout_ground_pin_name "logic_0_pin" -#@ #set edifout_ground_port_name "GND" -#@ #set edifout_instance_property_name "" -#@ #set edifout_instantiate_ports "false" -#@ #set edifout_library_graphic_view_name "Graphic_representation" -#@ #set edifout_library_netlist_view_name "Netlist_representation" -#@ #set edifout_library_schematic_view_name "Schematic_representation" -#@ #set edifout_merge_libraries "false" -#@ #set edifout_multidimension_arrays "false" -#@ #set edifout_name_oscs_different_from_ports "false" -#@ #set edifout_name_rippers_same_as_wires "false" -#@ #set edifout_netlist_only "false" -#@ #set edifout_no_array "false" -#@ #set edifout_numerical_array_members "false" -#@ #set edifout_pin_direction_in_value "" -#@ #set edifout_pin_direction_inout_value "" -#@ #set edifout_pin_direction_out_value "" -#@ #set edifout_pin_direction_property_name "" -#@ #set edifout_pin_name_property_name "" -#@ #set edifout_portinstance_disabled_property_name "" -#@ #set edifout_portinstance_disabled_property_value "" -#@ #set edifout_portinstance_property_name "" -#@ #set edifout_power_and_ground_representation "cell" -#@ #set edifout_power_name "logic_1" -#@ #set edifout_power_net_name "" -#@ #set edifout_power_net_property_name "" -#@ #set edifout_power_net_property_value "" -#@ #set edifout_power_pin_name "logic_1_pin" -#@ #set edifout_power_port_name "VDD" -#@ #set edifout_skip_port_implementations "false" -#@ #set edifout_target_system "" -#@ #set edifout_top_level_symbol "true" -#@ #set edifout_translate_origin "" -#@ #set edifout_unused_property_value "" -#@ #set edifout_write_attributes "false" -#@ #set edifout_write_constraints "false" -#@ #set edifout_write_properties_list {} -#@ #set read_name_mapping_nowarn_libraries {} -#@ #set write_name_mapping_nowarn_libraries {} -#@ -#@ # -#@ # Hdl and Vhdlio Variable Groups: -#@ # -#@ # These variables are for controlling hdl reading, writing, -#@ # and optimizing. -#@ # -#@ set hdlin_enable_upf_compatible_naming "FALSE" -#@ set hdlin_auto_save_templates "FALSE" -#@ set hdlin_generate_naming_style "%s_%d" -#@ set hdlin_enable_relative_placement "rb" -#@ set hdlin_mux_rp_limit "128x4" -#@ set hdlin_generate_separator_style "_" -#@ set hdlin_ignore_textio_constructs "TRUE" -#@ set hdlin_infer_function_local_latches "FALSE" -#@ set hdlin_keep_signal_name "all_driving" -#@ set hdlin_module_arch_name_splitting "FALSE" -#@ set hdlin_preserve_sequential "none" -#@ set hdlin_presto_net_name_prefix "N" -#@ set hdlin_presto_cell_name_prefix "C" -#@ set hdlin_strict_verilog_reader "FALSE" -#@ set hdlin_prohibit_nontri_multiple_drivers "TRUE" -#@ if { $synopsys_program_name == "de_shell" } { -#@ set hdlin_elab_errors_deep "TRUE" -#@ } else { -#@ set hdlin_elab_errors_deep "FALSE" -#@ } -#@ set hdlin_mux_size_min 2 -#@ set hdlin_subprogram_default_values "FALSE" -#@ set hdlin_field_naming_style "" -#@ set hdlin_upcase_names "FALSE" -#@ set hdlin_sv_union_member_naming "FALSE" -#@ set hdlin_enable_hier_map "FALSE" -#@ set hdlin_sv_interface_only_modules "" -#@ set hdlin_sv_enable_rtl_attributes "FALSE" -#@ set hdlin_vhdl_std 2008 -#@ set hdlin_vhdl93_concat "TRUE" -#@ set hdlin_vhdl_syntax_extensions "FALSE" -#@ set hdlin_analyze_verbose_mode 0 -#@ set hdlin_report_sequential_pruning "FALSE" -#@ set hdlin_vrlg_std 2005 -#@ set hdlin_sverilog_std 2012 -#@ set hdlin_while_loop_iterations 4096 -#@ set hdlin_reporting_level "basic" -#@ set hdlin_autoread_verilog_extensions ".v" -#@ set hdlin_autoread_sverilog_extensions ".sv .sverilog" -#@ set hdlin_autoread_vhdl_extensions ".vhd .vhdl" -#@ set hdlin_autoread_exclude_extensions "" -#@ -#@ set bus_minus_style "-%d" -#@ set hdlin_latch_always_async_set_reset FALSE -#@ set hdlin_ff_always_sync_set_reset FALSE -#@ set hdlin_ff_always_async_set_reset TRUE -#@ set hdlin_check_input_netlist FALSE -#@ set hdlin_check_no_latch FALSE -#@ set hdlin_mux_for_array_read_sparseness_limit 90 -#@ set hdlin_infer_mux "default" -#@ set hdlin_mux_oversize_ratio 100 -#@ set hdlin_mux_size_limit 32 -#@ set hdlin_mux_size_only 1 -#@ set hdlin_infer_multibit "default_none" -#@ set hdlin_enable_rtldrc_info "false" -#@ set hdlin_interface_port_ABI 3 -#@ set hdlin_shorten_long_module_name "false" -#@ set hdlin_module_name_limit 256 -#@ set hdlin_enable_assertions "FALSE" -#@ set hdlin_enable_configurations "FALSE" -#@ set hdlin_sv_blackbox_modules "" -#@ set hdlin_sv_tokens "FALSE" -#@ set hdlin_sv_packages "enable" -#@ set hdlin_verification_priority "FALSE" -#@ set hdlin_enable_elaborate_ref_linking "FALSE" -#@ set hdlin_enable_hier_naming "FALSE" -#@ set hdlin_enable_elaborate_update "true" -#@ set hdlin_vhdl_mixed_language_instantiation "FALSE" -#@ set hdl_preferred_license "" -#@ set hdl_keep_licenses "true" -#@ set hlo_resource_allocation "constraint_driven" -#@ set sdfout_top_instance_name "" -#@ set sdfout_time_scale 1.0 -#@ set sdfout_min_rise_net_delay 0. -#@ set sdfout_min_fall_net_delay 0. -#@ set sdfout_min_rise_cell_delay 0. -#@ set sdfout_min_fall_cell_delay 0. -#@ set sdfout_write_to_output "false" -#@ set sdfout_allow_non_positive_constraints "false" -#@ set sdfin_top_instance_name "" -#@ set sdfin_min_rise_net_delay 0. -#@ set sdfin_min_fall_net_delay 0. -#@ set sdfin_min_rise_cell_delay 0. -#@ set sdfin_min_fall_cell_delay 0. -#@ set sdfin_rise_net_delay_type "maximum" -#@ set sdfin_fall_net_delay_type "maximum" -#@ set sdfin_rise_cell_delay_type "maximum" -#@ set sdfin_fall_cell_delay_type "maximum" -#@ set site_info_file ${synopsys_root}/admin/license/site_info -#@ if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ alias site_info sh cat $site_info_file -#@ } else { -#@ alias site_info "sh cat site_info_file" -#@ } -#@ set template_naming_style "%s_%p" -#@ set template_parameter_style "%s%d" -#@ set template_separator_style "_" -#@ set verilogout_equation "false" -#@ set verilogout_ignore_case "false" -#@ set verilogout_no_tri "false" -#@ set verilogout_inout_is_in "false" -#@ set verilogout_single_bit "false" -#@ set verilogout_higher_designs_first "FALSE" -#@ # set verilogout_levelize "FALSE" -#@ set verilogout_include_files {} -#@ set verilogout_unconnected_prefix "SYNOPSYS_UNCONNECTED_" -#@ set verilogout_show_unconnected_pins "FALSE" -#@ set verilogout_no_negative_index "FALSE" -#@ #set enable_2003.03_verilog_reader TRUE -#@ # to have a net instead of 1'b0 and 1'b1 in inouts: -#@ set verilogout_indirect_inout_connection "FALSE" -#@ -#@ # set vhdlout_architecture_name "SYN_%a_%u" -#@ set vhdlout_bit_type "std_logic" -#@ # set vhdlout_bit_type_resolved "TRUE" -#@ set vhdlout_bit_vector_type "std_logic_vector" -#@ # set vhdlout_conversion_functions {} -#@ # set vhdlout_dont_write_types "FALSE" -#@ set vhdlout_equations "FALSE" -#@ set vhdlout_one_name "'1'" -#@ set vhdlout_package_naming_style "CONV_PACK_%d" -#@ set vhdlout_preserve_hierarchical_types "VECTOR" -#@ set vhdlout_separate_scan_in "FALSE" -#@ set vhdlout_single_bit "USER" -#@ set vhdlout_target_simulator "" -#@ set vhdlout_three_state_name "'Z'" -#@ set vhdlout_three_state_res_func "" -#@ # set vhdlout_time_scale 1.0 -#@ set vhdlout_top_configuration_arch_name "A" -#@ set vhdlout_top_configuration_entity_name "E" -#@ set vhdlout_top_configuration_name "CFG_TB_E" -#@ set vhdlout_unknown_name "'X'" -#@ set vhdlout_upcase "FALSE" -#@ set vhdlout_use_packages {IEEE.std_logic_1164} -#@ set vhdlout_wired_and_res_func "" -#@ set vhdlout_wired_or_res_func "" -#@ set vhdlout_write_architecture "TRUE" -#@ set vhdlout_write_components "TRUE" -#@ set vhdlout_write_entity "TRUE" -#@ set vhdlout_write_top_configuration "FALSE" -#@ # set vhdlout_synthesis_off "TRUE" -#@ set vhdlout_zero_name "'0'" -#@ #set vhdlout_levelize "FALSE" -#@ set vhdlout_dont_create_dummy_nets "FALSE" -#@ set vhdlout_follow_vector_direction "TRUE" -#@ -#@ -#@ # vhdl netlist reader variables -#@ set enable_vhdl_netlist_reader "FALSE" -#@ -#@ # variables pertaining to VHDL library generation -#@ set vhdllib_timing_mesg "true" -#@ set vhdllib_timing_xgen "false" -#@ set vhdllib_timing_checks "true" -#@ set vhdllib_negative_constraint "false" -#@ set vhdllib_glitch_handle "true" -#@ set vhdllib_pulse_handle "use_vhdllib_glitch_handle" -#@ # /*vhdllib_architecture = {FTBM, UDSM, FTSM, FTGS, VITAL}; */ -#@ set vhdllib_architecture {VITAL} -#@ set vhdllib_tb_compare 0 -#@ set vhdllib_tb_x_eq_dontcare FALSE -#@ set vhdllib_logic_system "ieee-1164" -#@ set vhdllib_logical_name "" -#@ -#@ # variables pertaining to technology library processing -#@ set read_db_lib_warnings FALSE -#@ set read_translate_msff TRUE -#@ set libgen_max_differences -1 -#@ -#@ # -#@ # Gui Variable Group -#@ # used for design_vision and psyn_gui -#@ # -#@ set gui_auto_start 0 -#@ set gui_start_option_no_windows 0 -#@ group_variable gui_variables "gui_auto_start" -#@ group_variable gui_variables "gui_start_option_no_windows" -#@ -#@ # -#@ # If you like emacs, uncomment the next line -#@ # set text_editor_command "emacs -fn 8x13 %s &" ; -#@ -#@ # You can delete pairs from this list, but you can't add new ones -#@ # unless you also update the UIL files. So, customers can not add -#@ # dialogs to this list, only Synopsys can do that. -#@ # -#@ set view_independent_dialogs { "test_report" " Test Reports " "report_print" " Report " "report_options" " Report Options " "report_win" " Report Output " "manual_page" " Manual Page " } -#@ -#@ # if color Silicon Graphics workstation -#@ if { [info exists x11_vendor_string] && [info exists x11_is_color]} { -#@ if { $x11_vendor_string == "Silicon" && $x11_is_color == "true" } { -#@ set x11_set_cursor_foreground "magenta" -#@ set view_use_small_cursor "true" -#@ set view_set_selecting_color "white" -#@ } -#@ } -#@ -#@ # if running on an Apollo machine -#@ set found_x11_vendor_string_apollo 0 -#@ set found_arch_apollo 0 -#@ if { [info exists x11_vendor_string]} { -#@ if { $x11_vendor_string == "Apollo "} { -#@ set found_x11_vendor_string_apollo 1 -#@ } -#@ } -#@ if { [info exists arch]} { -#@ if { $arch == "apollo"} { -#@ set found_arch_apollo 1 -#@ } -#@ } -#@ if { $found_x11_vendor_string_apollo == 1 || $found_arch_apollo == 1} { -#@ set enable_page_mode "false" -#@ } else { -#@ set enable_page_mode "true" -#@ } -#@ -#@ # don't work around this bug on the Apollo -#@ if { $found_x11_vendor_string_apollo == 1} { -#@ set view_extend_thick_lines "false" -#@ } else { -#@ set view_extend_thick_lines "true" -#@ } -#@ -#@ # -#@ # Suffix Variable Group: -#@ # -#@ # Suffixes recognized by the Design Analyzer menu in file choices -#@ # -#@ if { $synopsys_program_name == "design_vision" || $synopsys_program_name == "psyn_gui" } { -#@ # For star 93040 do NOT include NET in list, 108991 : pdb suffix added -#@ set view_read_file_suffix {db gdb sdb pdb edif eqn fnc lsi mif pla st tdl v vhd vhdl xnf} -#@ } else { -#@ set view_read_file_suffix {db gdb sdb edif eqn fnc lsi mif NET pla st tdl v vhd vhdl xnf} -#@ } -#@ -#@ set view_analyze_file_suffix {v vhd vhdl} -#@ set view_write_file_suffix {gdb db sdb do edif eqn fnc lsi NET neted pla st tdl v vhd vhdl xnf} -#@ set view_execute_script_suffix {.script .scr .dcs .dcv .dc .con} -#@ set view_arch_types {sparcOS5 hpux10 rs6000 sgimips} -#@ -#@ # -#@ # links_to_layout Variable Group: -#@ # -#@ # These variables affect the read_timing, write_timing -#@ # set_annotated_delay, compile, create_wire_load and reoptimize_design -#@ # commands. -#@ # -#@ if {$synopsys_program_name != "dc_sms_shell"} { -#@ set auto_wire_load_selection "true" -#@ set compile_create_wire_load_table "false" -#@ } -#@ set rtl_load_resistance_factor 0.0 -#@ -#@ # power Variable Group: -#@ # -#@ # These variables affect the behavior of power optimization and analysis. -#@ # -#@ -#@ set power_keep_license_after_power_commands "false" -#@ set power_rtl_saif_file "power_rtl.saif" -#@ set power_sdpd_saif_file "power_sdpd.saif" -#@ set power_preserve_rtl_hier_names "false" -#@ set power_do_not_size_icg_cells "true" -#@ set power_hdlc_do_not_split_cg_cells "false" -#@ set power_cg_flatten "false" -#@ set power_opto_extra_high_dynamic_power_effort "false" -#@ set power_default_static_probability 0.5 -#@ set power_default_toggle_rate 0.1 -#@ set power_default_toggle_rate_type "fastest_clock" -#@ set power_model_preference "nlpm" -#@ set power_sa_propagation_effort "low" -#@ set power_sa_propagation_verbose "false" -#@ set power_fix_sdpd_annotation "true" -#@ set power_fix_sdpd_annotation_verbose "false" -#@ set power_sdpd_message_tolerance 0.00001 -#@ set do_operand_isolation "false" -#@ set power_cg_module_naming_style "" -#@ set power_cg_cell_naming_style "" -#@ set power_cg_gated_clock_net_naming_style "" -#@ set power_rclock_use_asynch_inputs "false" -#@ set power_rclock_inputs_use_clocks_fanout "true" -#@ set power_rclock_unrelated_use_fastest "true" -#@ set power_lib2saif_rise_fall_pd "false" -#@ set power_min_internal_power_threshold "" -#@ -#@ -#@ # SystemC related variables -#@ set systemcout_levelize "true" -#@ set systemcout_debug_mode "false" -#@ -#@ # ACS Variables -#@ if { [info exists acs_work_dir] } { -#@ set acs_area_report_suffix "area" -#@ set acs_autopart_max_area "0.0" -#@ set acs_autopart_max_percent "0.0" -#@ set acs_budgeted_cstr_suffix "con" -#@ set acs_compile_script_suffix "autoscr" -#@ set acs_constraint_file_suffix "con" -#@ set acs_cstr_report_suffix "cstr" -#@ set acs_db_suffix "db" -#@ set acs_dc_exec "" -#@ set acs_default_pass_name "pass" -#@ set acs_exclude_extensions {} -#@ set acs_exclude_list [list $synopsys_root] -#@ set acs_global_user_compile_strategy_script "default" -#@ set acs_hdl_verilog_define_list {} -#@ set acs_hdl_source {} -#@ set acs_lic_wait 0 -#@ set acs_log_file_suffix "log" -#@ set acs_make_args "set acs_make_args" -#@ set acs_make_exec "gmake" -#@ set acs_makefile_name "Makefile" -#@ set acs_num_parallel_jobs 1 -#@ set acs_override_report_suffix "report" -#@ set acs_override_script_suffix "scr" -#@ set acs_qor_report_suffix "qor" -#@ set acs_timing_report_suffix "tim" -#@ set acs_use_autopartition "false" -#@ set acs_use_default_delays "false" -#@ set acs_user_budgeting_script "budget.scr" -#@ set acs_user_compile_strategy_script_suffix "compile" -#@ set acs_verilog_extensions {.v} -#@ set acs_vhdl_extensions {.vhd} -#@ set acs_work_dir [pwd] -#@ set check_error_list [list CMD-004 CMD-006 CMD-007 CMD-008 CMD-009 CMD-010 CMD-011 CMD-012 CMD-014 CMD-015 CMD-016 CMD-019 CMD-026 CMD-031 CMD-037 DB-1 DCSH-11 DES-001 ACS-193 FILE-1 FILE-2 FILE-3 FILE-4 LINK-7 LINT-7 LINT-20 LNK-023 OPT-100 OPT-101 OPT-102 OPT-114 OPT-124 OPT-127 OPT-128 OPT-155 OPT-157 OPT-181 OPT-462 UI-11 UI-14 UI-15 UI-16 UI-17 UI-19 UI-20 UI-21 UI-22 UI-23 UI-40 UI-41 UID-4 UID-6 UID-7 UID-8 UID-9 UID-13 UID-14 UID-15 UID-19 UID-20 UID-25 UID-27 UID-28 UID-29 UID-30 UID-32 UID-58 UID-87 UID-103 UID-109 UID-270 UID-272 UID-403 UID-440 UID-444 UIO-2 UIO-3 UIO-4 UIO-25 UIO-65 UIO-66 UIO-75 UIO-94 UIO-95 EQN-6 EQN-11 EQN-15 EQN-16 EQN-18 EQN-20 ] -#@ set ilm_preserve_core_constraints "false" -#@ } -#@ -#@ # -#@ # -#@ # DesignTime Variable Group -#@ # -#@ # The variables which affect the DesignTime timing engine -#@ # -#@ -#@ set case_analysis_log_file "" -#@ set case_analysis_sequential_propagate "false" -#@ set create_clock_no_input_delay "false" -#@ set disable_auto_time_borrow "false" -#@ set disable_case_analysis "false" -#@ set disable_conditional_mode_analysis "false" -#@ set disable_library_transition_degradation "false" -#@ set dont_bind_unused_pins_to_logic_constant "false" -#@ set enable_slew_degradation "true" -#@ set high_fanout_net_pin_capacitance 1.000000 -#@ set high_fanout_net_threshold 1000 -#@ set lib_thresholds_per_lib "true" -#@ set rc_adjust_rd_when_less_than_rnet "true" -#@ set rc_ceff_delay_min_diff_ps 0.250000 -#@ set rc_degrade_min_slew_when_rd_less_than_rnet "false" -#@ set rc_driver_model_max_error_pct 0.160000 -#@ set rc_filter_rd_less_than_rnet "true" -#@ set rc_input_threshold_pct_fall 50.000000 -#@ set rc_input_threshold_pct_rise 50.000000 -#@ set rc_output_threshold_pct_fall 50.000000 -#@ set rc_output_threshold_pct_rise 50.000000 -#@ set rc_rd_less_than_rnet_threshold 0.450000 -#@ set rc_slew_derate_from_library 1.000000 -#@ set rc_slew_lower_threshold_pct_fall 20.000000 -#@ set rc_slew_lower_threshold_pct_rise 20.000000 -#@ set rc_slew_upper_threshold_pct_fall 80.000000 -#@ set rc_slew_upper_threshold_pct_rise 80.000000 -#@ set timing_disable_cond_default_arcs "false" -#@ #timing_enable_multiple_clocks_per_reg is on by default -#@ #set timing_enable_multiple_clocks_per_reg "false" -#@ set timing_report_attributes {dont_touch dont_use map_only size_only ideal_net infeasible_paths} -#@ set timing_self_loops_no_skew "false" -#@ set when_analysis_permitted "true" -#@ set when_analysis_without_case_analysis "false" -#@ -#@ -#@ # -#@ # Variable Group Definitions: -#@ # -#@ # The group_variable() command groups variables for display -#@ # in the "File/Defaults" dialog and defines groups of variables -#@ # for the list() command. -#@ # -#@ -#@ set enable_instances_in_report_net "true" -#@ # Set report options env variables -#@ set view_report_interactive "true" -#@ set view_report_output2file "false" -#@ set view_report_append "true" -#@ -#@ if { $synopsys_program_name != "ptxr" } { -#@ -#@ group_variable report_variables "enable_instances_in_report_net" -#@ group_variable report_variables "view_report_interactive" -#@ group_variable report_variables "view_report_output2file" -#@ group_variable report_variables "view_report_append" -#@ -#@ # "links_to_layout" variables are used by multiple commands -#@ # auto_wire_load_selection is also in the "compile" variable group. -#@ group_variable links_to_layout "auto_wire_load_selection" -#@ -#@ # variables starting with "compile" are also in the compile variable group -#@ group_variable links_to_layout "compile_dont_touch_annotated_cell_during_inplace_opt" -#@ -#@ group_variable links_to_layout "compile_update_annotated_delays_during_inplace_opt" -#@ group_variable links_to_layout "compile_create_wire_load_table" -#@ -#@ group_variable links_to_layout "reoptimize_design_changed_list_file_name" -#@ group_variable links_to_layout "sdfout_allow_non_positive_constraints" -#@ -#@ } ;# $synopsys_program_name != "ptxr" -#@ -#@ # -#@ # to find the XErrorDB and XKeySymDB for X11 file -#@ set motif_files ${synopsys_root}/admin/setup -#@ # set filename for logging input file -#@ set filename_log_file "filenames.log" -#@ # whether to delete the filename log after the normal exits -#@ set exit_delete_filename_log_file "true" -#@ -#@ # executable to fire off RTLA/BCV -#@ set xterm_executable "xterm" -#@ -#@ if { $synopsys_program_name != "ptxr" } { -#@ -#@ # "system" variables are used by multiple commands -#@ group_variable system auto_link_disable -#@ group_variable system auto_link_options -#@ group_variable system command_log_file -#@ group_variable system company -#@ group_variable system compatibility_version -#@ -#@ if { [string compare $dc_shell_mode "default"] == 0 } { -#@ group_variable system "current_design" -#@ group_variable system "current_instance" -#@ group_variable system "dc_shell_status" -#@ } else { -#@ set current_design "" -#@ set current_instance "" -#@ group_variable system "current_design" -#@ group_variable system "current_instance" -#@ } -#@ -#@ group_variable system "designer" -#@ group_variable system "echo_include_commands" -#@ group_variable system "enable_page_mode" -#@ group_variable system "change_names_update_inst_tree" -#@ group_variable system "change_names_dont_change_bus_members" -#@ group_variable system "default_name_rules" -#@ group_variable system "verbose_messages" -#@ group_variable system "link_library" -#@ group_variable system "link_force_case" -#@ group_variable system "search_path" -#@ group_variable system "synthetic_library" -#@ group_variable system "target_library" -#@ group_variable system "uniquify_naming_style" -#@ group_variable system "suppress_errors" -#@ group_variable system "find_converts_name_lists" -#@ group_variable system "filename_log_file" -#@ group_variable system "exit_delete_filename_log_file" -#@ group_variable system "syntax_check_status" -#@ group_variable system "context_check_status" -#@ -#@ #/* "compile" variables are used by the compile command */ -#@ group_variable compile "compile_assume_fully_decoded_three_state_busses" -#@ group_variable compile "compile_no_new_cells_at_top_level" -#@ group_variable compile "compile_dont_touch_annotated_cell_during_inplace_opt" -#@ group_variable compile "reoptimize_design_changed_list_file_name" -#@ group_variable compile "compile_create_wire_load_table" -#@ group_variable compile "compile_update_annotated_delays_during_inplace_opt" -#@ group_variable compile "compile_instance_name_prefix" -#@ group_variable compile "compile_instance_name_suffix" -#@ group_variable compile "compile_negative_logic_methodology" -#@ group_variable compile "compile_disable_hierarchical_inverter_opt" -#@ -#@ group_variable compile "port_complement_naming_style" -#@ group_variable compile "auto_wire_load_selection" -#@ group_variable compile "rtl_load_resistance_factor" -#@ group_variable compile "compile_implementation_selection" -#@ group_variable compile "compile_use_low_timing_effort" -#@ group_variable compile "compile_fix_cell_degradation" -#@ group_variable compile "compile_preserve_subdesign_interfaces" -#@ group_variable compile "compile_enable_constant_propagation_with_no_boundary_opt" -#@ group_variable compile "compile_delete_unloaded_sequential_cells" -#@ group_variable compile "enable_recovery_removal_arcs" -#@ group_variable compile "compile_checkpoint_phases" -#@ group_variable compile "compile_cpu_limit" -#@ group_variable compile "compile_top_all_paths" -#@ group_variable compile "compile_top_all_paths" -#@ group_variable compile "compile_top_acs_partition" -#@ group_variable compile "default_port_connection_class" -#@ group_variable compile "compile_retime_license_behavior" -#@ group_variable compile "dont_touch_nets_with_size_only_cells" -#@ group_variable compile "compile_seqmap_no_scan_cell" -#@ -#@ if { $synopsys_program_name == "dc_shell" && [shell_is_in_topographical_mode] } { -#@ group_variable compile "dct_prioritize_area_correlation" -#@ group_variable compile "compile_error_on_missing_physical_cells" -#@ } -#@ -#@ # "multibit" variables are used by the the multibit mapping functionality -#@ -#@ group_variable multibit "bus_multiple_separator_style" -#@ -#@ # "ilm" variables are used by Interface Logic Model functionality -#@ -#@ group_variable ilm "ilm_ignore_percentage" -#@ -#@ # "estimate" variables are used by the estimate command -#@ # The estimate command also recognizes the "compile" variables. -#@ group_variable estimate "estimate_resource_preference" -#@ -#@ # "synthetic_library" variables -#@ group_variable synlib "cache_dir_chmod_octal" -#@ group_variable synlib "cache_file_chmod_octal" -#@ group_variable synlib "cache_read" -#@ group_variable synlib "cache_read_info" -#@ group_variable synlib "cache_write" -#@ group_variable synlib "cache_write_info" -#@ group_variable synlib "synlib_dont_get_license" -#@ group_variable synlib "synlib_wait_for_design_license" -#@ group_variable synlib "synthetic_library" -#@ -#@ # "insert_dft" variables are used by the insert_dft and preview_dft commands -#@ #group_variable insert_dft "test_default_client_order" -#@ group_variable insert_dft "insert_dft_clean_up" -#@ group_variable insert_dft "insert_test_design_naming_style" -#@ group_variable insert_dft "test_clock_port_naming_style" -#@ group_variable insert_dft "test_default_min_fault_coverage" -#@ group_variable insert_dft "test_scan_clock_a_port_naming_style" -#@ group_variable insert_dft "test_scan_clock_b_port_naming_style" -#@ group_variable insert_dft "test_scan_clock_port_naming_style" -#@ group_variable insert_dft "test_scan_enable_inverted_port_naming_style" -#@ group_variable insert_dft "test_scan_enable_port_naming_style" -#@ group_variable insert_dft "test_scan_in_port_naming_style" -#@ group_variable insert_dft "test_scan_out_port_naming_style" -#@ group_variable insert_dft "test_non_scan_clock_port_naming_style" -#@ group_variable insert_dft "test_dedicated_subdesign_scan_outs" -#@ group_variable insert_dft "test_disable_find_best_scan_out" -#@ group_variable insert_dft "test_dont_fix_constraint_violations" -#@ group_variable insert_dft "test_isolate_hier_scan_out" -#@ group_variable insert_dft "test_mode_port_naming_style" -#@ group_variable insert_dft "test_mode_port_inverted_naming_style" -#@ group_variable insert_dft "compile_dont_use_dedicated_scanout" -#@ group_variable insert_dft "test_mux_constant_si" -#@ -#@ # "preview_scan" variables are used by the preview_scan command -#@ group_variable preview_scan "test_preview_scan_shows_cell_types" -#@ group_variable preview_scan "test_scan_link_so_lockup_key" -#@ group_variable preview_scan "test_scan_link_wire_key" -#@ group_variable preview_scan "test_scan_segment_key" -#@ group_variable preview_scan "test_scan_true_key" -#@ -#@ # "bsd" variables are used by the check_bsd and write_bsdl commands -#@ group_variable bsd "test_user_test_data_register_naming_style" -#@ group_variable bsd "test_user_defined_instruction_naming_style" -#@ group_variable bsd "test_bsdl_default_suffix_name" -#@ group_variable bsd "test_bsdl_max_line_length" -#@ group_variable bsd "test_cc_ir_masked_bits" -#@ group_variable bsd "test_cc_ir_value_of_masked_bits" -#@ -#@ group_variable bsd "test_bsd_allow_tolerable_violations" -#@ group_variable bsd "test_bsd_optimize_control_cell" -#@ group_variable bsd "test_bsd_control_cell_drive_limit" -#@ group_variable bsd "test_bsd_manufacturer_id" -#@ group_variable bsd "test_bsd_part_number" -#@ group_variable bsd "test_bsd_version_number" -#@ group_variable bsd "bsd_max_in_switching_limit" -#@ group_variable bsd "bsd_max_out_switching_limit" -#@ -#@ # testmanager variables -#@ group_variable testmanager "multi_pass_test_generation" -#@ -#@ # "testsim" variables -#@ # group_variable testsim "testsim_print_stats_file" -#@ -#@ # "test" variables -#@ group_variable test "test_default_bidir_delay" -#@ group_variable test "test_default_delay" -#@ group_variable test "test_default_period" -#@ group_variable test "test_default_strobe" -#@ group_variable test "test_default_strobe_width" -#@ group_variable test "test_capture_clock_skew" -#@ group_variable test "test_allow_clock_reconvergence" -#@ group_variable test "test_check_port_changes_in_capture" -#@ group_variable test "test_stil_max_line_length" -#@ group_variable test "test_infer_slave_clock_pulse_after_capture" -#@ group_variable test "test_rtldrc_latch_check_style" -#@ group_variable test "test_enable_capture_checks" -#@ -#@ # "write_test" variables are used by the write_test command -#@ group_variable write_test "write_test_formats" -#@ group_variable write_test "write_test_include_scan_cell_info" -#@ group_variable write_test "write_test_input_dont_care_value" -#@ group_variable write_test "write_test_max_cycles" -#@ group_variable write_test "write_test_max_scan_patterns" -#@ group_variable write_test "write_test_pattern_set_naming_style" -#@ group_variable write_test "write_test_scan_check_file_naming_style" -#@ group_variable write_test "write_test_vector_file_naming_style" -#@ group_variable write_test "write_test_round_timing_values" -#@ -#@ group_variable view "test_design_analyzer_uses_insert_scan" -#@ -#@ # "io" variables are used by the read, read_lib, db2sge and write commands -#@ group_variable io "bus_inference_descending_sort" -#@ group_variable io "bus_inference_style" -#@ #group_variable io "db2sge_output_directory" -#@ #group_variable io "db2sge_scale" -#@ #group_variable io "db2sge_overwrite" -#@ #group_variable io "db2sge_display_symbol_names" -#@ #group_variable io "db2sge_display_pin_names" -#@ #group_variable io "db2sge_display_instance_names" -#@ #group_variable io "db2sge_use_bustaps" -#@ #group_variable io "db2sge_use_compound_names" -#@ #group_variable io "db2sge_bit_type" -#@ #group_variable io "db2sge_bit_vector_type" -#@ #group_variable io "db2sge_one_name" -#@ #group_variable io "db2sge_zero_name" -#@ #group_variable io "db2sge_unknown_name" -#@ #group_variable io "db2sge_target_xp" -#@ #group_variable io "db2sge_tcf_package_file" -#@ #group_variable io "db2sge_use_lib_section" -#@ #group_variable io "db2sge_script" -#@ #group_variable io "db2sge_command" -#@ -#@ # group_variable io "equationout_and_sign" -#@ # group_variable io "equationout_or_sign" -#@ # group_variable io "equationout_postfix_negation" -#@ -#@ # group_variable io "lsiin_net_name_prefix" -#@ # group_variable io "lsiout_inverter_cell" -#@ # group_variable io "lsiout_upcase" -#@ -#@ #group_variable io "mentor_bidirect_value" -#@ #group_variable io "mentor_do_path" -#@ #group_variable io "mentor_input_output_property_name" -#@ #group_variable io "mentor_input_value" -#@ #group_variable io "mentor_logic_one_value" -#@ #group_variable io "mentor_logic_zero_one_property_name" -#@ #group_variable io "mentor_logic_zero_value" -#@ #group_variable io "mentor_output_value" -#@ #group_variable io "mentor_primitive_property_name" -#@ #group_variable io "mentor_primitive_property_value" -#@ #group_variable io "mentor_reference_property_name" -#@ #group_variable io "mentor_search_path" -#@ #group_variable io "mentor_write_symbols" -#@ # group_variable io "pla_read_create_flip_flop" -#@ # group_variable io "tdlout_upcase" -#@ group_variable io "write_name_nets_same_as_ports" -#@ -#@ # # [wjchen] 2006/08/14: The following 4 variables are obsoleted for DC simpilification. -#@ -#@ # group_variable io "xnfout_constraints_per_endpoint" -#@ # group_variable io "xnfout_default_time_constraints" -#@ # group_variable io "xnfout_clock_attribute_style" -#@ # group_variable io "xnfout_library_version" -#@ -#@ # # [wjchen] 2006/08/11: The following 8 variables are obsoleted for DC simpilification. -#@ # group_variable io "xnfin_family" -#@ # group_variable io "xnfin_ignore_pins" -#@ # group_variable io "xnfin_dff_reset_pin_name" -#@ # group_variable io "xnfin_dff_set_pin_name" -#@ # group_variable io "xnfin_dff_clock_enable_pin_name" -#@ # group_variable io "xnfin_dff_data_pin_name" -#@ # group_variable io "xnfin_dff_clock_pin_name" ; -#@ # group_variable io "xnfin_dff_q_pin_name"; -#@ -#@ group_variable io "sdfin_min_rise_net_delay" ; -#@ group_variable io "sdfin_min_fall_net_delay" ; -#@ group_variable io "sdfin_min_rise_cell_delay" ; -#@ group_variable io "sdfin_min_fall_cell_delay" ; -#@ group_variable io "sdfin_rise_net_delay_type" ; -#@ group_variable io "sdfin_fall_net_delay_type" ; -#@ group_variable io "sdfin_rise_cell_delay_type" ; -#@ group_variable io "sdfin_fall_cell_delay_type" ; -#@ group_variable io "sdfin_top_instance_name" ; -#@ group_variable io "sdfout_time_scale" ; -#@ group_variable io "sdfout_write_to_output" ; -#@ group_variable io "sdfout_top_instance_name" ; -#@ group_variable io "sdfout_min_rise_net_delay" ; -#@ group_variable io "sdfout_min_fall_net_delay" ; -#@ group_variable io "sdfout_min_rise_cell_delay" ; -#@ group_variable io "sdfout_min_fall_cell_delay" ; -#@ group_variable io "read_db_lib_warnings" ; -#@ group_variable io "read_translate_msff" ; -#@ group_variable io "libgen_max_differences" ; -#@ -#@ # #[wjchen] 2006/08/22: The following variables are hidden for XG mode for DC simpilification. -#@ # group_variable io "read_name_mapping_nowarn_libraries" ; -#@ # group_variable io "write_name_mapping_nowarn_libraries" ; -#@ -#@ -#@ # "edif" variables are used by the EDIF format read, read_lib, write, -#@ # and write_lib commands -#@ # group_variable edif "bus_dimension_separator_style" ; -#@ # group_variable edif "bus_extraction_style" ; -#@ group_variable edif "bus_inference_descending_sort" ; -#@ group_variable edif "bus_inference_style" ; -#@ group_variable edif "bus_naming_style" ; -#@ group_variable edif "bus_range_separator_style" ; -#@ # group_variable edif "edifin_autoconnect_offpageconnectors" ; -#@ # group_variable edif "edifin_autoconnect_ports" ; -#@ # group_variable edif "edifin_delete_empty_cells" ; -#@ # group_variable edif "edifin_delete_ripper_cells" ; -#@ # group_variable edif "edifin_ground_net_name" ; -#@ # group_variable edif "edifin_ground_net_property_name" ; -#@ # group_variable edif "edifin_ground_net_property_value" ; -#@ # group_variable edif "edifin_ground_port_name" ; -#@ # group_variable edif "edifin_instance_property_name" ; -#@ # group_variable edif "edifin_portinstance_disabled_property_name" ; -#@ # group_variable edif "edifin_portinstance_disabled_property_value" ; -#@ # group_variable edif "edifin_portinstance_property_name" ; -#@ # group_variable edif "edifin_power_net_name" ; -#@ # group_variable edif "edifin_power_net_property_name" ; -#@ # group_variable edif "edifin_power_net_property_value" ; -#@ # group_variable edif "edifin_power_port_name" ; -#@ # group_variable edif "edifin_use_identifier_in_rename" ; -#@ # group_variable edif "edifin_view_identifier_property_name" ; -#@ # group_variable edif "edifin_dc_script_flag" ; -#@ # group_variable edif "edifin_lib_logic_1_symbol" ; -#@ # group_variable edif "edifin_lib_logic_0_symbol" ; -#@ # group_variable edif "edifin_lib_in_port_symbol" ; -#@ # group_variable edif "edifin_lib_out_port_symbol" ; -#@ # group_variable edif "edifin_lib_inout_port_symbol" ; -#@ # group_variable edif "edifin_lib_in_osc_symbol" ; -#@ # group_variable edif "edifin_lib_out_osc_symbol" ; -#@ # group_variable edif "edifin_lib_inout_osc_symbol" ; -#@ # group_variable edif "edifin_lib_mentor_netcon_symbol" ; -#@ # group_variable edif "edifin_lib_ripper_bits_property" ; -#@ # group_variable edif "edifin_lib_ripper_bus_end" ; -#@ # group_variable edif "edifin_lib_ripper_cell_name" ; -#@ # group_variable edif "edifin_lib_ripper_view_name" ; -#@ # group_variable edif "edifin_lib_route_grid" ; -#@ # group_variable edif "edifin_lib_templates" ; -#@ # group_variable edif "edifout_dc_script_flag" ; -#@ # group_variable edif "edifout_design_name" ; -#@ # group_variable edif "edifout_designs_library_name" ; -#@ # group_variable edif "edifout_display_instance_names" ; -#@ # group_variable edif "edifout_display_net_names" ; -#@ # group_variable edif "edifout_external" ; -#@ # group_variable edif "edifout_external_graphic_view_name" ; -#@ # group_variable edif "edifout_external_netlist_view_name" ; -#@ # group_variable edif "edifout_external_schematic_view_name" ; -#@ # group_variable edif "edifout_ground_name" ; -#@ # group_variable edif "edifout_ground_net_name" ; -#@ # group_variable edif "edifout_ground_net_property_name" ; -#@ # group_variable edif "edifout_ground_net_property_value" ; -#@ # group_variable edif "edifout_ground_pin_name" ; -#@ # group_variable edif "edifout_ground_port_name" ; -#@ # group_variable edif "edifout_instance_property_name" ; -#@ # group_variable edif "edifout_instantiate_ports" ; -#@ # group_variable edif "edifout_library_graphic_view_name" ; -#@ # group_variable edif "edifout_library_netlist_view_name" ; -#@ # group_variable edif "edifout_library_schematic_view_name" ; -#@ # group_variable edif "edifout_merge_libraries" ; -#@ # group_variable edif "edifout_multidimension_arrays" ; -#@ # group_variable edif "edifout_name_oscs_different_from_ports" ; -#@ # group_variable edif "edifout_name_rippers_same_as_wires" ; -#@ # group_variable edif "edifout_netlist_only" ; -#@ # group_variable edif "edifout_no_array" ; -#@ # group_variable edif "edifout_numerical_array_members" ; -#@ # group_variable edif "edifout_pin_direction_property_name" ; -#@ # group_variable edif "edifout_pin_direction_in_value" ; -#@ # group_variable edif "edifout_pin_direction_inout_value" ; -#@ # group_variable edif "edifout_pin_direction_out_value" ; -#@ # group_variable edif "edifout_pin_name_property_name" ; -#@ # group_variable edif "edifout_portinstance_disabled_property_name" ; -#@ # group_variable edif "edifout_portinstance_disabled_property_value" ; -#@ # group_variable edif "edifout_portinstance_property_name" -#@ # group_variable edif "edifout_power_and_ground_representation" -#@ # group_variable edif "edifout_power_name" -#@ # group_variable edif "edifout_power_net_name" -#@ # group_variable edif "edifout_power_net_property_name" -#@ # group_variable edif "edifout_power_net_property_value" -#@ # group_variable edif "edifout_power_pin_name" -#@ # group_variable edif "edifout_power_port_name" -#@ # group_variable edif "edifout_skip_port_implementations" -#@ # group_variable edif "edifout_target_system" -#@ # group_variable edif "edifout_top_level_symbol" -#@ # group_variable edif "edifout_translate_origin" -#@ # group_variable edif "edifout_unused_property_value" -#@ # group_variable edif "edifout_write_attributes" -#@ # group_variable edif "edifout_write_constraints" -#@ # group_variable edif "edifout_write_properties_list" -#@ # group_variable edif "write_name_nets_same_as_ports" -#@ -#@ # "hdl" variables are variables pertaining to hdl reading and optimizing -#@ group_variable hdl "bus_dimension_separator_style" -#@ group_variable hdl "bus_minus_style" -#@ group_variable hdl "bus_naming_style" -#@ group_variable hdl "hdlin_ignore_textio_constructs" -#@ group_variable hdl "hdlin_latch_always_async_set_reset" -#@ group_variable hdl "hdlin_ff_always_sync_set_reset" -#@ group_variable hdl "hdlin_ff_always_async_set_reset" -#@ group_variable hdl "hdlin_check_input_netlist" -#@ group_variable hdl "hdlin_check_no_latch" -#@ group_variable hdl "hdlin_reporting_level" -#@ group_variable hdl "hdlin_infer_mux" -#@ group_variable hdl "hdlin_mux_oversize_ratio" -#@ group_variable hdl "hdlin_mux_size_limit" -#@ group_variable hdl "hdlin_infer_multibit" -#@ group_variable hdl "hdl_preferred_license" -#@ group_variable hdl "hdl_keep_licenses" -#@ group_variable hdl "hlo_resource_allocation" -#@ group_variable hdl "template_naming_style" -#@ group_variable hdl "template_parameter_style" -#@ group_variable hdl "template_separator_style" -#@ group_variable hdl "verilogout_equation" -#@ group_variable hdl "verilogout_ignore_case" -#@ group_variable hdl "verilogout_no_tri" -#@ group_variable hdl "verilogout_inout_is_in" -#@ group_variable hdl "verilogout_single_bit" -#@ group_variable hdl "verilogout_higher_designs_first" -#@ # group_variable hdl "verilogout_levelize" -#@ group_variable hdl "verilogout_include_files" -#@ group_variable hdl "verilogout_unconnected_prefix" -#@ group_variable hdl "verilogout_show_unconnected_pins" -#@ group_variable hdl "verilogout_no_negative_index" -#@ group_variable hdl "hdlin_enable_rtldrc_info" -#@ group_variable hdl "hdlin_sv_blackbox_modules" -#@ group_variable hdl "hdlin_sv_enable_rtl_attributes" -#@ group_variable hdl "hdlin_enable_hier_map" -#@ group_variable hdl "hdlin_sv_interface_only_modules" -#@ group_variable hdl "hdlin_infer_function_local_latches" -#@ group_variable hdl "hdlin_module_arch_name_splitting" -#@ group_variable hdl "hdlin_mux_size_min" -#@ group_variable hdl "hdlin_prohibit_nontri_multiple_drivers" -#@ group_variable hdl "hdlin_subprogram_default_values" -#@ group_variable hdl "hdlin_upcase_names" -#@ group_variable hdl "hdlin_vhdl_std" -#@ group_variable hdl "hdlin_vhdl93_concat" -#@ group_variable hdl "hdlin_vhdl_syntax_extensions" -#@ group_variable hdl "hdlin_vrlg_std" -#@ group_variable hdl "hdlin_while_loop_iterations" -#@ group_variable hdl "hdlin_auto_save_templates" -#@ group_variable hdl "hdlin_elab_errors_deep" -#@ group_variable hdl "hdlin_enable_assertions" -#@ group_variable hdl "hdlin_enable_configurations" -#@ group_variable hdl "hdlin_field_naming_style" -#@ group_variable hdl "hdlin_generate_naming_style" -#@ group_variable hdl "hdlin_generate_separator_style" -#@ group_variable hdl "hdlin_enable_relative_placement" -#@ group_variable hdl "hdlin_mux_rp_limit" -#@ group_variable hdl "hdlin_keep_signal_name" -#@ group_variable hdl "hdlin_module_name_limit" -#@ group_variable hdl "hdlin_mux_size_only" -#@ group_variable hdl "hdlin_preserve_sequential" -#@ group_variable hdl "hdlin_presto_cell_name_prefix" -#@ group_variable hdl "hdlin_presto_net_name_prefix" -#@ group_variable hdl "hdlin_strict_verilog_reader" -#@ group_variable hdl "hdlin_shorten_long_module_name" -#@ group_variable hdl "hdlin_sv_packages" -#@ group_variable hdl "hdlin_sv_tokens" -#@ group_variable hdl "hdlin_enable_elaborate_ref_linking" -#@ group_variable hdl "hdlin_enable_hier_naming" -#@ group_variable hdl "hdlin_enable_elaborate_update" -#@ group_variable hdl "hdlin_autoread_verilog_extensions" -#@ group_variable hdl "hdlin_autoread_sverilog_extensions" -#@ group_variable hdl "hdlin_autoread_vhdl_extensions" -#@ group_variable hdl "hdlin_autoread_exclude_extensions" -#@ group_variable hdl "hdlin_enable_upf_compatible_naming" -#@ group_variable hdl "hdlin_report_sequential_pruning" -#@ group_variable hdl "hdlin_analyze_verbose_mode" -#@ -#@ # "vhdlio" variables are variables pertaining to VHDL generation -#@ group_variable vhdlio "vhdllib_timing_mesg" -#@ group_variable vhdlio "vhdllib_timing_xgen" -#@ group_variable vhdlio "vhdllib_timing_checks" -#@ group_variable vhdlio "vhdllib_negative_constraint" -#@ group_variable vhdlio "vhdllib_pulse_handle" -#@ group_variable vhdlio "vhdllib_glitch_handle" -#@ group_variable vhdlio "vhdllib_architecture" -#@ group_variable vhdlio "vhdllib_tb_compare" -#@ group_variable vhdlio "vhdllib_tb_x_eq_dontcare" -#@ group_variable vhdlio "vhdllib_logic_system" -#@ group_variable vhdlio "vhdllib_logical_name" -#@ -#@ # group_variable vhdlio "vhdlout_architecture_name" -#@ group_variable vhdlio "vhdlout_bit_type" -#@ # group_variable vhdlio "vhdlout_bit_type_resolved" -#@ group_variable vhdlio "vhdlout_bit_vector_type" -#@ # group_variable vhdlio "vhdlout_conversion_functions" -#@ # group_variable vhdlio "vhdlout_dont_write_types" -#@ group_variable vhdlio "vhdlout_equations" -#@ group_variable vhdlio "vhdlout_one_name" -#@ group_variable vhdlio "vhdlout_package_naming_style" -#@ group_variable vhdlio "vhdlout_preserve_hierarchical_types" -#@ group_variable vhdlio "vhdlout_separate_scan_in" -#@ group_variable vhdlio "vhdlout_single_bit" -#@ group_variable vhdlio "vhdlout_target_simulator" -#@ group_variable vhdlio "vhdlout_top_configuration_arch_name" -#@ group_variable vhdlio "vhdlout_top_configuration_entity_name" -#@ group_variable vhdlio "vhdlout_top_configuration_name" -#@ group_variable vhdlio "vhdlout_three_state_name" -#@ group_variable vhdlio "vhdlout_three_state_res_func" -#@ # group_variable vhdlio "vhdlout_time_scale" -#@ group_variable vhdlio "vhdlout_unknown_name" -#@ group_variable vhdlio "vhdlout_use_packages" -#@ group_variable vhdlio "vhdlout_wired_and_res_func" -#@ group_variable vhdlio "vhdlout_wired_or_res_func" -#@ group_variable vhdlio "vhdlout_write_architecture" -#@ group_variable vhdlio "vhdlout_write_entity" -#@ group_variable vhdlio "vhdlout_write_top_configuration" -#@ # group_variable vhdlio "vhdlout_synthesis_off" -#@ group_variable vhdlio "vhdlout_write_components" -#@ group_variable vhdlio "vhdlout_zero_name" -#@ # group_variable vhdlio "vhdlout_levelize" -#@ group_variable vhdlio "vhdlout_dont_create_dummy_nets" -#@ group_variable vhdlio "vhdlout_follow_vector_direction" -#@ -#@ # "suffix" variables are used to find the suffixes of different file types -#@ group_variable suffix "view_execute_script_suffix" -#@ group_variable suffix "view_read_file_suffix" -#@ group_variable suffix "view_analyze_file_suffix" -#@ group_variable suffix "view_write_file_suffix" -#@ -#@ # Meenakshi: Added new group scc (for SystemC compiler) -#@ group_variable scc {systemcout_levelize} -#@ group_variable scc {systemcout_debug_mode} -#@ -#@ # "power" variables are for power-analysis. -#@ group_variable power {power_keep_license_after_power_commands} -#@ group_variable power {power_preserve_rtl_hier_names} -#@ group_variable power {power_do_not_size_icg_cells} -#@ group_variable power {power_hdlc_do_not_split_cg_cells} -#@ group_variable power {power_rtl_saif_file} -#@ group_variable power {power_sdpd_saif_file} -#@ group_variable power {power_cg_flatten} -#@ group_variable power {power_opto_extra_high_dynamic_power_effort} -#@ group_variable power {power_default_static_probability} -#@ group_variable power {power_default_toggle_rate} -#@ group_variable power {power_default_toggle_rate_type} -#@ group_variable power {power_model_preference} -#@ group_variable power {power_sa_propagation_effort} -#@ group_variable power {power_sa_propagation_verbose} -#@ group_variable power {power_fix_sdpd_annotation} -#@ group_variable power {power_fix_sdpd_annotation_verbose} -#@ group_variable power {power_sdpd_message_tolerance} -#@ group_variable power {power_rclock_use_asynch_inputs} -#@ group_variable power {power_rclock_inputs_use_clocks_fanout} -#@ group_variable power {power_rclock_unrelated_use_fastest} -#@ group_variable power {power_lib2saif_rise_fall_pd} -#@ group_variable power {power_min_internal_power_threshold} -#@ group_variable power {power_cg_module_naming_style} -#@ group_variable power {power_cg_cell_naming_style} -#@ group_variable power {power_cg_gated_clock_net_naming_style} -#@ group_variable power {do_operand_isolation} -#@ -#@ # dpcm variables are used by DPCM lib and controllong DC when using DPCM -#@ -#@ if { [info exists dpcm_debuglevel] } { -#@ group_variable dpcm "dpcm_debuglevel" -#@ group_variable dpcm "dpcm_rulespath" -#@ group_variable dpcm "dpcm_rulepath" -#@ group_variable dpcm "dpcm_tablepath" -#@ group_variable dpcm "dpcm_libraries" -#@ group_variable dpcm "dpcm_version" -#@ group_variable dpcm "dpcm_level" -#@ group_variable dpcm "dpcm_temperaturescope" -#@ group_variable dpcm "dpcm_voltagescope" -#@ group_variable dpcm "dpcm_functionscope" -#@ group_variable dpcm "dpcm_wireloadscope" -#@ group_variable dpcm "dpcm_slewlimit" -#@ group_variable dpcm "dpcm_arc_sense_mapping" -#@ -#@ } -#@ -#@ set dpcm_slewlimit "TRUE" -#@ -#@ # executable to fire off RTLA/BCV -#@ group_variable hdl {xterm_executable} -#@ -#@ # Variable group for Chip Compiler -#@ if {[info exists acs_work_dir]} { -#@ group_variable acs acs_area_report_suffix -#@ group_variable acs acs_autopart_max_area -#@ group_variable acs acs_autopart_max_percent -#@ group_variable acs acs_budgeted_cstr_suffix -#@ group_variable acs acs_compile_script_suffix -#@ group_variable acs acs_constraint_file_suffix -#@ group_variable acs acs_cstr_report_suffix -#@ group_variable acs acs_db_suffix -#@ group_variable acs acs_dc_exec -#@ group_variable acs acs_default_pass_name -#@ group_variable acs acs_exclude_extensions -#@ group_variable acs acs_exclude_list -#@ group_variable acs acs_global_user_compile_strategy_script -#@ group_variable acs acs_hdl_verilog_define_list -#@ group_variable acs acs_hdl_source -#@ group_variable acs acs_lic_wait -#@ group_variable acs acs_log_file_suffix -#@ group_variable acs acs_make_args -#@ group_variable acs acs_make_exec -#@ group_variable acs acs_makefile_name -#@ group_variable acs acs_num_parallel_jobs -#@ group_variable acs acs_override_report_suffix -#@ group_variable acs acs_override_script_suffix -#@ group_variable acs acs_qor_report_suffix -#@ group_variable acs acs_timing_report_suffix -#@ group_variable acs acs_use_autopartition -#@ group_variable acs acs_use_default_delays -#@ group_variable acs acs_user_budgeting_script -#@ group_variable acs acs_user_compile_strategy_script_suffix -#@ group_variable acs acs_verilog_extensions -#@ group_variable acs acs_vhdl_extensions -#@ group_variable acs acs_work_dir -#@ group_variable acs check_error_list -#@ group_variable acs ilm_preserve_core_constraints -#@ -#@ } -#@ -#@ # -#@ # DesignTime Variable Group timing -#@ # -#@ -#@ group_variable timing case_analysis_log_file -#@ group_variable timing case_analysis_sequential_propagate -#@ group_variable timing case_analysis_with_logic_constants -#@ group_variable timing create_clock_no_input_delay -#@ group_variable timing disable_auto_time_borrow -#@ group_variable timing disable_case_analysis -#@ group_variable timing disable_conditional_mode_analysis -#@ group_variable timing disable_library_transition_degradation -#@ group_variable timing dont_bind_unused_pins_to_logic_constant -#@ group_variable timing enable_slew_degradation -#@ group_variable timing high_fanout_net_pin_capacitance -#@ group_variable timing high_fanout_net_threshold -#@ group_variable timing lib_thresholds_per_lib -#@ group_variable timing rc_adjust_rd_when_less_than_rnet -#@ group_variable timing rc_ceff_delay_min_diff_ps -#@ group_variable timing rc_degrade_min_slew_when_rd_less_than_rnet -#@ group_variable timing rc_driver_model_max_error_pct -#@ group_variable timing rc_filter_rd_less_than_rnet -#@ group_variable timing rc_input_threshold_pct_fall -#@ group_variable timing rc_input_threshold_pct_rise -#@ group_variable timing rc_output_threshold_pct_fall -#@ group_variable timing rc_output_threshold_pct_rise -#@ group_variable timing rc_rd_less_than_rnet_threshold -#@ group_variable timing rc_slew_derate_from_library -#@ group_variable timing rc_slew_lower_threshold_pct_fall -#@ group_variable timing rc_slew_lower_threshold_pct_rise -#@ group_variable timing rc_slew_upper_threshold_pct_fall -#@ group_variable timing rc_slew_upper_threshold_pct_rise -#@ group_variable timing timing_disable_cond_default_arcs -#@ # group_variable timing timing_enable_multiple_clocks_per_reg -#@ group_variable timing timing_report_attributes -#@ group_variable timing timing_self_loops_no_skew -#@ group_variable timing when_analysis_permitted -#@ group_variable timing when_analysis_without_case_analysis -#@ -#@ } ;# $synopsys_program_name != "ptxr" -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ # -#@ # IC Compile Variable Group: -#@ # -#@ # These variables affect the designs created by the route_opt command. -#@ # -#@ group_variable routeopt routeopt_checkpoint -#@ group_variable routeopt routeopt_disable_cpulimit -#@ } -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ # -#@ # IC Compiler Variable Group: MCMM -#@ # -#@ # These variables affect Multi-Corner/Multi-Mode. Currently, MCMM is -#@ # only supported in ICC--hence the "icc_shell" qualification, above -#@ # -#@ group_variable MCMM mcmm_enable_high_capacity_flow -#@ } -#@ -#@ # Aliases for backwards compatibility or other reasons -#@ group_variable compile {compile_log_format} -#@ alias view_cursor_number x11_set_cursor_number -#@ alias set_internal_load set_load -#@ alias set_internal_arrival set_arrival -#@ alias set_connect_delay "set_annotated_delay -net" -#@ alias create_test_vectors create_test_patterns -#@ alias compile_test insert_test -#@ alias check_clocks check_timing -#@ alias lint check_design -#@ # gen removed; alias gen create_schematic -#@ alias free remove_design -#@ alias group_bus create_bus -#@ alias ungroup_bus remove_bus -#@ alias groupvar group_variable -#@ alias report_constraints report_constraint -#@ alias report_attributes report_attribute -#@ alias fsm_reduce reduce_fsm -#@ alias fsm_minimize minimize_fsm -#@ alias disable_timing set_disable_timing -#@ alias dont_touch set_dont_touch -#@ alias dont_touch_network set_dont_touch_network -#@ alias dont_use set_dont_use -#@ alias fix_hold set_fix_hold -#@ alias prefer set_prefer -#@ alias remove_package "echo remove_package command is obsolete: packages are stored on disk not in-memory:" -#@ alias analyze_scan preview_scan -#@ alias get_clock get_clocks -#@ alias dc_shell_is_in_incr_mode shell_is_in_xg_mode -#@ alias set_vh_module_options set_dps_module_options -#@ alias set_vh_physopt_options set_dps_options -#@ alias update_vh_design update_dps_design -#@ alias vh_start dps_start -#@ alias vh_end dps_end -#@ alias all_vh_modules all_dps_modules -#@ alias all_designs_of_vh all_designs_of_dps -#@ alias vh_use_auto_partitioning dps_auto_partitioning -#@ alias vh_write_changes dps_write_changes -#@ alias vh_read_changes dps_read_changes -#@ alias vh_write_module_clock dps_write_module_clock -#@ alias get_lib get_libs -#@ -#@ # Enable unsupported psyn commands -#@ if { $synopsys_program_name == "psyn_shell" || $synopsys_program_name == "icc_shell"} { -#@ proc enable_unsupported_commands { { arg "default" } } { -#@ global cgpi_use_new_wire_factors -#@ global cgpi_use_relative_wire_factors -#@ global cgpi_use_new_path_factors -#@ global pwlm_use_new_wire_factors -#@ global pwlm_use_relative_wire_factors -#@ global pwlm_use_new_path_factors -#@ global psyn_unsupported_commands_dir -#@ global synopsys_root -#@ if {![info exists psyn_unsupported_commands_dir]} { -#@ set psyn_unsupported_commands_dir $synopsys_root/auxx/syn/psyn/unsupported_commands -#@ } -#@ set psyn_unsupported_commands_option1 $arg -#@ if {[file readable $psyn_unsupported_commands_dir/setup.tcl]} { -#@ source $psyn_unsupported_commands_dir/setup.tcl -#@ } else { -#@ source -encrypted $psyn_unsupported_commands_dir/setup.tcl.e -#@ } -#@ } -#@ } -#@ # For Intel -#@ if { $synopsys_program_name == "icc_shell"} { -#@ set psyn_unsupported_commands_dir $synopsys_root/auxx/syn/psyn/unsupported_commands -#@ source -encrypted $psyn_unsupported_commands_dir/max_dist.tcl.e -#@ } -#@ -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ # to enable CLE readline-ish terminal by default for ICC -#@ set sh_enable_line_editing true -#@ -#@ # Astro forms create an enormous number of new variables which are -#@ # very annoying for users to see, so the default of this variable -#@ # for ICC is false -#@ set sh_new_variable_message false -#@ } -#@ -#@ if { $synopsys_program_name == "icc_shell" || (($synopsys_program_name == "dc_shell") && ([shell_is_in_topographical_mode])) } { -#@ source $synopsys_root/auxx/syn/psyn/verify_ilm.tcl -#@ } -#@ -#@ # Enable vh psyn commands -#@ if { $synopsys_program_name == "psyn_shell" } { -#@ proc enable_vh_flow { } { -#@ global VH_SCRIPT_FILE -#@ global synopsys_root -#@ global suppress_errors -#@ set suppress_errors "$suppress_errors CMD-041 UID-95 SEL-003 SEL-005" -#@ if {![info exists VH_SCRIPT_FILE]} { -#@ set VH_SCRIPT_FILE $synopsys_root/auxx/syn/psyn/vh_pc.tcl.e -#@ } -#@ if {[file readable $VH_SCRIPT_FILE]} { -#@ if {[string match *.tcl $VH_SCRIPT_FILE]} { -#@ source $VH_SCRIPT_FILE -#@ } else { -#@ source -encrypted $VH_SCRIPT_FILE -#@ } -#@ } else { -#@ puts "Error: VH script file $VH_SCRIPT_FILE not found." -#@ } -#@ } -#@ } -#@ -#@ -#@ #Turn on enable_netl_view to true by default. -#@ set enable_netl_view "TRUE" -#@ -#@ -#@ #Turn on physopt_bypass_multiple_plib_check by default -#@ if { $synopsys_program_name == "psyn_shell" } { -#@ set physopt_bypass_multiple_plib_check TRUE -#@ } -#@ -#@ # The ls command is gone, now it is just an alias for dc_shell eqn mode -#@ -#@ if { [string compare $dc_shell_mode "default"] == 0 } { -#@ if { ( $sh_arch == {mips}) && ( ( $synopsys_program_name == {design_analyzer}) || ( $isatty == 0)) } { -#@ alias ls "sh ls -a " -#@ } else { -#@ if { ( $sh_arch == {mips}) || ( $sh_arch == {necmips}) } { -#@ alias ls "sh ls -aC " -#@ } else { -#@ alias ls "sh ls -aC " -#@ } -#@ } -#@ } -#@ -#@ # Aliases for RouteCompiler -#@ alias run_rodeo_router route66 -#@ -#@ # Removing route_global from the code. Earlier it was hidden. --Mukesh -#@ #proc route_global {} { -#@ # global route_global_keep_tmp_data -#@ # global rt66_dont_lock_dir -#@ # -#@ # set rt66_dont_lock_dir TRUE -#@ # -#@ # for { set i 0} {1==1} {incr i} { -#@ # set wdir [file join [pwd] ".route_global.$i"] -#@ # if {[file exist $wdir] == 0} { -#@ # break; -#@ # } -#@ # } -#@ # -#@ # set_routing_options -cut_out_covered_port CORE_ONLY -#@ # set_routing_options -internal_routing FALSE -#@ # set_routing_options -stick_routing FALSE -#@ # -#@ # ###puts "wdir = $wdir" -#@ # -#@ # set success [route66 -global -dontstop -dir $wdir] -#@ # -#@ # #clean tmp data if required: -#@ # if { $success == 1 } { -#@ # if [catch {string toupper $route_global_keep_tmp_data} result] { -#@ # #variable is not defined -#@ # ###puts "result_1 = $result => removing dir ..." -#@ # catch { file delete -force $wdir } -#@ # } else { -#@ # #variable is set to FALSE -#@ # if { [string compare $result "TRUE"] != 0} { -#@ # ###puts "result_2 = $result => removing dir ..." -#@ # catch { file delete -force $wdir } -#@ # } -#@ # } -#@ # } -#@ # -#@ # set rt66_dont_lock_dir FALSE -#@ # return 1 -#@ #} -#@ #define_proc_attributes route_global -hidden -#@ -#@ #/* Aliases added for report command */ -#@ alias report_clock_constraint "report_timing -path end -to all_registers(-data_pins)" -#@ alias report_clock_fanout "report_transitive_fanout -clock_tree" -#@ alias report_clocks report_clock -#@ alias report_synthetic report_cell -#@ -#@ # Alias added for Ultra backward compatibility mode -#@ alias set_ultra_mode set_ultra_optimization -#@ -#@ # alias for write_sge and menu item in DA for db2sge -#@ -#@ #if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ # set db2sge_script ${synopsys_root}/admin/setup/.dc_write_sge.tcl -#@ #} else { -#@ # set db2sge_script ${synopsys_root}/admin/setup/.dc_write_sge -#@ #} -#@ -#@ #set db2sge_command ${synopsys_root}/${sh_arch}/syn/bin/db2sge -#@ set view_script_submenu_items "\"DA to SGE Transfer\" write_sge" -#@ -#@ -#@ if { $synopsys_program_name != "lc_shell"} { -#@ # read schematic annotation setup file -#@ #source ${synopsys_root}/admin/setup/.dc_annotate -#@ -#@ # setup the default layer settings -#@ #source ${synopsys_root}/admin/setup/.dc_layers -#@ -#@ if {$synopsys_program_name != "dc_sms_shell"} { -#@ source ${synopsys_root}/admin/setup/.dc_name_rules -#@ } -#@ } else { -#@ #for read_lib -html -#@ source ${synopsys_root}/auxx/syn/lc/read_lib_html_msg_list.tcl -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/admin/setup/.dc_name_rules - -#@ # -#@ -#@ # .dc_name_rules Initialization file for -#@ -#@ # Dc_Shell and Design_Analyzer -#@ -#@ # This files defines name rules for target systems. Change_names -#@ # will use this rules to fix the object names. -#@ -#@ #*/ -#@ -#@ -#@ define_name_rules sverilog -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules sverilog -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules sverilog -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ define_name_rules sverilog -reserved { "always" "always_comb" "always_ff" "always_latch" "and" "assert" "assert_strobe" "assign" "automatic" "begin" "bit" "break" "buf" "bufif0" "bufif1" "byte" "case" "casex" "casez" "cell" "changed" "char" "cmos" "config" "const" "continue" "deassign" "default" "defparam" "design" "disable" "do" "edge" "else" "end" "endcase" "endconfig" "endfunction" "endgenerate" "endinterface" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "endtransition" "enum" "event" "export" "extern" "for" "force" "forever" "fork" "forkjoin" "function" "generate" "genvar" "highz0" "highz1" "if" "iff" "ifnone" "import" "incdir" "include" "initial" "inout" "input" "instance" "int" "integer" "interface" "join" "large" "liblist" "library" "localparam" "logic" "longint" "longreal" "macromodule" "medium" "modport" "module" "nand" "negedge" "nmos" "nor" "noshowcancelled" "not" "notif0" "notif1" "or" "output" "packed" "parameter" "pmos" "posedge" "primitive" "process" "priority" "pull0" "pull1" "pullup" "pulldown" "pulsestyle_onevent" "pulsestyle_ondetect" "rcmos" "real" "realtime" "reg" "release" "repeat" "return" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "shortint" "shortreal" "showcancelled" "signed" "small" "specify" "specparam" "static" "strong0" "strong1" "struct" "supply0" "supply1" "table" "task" "time" "timeprecision" "timeunit" "tran" "tranif0" "tranif1" "transition" "tri" "tri0" "tri1" "triand" "trior" "trireg" "type" "typedef" "union" "unique" "use" "unsigned" "vectored" "void" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing -#@ -#@ define_name_rules verilog -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules verilog -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules verilog -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ define_name_rules verilog -reserved { "always" "and" "assign" "automatic" "begin" "buf" "bufif0" "bufif1" "case" "casex" "casez" "cell" "cmos" "config" "deassign" "default" "defparam" "design" "disable" "edge" "else" "end" "endcase" "endconfig" "endfunction" "endgenerate" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "event" "for" "force" "forever" "fork" "function" "generate" "genvar" "highz0" "highz1" "if" "ifnone" "incdir" "include" "initial" "inout" "input" "instance" "integer" "join" "large" "liblist" "library" "localparam" "macromodule" "medium" "module" "nand" "negedge" "nmos" "nor" "noshowcancelled" "not" "notif0" "notif1" "or" "output" "parameter" "pmos" "posedge" "primitive" "pull0" "pull1" "pullup" "pulldown" "pulsestyle_onevent" "pulsestyle_ondetect" "rcmos" "real" "realtime" "reg" "release" "repeat" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "showcancelled" "signed" "small" "specify" "specparam" "strong0" "strong1" "supply0" "supply1" "table" "task" "time" "tran" "tranif0" "tranif1" "tri" "tri0" "tri1" "triand" "trior" "trireg" "unsigned" "use" "vectored" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing -#@ -#@ define_name_rules verilog_1995 -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules verilog_1995 -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules verilog_1995 -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ define_name_rules verilog_1995 -reserved { "always" "and" "assign" "begin" "buf" "bufif0" "bufif1" "case" "casex" "casez" "cell" "cmos" "deassign" "default" "defparam" "design" "disable" "edge" "else" "end" "endcase" "endfunction" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "event" "for" "force" "forever" "fork" "function" "highz0" "highz1" "if" "ifnone" "initial" "inout" "input" "integer" "join" "large" "macromodule" "medium" "module" "nand" "negedge" "nmos" "nor" "notif0" "notif1" "or" "output" "parameter" "pmos" "posedge" "primitive" "pull0" "pull1" "pullup" "pulldown" "rcmos" "real" "realtime" "reg" "release" "repeat" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "small" "specify" "specparam" "strong0" "strong1" "supply0" "supply1" "table" "task" "time" "tran" "tranif0" "tranif1" "tri" "tri0" "tri1" "triand" "trior" "trireg" "vectored" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing -#@ -#@ -#@ ####/* Name rule for VHDL */ -#@ -#@ ####/* Name rule for VHDL */ -#@ -#@ ####/* Name rule for VHDL */ -#@ -#@ define_name_rules vhdl -reserved_words { "abs" "access" "after" "alias" "all" "and" "architecture" "array" "assert" "attribute" \ -#@ "begin" "block" "body" "buffer" "bus" "case" "component" "configuration" "constant" "disconnect" "downto" "else" "elsif" "end" "entity" "exit" "file" "for" "function" "generate" "generic" "group" "guarded" "if" "impure" "in" "inertial" "inout" "is" "label" "library" "linkage" "literal" "loop" "map" "mod" "nand" "new" "next" "nor" "not" "null" "of" "on" "open" "or" "others" "out" "package" "port" "postponed" "procedure" "process" "pure" "range" "record" "register" "reject" "rem" "report" "return" "rol" "ror" "select" "severity" "signal" "shared" "sla" "sll" "sra" "srl" "subtype" "then" "to" "transport" "type" "unaffected" "units" "until" "use" "variable" "wait" "when" "while" "with" "xnor" "xor"} -case_insensitive -target_bus_naming_style "%s(%d)" -replacement_char "x" -special vhdl -#@ define_name_rules vhdl -type net -allowed "A-Z a-z _ 0-9 " -first_restricted "0-9 _" -last_restricted "_" -#@ define_name_rules vhdl -type port -allowed "A-Z a-z _ 0-9 " -first_restricted "0-9 _" -last_restricted "_" -#@ define_name_rules vhdl -type cell -allowed "A-Z a-z _ 0-9" -first_restricted "0-9 _" -last_restricted "_" -#@ define_name_rules vhdl -map { {{"__","_"},{"_$",""}} } -#@ -#@ ####/* Name rule for VHDL */ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/admin/setup/.dc_name_rules - -#@ -#@ if { $synopsys_program_name == "psyn_gui"} { -#@ # read RouteCompiler GUI file for timing critical pathes. -#@ source ${synopsys_root}/auxx/syn/route_gui/write_route_timing_path.tcl -#@ } -#@ -#@ # Set physopt_dw_opto to false -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ set physopt_dw_opto FALSE -#@ } -#@ -#@ #/* Read budgeting setup script */ -#@ -#@ if { [string compare $dc_shell_mode "default"] == 0 } { -#@ -#@ # Need a encrypted file in Tcl format for budget.setup.et -#@ if { $sh_arch != "msvc50" && $sh_arch != "alpha_nt" } { -#@ # source -e synopsys_root + "/admin/setup/budget.setup.et" -#@ } -#@ } -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ source $synopsys_root/auxx/syn/.icc_procs.tcl -#@ source -encrypted $synopsys_root/auxx/syn/cts/fast_atomic_cts.tcl.e -#@ } -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ alias report_scenario report_scenarios -#@ } -#@ -#@ # floorplanning preferences globals -#@ global fp_snap_type -#@ -#@ set fp_snap_type(port) wiretrack -#@ set fp_snap_type(cell) litho -#@ set fp_snap_type(pin) wiretrack -#@ set fp_snap_type(movebound) litho -#@ set fp_snap_type(port_shape) wiretrack -#@ set fp_snap_type(wiring_keepout) wiretrack -#@ set fp_snap_type(placement_keepout) litho -#@ set fp_snap_type(net_shape) wiretrack -#@ set fp_snap_type(route_shape) wiretrack -#@ set fp_snap_type(none) litho -#@ -#@ # STAR 9000615813. PWR-18 is no longer internally suppressed. -#@ # Instead call tcl suppress_message so that it can be unsuppressed by users in -#@ # command line if needed -#@ suppress_message PWR-18 -#@ -#@ # alias for write_sge is always the last line of the setup file -#@ #if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ # alias write_sge "source db2sge_script" -#@ #} else { -#@ # alias write_sge "include db2sge_script" -#@ #} -#@ -#@ if { $dc_shell_mode == "tcl" } { -#@ # Configure Execute script dialog to display .tcl files -#@ set view_execute_script_suffix "$view_execute_script_suffix .tcl" -#@ } -#@ -#@ # -#@ # Shirley Lu 5/15/2007 -#@ # -#@ # Invoke NCX validation/correlation/fomatter from lc_shell: -#@ # -#@ # UNIX shell: -#@ # setenv SYNOPSYS_NCX_ROOT /mydisk/ncx_2007.06 -#@ # -#@ -#@ if {[info exists env(SYNOPSYS_NCX_ROOT)]} { -#@ -#@ set ncx_path $env(SYNOPSYS_NCX_ROOT)/ncx/${sh_arch}/bin -#@ -#@ # -#@ # check_ccs_lib -#@ # use libchecker under $ncx_path defined above -#@ # Disable this command since 2010.12-SP3 (should be done in 2010.12 release) -#@ #proc check_ccs_lib {args} { -#@ # global ncx_path -#@ # set cmdStr [linsert $args 0 ${ncx_path}/libchecker -lc_shell] -#@ # set cmd [open "| $cmdStr 2>@ stdout"] -#@ # catch { -#@ # while {[gets $cmd info] >= 0} { -#@ # echo $info -#@ # } -#@ # } -#@ # if {[catch {close $cmd} msg]} { -#@ # } -#@ #} -#@ -#@ # -#@ # format_lib -#@ # use ncx under $ncx_path defined above -#@ # Disable format_lib command in 2014.09 release -- xwwang, 7/25/2014 -#@ #proc format_lib {args} { -#@ # global ncx_path -#@ # echo "Warning: format_lib command is scheduled to become obsolete in a future production release." -#@ # set cmdStr [linsert $args 0 ${ncx_path}/ncx -lc_shell] -#@ # set cmd [open "| $cmdStr 2>@ stdout"] -#@ # catch { -#@ # while {[gets $cmd info] >= 0} { -#@ # echo $info -#@ # } -#@ # } -#@ # if {[catch {close $cmd} msg]} { -#@ # } -#@ #} -#@ -#@ } -#@ -#@ proc valias {v_orig v_alias} { -#@ uplevel 1 "upvar 0 $v_orig $v_alias" -#@ } -#@ -#@ set lc_run_from_legacy_library_compiler "true" -#@ -#@ set lc_enable_legacy_library_compiler "false" -#@ -#@ valias lc_enable_legacy_library_compiler lc_enable_common_shell_lc -#@ -#@ if {[info exists ::env(SYNOPSYS_LC_ROOT)] && [file exists $::env(SYNOPSYS_LC_ROOT)/$::sh_arch/lc/bin/lc_shell_exec]} { -#@ # make lc man pages search path override the default man page search path -#@ set man_path [linsert $man_path 0 $::env(SYNOPSYS_LC_ROOT)/doc/lc/man] -#@ } else { -#@ set lc_link "$::synopsys_root/$::sh_arch/syn/bin/lc_shell_exec" -#@ while { [file exists $lc_link] && [file type $lc_link] == "link"} { -#@ set lc_link [file readlink $lc_link] -#@ } -#@ # resolve symbol-link to get $exec_path of lc_shell_exec -#@ if { [file exists $lc_link] } { -#@ set LC_ROOT [file dirname [file dirname [file dirname [file dirname $lc_link]]]] -#@ set man_path [linsert $man_path 0 $LC_ROOT/doc/lc/man] -#@ } -#@ } -#@ -#@ source ${synopsys_root}/auxx/syn/lc_commands.tbc -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lc_commands.tbc - -#@ ############################################################################## -#@ # Author : Liping Zhao -#@ # History: 2016/11/21 created -#@ # Description: This is the source tcl file of run_nglc.tbc. -#@ # The procs are all for run library compiler under the hood. -#@ # These procs are exracted from .synopsys_dc.setup -#@ ############################################################################## -#@ # TclPro::Compiler::Include -#@ -#@ if {[catch {package require tbcload 1.6} err] == 1} { -#@ return -code error "[info script]: The TclPro ByteCode Loader is not available or does not support the correct version -- $err" -#@ } -#@ tbcload::bceval { -#@ TclPro ByteCode 2 0 1.7 8.5 -#@ 44 0 426 61 0 0 312 0 12 44 44 -1 -1 -#@ 426 -#@ `:G,f=!CM1qv2&|=!A8#>!*BEKs!6#o9v.EW< -#@ !E;kpvJSapvQXxOwI1IOwI1IOwI1IOwI1IOwI1IOwI1IOwI1IOw -#@ 44 -#@ I%%n#;c(;v0g>a'?qwn#I%%n#I%%n#I%%n#I%%n#I%%n#I%%n#Hq^R# -#@ 61 -#@ x -#@ 4 -#@ ,CHr@ -#@ x -#@ 23 -#@ lj|Z?!aiaEw>m#H8&Z)F5mNaEt-E- -#@ x -#@ 1 -#@ A! -#@ p -#@ 5 0 29 3 0 0 20 0 9 5 5 -1 -1 -#@ 29 -#@ w0EpvQks6#;>fv!E*<!8^w!!a9)!!&E&s -#@ !18:3w4Ki!8^w!!KJv!!&E&s!1rA=!;Yq9-C^w -#@ !!+?!!!1;l!,A^w!!+?!!!fqlwv5v!!!D!!!!gF#!!&E&s!:8B=!4,tl#,eN48;I%!!'BWMe`BJ>'0.#3WW!0#>6#3# -#@ Ts!TG;I/m&3,!/uJv!#0EMe`BLP|f.#3WW!0#>6#82Ts!TG;I/o,3,!1,|v!#0EMe`BJ -#@ >'0.#3WW!0#>6#:8Ts!TG;I/m&3,!/uJv!#0E!^KnMe`BJ>'0.#3WW!0#>6#<>Ts!TG;I/m&3,!/uJv!#0E!_KnMe`BJ>'0.#3 -#@ WW!0#>6#>DTs!TG;I/m&3,!/uJv!#0Em#HvdM -#@ e`BBKMT+#3WW!w0EMe`BBKMT+#3WW!w0EMe`BBKMT+#3WW!w0EMe`BBKMT+#3WW!w0Em#HvdKv -#@ x -#@ 3 -#@ g'i- -#@ 0 -#@ 0 -#@ 1 2 -#@ 1 -#@ ?v -#@ 0 0 256 -#@ 3 -#@ g'i- -#@ 1 0 0 -#@ x -#@ 13 -#@ qd,r@dIa:@e-%lB.v -#@ x -#@ 6 -#@ 'E%6B_-v -#@ p -#@ 1 0 7 1 0 0 4 0 2 1 1 -1 -1 -#@ 7 -#@ ,|&v!)'!! -#@ 1 -#@ z -#@ 1 -#@ '! -#@ 1 -#@ x -#@ 21 -#@ w3F/D'gi'FrZ!iCdIa:@e-%lB.v -#@ 0 -#@ 0 -#@ 1 1 -#@ 4 -#@ %N|(F -#@ 0 0 256 -#@ x -#@ 21 -#@ w3F/D'gi'FrZ!iCdIa:@e-%lB.v -#@ x -#@ 5 -#@ %N|(FA! -#@ p -#@ 10 0 92 13 0 0 40 0 5 10 10 -1 -1 -#@ 92 -#@ )NrUNw,?WcEh7|7An1g+ -#@ x -#@ 5 -#@ )lP)F1v -#@ x -#@ 19 -#@ ,v(Z?!aiaEmo3mBm+BRAyOl, -#@ x -#@ 21 -#@ w3F/D'gi'FrZ!iCdIa:@VhrU@?v -#@ x -#@ 18 -#@ #k|Z?(FuSAhaBq@c^CkBHSw -#@ 0 -#@ 0 -#@ 1 3 -#@ 4 -#@ %N|(F -#@ 0 0 256 -#@ 8 -#@ o4jY?m'cSA -#@ 1 0 0 -#@ 4 -#@ g3IID -#@ 2 0 0 -#@ x -#@ 14 -#@ #k|Z?r0H8Aw9fwGJ%% -#@ p -#@ 7 0 70 13 0 0 28 0 6 7 7 -1 -1 -#@ 70 -#@ )Nre`B;a9?)v*<N%Je|v -#@ 13 -#@ x -#@ 3 -#@ _e|+ -#@ x -#@ 15 -#@ kaT5BgxUgCr6m*E_I-, -#@ x -#@ 6 -#@ sT2TAIPw -#@ x -#@ 8 -#@ m'cSANjkSA -#@ x -#@ 1 -#@ +v -#@ x -#@ 5 -#@ n0Hr@7v -#@ x -#@ 12 -#@ #graEv_Bq@,0B(F -#@ x -#@ 4 -#@ m'cSA -#@ x -#@ 6 -#@ gpbSAPSw -#@ x -#@ 6 -#@ AP5cE?Sw -#@ x -#@ 18 -#@ kaT5Bmv -#@ 0 -#@ 0 -#@ 0 1 -#@ 8 -#@ m'cSANjkSA -#@ 0 0 0 -#@ x -#@ 14 -#@ 4rBfD1-0CFq&fwGJ%% -#@ x -#@ 10 -#@ (KxhCN1-.DQ-v -#@ p -#@ 17 0 213 23 2 1 88 2 10 17 21 -1 -1 -#@ 213 -#@ w0E!8^w!!2V'!!*i=6#4;tl#=MGY!g@#!!ee6(!H,FN-gE -#@ EfR8SUNw

    :v8P60%.EW pkgname pkgversion]} { -#@ # Ignore everything not matching our pattern for -#@ # package names. -#@ continue -#@ } -#@ try { -#@ package vcompare $pkgversion 0 -#@ } on error {} { -#@ # Ignore everything where the version part is not -#@ # acceptable to "package vcompare". -#@ continue -#@ } -#@ -#@ if {[package ifneeded $pkgname $pkgversion] ne {}} { -#@ # There's already a provide script registered for -#@ # this version of this package. Since all units of -#@ # code claiming to be the same version of the same -#@ # package ought to be identical, just stick with -#@ # the one we already have. -#@ continue -#@ } -#@ -#@ # We have found a candidate, generate a "provide script" -#@ # for it, and remember it. Note that we are using ::list -#@ # to do this; locally [list] means something else without -#@ # the namespace specifier. -#@ -#@ # NOTE. When making changes to the format of the provide -#@ # command generated below CHECK that the 'LOCATE' -#@ # procedure in core file 'platform/shell.tcl' still -#@ # understands it, or, if not, update its implementation -#@ # appropriately. -#@ # -#@ # Right now LOCATE's implementation assumes that the path -#@ # of the package file is the last element in the list. -#@ -#@ package ifneeded $pkgname $pkgversion "[::list package provide $pkgname $pkgversion];[::list source -encoding utf-8 $file]" -#@ -#@ # We abort in this unknown handler only if we got a -#@ # satisfying candidate for the requested package. -#@ # Otherwise we still have to fallback to the regular -#@ # package search to complete the processing. -#@ -#@ if {($pkgname eq $name) -#@ && [package vsatisfies $pkgversion {*}$args]} { -#@ set satisfied 1 -#@ -#@ # We do not abort the loop, and keep adding provide -#@ # scripts for every candidate in the directory, just -#@ # remember to not fall back to the regular search -#@ # anymore. -#@ } -#@ } -#@ } -#@ } -#@ -#@ if {$satisfied} { -#@ return -#@ } -#@ } -#@ -#@ # Fallback to previous command, if existing. See comment above about -#@ # ::list... -#@ -#@ if {[llength $original]} { -#@ uplevel 1 $original [::linsert $args 0 $name] -#@ } -#@ } -#@ -#@ # ::tcl::tm::Defaults -- -#@ # -#@ # Determines the default search paths. -#@ # -#@ # Arguments -#@ # None -#@ # -#@ # Results -#@ # None. -#@ # -#@ # Sideeffects -#@ # May add paths to the list of defaults. -#@ -#@ proc ::tcl::tm::Defaults {} { -#@ global env tcl_platform -#@ -#@ lassign [split [info tclversion] .] major minor -#@ set exe [file normalize [info nameofexecutable]] -#@ -#@ # Note that we're using [::list], not [list] because [list] means -#@ # something other than [::list] in this namespace. -#@ roots [::list [file dirname [info library]] [file join [file dirname [file dirname $exe]] lib] ] -#@ -#@ if {$tcl_platform(platform) eq "windows"} { -#@ set sep ";" -#@ } else { -#@ set sep ":" -#@ } -#@ for {set n $minor} {$n >= 0} {incr n -1} { -#@ foreach ev [::list TCL${major}.${n}_TM_PATH TCL${major}_${n}_TM_PATH ] { -#@ if {![info exists env($ev)]} continue -#@ foreach p [split $env($ev) $sep] { -#@ path add $p -#@ } -#@ } -#@ } -#@ return -#@ } -#@ -#@ # ::tcl::tm::roots -- -#@ # -#@ # Public API to the module path. See specification. -#@ # -#@ # Arguments -#@ # paths - List of 'root' paths to derive search paths from. -#@ # -#@ # Results -#@ # No result. -#@ # -#@ # Sideeffects -#@ # Calls 'path add' to paths to the list of module search paths. -#@ -#@ proc ::tcl::tm::roots {paths} { -#@ lassign [split [package present Tcl] .] major minor -#@ foreach pa $paths { -#@ set p [file join $pa tcl$major] -#@ for {set n $minor} {$n >= 0} {incr n -1} { -#@ set px [file join $p ${major}.${n}] -#@ if {![interp issafe]} {set px [file normalize $px]} -#@ path add $px -#@ } -#@ set px [file join $p site-tcl] -#@ if {![interp issafe]} {set px [file normalize $px]} -#@ path add $px -#@ } -#@ return -#@ } -#@ -#@ # Initialization. Set up the default paths, then insert the new handler into -#@ # the chain. -#@ -#@ if {![interp issafe]} {::tcl::tm::Defaults} -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/tm.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/package.tcl - -#@ # package.tcl -- -#@ # -#@ # utility procs formerly in init.tcl which can be loaded on demand -#@ # for package management. -#@ # -#@ # Copyright (c) 1991-1993 The Regents of the University of California. -#@ # Copyright (c) 1994-1998 Sun Microsystems, Inc. -#@ # -#@ # See the file "license.terms" for information on usage and redistribution -#@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. -#@ # -#@ -#@ namespace eval tcl::Pkg {} -#@ -#@ # ::tcl::Pkg::CompareExtension -- -#@ # -#@ # Used internally by pkg_mkIndex to compare the extension of a file to a given -#@ # extension. On Windows, it uses a case-insensitive comparison because the -#@ # file system can be file insensitive. -#@ # -#@ # Arguments: -#@ # fileName name of a file whose extension is compared -#@ # ext (optional) The extension to compare against; you must -#@ # provide the starting dot. -#@ # Defaults to [info sharedlibextension] -#@ # -#@ # Results: -#@ # Returns 1 if the extension matches, 0 otherwise -#@ -#@ proc tcl::Pkg::CompareExtension {fileName {ext {}}} { -#@ global tcl_platform -#@ if {$ext eq ""} {set ext [info sharedlibextension]} -#@ if {$tcl_platform(platform) eq "windows"} { -#@ return [string equal -nocase [file extension $fileName] $ext] -#@ } else { -#@ # Some unices add trailing numbers after the .so, so -#@ # we could have something like '.so.1.2'. -#@ set root $fileName -#@ while {1} { -#@ set currExt [file extension $root] -#@ if {$currExt eq $ext} { -#@ return 1 -#@ } -#@ -#@ # The current extension does not match; if it is not a numeric -#@ # value, quit, as we are only looking to ignore version number -#@ # extensions. Otherwise we might return 1 in this case: -#@ # tcl::Pkg::CompareExtension foo.so.bar .so -#@ # which should not match. -#@ -#@ if {![string is integer -strict [string range $currExt 1 end]]} { -#@ return 0 -#@ } -#@ set root [file rootname $root] -#@ } -#@ } -#@ } -#@ -#@ # pkg_mkIndex -- -#@ # This procedure creates a package index in a given directory. The package -#@ # index consists of a "pkgIndex.tcl" file whose contents are a Tcl script that -#@ # sets up package information with "package require" commands. The commands -#@ # describe all of the packages defined by the files given as arguments. -#@ # -#@ # Arguments: -#@ # -direct (optional) If this flag is present, the generated -#@ # code in pkgMkIndex.tcl will cause the package to be -#@ # loaded when "package require" is executed, rather -#@ # than lazily when the first reference to an exported -#@ # procedure in the package is made. -#@ # -verbose (optional) Verbose output; the name of each file that -#@ # was successfully rocessed is printed out. Additionally, -#@ # if processing of a file failed a message is printed. -#@ # -load pat (optional) Preload any packages whose names match -#@ # the pattern. Used to handle DLLs that depend on -#@ # other packages during their Init procedure. -#@ # dir - Name of the directory in which to create the index. -#@ # args - Any number of additional arguments, each giving -#@ # a glob pattern that matches the names of one or -#@ # more shared libraries or Tcl script files in -#@ # dir. -#@ -#@ proc pkg_mkIndex {args} { -#@ set usage {"pkg_mkIndex ?-direct? ?-lazy? ?-load pattern? ?-verbose? ?--? dir ?pattern ...?"} -#@ -#@ set argCount [llength $args] -#@ if {$argCount < 1} { -#@ return -code error "wrong # args: should be\n$usage" -#@ } -#@ -#@ set more "" -#@ set direct 1 -#@ set doVerbose 0 -#@ set loadPat "" -#@ for {set idx 0} {$idx < $argCount} {incr idx} { -#@ set flag [lindex $args $idx] -#@ switch -glob -- $flag { -#@ -- { -#@ # done with the flags -#@ incr idx -#@ break -#@ } -#@ -verbose { -#@ set doVerbose 1 -#@ } -#@ -lazy { -#@ set direct 0 -#@ append more " -lazy" -#@ } -#@ -direct { -#@ append more " -direct" -#@ } -#@ -load { -#@ incr idx -#@ set loadPat [lindex $args $idx] -#@ append more " -load $loadPat" -#@ } -#@ -* { -#@ return -code error "unknown flag $flag: should be\n$usage" -#@ } -#@ default { -#@ # done with the flags -#@ break -#@ } -#@ } -#@ } -#@ -#@ set dir [lindex $args $idx] -#@ set patternList [lrange $args [expr {$idx + 1}] end] -#@ if {![llength $patternList]} { -#@ set patternList [list "*.tcl" "*[info sharedlibextension]"] -#@ } -#@ -#@ try { -#@ set fileList [glob -directory $dir -tails -types {r f} -- {*}$patternList] -#@ } on error {msg opt} { -#@ return -options $opt $msg -#@ } -#@ foreach file $fileList { -#@ # For each file, figure out what commands and packages it provides. -#@ # To do this, create a child interpreter, load the file into the -#@ # interpreter, and get a list of the new commands and packages that -#@ # are defined. -#@ -#@ if {$file eq "pkgIndex.tcl"} { -#@ continue -#@ } -#@ -#@ set c [interp create] -#@ -#@ # Load into the child any packages currently loaded in the parent -#@ # interpreter that match the -load pattern. -#@ -#@ if {$loadPat ne ""} { -#@ if {$doVerbose} { -#@ tclLog "currently loaded packages: '[info loaded]'" -#@ tclLog "trying to load all packages matching $loadPat" -#@ } -#@ if {![llength [info loaded]]} { -#@ tclLog "warning: no packages are currently loaded, nothing" -#@ tclLog "can possibly match '$loadPat'" -#@ } -#@ } -#@ foreach pkg [info loaded] { -#@ if {![string match -nocase $loadPat [lindex $pkg 1]]} { -#@ continue -#@ } -#@ if {$doVerbose} { -#@ tclLog "package [lindex $pkg 1] matches '$loadPat'" -#@ } -#@ try { -#@ load [lindex $pkg 0] [lindex $pkg 1] $c -#@ } on error err { -#@ if {$doVerbose} { -#@ tclLog "warning: load [lindex $pkg 0] [lindex $pkg 1]\nfailed with: $err" -#@ } -#@ } on ok {} { -#@ if {$doVerbose} { -#@ tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]" -#@ } -#@ } -#@ if {[lindex $pkg 1] eq "Tk"} { -#@ # Withdraw . if Tk was loaded, to avoid showing a window. -#@ $c eval [list wm withdraw .] -#@ } -#@ } -#@ -#@ $c eval { -#@ # Stub out the package command so packages can require other -#@ # packages. -#@ -#@ rename package __package_orig -#@ proc package {what args} { -#@ switch -- $what { -#@ require { -#@ return; # Ignore transitive requires -#@ } -#@ default { -#@ __package_orig $what {*}$args -#@ } -#@ } -#@ } -#@ proc tclPkgUnknown args {} -#@ package unknown tclPkgUnknown -#@ -#@ # Stub out the unknown command so package can call into each other -#@ # during their initialilzation. -#@ -#@ proc unknown {args} {} -#@ -#@ # Stub out the auto_import mechanism -#@ -#@ proc auto_import {args} {} -#@ -#@ # reserve the ::tcl namespace for support procs and temporary -#@ # variables. This might make it awkward to generate a -#@ # pkgIndex.tcl file for the ::tcl namespace. -#@ -#@ namespace eval ::tcl { -#@ variable dir ;# Current directory being processed -#@ variable file ;# Current file being processed -#@ variable direct ;# -direct flag value -#@ variable x ;# Loop variable -#@ variable debug ;# For debugging -#@ variable type ;# "load" or "source", for -direct -#@ variable namespaces ;# Existing namespaces (e.g., ::tcl) -#@ variable packages ;# Existing packages (e.g., Tcl) -#@ variable origCmds ;# Existing commands -#@ variable newCmds ;# Newly created commands -#@ variable newPkgs {} ;# Newly created packages -#@ } -#@ } -#@ -#@ $c eval [list set ::tcl::dir $dir] -#@ $c eval [list set ::tcl::file $file] -#@ $c eval [list set ::tcl::direct $direct] -#@ -#@ # Download needed procedures into the slave because we've just deleted -#@ # the unknown procedure. This doesn't handle procedures with default -#@ # arguments. -#@ -#@ foreach p {::tcl::Pkg::CompareExtension} { -#@ $c eval [list namespace eval [namespace qualifiers $p] {}] -#@ $c eval [list proc $p [info args $p] [info body $p]] -#@ } -#@ -#@ try { -#@ $c eval { -#@ set ::tcl::debug "loading or sourcing" -#@ -#@ # we need to track command defined by each package even in the -#@ # -direct case, because they are needed internally by the -#@ # "partial pkgIndex.tcl" step above. -#@ -#@ proc ::tcl::GetAllNamespaces {{root ::}} { -#@ set list $root -#@ foreach ns [namespace children $root] { -#@ lappend list {*}[::tcl::GetAllNamespaces $ns] -#@ } -#@ return $list -#@ } -#@ -#@ # init the list of existing namespaces, packages, commands -#@ -#@ foreach ::tcl::x [::tcl::GetAllNamespaces] { -#@ set ::tcl::namespaces($::tcl::x) 1 -#@ } -#@ foreach ::tcl::x [package names] { -#@ if {[package provide $::tcl::x] ne ""} { -#@ set ::tcl::packages($::tcl::x) 1 -#@ } -#@ } -#@ set ::tcl::origCmds [info commands] -#@ -#@ # Try to load the file if it has the shared library extension, -#@ # otherwise source it. It's important not to try to load -#@ # files that aren't shared libraries, because on some systems -#@ # (like SunOS) the loader will abort the whole application -#@ # when it gets an error. -#@ -#@ if {[::tcl::Pkg::CompareExtension $::tcl::file [info sharedlibextension]]} { -#@ # The "file join ." command below is necessary. Without -#@ # it, if the file name has no \'s and we're on UNIX, the -#@ # load command will invoke the LD_LIBRARY_PATH search -#@ # mechanism, which could cause the wrong file to be used. -#@ -#@ set ::tcl::debug loading -#@ load [file join $::tcl::dir $::tcl::file] -#@ set ::tcl::type load -#@ } else { -#@ set ::tcl::debug sourcing -#@ source [file join $::tcl::dir $::tcl::file] -#@ set ::tcl::type source -#@ } -#@ -#@ # As a performance optimization, if we are creating direct -#@ # load packages, don't bother figuring out the set of commands -#@ # created by the new packages. We only need that list for -#@ # setting up the autoloading used in the non-direct case. -#@ if {!$::tcl::direct} { -#@ # See what new namespaces appeared, and import commands -#@ # from them. Only exported commands go into the index. -#@ -#@ foreach ::tcl::x [::tcl::GetAllNamespaces] { -#@ if {![info exists ::tcl::namespaces($::tcl::x)]} { -#@ namespace import -force ${::tcl::x}::* -#@ } -#@ -#@ # Figure out what commands appeared -#@ -#@ foreach ::tcl::x [info commands] { -#@ set ::tcl::newCmds($::tcl::x) 1 -#@ } -#@ foreach ::tcl::x $::tcl::origCmds { -#@ unset -nocomplain ::tcl::newCmds($::tcl::x) -#@ } -#@ foreach ::tcl::x [array names ::tcl::newCmds] { -#@ # determine which namespace a command comes from -#@ -#@ set ::tcl::abs [namespace origin $::tcl::x] -#@ -#@ # special case so that global names have no -#@ # leading ::, this is required by the unknown -#@ # command -#@ -#@ set ::tcl::abs [lindex [auto_qualify $::tcl::abs ::] 0] -#@ -#@ if {$::tcl::x ne $::tcl::abs} { -#@ # Name changed during qualification -#@ -#@ set ::tcl::newCmds($::tcl::abs) 1 -#@ unset ::tcl::newCmds($::tcl::x) -#@ } -#@ } -#@ } -#@ } -#@ -#@ # Look through the packages that appeared, and if there is a -#@ # version provided, then record it -#@ -#@ foreach ::tcl::x [package names] { -#@ if {[package provide $::tcl::x] ne "" -#@ && ![info exists ::tcl::packages($::tcl::x)]} { -#@ lappend ::tcl::newPkgs [list $::tcl::x [package provide $::tcl::x]] -#@ } -#@ } -#@ } -#@ } on error msg { -#@ set what [$c eval set ::tcl::debug] -#@ if {$doVerbose} { -#@ tclLog "warning: error while $what $file: $msg" -#@ } -#@ } on ok {} { -#@ set what [$c eval set ::tcl::debug] -#@ if {$doVerbose} { -#@ tclLog "successful $what of $file" -#@ } -#@ set type [$c eval set ::tcl::type] -#@ set cmds [lsort [$c eval array names ::tcl::newCmds]] -#@ set pkgs [$c eval set ::tcl::newPkgs] -#@ if {$doVerbose} { -#@ if {!$direct} { -#@ tclLog "commands provided were $cmds" -#@ } -#@ tclLog "packages provided were $pkgs" -#@ } -#@ if {[llength $pkgs] > 1} { -#@ tclLog "warning: \"$file\" provides more than one package ($pkgs)" -#@ } -#@ foreach pkg $pkgs { -#@ # cmds is empty/not used in the direct case -#@ lappend files($pkg) [list $file $type $cmds] -#@ } -#@ -#@ if {$doVerbose} { -#@ tclLog "processed $file" -#@ } -#@ } -#@ interp delete $c -#@ } -#@ -#@ append index "# Tcl package index file, version 1.1\n" -#@ append index "# This file is generated by the \"pkg_mkIndex$more\" command\n" -#@ append index "# and sourced either when an application starts up or\n" -#@ append index "# by a \"package unknown\" script. It invokes the\n" -#@ append index "# \"package ifneeded\" command to set up package-related\n" -#@ append index "# information so that packages will be loaded automatically\n" -#@ append index "# in response to \"package require\" commands. When this\n" -#@ append index "# script is sourced, the variable \$dir must contain the\n" -#@ append index "# full path name of this file's directory.\n" -#@ -#@ foreach pkg [lsort [array names files]] { -#@ set cmd {} -#@ lassign $pkg name version -#@ lappend cmd ::tcl::Pkg::Create -name $name -version $version -#@ foreach spec [lsort -index 0 $files($pkg)] { -#@ foreach {file type procs} $spec { -#@ if {$direct} { -#@ set procs {} -#@ } -#@ lappend cmd "-$type" [list $file $procs] -#@ } -#@ } -#@ append index "\n[eval $cmd]" -#@ } -#@ -#@ set f [open [file join $dir pkgIndex.tcl] w] -#@ puts $f $index -#@ close $f -#@ } -#@ -#@ # tclPkgSetup -- -#@ # This is a utility procedure use by pkgIndex.tcl files. It is invoked as -#@ # part of a "package ifneeded" script. It calls "package provide" to indicate -#@ # that a package is available, then sets entries in the auto_index array so -#@ # that the package's files will be auto-loaded when the commands are used. -#@ # -#@ # Arguments: -#@ # dir - Directory containing all the files for this package. -#@ # pkg - Name of the package (no version number). -#@ # version - Version number for the package, such as 2.1.3. -#@ # files - List of files that constitute the package. Each -#@ # element is a sub-list with three elements. The first -#@ # is the name of a file relative to $dir, the second is -#@ # "load" or "source", indicating whether the file is a -#@ # loadable binary or a script to source, and the third -#@ # is a list of commands defined by this file. -#@ -#@ proc tclPkgSetup {dir pkg version files} { -#@ global auto_index -#@ -#@ package provide $pkg $version -#@ foreach fileInfo $files { -#@ set f [lindex $fileInfo 0] -#@ set type [lindex $fileInfo 1] -#@ foreach cmd [lindex $fileInfo 2] { -#@ if {$type eq "load"} { -#@ set auto_index($cmd) [list load [file join $dir $f] $pkg] -#@ } else { -#@ set auto_index($cmd) [list source [file join $dir $f]] -#@ } -#@ } -#@ } -#@ } -#@ -#@ # tclPkgUnknown -- -#@ # This procedure provides the default for the "package unknown" function. It -#@ # is invoked when a package that's needed can't be found. It scans the -#@ # auto_path directories and their immediate children looking for pkgIndex.tcl -#@ # files and sources any such files that are found to setup the package -#@ # database. As it searches, it will recognize changes to the auto_path and -#@ # scan any new directories. -#@ # -#@ # Arguments: -#@ # name - Name of desired package. Not used. -#@ # version - Version of desired package. Not used. -#@ # exact - Either "-exact" or omitted. Not used. -#@ -#@ proc tclPkgUnknown {name args} { -#@ global auto_path env -#@ -#@ if {![info exists auto_path]} { -#@ return -#@ } -#@ # Cache the auto_path, because it may change while we run through the -#@ # first set of pkgIndex.tcl files -#@ set old_path [set use_path $auto_path] -#@ while {[llength $use_path]} { -#@ set dir [lindex $use_path end] -#@ -#@ # Make sure we only scan each directory one time. -#@ if {[info exists tclSeenPath($dir)]} { -#@ set use_path [lrange $use_path 0 end-1] -#@ continue -#@ } -#@ set tclSeenPath($dir) 1 -#@ -#@ # we can't use glob in safe interps, so enclose the following in a -#@ # catch statement, where we get the pkgIndex files out of the -#@ # subdirectories -#@ catch { -#@ foreach file [glob -directory $dir -join -nocomplain * pkgIndex.tcl] { -#@ set dir [file dirname $file] -#@ if {![info exists procdDirs($dir)]} { -#@ try { -#@ source $file -#@ } trap {POSIX EACCES} {} { -#@ # $file was not readable; silently ignore -#@ continue -#@ } on error msg { -#@ tclLog "error reading package index file $file: $msg" -#@ } on ok {} { -#@ set procdDirs($dir) 1 -#@ } -#@ } -#@ } -#@ } -#@ set dir [lindex $use_path end] -#@ if {![info exists procdDirs($dir)]} { -#@ set file [file join $dir pkgIndex.tcl] -#@ # safe interps usually don't have "file exists", -#@ if {([interp issafe] || [file exists $file])} { -#@ try { -#@ source $file -#@ } trap {POSIX EACCES} {} { -#@ # $file was not readable; silently ignore -#@ continue -#@ } on error msg { -#@ tclLog "error reading package index file $file: $msg" -#@ } on ok {} { -#@ set procdDirs($dir) 1 -#@ } -#@ } -#@ } -#@ -#@ set use_path [lrange $use_path 0 end-1] -#@ -#@ # Check whether any of the index scripts we [source]d above set a new -#@ # value for $::auto_path. If so, then find any new directories on the -#@ # $::auto_path, and lappend them to the $use_path we are working from. -#@ # This gives index scripts the (arguably unwise) power to expand the -#@ # index script search path while the search is in progress. -#@ set index 0 -#@ if {[llength $old_path] == [llength $auto_path]} { -#@ foreach dir $auto_path old $old_path { -#@ if {$dir ne $old} { -#@ # This entry in $::auto_path has changed. -#@ break -#@ } -#@ incr index -#@ } -#@ } -#@ -#@ # $index now points to the first element of $auto_path that has -#@ # changed, or the beginning if $auto_path has changed length Scan the -#@ # new elements of $auto_path for directories to add to $use_path. -#@ # Don't add directories we've already seen, or ones already on the -#@ # $use_path. -#@ foreach dir [lrange $auto_path $index end] { -#@ if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} { -#@ lappend use_path $dir -#@ } -#@ } -#@ set old_path $auto_path -#@ } -#@ } -#@ -#@ # tcl::MacOSXPkgUnknown -- -#@ # This procedure extends the "package unknown" function for MacOSX. It scans -#@ # the Resources/Scripts directories of the immediate children of the auto_path -#@ # directories for pkgIndex files. -#@ # -#@ # Arguments: -#@ # original - original [package unknown] procedure -#@ # name - Name of desired package. Not used. -#@ # version - Version of desired package. Not used. -#@ # exact - Either "-exact" or omitted. Not used. -#@ -#@ proc tcl::MacOSXPkgUnknown {original name args} { -#@ # First do the cross-platform default search -#@ uplevel 1 $original [linsert $args 0 $name] -#@ -#@ # Now do MacOSX specific searching -#@ global auto_path -#@ -#@ if {![info exists auto_path]} { -#@ return -#@ } -#@ # Cache the auto_path, because it may change while we run through the -#@ # first set of pkgIndex.tcl files -#@ set old_path [set use_path $auto_path] -#@ while {[llength $use_path]} { -#@ set dir [lindex $use_path end] -#@ -#@ # Make sure we only scan each directory one time. -#@ if {[info exists tclSeenPath($dir)]} { -#@ set use_path [lrange $use_path 0 end-1] -#@ continue -#@ } -#@ set tclSeenPath($dir) 1 -#@ -#@ # get the pkgIndex files out of the subdirectories -#@ foreach file [glob -directory $dir -join -nocomplain * Resources Scripts pkgIndex.tcl] { -#@ set dir [file dirname $file] -#@ if {![info exists procdDirs($dir)]} { -#@ try { -#@ source $file -#@ } trap {POSIX EACCES} {} { -#@ # $file was not readable; silently ignore -#@ continue -#@ } on error msg { -#@ tclLog "error reading package index file $file: $msg" -#@ } on ok {} { -#@ set procdDirs($dir) 1 -#@ } -#@ } -#@ } -#@ set use_path [lrange $use_path 0 end-1] -#@ -#@ # Check whether any of the index scripts we [source]d above set a new -#@ # value for $::auto_path. If so, then find any new directories on the -#@ # $::auto_path, and lappend them to the $use_path we are working from. -#@ # This gives index scripts the (arguably unwise) power to expand the -#@ # index script search path while the search is in progress. -#@ set index 0 -#@ if {[llength $old_path] == [llength $auto_path]} { -#@ foreach dir $auto_path old $old_path { -#@ if {$dir ne $old} { -#@ # This entry in $::auto_path has changed. -#@ break -#@ } -#@ incr index -#@ } -#@ } -#@ -#@ # $index now points to the first element of $auto_path that has -#@ # changed, or the beginning if $auto_path has changed length Scan the -#@ # new elements of $auto_path for directories to add to $use_path. -#@ # Don't add directories we've already seen, or ones already on the -#@ # $use_path. -#@ foreach dir [lrange $auto_path $index end] { -#@ if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} { -#@ lappend use_path $dir -#@ } -#@ } -#@ set old_path $auto_path -#@ } -#@ } -#@ -#@ # ::tcl::Pkg::Create -- -#@ # -#@ # Given a package specification generate a "package ifneeded" statement -#@ # for the package, suitable for inclusion in a pkgIndex.tcl file. -#@ # -#@ # Arguments: -#@ # args arguments used by the Create function: -#@ # -name packageName -#@ # -version packageVersion -#@ # -load {filename ?{procs}?} -#@ # ... -#@ # -source {filename ?{procs}?} -#@ # ... -#@ # -#@ # Any number of -load and -source parameters may be -#@ # specified, so long as there is at least one -load or -#@ # -source parameter. If the procs component of a module -#@ # specifier is left off, that module will be set up for -#@ # direct loading; otherwise, it will be set up for lazy -#@ # loading. If both -source and -load are specified, the -#@ # -load'ed files will be loaded first, followed by the -#@ # -source'd files. -#@ # -#@ # Results: -#@ # An appropriate "package ifneeded" statement for the package. -#@ -#@ proc ::tcl::Pkg::Create {args} { -#@ append err(usage) "[lindex [info level 0] 0] " -#@ append err(usage) "-name packageName -version packageVersion" -#@ append err(usage) "?-load {filename ?{procs}?}? ... " -#@ append err(usage) "?-source {filename ?{procs}?}? ..." -#@ -#@ set err(wrongNumArgs) "wrong # args: should be \"$err(usage)\"" -#@ set err(valueMissing) "value for \"%s\" missing: should be \"$err(usage)\"" -#@ set err(unknownOpt) "unknown option \"%s\": should be \"$err(usage)\"" -#@ set err(noLoadOrSource) "at least one of -load and -source must be given" -#@ -#@ # process arguments -#@ set len [llength $args] -#@ if {$len < 6} { -#@ error $err(wrongNumArgs) -#@ } -#@ -#@ # Initialize parameters -#@ array set opts {-name {} -version {} -source {} -load {}} -#@ -#@ # process parameters -#@ for {set i 0} {$i < $len} {incr i} { -#@ set flag [lindex $args $i] -#@ incr i -#@ switch -glob -- $flag { -#@ "-name" - -#@ "-version" { -#@ if {$i >= $len} { -#@ error [format $err(valueMissing) $flag] -#@ } -#@ set opts($flag) [lindex $args $i] -#@ } -#@ "-source" - -#@ "-load" { -#@ if {$i >= $len} { -#@ error [format $err(valueMissing) $flag] -#@ } -#@ lappend opts($flag) [lindex $args $i] -#@ } -#@ default { -#@ error [format $err(unknownOpt) [lindex $args $i]] -#@ } -#@ } -#@ } -#@ -#@ # Validate the parameters -#@ if {![llength $opts(-name)]} { -#@ error [format $err(valueMissing) "-name"] -#@ } -#@ if {![llength $opts(-version)]} { -#@ error [format $err(valueMissing) "-version"] -#@ } -#@ -#@ if {!([llength $opts(-source)] || [llength $opts(-load)])} { -#@ error $err(noLoadOrSource) -#@ } -#@ -#@ # OK, now everything is good. Generate the package ifneeded statment. -#@ set cmdline "package ifneeded $opts(-name) $opts(-version) " -#@ -#@ set cmdList {} -#@ set lazyFileList {} -#@ -#@ # Handle -load and -source specs -#@ foreach key {load source} { -#@ foreach filespec $opts(-$key) { -#@ lassign $filespec filename proclist -#@ -#@ if { [llength $proclist] == 0 } { -#@ set cmd "\[list $key \[file join \$dir [list $filename]\]\]" -#@ lappend cmdList $cmd -#@ } else { -#@ lappend lazyFileList [list $filename $key $proclist] -#@ } -#@ } -#@ } -#@ -#@ if {[llength $lazyFileList]} { -#@ lappend cmdList "\[list tclPkgSetup \$dir $opts(-name) $opts(-version) [list $lazyFileList]\]" -#@ } -#@ append cmdline [join $cmdList "\\n"] -#@ return $cmdline -#@ } -#@ -#@ interp alias {} ::pkg::create {} ::tcl::Pkg::Create -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/package.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/pkgIndex.tcl - -#@ # Copyright (c) 2016 Synopsys, Inc. This Synopsys software and all -#@ # associated documentation are proprietary to Synopsys, Inc. and may -#@ # only be used pursuant to the terms and conditions of a written -#@ # license agreement with Synopsys, Inc. All other use, reproduction, -#@ # modification, or distribution of the Synopsys software or the -#@ # associated documentation is strictly prohibited. -#@ -#@ package ifneeded cae 1.0 [list source [file join $dir syn.tcl]] -#@ package ifneeded cae::utils 1.0 [list source [file join $dir utils utils.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/iwidgets4.1/pkgIndex.tcl - -#@ # Tcl package index file -#@ package ifneeded iwidgets 4.1 " -#@ package require itk 4 -#@ namespace eval ::iwidgets { -#@ namespace export * -#@ variable library [file dirname [info script]] -#@ variable version 4.1 -#@ } -#@ source [file join $dir colors.itcl] -#@ source [file join $dir roman.itcl] -#@ source [file join $dir buttonbox.itk] -#@ source [file join $dir calendar.itk] -#@ source [file join $dir canvasprintbox.itk] -#@ source [file join $dir shell.itk] -#@ source [file join $dir dialogshell.itk] -#@ source [file join $dir dialog.itk] -#@ source [file join $dir canvasprintdialog.itk] -#@ source [file join $dir labeledframe.itk] -#@ source [file join $dir checkbox.itk] -#@ source [file join $dir labeledwidget.itk] -#@ source [file join $dir entryfield.itk] -#@ source [file join $dir combobox.itk] -#@ source [file join $dir datefield.itk] -#@ source [file join $dir dateentry.itk] -#@ source [file join $dir disjointlistbox.itk] -#@ source [file join $dir extbutton.itk] -#@ source [file join $dir extfileselectionbox.itk] -#@ source [file join $dir extfileselectiondialog.itk] -#@ source [file join $dir feedback.itk] -#@ source [file join $dir fileselectionbox.itk] -#@ source [file join $dir fileselectiondialog.itk] -#@ source [file join $dir finddialog.itk] -#@ source [file join $dir scrolledwidget.itk] -#@ source [file join $dir hierarchy.itk] -#@ source [file join $dir hyperhelp.itk] -#@ source [file join $dir mainwindow.itk] -#@ source [file join $dir menubar.itk] -#@ source [file join $dir messagebox.itk] -#@ source [file join $dir messagedialog.itk] -#@ source [file join $dir notebook.itk] -#@ source [file join $dir optionmenu.itk] -#@ source [file join $dir panedwindow.itk] -#@ source [file join $dir pane.itk] -#@ source [file join $dir promptdialog.itk] -#@ source [file join $dir pushbutton.itk] -#@ source [file join $dir radiobox.itk] -#@ source [file join $dir regexpfield.itk] -#@ source [file join $dir scrolledcanvas.itk] -#@ source [file join $dir scrolledframe.itk] -#@ source [file join $dir scrolledtext.itk] -#@ source [file join $dir scrolledhtml.itk] -#@ source [file join $dir scrolledlistbox.itk] -#@ source [file join $dir selectionbox.itk] -#@ source [file join $dir selectiondialog.itk] -#@ source [file join $dir spindate.itk] -#@ source [file join $dir spinner.itk] -#@ source [file join $dir spinint.itk] -#@ source [file join $dir spintime.itk] -#@ source [file join $dir tabnotebook.itk] -#@ source [file join $dir tabset.itk] -#@ source [file join $dir timefield.itk] -#@ source [file join $dir timeentry.itk] -#@ source [file join $dir toolbar.itk] -#@ source [file join $dir watch.itk] -#@ package provide iwidgets 4.1 -#@ " -#@ -#@ package ifneeded Iwidgets 4.1 " -#@ package require iwidgets 4.1 -#@ package provide Iwidgets 4.1 -#@ " -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/iwidgets4.1/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsTclPro/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ package ifneeded snpsTclPro 1.0 [list source [file join $dir snpsTclPro.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsTclPro/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsTest/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ package ifneeded snpsTest 1.0 [list source [file join $dir snpsTest.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsTest/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsUtils/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ package ifneeded snpsUtils 1.0 [list source [file join $dir snpsUtils.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/snpsUtils/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/pkgIndex.tcl - -#@ package ifneeded Itcl 3.4 {load {} Itcl} -#@ package ifneeded tbcload 1.7 {load {} tbcload} -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/snps_tcl/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/reg/pkgIndex.tcl - -#@ if {([info commands ::tcl::pkgconfig] eq "") -#@ || ([info sharedlibextension] ne ".dll")} return -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/reg/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/dde/pkgIndex.tcl - -#@ if {([info commands ::tcl::pkgconfig] eq "") -#@ || ([info sharedlibextension] ne ".dll")} return -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/dde/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/platform/pkgIndex.tcl - -#@ package ifneeded platform 1.0.13 [list source [file join $dir platform.tcl]] -#@ package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]] -#@ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/platform/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/tcltest/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ if {![package vsatisfies [package provide Tcl] 8.5]} {return} -#@ package ifneeded tcltest 2.3.8 [list source [file join $dir tcltest.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/tcltest/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/http/pkgIndex.tcl - -#@ if {![package vsatisfies [package provide Tcl] 8.6]} {return} -#@ package ifneeded http 2.8.8 [list tclPkgSetup $dir http 2.8.8 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/http/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/msgcat/pkgIndex.tcl - -#@ if {![package vsatisfies [package provide Tcl] 8.5]} {return} -#@ package ifneeded msgcat 1.5.2 [list source [file join $dir msgcat.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/msgcat/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/http1.0/pkgIndex.tcl - -#@ # Tcl package index file, version 1.0 -#@ # This file is generated by the "pkg_mkIndex" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ package ifneeded http 1.0 [list tclPkgSetup $dir http 1.0 {{http.tcl source {httpCopyDone httpCopyStart httpEof httpEvent httpFinish httpMapReply httpProxyRequired http_code http_config http_data http_formatQuery http_get http_reset http_size http_status http_wait}}}] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/http1.0/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/opt/pkgIndex.tcl - -#@ # Tcl package index file, version 1.1 -#@ # This file is generated by the "pkg_mkIndex -direct" command -#@ # and sourced either when an application starts up or -#@ # by a "package unknown" script. It invokes the -#@ # "package ifneeded" command to set up package-related -#@ # information so that packages will be loaded automatically -#@ # in response to "package require" commands. When this -#@ # script is sourced, the variable $dir must contain the -#@ # full path name of this file's directory. -#@ -#@ if {![package vsatisfies [package provide Tcl] 8.2]} {return} -#@ package ifneeded opt 0.4.6 [list source [file join $dir optparse.tcl]] -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/tcllib/lib/tcl8.6/opt/pkgIndex.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/syn.tcl - -#@ # Copyright (c) 2016 Synopsys, Inc. This Synopsys software and all -#@ # associated documentation are proprietary to Synopsys, Inc. and may -#@ # only be used pursuant to the terms and conditions of a written -#@ # license agreement with Synopsys, Inc. All other use, reproduction, -#@ # modification, or distribution of the Synopsys software or the -#@ # associated documentation is strictly prohibited. -#@ -#@ # primary file of syn package -#@ -#@ # require all the sub-packages (if any) -#@ -#@ # name of the provided package -#@ -#@ package provide cae 1.0 -#@ -#@ # create command group after loading sub packages -#@ # because last group is listed first by "help" -#@ -#@ create_command_group "syn" -info "synthesis utilities" -#@ -#@ namespace eval ::cae { -#@ variable selfdir [file dirname [info script]] -#@ variable scripts [list auto_path_groups.tcl ] -#@ variable script -#@ } -#@ -#@ # source encrypted version if available -#@ # encrypted commands must use "define_proc_attributes -hide_body" -#@ -#@ foreach ::cae::script ${::cae::scripts} { -#@ if { [file exists ${::cae::selfdir}/${::cae::script}.e] } { -#@ source ${::cae::selfdir}/${::cae::script}.e -#@ } else { -#@ source ${::cae::selfdir}/${::cae::script} -#@ } -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/auto_path_groups.tcl - -#@ # Copyright (c) 2016-2017 Synopsys, Inc. This Synopsys software and all -#@ # associated documentation are proprietary to Synopsys, Inc. and may -#@ # only be used pursuant to the terms and conditions of a written -#@ # license agreement with Synopsys, Inc. All other use, reproduction, -#@ # modification, or distribution of the Synopsys software or the -#@ # associated documentation is strictly prohibited. -#@ -#@ package require cae::utils -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/utils/utils.tcl - -#@ # Copyright (c) 2016 Synopsys, Inc. This Synopsys software and all -#@ # associated documentation are proprietary to Synopsys, Inc. and may -#@ # only be used pursuant to the terms and conditions of a written -#@ # license agreement with Synopsys, Inc. All other use, reproduction, -#@ # modification, or distribution of the Synopsys software or the -#@ # associated documentation is strictly prohibited. -#@ -#@ # primary file of cae::utils package -#@ -#@ # name of the provided package -#@ -#@ package provide cae::utils 1.0 -#@ -#@ namespace eval ::cae::utils { -#@ } -#@ -#@ proc ::cae::utils::msg { type s } { -#@ switch -glob -- ${type} { -#@ i* { return "INFO: ${s}" } -#@ w* { return "WARNING: ${s}" } -#@ e* { return "ERROR: ${s}" } -#@ } -#@ return -#@ } -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/utils/utils.tcl - -#@ -#@ namespace eval ::cae { -#@ -#@ # note: check if these are all necessary -#@ variable auto_path_groups_messages {ATTR-3 OPT-806 OPT-774 UID-101 TIM-134 TIM-99 OPT-806 MWUI-203 MW-212 TIM-112} -#@ -#@ # default prefix for path groups -#@ variable auto_path_groups_prefix synopsys_pg_ -#@ # default slack for path groups -#@ variable auto_path_groups_slack 0.0 -#@ # default max for path groups -#@ variable auto_path_groups_max 0 -#@ # default verbosity -#@ variable auto_path_groups_verbose false -#@ # default priority -#@ variable auto_path_groups_priority 1 -#@ # default min_regs_per_hierarchy -#@ variable auto_path_groups_min_regs_per_hierarchy 10 -#@ # registers path group suffix -#@ variable auto_path_groups_reg_suffix to_regs_ -#@ # macro path group suffix -#@ variable auto_path_groups_to_macro_suffix to_macros_ -#@ # macro path group suffix -#@ variable auto_path_groups_from_macro_suffix from_macros_ -#@ # ICG path group suffix -#@ variable auto_path_groups_icg_suffix to_ICGs -#@ # input path group suffix -#@ variable auto_path_groups_input_suffix inputs -#@ # output path group suffix -#@ variable auto_path_groups_output_suffix outputs -#@ # feedthrough path group suffix -#@ variable auto_path_groups_feedthrough_suffix feedthrough -#@ # user path groups -#@ variable auto_path_groups_user_path_groups_file auto_path_groups.user_path_groups.tcl -#@ } -#@ -#@ proc create_auto_path_groups { args } { -#@ variable ::cae::auto_path_groups_messages -#@ variable ::cae::auto_path_groups_prefix -#@ variable ::cae::auto_path_groups_slack -#@ variable ::cae::auto_path_groups_max -#@ variable ::cae::auto_path_groups_verbose -#@ variable ::cae::auto_path_groups_priority -#@ variable ::cae::auto_path_groups_min_regs_per_hierarchy -#@ variable ::cae::auto_path_groups_reg_suffix -#@ variable ::cae::auto_path_groups_to_macro_suffix -#@ variable ::cae::auto_path_groups_from_macro_suffix -#@ variable ::cae::auto_path_groups_icg_suffix -#@ variable ::cae::auto_path_groups_input_suffix -#@ variable ::cae::auto_path_groups_output_suffix -#@ variable ::cae::auto_path_groups_feedthrough_suffix -#@ variable ::cae::auto_path_groups_user_path_groups_file -#@ -#@ set options(-slack) ${auto_path_groups_slack} -#@ set options(-max) ${auto_path_groups_max} -#@ set options(-prefix) ${auto_path_groups_prefix} -#@ set options(-verbose) ${auto_path_groups_verbose} -#@ set options(-priority) ${auto_path_groups_priority} -#@ set options(-min_regs_per_hierarchy) ${auto_path_groups_min_regs_per_hierarchy} -#@ set options(-exclude) [list] -#@ set options(-user_path_groups_file) ${auto_path_groups_user_path_groups_file} -#@ -#@ parse_proc_arguments -args ${args} options -#@ -#@ if { [info exists options(-file)] } { -#@ if { [catch {open $options(-file) w} fileId] } { -#@ return -code error [::cae::utils::msg e ${fileId}] -#@ } -#@ } -#@ -#@ # save user path groups -#@ if { ![info exists options(-skip)] } { -#@ echo [::cae::utils::msg i "Saving user path groups to $options(-user_path_groups_file)..."] -#@ if { [file exist $options(-user_path_groups_file)] } { -#@ echo [::cae::utils::msg w "File $options(-user_path_groups_file) already exists and will be overwritten..."] -#@ } -#@ if { [catch {open "| grep \"^group_path\" > $options(-user_path_groups_file)" w} channelId] } { -#@ return -code error [::cae::utils::msg e ${channelId}] -#@ } -#@ redirect -channel ${channelId} { write_script -nosplit } -#@ set r [catch {close ${channelId}} msg] -#@ switch ${r} { -#@ 0 { echo [::cae::utils::msg i "User path groups saved"] } -#@ 1 { echo [::cae::utils::msg i "No user path groups to save"] } -#@ default { return -code error [::cae::utils::msg e ${msg}] } -#@ } -#@ } -#@ -#@ set total 0 -#@ -#@ suppress_message ${auto_path_groups_messages} -#@ switch -- $options(-mode) { -#@ "rtl" { -#@ # create one path group per hierarchy -#@ -#@ echo [::cae::utils::msg i "Collecting hierarchies without optimize_registers..."] -#@ set optimize_registers_cells [get_cells -hier -filter {is_hierarchical==true && optimize_registers==true}] -#@ if { $options(-verbose) } { -#@ set optimize_registers_cells_names [lsort [get_object_name ${optimize_registers_cells}]] -#@ echo [::cae::utils::msg i "cells with optimize_registers: ${optimize_registers_cells_names}"] -#@ } -#@ set optimize_registers_sub_cells {} -#@ foreach_in_collection cell ${optimize_registers_cells} { -#@ redirect -file /dev/null {current_instance ${cell}} -#@ append_to_collection optimize_registers_sub_cells [get_cells -hier -filter {is_hierarchical==true && (optimize_registers==false || undefined(optimize_registers))}] -#@ } -#@ redirect -file /dev/null {current_instance} -#@ if { $options(-verbose) } { -#@ set optimize_registers_sub_cells_names [lsort [get_object_name ${optimize_registers_sub_cells}]] -#@ echo [::cae::utils::msg i "sub-cells of cells with optimize_registers: ${optimize_registers_sub_cells_names}"] -#@ } -#@ set path_group_cells [get_cells -hier -filter {is_hierarchical==true && is_sequential==true && (optimize_registers==false || undefined(optimize_registers))}] -#@ set path_group_cells [remove_from_collection ${path_group_cells} ${optimize_registers_sub_cells}] -#@ -#@ echo [::cae::utils::msg i "Collected [sizeof_collection ${path_group_cells}] hierarchies without optimize_registers"] -#@ -#@ set path_group_names [lsort [get_object_name ${path_group_cells}]] -#@ -#@ if { $options(-verbose) } { -#@ echo [::cae::utils::msg i "cells for which path groups will be created:"] -#@ foreach path_group_name ${path_group_names} { -#@ echo [::cae::utils::msg i " ${path_group_name}"] -#@ } -#@ } -#@ -#@ echo [::cae::utils::msg i "Creating path groups for hierarchies without optimize_registers..."] -#@ set counter 0 -#@ foreach path_group_name ${path_group_names} { -#@ set number_of_registers [sizeof_collection [get_cells ${path_group_name}/* -filter "is_hierarchical==false && is_sequential==true"]] -#@ if { ${number_of_registers} > $options(-min_regs_per_hierarchy) } { -#@ echo [::cae::utils::msg i "Number of sequential cells found in ${path_group_name} hierarchy: ${number_of_registers}"] -#@ set command "group_path -name $options(-prefix)${auto_path_groups_reg_suffix}${counter} -to \[get_cells ${path_group_name}/* -filter \"is_hierarchical==false && is_sequential==true\"\] -priority $options(-priority)" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ } else { -#@ echo [::cae::utils::msg i "Not enough sequential cells found in ${path_group_name} hierarchy (${number_of_registers}), skipping..."] -#@ } -#@ } -#@ echo [::cae::utils::msg i "Number of reg path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ } -#@ "mapped" { -#@ # create one path group per hierarchy not meeting timing -#@ -#@ array unset fail -#@ echo [::cae::utils::msg i "Collecting hierarchies with timing violations..."] -#@ foreach_in_collection pin [all_registers -data_pins] { -#@ set slack [get_attribute ${pin} max_slack] -#@ if { ${slack} < $options(-slack) && ${slack} != "" } { -#@ set cell [get_cells -of_objects ${pin}] -#@ set full_name [get_attribute ${cell} full_name] -#@ set name [get_attribute ${cell} name] -#@ if {[string length ${full_name}] > [string length ${name}]} { -#@ set length [expr [string length ${full_name}] - [string length ${name}] - 1] -#@ set hierarchy [string range ${full_name} 0 [expr ${length} - 1]] -#@ } else { -#@ set hierarchy "" -#@ } -#@ if { ![info exists fail(${hierarchy})] || -#@ ([info exists fail(${hierarchy})] && ${slack} < $fail(${hierarchy})) } { -#@ set fail(${hierarchy}) ${slack} -#@ } -#@ } -#@ } -#@ echo [::cae::utils::msg i "Collected [array size fail] hierarchies with timing violations"] -#@ -#@ if { $options(-max) > 0 } { -#@ echo [::cae::utils::msg i "Keeping only $options(-max) hierarchies with worst timing violations"] -#@ set hierarchy_slack_list [lsort -stride 2 -index 1 -real -increasing [array get fail]] -#@ set hierarchy_slack_list [lrange ${hierarchy_slack_list} 0 [expr {2 * $options(-max) - 1}]] -#@ array unset fail -#@ array set fail ${hierarchy_slack_list} -#@ } -#@ -#@ set path_group_names [lsort [array names fail]] -#@ -#@ if { $options(-verbose) } { -#@ echo [::cae::utils::msg i "hierarchies for which path groups will be created:"] -#@ foreach path_group_name ${path_group_names} { -#@ echo [::cae::utils::msg i " ${path_group_name} $fail(${path_group_name})"] -#@ } -#@ } -#@ -#@ echo [::cae::utils::msg i "Creating path groups for hierarchies with timing violations..."] -#@ set counter 0 -#@ foreach path_group_name ${path_group_names} { -#@ if { ${path_group_name} == "" } { -#@ set command "group_path -name $options(-prefix)${auto_path_groups_reg_suffix}${counter} -to \[get_cells * -filter {is_hierarchical==false && is_sequential==true}\] -priority $options(-priority)" -#@ } else { -#@ set command "group_path -name $options(-prefix)${auto_path_groups_reg_suffix}${counter} -to \[get_cells ${path_group_name}/* -filter {is_hierarchical==false && is_sequential==true}\] -priority $options(-priority)" -#@ } -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ } -#@ echo [::cae::utils::msg i "Number of reg path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ -#@ } -#@ -#@ } -#@ -#@ # macro path groups -#@ if { [lsearch $options(-exclude) macro] == -1} { -#@ echo [::cae::utils::msg i "Creating macro path groups..."] -#@ if { [shell_is_in_topographical_mode] } { -#@ #set macro_cells [all_macro_cells] -#@ set macro_cells [remove_from_collection [all_macro_cells] [get_cells -quiet -hier -all -filter "is_physical_only==true"]] -#@ } else { -#@ set macro_cells [get_cells -hier * -filter "is_macro_cell == true"] -#@ } -#@ if { [sizeof_collection ${macro_cells}] != 0 } { -#@ set path_group_names [get_object_name ${macro_cells}] -#@ set counter 0 -#@ foreach path_group_name ${path_group_names} { -#@ set command "group_path -name $options(-prefix)${auto_path_groups_to_macro_suffix}${counter} -to \[get_cells ${path_group_name}\] -priority $options(-priority)" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ set command "group_path -name $options(-prefix)${auto_path_groups_from_macro_suffix}${counter} -from \[get_cells ${path_group_name}\] -priority $options(-priority)" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ } -#@ echo [::cae::utils::msg i "Number of macro path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ } else { -#@ echo [::cae::utils::msg i "No macro found, skipping..."] -#@ } -#@ } -#@ -#@ # ICG path groups -#@ if { [lsearch $options(-exclude) ICG] == -1} { -#@ echo [::cae::utils::msg i "Creating ICG path groups..."] -#@ set all_icg_cells [get_cells -hier -filter "full_name=~*latch || full_name=~*u_clkgate && defined(clock_gating_integrated_cell)"] -#@ if { [sizeof_collection ${all_icg_cells}] } { -#@ set counter 0 -#@ set command "group_path -name $options(-prefix)${auto_path_groups_icg_suffix} -to \[get_cells -hier -filter \"full_name=~*latch || full_name=~*u_clkgate && defined(clock_gating_integrated_cell)\"\] -priority $options(-priority)" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ echo [::cae::utils::msg i "Number of ICG path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ } else { -#@ echo [::cae::utils::msg i "No ICG found, skipping..."] -#@ } -#@ } -#@ -#@ # IO path groups -#@ if { [lsearch $options(-exclude) IO] == -1} { -#@ echo [::cae::utils::msg i "Creating IO path groups..."] -#@ set counter 0 -#@ set command "group_path -name $options(-prefix)${auto_path_groups_input_suffix} -from \[ remove_from_collection \[all_inputs\] \[get_ports \[get_attribute \[get_clocks -filter defined(sources)\] sources\]\] \]" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ set command "group_path -name $options(-prefix)${auto_path_groups_output_suffix} -to \[all_outputs\]" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ set command "group_path -name $options(-prefix)${auto_path_groups_feedthrough_suffix} -from \[ remove_from_collection \[all_inputs\] \[get_ports \[get_attribute \[get_clocks -filter defined(sources)\] sources\]\] \] -to \[all_outputs\]" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ incr counter -#@ echo [::cae::utils::msg i "Number of IO path groups created: ${counter}"] -#@ set total [expr {${total} + ${counter}}] -#@ } -#@ -#@ unsuppress_message ${auto_path_groups_messages} -#@ -#@ echo [::cae::utils::msg i "Total number of path groups created: ${total}"] -#@ -#@ if { [info exists options(-file)] } { -#@ close ${fileId} -#@ } -#@ -#@ return -#@ } -#@ -#@ define_proc_attributes create_auto_path_groups -command_group syn -dont_abbrev -hide_body -info "Creates path groups for current design" -define_args { -#@ { -mode "creates path groups for unmapped/mapped netlist" mode one_of_string {required value_help {values {rtl mapped}}} } -#@ { -exclude "excludes specific path groups (IO ICG macro) (default: empty list)" list list {optional} } -#@ { -slack "slack value used to select hierarchy violating timing (default: 0.0) - mapped mode only" slack float optional } -#@ { -max "maximum number of paths groups (default: 0=unlimited) - mapped mode only" max int optional } -#@ { -min_regs_per_hierarchy "minimum number of registers per hierarchy (default: 10) - rtl mode only" min_regs int optional } -#@ { -prefix "path group name prefix (default: synopsys_pg_)" prefix string optional } -#@ { -file "file name to dump group_path commands" file_name string optional } -#@ { -verbose "verbose mode" "" boolean optional } -#@ { -user_path_groups_file "save user path groups to this file" file_name string optional } -#@ { -skip "do not save user path groups" "" boolean optional } -#@ } -#@ -#@ proc remove_auto_path_groups { args } { -#@ variable ::cae::auto_path_groups_messages -#@ variable ::cae::auto_path_groups_prefix -#@ variable ::cae::auto_path_groups_verbose -#@ variable ::cae::auto_path_groups_user_path_groups_file -#@ -#@ set options(-prefix) ${auto_path_groups_prefix} -#@ set options(-verbose) ${auto_path_groups_verbose} -#@ set options(-user_path_groups_file) ${auto_path_groups_user_path_groups_file} -#@ -#@ parse_proc_arguments -args ${args} options -#@ -#@ if { [info exists options(-file)] } { -#@ if {[catch {open $options(-file) w } fileId] } { -#@ return -code error [::cae::utils::msg e ${fileId}] -#@ } -#@ } -#@ -#@ suppress_message ${auto_path_groups_messages} -#@ set path_group_names [get_object_name [get_path_group -filter "full_name =~ $options(-prefix)*"]] -#@ foreach path_group_name ${path_group_names} { -#@ set command "remove_path_group ${path_group_name}" -#@ echo [::cae::utils::msg i ${command}] -#@ if { [info exists options(-file)] } { -#@ puts ${fileId} ${command} -#@ } -#@ eval ${command} -#@ } -#@ echo [::cae::utils::msg i "Number of path groups removed: [llength ${path_group_names}]"] -#@ unsuppress_message ${auto_path_groups_messages} -#@ -#@ if { [info exists options(-file)] } { -#@ close ${fileId} -#@ } -#@ -#@ # restore user path groups -#@ if { ![info exists options(-skip)] } { -#@ echo [::cae::utils::msg i "Restoring user path groups from $options(-user_path_groups_file)..."] -#@ if { [file exist $options(-user_path_groups_file)] } { -#@ if { [file size $options(-user_path_groups_file)] != 0} { -#@ source -continue_on_error $options(-user_path_groups_file) -#@ } else { -#@ echo [::cae::utils::msg i "No user path groups to restore"] -#@ } -#@ file delete -force $options(-user_path_groups_file) -#@ } else { -#@ echo [::cae::utils::msg w "File $options(-user_path_groups_file) doesn't exist"] -#@ } -#@ } -#@ -#@ return -#@ } -#@ -#@ define_proc_attributes remove_auto_path_groups -command_group syn -dont_abbrev -hide_body -info "Removes path groups for current design" -define_args { -#@ { -prefix "path group name prefix (default: synopsys_pg)" prefix string optional } -#@ { -file "file name to dump group_path commands" file_name string optional } -#@ { -verbose "verbose mode" "" boolean optional } -#@ { -user_path_groups_file "restore user path groups from this file" file_name string optional } -#@ { -skip "do not restore user path groups" "" boolean optional } -#@ } -#@ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/auto_path_groups.tcl - -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lib/syn.tcl - -#@ -#@ if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ set sh_enable_line_editing "true" -#@ set sh_line_editing_mode "emacs" -#@ } -#@ -#@ if {$synopsys_program_name == "icc_shell"} { -#@ if {"$sh_output_log_file" == ""} { -#@ set sh_output_log_file "icc_output.txt" -#@ } -#@ -#@ ## the variable sh_redirect_progress_messages only makes it possible -#@ ## for some commands to redirect progress messages to the log file,thereby -#@ ## bypassing the console and reducing the volume of messages on the console. -#@ set sh_redirect_progress_messages true -#@ } -#@ -#@ -#@ # Suppress new variable messages for the following variables -#@ array set auto_index {} -#@ set auto_oldpath "" -#@ -#@ # Enable customer support banner on fatal -#@ if { $sh_arch == "linux" || $sh_arch == "amd64" || $sh_arch == "linux64" || $sh_arch == "suse32" || $sh_arch == "suse64" || $sh_arch == "sparcOS5" || $sh_arch == "sparc64" || $sh_arch == "x86sol32" || $sh_arch == "x86sol64" || $sh_arch == "rs6000" || $sh_arch == "aix64" } { -#@ setenv SYNOPSYS_TRACE "" -#@ } -#@ -#@ # -#@ # Load the procedures which make up part of the user interface. -#@ # -#@ if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ source $synopsys_root/auxx/syn/.dc_common_procs.tcl -#@ if {$synopsys_program_name != "dc_sms_shell"} { -#@ source $synopsys_root/auxx/syn/.dc_procs.tcl -#@ } -#@ alias list_commands help -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/.dc_common_procs.tcl - -#@ ############################################################################## -#@ # -#@ # -#@ # FILE: auxx/syn/.dc_common_procs.tcl -#@ # -#@ # ABSTRACT: These procedures are part of the PrimeTime and DC -#@ # user interface. -#@ # They are loaded by .synopsys_pt.setup and .synopsys_dc.setup. -#@ # -#@ ############################################################################## -#@ # -#@ # -#@ -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: group_variable -#@ # -#@ # ABSTRACT: Add a variable to the specified variable group. -#@ # This command is typically used by the system -#@ # administrator only. -#@ # -#@ # Below the proc is the command which creates the command -#@ # help information and semantic data for the argument. -#@ # -#@ # RETURNS: 1 if it is successful. -#@ # error code if the variable does not exist. -#@ # error code of the variable is already in the group. -#@ # -#@ # SYNTAX: group_variable group_name variable_name -#@ # -#@ ############################################################################## -#@ # -#@ -#@ -#@ proc group_variable { args } { -#@ global _Variable_Groups -#@ -#@ parse_proc_arguments -args $args resarr -#@ set group $resarr(group) -#@ set var $resarr(variable_name) -#@ -#@ if { ![info exists _Variable_Groups($group)] } { -#@ set _Variable_Groups($group) "" -#@ } -#@ -#@ # Verify that var exists as a global variable -#@ -#@ set cmd "uplevel #0 \{info exists $var\}" -#@ if { ![eval $cmd] } { -#@ return -code error "Variable '$var' is not defined." -#@ } -#@ -#@ # Only add it if it's not already there -#@ -#@ if { [lsearch $_Variable_Groups($group) $var] == -1 } { -#@ lappend _Variable_Groups($group) $var -#@ } -#@ -#@ return 1 -#@ } -#@ -#@ define_proc_attributes group_variable -info "Add a variable to a variable group" -command_group "Builtins" -permanent -dont_abbrev -define_args { -#@ {group "Variable group name" group} -#@ {variable_name "Variable name" variable_name}} -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: print_variable_group -#@ # -#@ # ABSTRACT: Shows variables and their values defined in the given group. -#@ -#@ # -#@ # Below the proc is the command which creates the command -#@ # help information and semantic data for the argument. -#@ # -#@ # RETURNS: 1 if it is successful. -#@ # error code of the variable group does not exist. -#@ # -#@ # SYNTAX: print_variable_group group_name -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc print_variable_group { args } { -#@ global _Variable_Groups -#@ -#@ parse_proc_arguments -args $args resarr -#@ set group $resarr(group) -#@ -#@ if { [string compare $group "all"] == 0 } { -#@ set cmd "uplevel #0 \{printvar\}" -#@ return [eval $cmd] -#@ } -#@ -#@ if { ![info exists _Variable_Groups($group)] } { -#@ return -code error "Variable group '$group' does not exist." -#@ } -#@ -#@ # Print out each global variable in the list. To be totally bulletproof, -#@ # test that each variable in the group is still defined. If not, remove -#@ # it from the list. -#@ -#@ foreach var [lsort $_Variable_Groups($group)] { -#@ set cmd "uplevel #0 \{info exists $var\}" -#@ if { ![eval $cmd] } { -#@ # Remove it -#@ set n [lsearch $_Variable_Groups($group) $var] -#@ set $_Variable_Groups($group) [lreplace $_Variable_Groups($group) $n $n] -#@ } else { -#@ # Print it. -#@ set cmd "uplevel #0 \{set $var\}" -#@ set val [eval $cmd] -#@ echo [format "%-25s = \"%s\"" $var $val] -#@ } -#@ } -#@ -#@ return 1 -#@ } -#@ -#@ define_proc_attributes print_variable_group -info "Print the contents of a variable group" -command_group "Builtins" -permanent -define_args {{group "Variable group name" group}} -#@ -#@ -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: _Variable_Groups_Get_Groups -#@ # -#@ # ABSTRACT: Return a list of all variable groups. This command is hidden -#@ # and is used by Design Vision. -#@ # -#@ # RETURNS: Tcl list of all variable groups including group all -#@ # -#@ # SYNTAX: _Variable_Groups_Get_Groups -#@ ############################################################################## -#@ # -#@ -#@ proc _Variable_Groups_Get_Groups { } { -#@ global _Variable_Groups -#@ -#@ set groups [array names _Variable_Groups] -#@ append groups " all" -#@ return $groups -#@ } -#@ define_proc_attributes _Variable_Groups_Get_Groups -hidden -#@ -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: _Variable_Groups_Get_Variables_Of_Group -#@ # -#@ # ABSTRACT: Return a list of all variables of a variable group. -#@ # It also works for pseudo group all. -#@ # -#@ # RETURNS: Tcl list of all variables of a variable group including -#@ # pseudo group all -#@ # -#@ # SYNTAX: _Variable_Groups_Get_Groups -#@ ############################################################################## -#@ # -#@ -#@ proc _Variable_Groups_Get_Variables_Of_Group { group } { -#@ global _Variable_Groups -#@ -#@ if { [string compare $group "all"] == 0 } { -#@ set itr [array startsearch _Variable_Groups] -#@ for { } { [array anymore _Variable_Groups $itr]} { } { -#@ set index [array nextelement _Variable_Groups $itr] -#@ append vars $_Variable_Groups($index) -#@ } -#@ array donesearch _Variable_Groups $itr -#@ return $vars -#@ } -#@ -#@ if { ![info exists _Variable_Groups($group)] } { -#@ return -code error "Variable group '$group' does not exist." -#@ } -#@ -#@ # Test if all variables in the list of variables are still defined. -#@ # Remove not existing variables. -#@ foreach var [lsort $_Variable_Groups($group)] { -#@ set cmd "uplevel #0 \{info exists $var\}" -#@ if { ![eval $cmd] } { -#@ # Remove it -#@ set n [lsearch $_Variable_Groups($group) $var] -#@ set $_Variable_Groups($group) [lreplace $_Variable_Groups($group) $n $n] -#@ } -#@ } -#@ return $_Variable_Groups($group) -#@ } -#@ define_proc_attributes _Variable_Groups_Get_Variables_Of_Group -hidden -#@ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/.dc_common_procs.tcl - -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/.dc_procs.tcl - -#@ ############################################################################## -#@ # -#@ # -#@ # FILE: auxx/syn/.dc_procs.tcl -#@ # -#@ # ABSTRACT: These procedures are part of the Design Compiler Tcl -#@ # user interface. -#@ # They are loaded by .synopsys_dc.setup. -#@ # -#@ ############################################################################## -#@ # -#@ # -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_verilog -#@ # -#@ # ABSTRACT: Emulate PT's read_verilog command in DC: -#@ # -#@ # Usage: read_verilog # Read one or more verilog files -#@ # *[-hdl_compiler] (Use HDL Compiler (ignored)) -#@ # file_names (Files to read) -#@ # -#@ # Modified: Bharat 11/17/99. Use uplevel to ensure that the command -#@ # sees user/hidden variables from the top level. Star 92970. -#@ # -#@ # Modified: Evan Rosser, 12/5/01. Support -netlist and -rtl flags. -#@ # -#@ ############################################################################## -#@ # -#@ -#@ if { $synopsys_program_name != "icc_shell" } { -#@ proc read_verilog { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format verilog %s %s [list %s]} [array names ra -rtl] [array names ra -netlist] $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_verilog -info " Read one or more verilog files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-netlist "Use structural Verilog netlist reader" "" boolean optional} -#@ {-rtl "Use RTL Verilog compiler (Presto or HDLC)" "" boolean optional} -#@ {-hdl_compiler "Use HDL Compiler (ignored)" "" boolean {hidden optional}} -#@ } -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_sverilog -#@ # -#@ # ABSTRACT: Emulate PT's read_sverilog command in DC: -#@ # -#@ # Usage: read_sverilog # Read one or more systemverilog files -#@ # *[-hdl_compiler] (Use HDL Compiler (ignored)) -#@ # file_names (Files to read) -#@ # -#@ # Modified: Yong Xiao, 01/31/2003: Copied from read_verilog to support -#@ # systemverilog input. -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc read_sverilog { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format sverilog %s %s [list %s]} [array names ra -rtl] [array names ra -netlist] $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_sverilog -info " Read one or more systemverilog files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-netlist "Use structural Verilog netlist reader" "" boolean optional} -#@ {-rtl "Use RTL Systemverilog compiler (Presto or HDLC)" "" boolean optional} -#@ {-hdl_compiler "Use HDL Compiler (ignored)" "" boolean {hidden optional}} -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_vhdl -#@ # -#@ # ABSTRACT: Emulate PT's read_vhdl command in DC: -#@ # -#@ # Usage: read_vhdl # Read one or more vhdl files -#@ # file_names (Files to read) -#@ # -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc read_vhdl { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format vhdl %s [list %s]} [array names ra -netlist] $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_vhdl -info " Read one or more vhdl files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-netlist "Use structural VHDL netlist reader" "" boolean optional} -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_db -#@ # -#@ # ABSTRACT: Emulate PT's read_db command in DC: -#@ # -#@ # Usage: -#@ # read_db # Read one or more db files -#@ # *[-netlist_only] (Do not read any attributes from db (ignored)) -#@ # *[-library] (File is a library DB (ignored)) -#@ # file_names (Files to read) -#@ # -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc read_db { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format db [list %s]} $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_db -info " Read one or more db files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-netlist_only "Do not read any attributes from db (ignored)" "" boolean {hidden optional}} -#@ {-library "File is a library DB (ignored)" "" boolean {hidden optional}} -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_edif -#@ # -#@ # ABSTRACT: Emulate PT's read_edif command in DC: -#@ # -#@ # Usage: -#@ # read_edif # Read one or more edif files -#@ # *[-complete_language] (Use ptxr to read the file (ignored)) -#@ # file_names (Files to read) -#@ # -#@ # -#@ ############################################################################## -#@ # -#@ proc read_edif { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {read_file -format edif [list %s]} $ra(file_names)] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_edif -info " Read one or more edif files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-complete_language "Use ptxr to read the file (ignored)" "" boolean {hidden optional}} -#@ } -#@ -#@ -#@ ############################################################################## -#@ # -#@ # -#@ # PROCEDURE: read_ddc -#@ # -#@ # ABSTRACT: Shorthand for "read_file -format ddc": -#@ # -#@ # Usage: -#@ # read_ddc # Read one or more ddc files -#@ # *[-scenarios] only read constraints for specified scenarios -#@ # *[-active_scenarios] only activate the specified scenarios -#@ # file_names (Files to read) -#@ # -#@ # -#@ ############################################################################## -#@ # -#@ -#@ proc read_ddc { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "read_file -format ddc" -#@ if { [ info exists ra(-scenarios) ] } { -#@ set cmd "$cmd -scenarios { $ra(-scenarios) }" -#@ } -#@ if { [ info exists ra(-active_scenarios) ] } { -#@ set cmd "$cmd -active_scenarios { $ra(-active_scenarios) }" -#@ } -#@ set cmd "$cmd { $ra(file_names) }" -#@ return [uplevel \#0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_ddc -info "Read one or more ddc files" -permanent -define_args { -#@ {file_names "Files to read" file_names list required} -#@ {-scenarios "list of scenarios to be read from ddc file" -#@ scenario_list list optional} -#@ {-active_scenarios "list of scenarios to be made active" -#@ active_scenario_list list optional}} -#@ -#@ -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: source_tcl_file -#@ # -#@ # ABSTRACT: generic procedure to source another tcl file -#@ # -#@ # Arguments: -#@ # filename tcl filename -#@ # dir directory to check for file -#@ # msg verbose message -#@ # verbose verbose mode -#@ # -#@ # Usage: -#@ # -#@ ############################################################################## -#@ # -#@ proc source_tcl_file { filename dir msg {verbose 1} } { -#@ set __qual_pref_file [file join $dir $filename] -#@ if {[file exists $__qual_pref_file]} { -#@ if { $verbose } { -#@ echo $msg $__qual_pref_file -#@ } -#@ # use catch to recover from errors in the pref file -#@ echo_trace "Sourcing " $__qual_pref_file -#@ # to speed up sourcing use read and eval -#@ set f [open $__qual_pref_file] -#@ if {[catch {namespace eval :: [read -nonewline $f]} __msg]} { -#@ echo Error: Error during sourcing of $__qual_pref_file -#@ if {$__msg != ""} { echo $__msg } -#@ # actually, it looks like $__msg is always null after -#@ # source fails -#@ } -#@ close $f -#@ } else { -#@ echo_trace "Info: File '" $__qual_pref_file "' does not exist!" -#@ } -#@ } -#@ define_proc_attributes source_tcl_file -hidden -#@ -#@ -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: echo_trace -#@ # -#@ # ABSTRACT: echo only in trace modus -#@ # -#@ ############################################################################## -#@ # -#@ proc echo_trace { args } { -#@ if { [info exists ::env(TCL_TRACE)] } { -#@ echo TRACE\> [join $args "" ] -#@ } -#@ } -#@ define_proc_attributes echo_trace -hidden -#@ -#@ ############################################################################# -#@ # -#@ # Following procedures added for PC write_script -#@ # -#@ # -#@ # -#@ ############################################################################ -#@ -#@ proc set_cell_restriction { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {set_attribute %s -type integer restrictions %s } $ra(cell) $ra(value)] -#@ return [uplevel #0 $cmd] -#@ -#@ } -#@ define_proc_attributes set_cell_restriction -hidden -define_args { {cell "cell_name" cell string required} {value "value" value string required} } -#@ -#@ -#@ proc set_cell_soft_keepout {args} { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {set_keepout_margin -type soft -outer {%d %d %d %d} [list %s] } $ra(llx) $ra(lly) $ra(urx) $ra(ury) $ra(objects)] -#@ return [uplevel #0 $cmd] -#@ -#@ -#@ } -#@ -#@ define_proc_attributes set_cell_soft_keepout -hidden -define_args { {llx "llx" llx float required} {lly "lly" lly float required} {urx "urx" urx float required} {ury "ury" ury float required} {objects "objects" objects list required} } -#@ -#@ proc set_cell_hard_keepout {args} { -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {set_keepout_margin -type soft -outer {%d %d %d %d} [list %s] } $ra(llx) $ra(lly) $ra(urx) $ra(ury) $ra(objects)] -#@ return [uplevel #0 $cmd] -#@ -#@ -#@ } -#@ -#@ define_proc_attributes set_cell_hard_keepout -hidden -define_args { {llx "llx" llx float required} {lly "lly" lly float required} {urx "urx" urx float required} {ury "ury" ury float required} {objects "objects" objects list required} } -#@ -#@ set mw_use_pdb_lib_format false -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: write_milkyway -#@ # -#@ # ABSTRACT: wrapper around save_mw_cel to support original write_milkyway -#@ # interface -#@ # if { [info commands open_mw_cel] == "open_mw_cel" } {} -#@ # -#@ ############################################################################## -#@ -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ -#@ proc write_milkyway args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {save_mw_cel -as %s %s %s %s %s} $ra(-output) [array names ra -overwrite] [array names ra -create] [array names ra -all] [array names ra -dps]] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes write_milkyway -hidden -info " Saves the design as milkyway CEL" -define_args {{-output fileName "Name" string {optional}} {-overwrite "Overwrite the current version" "" boolean {optional}} {-create "Create from scratch" "" boolean {hidden optional}} {-all "Save all modified cells" "" boolean {hidden optional}} {-dps "Save internal DPS design" "" boolean {hidden optional}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: read_milkyway -#@ # -#@ # ABSTRACT: wrapper around open_mw_cel to support original read_milkyway -#@ # interface -#@ # MODIFIED: To support DPS in Galileo we need to pass the filtering -#@ # parameters to the DPS command. (Pankaj Goswami, Mar09 2005) -#@ # -#@ ############################################################################## -#@ -#@ proc read_milkyway args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {open_mw_cel %s} $ra() ] -#@ -#@ if {[info exists ra(-library)]} { -#@ set cmd [concat [concat $cmd " -library " ] " $ra(-library) "] -#@ } -#@ -#@ if {[info exists ra(-read_only)]} { -#@ lappend cmd {-readonly} -#@ } -#@ -#@ # DPS specific stuff -#@ set dps_cmd "vh_set_current_partition " -#@ set read_mw_with_dps_filter false -#@ -#@ if {[info exists ra(-vh_module_only)]} { -#@ append dps_cmd "-vh_module_only " -#@ set read_mw_with_dps_filter true -#@ } -#@ -#@ if {[info exists ra(-vh_include)]} { -#@ append dps_cmd [concat " -vh_include " " \{ $ra(-vh_include) \}"] -#@ append dps_cmd " " -#@ set read_mw_with_dps_filter true -#@ } -#@ -#@ if {[info exists ra(-vh_exclude)]} { -#@ append dps_cmd [concat " -vh_exclude" " \{ $ra(-vh_exclude) \}"] -#@ set read_mw_with_dps_filter true -#@ } -#@ -#@ if { $read_mw_with_dps_filter == true } { -#@ # Call the DPS command to store the DPS filtering params. -#@ uplevel #0 $dps_cmd -#@ } else { -#@ # If there is no DPS filtering params, then we need to reset the -#@ # params which might have been stored from the provious command. -#@ append dps_cmd " -vh_reset_partition" -#@ uplevel #0 $dps_cmd -#@ } -#@ # End of DPS stuff -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes read_milkyway -hidden -info " Read milkyway CEL from disk" -define_args {{-library "library name" "lib_name" string {optional}} {-read_only "open design in read only mode" "" boolean {optional}} {-version "version number of the CEL" "number" string {optional}} {-vh_module_only "open design for DPS module only partition" "" boolean {hidden optional}} {-vh_include "list of designs to be included in the DPS partition" "include_designs" list {hidden optional}} {-vh_exclude "list of designs to be excluded in the DPS partition" "exclude_designs" list {hidden optional}} {"" fileName "CEL name" string {required}}} -#@ -#@ } -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: set_mw_technology_file -#@ # -#@ # ABSTRACT: wrapper around update_mw_lib -#@ # -#@ # HISTORY : 2009/6/21, yunz, support ALF reader in ICC -#@ # -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] || -#@ ([string match -nocase {*d[ce]_shell*} $synopsys_program_name] && [shell_is_mwlib_enabled]) } { -#@ -#@ proc set_mw_technology_file args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ set lib_name "" -#@ set pdb_file "tech.pdb" -#@ set log_file "log_file" -#@ set alf_file "" -#@ -#@ if {[info exists ra(-technology)] && [info exists ra(-plib)]} { -#@ echo "Error: the $ra(-technology) and $ra(-plib) options are mutually exclusive." -#@ return [uplevel #0 $cmd] -#@ } elseif {[info exists ra(-technology)] && [info exists ra(-alf)]} { -#@ echo "Error: the $ra(-technology) and $ra(-alf) options are mutually exclusive." -#@ return [uplevel #0 $cmd] -#@ } elseif {[info exists ra(-plib)] && [info exists ra(-alf)]} { -#@ echo "Error: the $ra(-plib) and $ra(-alf) options are mutually exclusive." -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ if {[info exists ra(-technology)]} { -#@ -#@ set cmd [format {update_mw_lib -technology %s %s} $ra(-technology) $ra() ] -#@ } -#@ -#@ if {[info exists ra(-alf)]} { -#@ -#@ set cmd [format {update_mw_lib %s} $ra() ] -#@ -#@ set cmd [concat [concat $cmd " -alf " ] " $ra(-alf) "] -#@ } -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes set_mw_technology_file -hide_body -info " Set technology file for the library " -define_args {{-technology "Technology file name" "tech_file" string {optional}} {-alf "alf file name" "file_name" string {optional}} {"" "Library name" "libName" string {required}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: rebuild_mw_lib -#@ # -#@ # ABSTRACT: wrapper around update_mw_lib -#@ # -#@ ############################################################################## -#@ -#@ proc rebuild_mw_lib args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {update_mw_lib -rebuild %s} $ra() ] -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes rebuild_mw_lib -hide_body -info " Rebuild the library " -define_args {{"" "Library name" "libName" string {required}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: set_mw_lib_reference -#@ # -#@ # ABSTRACT: Procedure to set ref lib list or ref ctrl file -#@ # -#@ ############################################################################## -#@ -#@ proc set_mw_lib_reference args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ -#@ if {[info exists ra(-mw_reference_library)]} { -#@ set cmd [format {set_reference_control_file -reference_libraries {%s} %s} $ra(-mw_reference_library) $ra() ] -#@ } -#@ -#@ if {[info exists ra(-reference_control_file)]} { -#@ set cmd [format {set_reference_control_file -file %s %s} $ra(-reference_control_file) $ra() ] -#@ } -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes set_mw_lib_reference -hide_body -info " Set reference for the library " -define_args {{-mw_reference_library "List of reference libraries" "lib_list" list {optional}} {-reference_control_file "Reference control file" "file_name" string {optional}} {"" "Library name" "libName" string {required}}} -#@ -#@ # -#@ ############################################################################## -#@ # -#@ # PROCEDURE: create_mw_lib -#@ # -#@ # ABSTRACT: wrapper around MWUI create_mw_lib -#@ # -#@ ############################################################################## -#@ -#@ proc create_mw_lib args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ set lib_name "" -#@ set pdb_file "tech.pdb" -#@ set log_file "log_file" -#@ -#@ if {[info exists ra(-ignore_case)]} { -#@ set cmd [format {org_create_mw_lib %s} $ra() ] -#@ } else { -#@ set cmd [format {org_create_mw_lib -case_sensitive %s} $ra() ] -#@ } -#@ -#@ if {[info exists ra(-technology)]} { -#@ set cmd [concat [concat $cmd " -technology " ] " $ra(-technology) "] -#@ } -#@ -#@ if {[info exists ra(-ignore_tf_error)]} { -#@ set cmd [concat $cmd " -ignore_tf_error " ] -#@ } -#@ -#@ if {[info exists ra(-hier_separator)]} { -#@ set cmd [concat [concat $cmd " -hier_seperator " ] " $ra(-hier_separator) "] -#@ } -#@ -#@ if {[info exists ra(-bus_naming_style)]} { -#@ set cmd [concat [concat $cmd " -bus_naming_style " ] " {$ra(-bus_naming_style)} "] -#@ } -#@ -#@ -#@ if {[info exists ra(-reference_control_file)]} { -#@ set cmd [concat [concat $cmd " -reference_control_file " ] " $ra(-reference_control_file) "] -#@ } -#@ -#@ if {[info exists ra(-mw_reference_library)]} { -#@ set cmd [concat [concat [concat $cmd " -mw_reference_library {" ] " $ra(-mw_reference_library) "] "}"] -#@ } -#@ -#@ if { ![uplevel #0 $cmd] } { -#@ return 0 -#@ } -#@ -#@ set cmd "" -#@ -#@ if {[info exists ra(-open)]} { -#@ uplevel #0 $cmd -#@ set cmd [format {open_mw_lib %s} $ra() ] -#@ } -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes create_mw_lib -hide_body -info " Create a milkyway library " -define_args {{-technology "Technology file name" "file_name" string {optional}} {-ignore_tf_error "Ignore the error in technology file" "" boolean {hidden optional}} {-hier_separator "Hierarchical separator, default is backslash / " "separator" string {hidden optional}} {-bus_naming_style "Bus naming style" "bus_naming_style" string {optional}} {-ignore_case "Make case insensitive" "" boolean {hidden optional}} {-case_sensitive "Make case sensitive" "" boolean {hidden optional}} {-mw_reference_library "List of reference libraries" "lib_list" list {optional}} {-reference_control_file "Reference control file" "file_name" string {optional}} {-open "Open the library after creation" "" boolean {optional}} {"" "Library name to create" "libName" string {required}}} -#@ -#@ # -#@ ############################################################################## -#@ # -#@ # PROCEDURE: report_mw_lib -#@ # -#@ # ABSTRACT: wrapper around MWUI report_mw_lib -#@ # -#@ ############################################################################## -#@ -#@ proc report_mw_lib args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ -#@ if {[info exists ra(-mw_reference_library)]} { -#@ if {[info exists ra()]} { -#@ set cmd [format {org_report_mw_lib -mw_reference_library %s} $ra() ] -#@ } else { -#@ set cmd [format {org_report_mw_lib -mw_reference_library} ] -#@ } -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ if {[info exists ra(-unit_range)]} { -#@ if {[info exists ra()]} { -#@ set cmd [format {org_report_mw_lib -unit_range %s} $ra() ] -#@ } else { -#@ echo "Error : Library name must be specified when using this option" -#@ return 0; -#@ } -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ } -#@ -#@ define_proc_attributes report_mw_lib -hide_body -info " Report information about the library " -define_args {{-unit_range "Report unit range of library" "" boolean {optional}} {-mw_reference_library "Report list of reference libraries" "" boolean {optional}} {"" "Library to be reported" "libName" string {optional}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: close_mw_lib -#@ # -#@ # ABSTRACT: Wrapper around close_mw_lib to handle -save option properly -#@ # - save_mw_cel to save current cel with dc_netlist -#@ # - close_mw_cel to close current cel -#@ # - save_open_cels to save other open cels before closing library -#@ # -#@ ############################################################################## -#@ -#@ proc close_mw_lib args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ if {$args == ""} { -#@ set cmd [format {icc_is_dc_up} ] -#@ if {[uplevel #0 $cmd]} { -#@ set cmd [format {remove_design -quiet -designs} ] -#@ if {[uplevel #0 $cmd]} { -#@ set cmd [format {org_close_mw_lib } ] -#@ return [uplevel #0 $cmd] -#@ } else { -#@ return 0 -#@ } -#@ } else { -#@ set cmd [format {org_close_mw_lib } ] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ -#@ if {[info exists ra(-save)]} { -#@ -#@ set cmd [format {save_mw_cel} ] -#@ if {![uplevel #0 $cmd]} { -#@ return -#@ } -#@ -#@ set cmd [format {close_mw_cel} ] -#@ if {![uplevel #0 $cmd]} { -#@ return -#@ } -#@ -#@ set cmd [format {save_open_cels} ] -#@ if {![uplevel #0 $cmd]} { -#@ return -#@ } -#@ } -#@ -#@ set cmd [format {org_close_mw_lib} ] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ define_proc_attributes close_mw_lib -hide_body -info " Closes the milkyway library " -define_args {{-save "Save open cels" "" boolean {optional}} {"" "libraries to be closed" "lib list" list {hidden optional}}} -#@ } else { -#@ define_proc_attributes close_mw_lib -hide_body -info " Closes the milkyway library " -define_args {{-no_save "Don't save open cels" "" boolean {hidden optional}} {"" "libraries to be closed" "lib list" list {hidden optional}}} -#@ } -#@ ############################################################################## -#@ # -#@ # PROCEDURE: write_mw_lib_files -#@ # -#@ # ABSTRACT: Write technology or reference control file -#@ # History: Yun Zhang 2012/12/11, public option -stream_layer_map_file -#@ # History: Yun Zhang 2012/9/5. support new hidden option -vt_cell_placement_properties -#@ # History: Yun Zhang 2011/12/5. add new hidden option -stream_layer_map_file -#@ # -#@ ############################################################################## -#@ proc write_mw_lib_files args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd "" -#@ -#@ if {[info exists ra(-reference_control_file)]} { -#@ #Option -reference_contrl_file, -plib and -technology are exclusive. -#@ # If both of them are set at the same time, error reported. -#@ # 9000273455, by xqsun, 2009/2/4 -#@ if {[info exists ra(-technology)]} { -#@ echo "Error: Cannot specify '-reference_control_file' with '-technology'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-plib)]} { -#@ echo "Error: Cannot specify '-reference_control_file' with '-plib'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-vt_cell_placement_properties)]} { -#@ echo "Error: Cannot specify '-reference_control_file' with '-vt_cell_placement_properties'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-stream_layer_map_file)]} { -#@ echo "Error: Cannot specify '-reference_control_file' with '-stream_layer_map_file'.(CMD-001)" -#@ return 0 -#@ } else { -#@ set cmd [format {report_mw_lib_ref_ctrl_file -output %s %s} $ra(-output) $ra() ] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ -#@ if {[info exists ra(-technology)]} { -#@ if {[info exists ra(-plib)]} { -#@ echo "Error: Cannot specify '-technology' with '-plib'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-vt_cell_placement_properties)]} { -#@ echo "Error: Cannot specify '-technology' with '-vt_cell_placement_properties'.(CMD-001)" -#@ return 0 -#@ } elseif {[info exists ra(-stream_layer_map_file)]} { -#@ echo "Error: Cannot specify '-technology' with '-stream_layer_map_file'.(CMD-001)" -#@ return 0 -#@ } else { -#@ set cmd [format {org_report_mw_lib -output %s %s} $ra(-output) $ra() ] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ -#@ if {[info exists ra(-vt_cell_placement_properties)]} { -#@ if {[info exists ra(-stream_layer_map_file)]} { -#@ echo "Error: Cannot specify '-vt_cell_placement_properties' with '-stream_layer_map_file'.(CMD-001)" -#@ return 0 -#@ } else { -#@ set cmd [format {org_report_mw_lib -vt_cell_placement_properties -output %s %s} $ra(-output) $ra() ] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ -#@ if {[info exists ra(-stream_layer_map_file)]} { -#@ set cmd [format {org_report_mw_lib -stream_layer_map_file %s -output %s %s} $ra(-stream_layer_map_file) $ra(-output) $ra() ] -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ } -#@ -#@ define_proc_attributes write_mw_lib_files -hide_body -info " Write technology or reference control file " -define_args {{-technology "Dump technology file" "" boolean {optional}} {-vt_cell_placement_properties "Dump multi-VT cells' implant layer information of library" "" boolean {optional hidden}} {-reference_control_file "Dump reference control file" "" boolean {optional}} {-stream_layer_map_file "Dump layer map file during stream in/out" "" string {optional}} {-output "Output file" "file_name" string {required}} {"" "Library to be reported" "libName" string {required}}} -#@ } -#@ ############################################################################## -#@ # -#@ # PROCEDURE: close_mw_cel -#@ # -#@ # ABSTRACT: Wrapper around close_mw_cel to add -save option -#@ # remove_timing_design is the command to shutdown dc netlist -#@ # -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ -#@ proc close_mw_cel args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ global mw_is_all_views -#@ set cmd [format {icc_is_dc_up} ] -#@ set dc_is_up [uplevel #0 $cmd] -#@ -#@ set cmd_close [format {org_close_mw_cel} ] -#@ -#@ if {[info exists ra(-all_views)]} { -#@ set cmd_close [format {%s -all_views} $cmd_close] -#@ set mw_is_all_views 1 -#@ } -#@ if {[info exists ra(-all_versions)]} { -#@ set cmd_close [format {%s -all_versions} $cmd_close] -#@ } -#@ if {[info exists ra(-save)]} { -#@ set cmd_close [format {%s -save} $cmd_close] -#@ } -#@ if {[info exists ra(-verbose)]} { -#@ set cmd_close [format {%s -verbose} $cmd_close] -#@ } -#@ if {[info exists ra(-hierarchy)]} { -#@ set cmd_close [format {%s -hierarchy} $cmd_close] -#@ } -#@ -#@ ui_util_clean_saved_lib_attr $args -#@ -#@ set cmd "" -#@ set lcels "" -#@ set is_current_closed 1 -#@ -#@ if {[info exists ra()]} { -#@ set lcels $ra() -#@ } -#@ set len [string length $lcels] -#@ if {$len > 0} { -#@ set is_current_closed [is_current_mw_cel $lcels] -#@ set cmd_close [format {%s {%s}} $cmd_close $lcels] -#@ } -#@ if {[uplevel #0 $cmd_close]} { -#@ set mw_is_all_views 0 -#@ if {$dc_is_up == 1} { -#@ if {$is_current_closed == 1} { -#@ set cmd [format {remove_design -quiet -designs} ] -#@ return [uplevel #0 $cmd] -#@ } -#@ return 1 -#@ } else { -#@ return 1 -#@ } -#@ } else { -#@ set mw_is_all_views 0 -#@ return 0 -#@ } -#@ } -#@ -#@ define_proc_attributes close_mw_cel -hide_body -info " Closes the design " -define_args {{-save "Save the design" "" boolean {optional}} {-discard "Discard any changes" "" boolean {optional hidden}} {-verbose "Print out debugging messages" "" boolean {optional hidden}} {-hierarchy "Close top design and its child designs" "" boolean {optional}} {-all_views "Close all views of the design" "" boolean {optional}} {-all_versions "Close all versions of the design" "" boolean {optional}} {"" "designs to be closed" "design list" list {optional}}} -#@ -#@ ############################################################################## -#@ # -#@ # PROCEDURE: save_all_mw_cel -#@ # -#@ # ABSTRACT: Wrapper around save_mw_cel to save all the open cels. Needed for Black box flow. -#@ # -#@ ############################################################################## -#@ -#@ proc save_all_mw_cels { } { -#@ set top_cel [get_attribute [current_mw_cel] name] -#@ -#@ set cels [fp_get_open_cells] -#@ -#@ foreach cel $cels { -#@ if {$cel != $top_cel} { -#@ current_mw_cel $cel -#@ -#@ save_mw_cel -#@ } -#@ } -#@ -#@ current_mw_cel $top_cel -#@ -#@ save_mw_cel -#@ } -#@ -#@ icc_hide_cmd save_all_mw_cels -#@ -#@ ############################################################################## -#@ # PROCEDURE: execute_command_and_create_cel_from_scratch -#@ # ABSTRACT: This procedure executes the given command and creates the CEL -#@ # from scratch after executing this command. -#@ ############################################################################## -#@ proc execute_command_and_create_cel_from_scratch {org_cmd_name args} { -#@ global mw_create_cel_force -#@ global mw_enable_auto_cel -#@ global mw_force_auto_cel -#@ -#@ set lib [current_mw_lib] -#@ -#@ # If no MW lib, design is not from MW. Execute the original command -#@ # and return. -#@ if {$lib == ""} { -#@ return [eval $org_cmd_name $args] -#@ } -#@ -#@ # Get values of few variables. -#@ set incr_mode $mw_create_cel_force -#@ set mw_create_cel_force TRUE -#@ -#@ # Get auto cel mode, disable it temporarily if enabled. -#@ set auto_cel_mode $mw_enable_auto_cel -#@ set mw_enable_auto_cel FALSE -#@ -#@ # Check if the already existing CEL is auto-CEL. -#@ set auto_cel 0 -#@ if {[is_cel_auto_cel]} { -#@ set auto_cel 1 -#@ } elseif {![get_top_cel_mwid]} { -#@ set auto_cel 1 -#@ } -#@ -#@ -#@ # Run the original command, if not successful restore the incr_mode -#@ # variable and return. No CEL is created. -#@ if {![eval $org_cmd_name $args]} { -#@ set mw_create_cel_force $incr_mode -#@ set mw_enable_auto_cel $auto_cel_mode -#@ return 0 -#@ } -#@ -#@ # Restore auto_cel mode -#@ set mw_enable_auto_cel $auto_cel_mode -#@ -#@ # Now create auto or real CEL depending on what the original CEL was. -#@ if {$auto_cel == "1"} { -#@ # Force creation of auto-CEL, since commands other than read_def/pdef -#@ # do not decouple CEL from DC. -#@ -#@ set mw_force_auto_cel TRUE -#@ set cmd [format {save_mw_cel -auto}] -#@ } else { -#@ if [get_top_cel_mwid] { -#@ set cmd [format {save_mw_cel -create}] -#@ echo "Information: Command not supported by incr. update or write-thru." -#@ echo " Creating new CEL from scratch, old CEL will be closed." -#@ } -#@ } -#@ -#@ # Create the Auto CEL or normal CEL from scratch. -#@ if {![uplevel #0 $cmd]} { -#@ set mw_create_cel_force $incr_mode -#@ set mw_force_auto_cel FALSE -#@ return 0 -#@ } -#@ -#@ set mw_create_cel_force $incr_mode -#@ set mw_force_auto_cel FALSE -#@ return 1 -#@ } -#@ -#@ define_proc_attributes execute_command_and_create_cel_from_scratch -hidden -hide_body -#@ -#@ ############################################################################## -#@ # PROCEDURE: read_def -#@ # ABSTRACT: Wrapper around read_def to handle incremental update properly -#@ # if MW based read_def is used, bypass the wrapper -#@ # enable_milkyway_def_reader_writer must be TRUE and use_pdb_lib_format must -#@ # be false for MW read_Def to be run, use wrapper if either condition fails -#@ ############################################################################## -#@ rename -force dc_read_def org_read_def -#@ icc_hide_cmd org_read_def -#@ proc dc_read_def args { -#@ parse_proc_arguments -args $args ra -#@ -#@ return [eval execute_command_and_create_cel_from_scratch "org_read_def" $args] -#@ } -#@ -#@ define_proc_attributes dc_read_def -hide_body -info " Read a def file " -define_args {{-design "name of design for which clusters are to be read" "" string {optional}} {-quiet "do not print out any warnings" "" boolean {optional}} {-verbose "print out more warnings" "" boolean {optional}} {-allow_physical_cells "allow physical cells" "" boolean {optional}} {-allow_physical_ports "allow physical ports" "" boolean {optional}} {-allow_physical_nets "allow physical nets" "" boolean {optional}} {-skip_signal_nets "skip signal nets" "" boolean {optional}} {-incremental "incremental" "" boolean {optional}} {-enforce_scaling "enforce_scaling" "" boolean {optional}} {-move_bounds "move bounds" "" boolean {optional}} {"" "input def file names" "input_def_file_name" string {required}}} -#@ -#@ -#@ ############################################################################## -#@ # PROCEDURE: group -#@ # ABSTRACT: Wrapper around group to handle incremental update properly -#@ ############################################################################## -#@ rename -force group org_group -#@ icc_hide_cmd org_group -#@ proc group args { -#@ parse_proc_arguments -args $args ra -#@ return [eval execute_command_and_create_cel_from_scratch "org_group" $args] -#@ } -#@ -#@ define_proc_attributes group -hide_body -info " create new hierarchy" -define_args {{-except "cells not to be included in the group" "exclude_list" list {optional}} -#@ {-design_name "name of design created for new hierarchy" "design_name" string {optional}} -#@ {-cell_name "name of cell created for new hierarchy" "cell_name" string {optional}} -#@ {-logic "group any combinational elements" "" boolean {optional}} -#@ {-pla "group any PLA elements" "" boolean {optional}} -#@ {-fsm "group all elements part of a finite state machine" "" boolean {optional}} -#@ {-hdl_block "name of hdl_block to group" "" string {optional}} -#@ {-hdl_bussed "group all bussed gates under this block" "" boolean {optional}} -#@ {-hdl_all_blocks "group all hdl blocks under this block" "" boolean {optional}} -#@ {-soft "set the group_name attribute" "" boolean {optional}} -#@ {"" "cells to be included in the group" "cell_list" list {optional}}} -#@ -#@ ############################################################################## -#@ # PROCEDURE: copy_design -#@ # ABSTRACT: Wrapper around copy_design to handle incremental update properly -#@ ############################################################################## -#@ rename -force copy_design org_copy_design -#@ icc_hide_cmd org_copy_design -#@ proc copy_design args { -#@ parse_proc_arguments -args $args ra -#@ return [eval execute_command_and_create_cel_from_scratch "org_copy_design" $args] -#@ } -#@ -#@ define_proc_attributes copy_design -hide_body -info " copy_design" -define_args {{"" "List of designs to be copied" "design_list" list {required}} -#@ {"" "Name of new design or target file" "target_name" string {required}}} -#@ -#@ ############################################################################## -#@ # PROCEDURE: create_design -#@ # ABSTRACT: Wrapper around create_design to handle incremental update properly -#@ ############################################################################## -#@ rename -force create_design org_create_design -#@ icc_hide_cmd org_create_design -#@ proc create_design args { -#@ parse_proc_arguments -args $args ra -#@ return [eval execute_command_and_create_cel_from_scratch "org_create_design" $args] -#@ } -#@ -#@ define_proc_attributes create_design -hide_body -info " Creates a design in dc_shell memory" -define_args {{"" "name of the design to create" "" string {required}} -#@ {"" "name of file for design; optional" "" string {optional}}} -#@ -#@ ############################################################################## -#@ # PROCEDURE: reset_design -#@ # ABSTRACT: Wrapper around reset_design to handle incremental update properly -#@ ############################################################################## -#@ #rename -force reset_design org_reset_design -#@ #icc_hide_cmd org_reset_design -#@ #proc reset_design args { -#@ # parse_proc_arguments -args $args ra -#@ # return [eval execute_command_and_create_cel_from_scratch "org_reset_design" $args] -#@ #} -#@ -#@ ############################################################################## -#@ # PROCEDURE: rename_design -#@ # ABSTRACT: Wrapper around rename_design to handle incremental update properly -#@ ############################################################################## -#@ rename -force rename_design org_rename_design -#@ icc_hide_cmd org_rename_design -#@ proc rename_design args { -#@ parse_proc_arguments -args $args ra -#@ return [eval execute_command_and_create_cel_from_scratch "org_rename_design" $args] -#@ } -#@ -#@ define_proc_attributes rename_design -hide_body -info " rename_design" -define_args {{"" "List of designs to be renamed" "design_list" list {required}} -#@ {"" "Name of new design or target file" "target_name" string {required}}} -#@ -#@ } -#@ -#@ ############################################################################## -#@ # If we are in icc_shell (i.e. Galileo) then -#@ # load the procedures to switch between DC and Milkyway collections. -#@ # Set the default to MW collection unless otherwise specified. -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ # load the procedures that switch between DC and MW collections -#@ source $synopsys_root/auxx/syn/collection_procs.tcl -#@ -#@ set CS mw -#@ -#@ # see if the user wants DC -#@ if {! [catch {getenv USE_DC_COLLECTIONS_ONLY}] && -#@ [getenv USE_DC_COLLECTIONS_ONLY] } { -#@ set CS dc -#@ } -#@ -#@ # set the collection source now -#@ redirect /dev/null { -#@ if {[catch {set_collection_mode -handle $CS}]} { -#@ catch {set_collection_option -handle $CS} -#@ } -#@ } -#@ -#@ unset CS -#@ } -#@ -#@ ############################################################################## -#@ # procedure for route command -#@ # echo the command to a temp tcl file for seperate process to pick up -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ rename -force route org_route -#@ icc_hide_cmd org_route -#@ proc route args { -#@ set route_cmd_file_name ".route_cmd.tcl" -#@ set route_cmd_temp_file_name ".route_cmd.tcl.temp" -#@ set fp [open $route_cmd_file_name "w"] -#@ set route_cmd [concat "sep_proc_route " $args " -child"] -#@ puts $fp $route_cmd -#@ close $fp -#@ -#@ uplevel #0 rename -force route route_temp_proc -#@ uplevel #0 rename -force org_route route -#@ set status [ uplevel #0 route $args ] -#@ uplevel #0 rename -force route org_route -#@ uplevel #0 rename -force route_temp_proc route -#@ -#@ if { [info exist status ] == 1 } { -#@ return $status -#@ } -#@ return -#@ } -#@ } -#@ -#@ ############################################################################## -#@ # Tcl Command: set_ignore_cell -#@ # Description: Load the command only in IC Compiler (icc_shell) -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ source $synopsys_root/auxx/syn/psyn/ideal_cell.tcl.e -#@ } -#@ -#@ ############################################################################## -#@ # Tcl Command: check_physical_design -#@ # Description: Load the command only in IC Compiler (icc_shell) -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ # Load the compiled Tcl byte-code: -#@ # 9000784997: Do not log to command.log when sourcing .tbc files -#@ set prev_sh_source_logging [get_app_var sh_source_logging] -#@ set_app_var sh_source_logging 0 -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_core.tbc -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_utils.tbc -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_flows.tbc -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_reports.tbc -#@ source $synopsys_root/auxx/syn/psyn/check_physical_design_ui.tbc -#@ source $synopsys_root/auxx/syn/psyn/sanity_setup_opt.tbc -#@ source $synopsys_root/auxx/syn/psyn/sanity_setup_cmd.tbc -#@ source $synopsys_root/auxx/syn/psyn/sanity_setup_rpt.tbc -#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc -#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc -#@ source $synopsys_root/auxx/syn/psyn/msgParser.tbc -#@ source $synopsys_root/auxx/syn/psyn/displacement_gui.tbc -#@ source $synopsys_root/auxx/syn/psyn/categorize_timing_gui.tbc -#@ set_app_var sh_source_logging $prev_sh_source_logging -#@ -#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e -#@ source $synopsys_root/auxx/syn/psyn/propagate_all_clocks.tcl.e -#@ } -#@ -#@ if { [string match -nocase {*dc_shell*} $synopsys_program_name] && [shell_is_in_topographical_mode] } { -#@ # 9000784997: Do not log to command.log when sourcing .tbc files -#@ set prev_sh_source_logging [get_app_var sh_source_logging] -#@ set_app_var sh_source_logging 0 -#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc -#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc -#@ set_app_var sh_source_logging $prev_sh_source_logging -#@ -#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e -#@ } -#@ -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] || [string match -nocase {*dc_shell*} $synopsys_program_name] || [string match -nocase {*de_shell*} $synopsys_program_name] } { -#@ source $synopsys_root/auxx/syn/psyn/write_timing_context.tcl.e; -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ source $synopsys_root/auxx/syn/psyn/write_scenarios.tbc; -#@ } -#@ } -#@ -#@ if { $synopsys_program_name == "de_shell" } { -#@ # 9000784997: Do not log to command.log when sourcing .tbc files -#@ set prev_sh_source_logging [get_app_var sh_source_logging] -#@ set_app_var sh_source_logging 0 -#@ source $synopsys_root/auxx/syn/psyn/create_qor_snapshot.tbc -#@ source $synopsys_root/auxx/syn/psyn/report_qor_snapshot.tbc -#@ set_app_var sh_source_logging $prev_sh_source_logging -#@ -#@ source $synopsys_root/auxx/syn/psyn/mcmm_utils.tcl.e -#@ } -#@ -#@ ############################################################################## -#@ # ICC setup and hiding commands/procs etc -#@ ############################################################################## -#@ -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ #set save_mw_cel_lib_setup TRUE -#@ #set auto_restore_mw_cel_lib_setup FALSE -#@ -#@ alias create_wiring_keepout create_wiring_keepouts -#@ alias get_wiring_keepout get_wiring_keepouts -#@ alias get_placement_keepout get_placement_keepouts -#@ alias create_placement_keepout create_placement_keepouts -#@ -#@ icc_hide_cmd execute_command_and_create_cel_from_scratch -#@ icc_hide_cmd dc_read_def -#@ icc_hide_cmd read_edif -#@ icc_hide_cmd read_sverilog -#@ icc_hide_cmd read_vhdl -#@ icc_hide_cmd set_collection_mode -#@ icc_hide_cmd return_dc_collection -#@ icc_hide_cmd return_mw_collection -#@ set mw_use_pdb_lib_format true -#@ } -#@ -#@ -#@ ############################################################################## -#@ # Tcl Command: get_dont_touch_nets -#@ # Description: wrapper of "get_nets -filter dont_touch_reason==mv" -#@ ############################################################################## -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ -#@ proc get_dont_touch_nets args { -#@ -#@ parse_proc_arguments -args $args ra -#@ -#@ set cmd [format {get_nets}] -#@ -#@ if {[info exists ra()]} { -#@ set cmd [format {%s {%s}} $cmd $ra()] -#@ } -#@ if {[info exists ra(-type)]} { -#@ set cmd [format {%s -filter dont_touch_reasons=~*%s*} $cmd $ra(-type)] -#@ } -#@ if {[info exists ra(-hierarchical)]} { -#@ set cmd [format {%s -hierarchical} $cmd] -#@ } -#@ if {[info exists ra(-quiet)]} { -#@ set cmd [format {%s -quiet} $cmd] -#@ } -#@ if {[info exists ra(-regexp)]} { -#@ set cmd [format {%s -regexp} $cmd] -#@ } -#@ if {[info exists ra(-nocase)]} { -#@ set cmd [format {%s -nocase} $cmd] -#@ } -#@ if {[info exists ra(-exact)]} { -#@ set cmd [format {%s -exact} $cmd] -#@ } -#@ -#@ return [uplevel #0 $cmd] -#@ } -#@ -#@ define_proc_attributes get_dont_touch_nets -info " Get dont_touch nets " -permanent -define_args { {"" "Match net names against patterns" "patterns" list {optional}} {-type "Match net dont_touch reasons" "reasons" list {required}} {-hierarchical "Search level-by-level in current instance" "" boolean {optional}} {-quiet "Suppress all messages" "" boolean {optional hidden}} {-regexp "Patterns are full regular expressions" "" boolean {optional hidden}} {-nocase "With -regexp, matches are case-insensitive" "" boolean {optional hidden}} {-exact "Wildcards are considered as plain characters" "" boolean {optional hidden}} } -#@ -#@ alias get_dont_touch_net get_dont_touch_nets -#@ } -#@ -#@ -#@ ############################################################################## -#@ # return the first {index value} pair in Tcl array ary. -#@ ############################################################################## -#@ proc _snps_array_peek { level ary } { -#@ upvar #$level $ary loc_ary -#@ set ret [list] -#@ if {[catch {set token [array startsearch loc_ary]}]} { -#@ return $ret -#@ } -#@ while {[array anymore loc_ary $token]} { -#@ set k [array nextelement loc_ary $token] -#@ set v $loc_ary($k) -#@ set ret [list $k $v] -#@ break -#@ } -#@ array donesearch loc_ary $token -#@ return $ret; -#@ } -#@ define_proc_attributes _snps_array_peek -hidden -#@ -#@ -#@ ############################################################################## -#@ # Tcl Command: filter_collection -#@ # Description: DC wrapper for filter_collection with fixes of direction filter -#@ # -#@ # This is a fix for DC's filter using "direction" attribute. This -#@ # attribute is of integer type, but user wants a string format -#@ ############################################################################## -#@ if {[string match -nocase {*icc_shell*} $synopsys_program_name] == 0} { -#@ rename -force -hidden filter_collection _real_filter_collection -#@ proc filter_collection {args} { -#@ parse_proc_arguments -args $args ra -#@ -#@ set regexp "" -#@ set nocase "" -#@ if {[info exist ra(-regexp)]} { -#@ set regexp "-regexp" -#@ } -#@ if {[info exist ra(-nocase)]} { -#@ set nocase "-nocase" -#@ } -#@ set coll $ra(collection1) -#@ -#@ # _real_filter_collection silently returns in this error condition -#@ if {[catch {set coll_size [sizeof_collection $coll]}] || $coll_size <= 0} { -#@ return [list] -#@ } -#@ -#@ if {$::sh_translate_direction_attribute == true} { -#@ set filter_expr [replace_direction $coll $ra(expression)] -#@ } else { -#@ set filter_expr $ra(expression) -#@ } -#@ -#@ # if $ra(expression) is not empty but filter_expr is, collection is heterogrnous -#@ # and expression has "direction" as substring. We have to walk through all objects -#@ if {[string length $filter_expr] == 0 && [string length $ra(expression)] != 0} { -#@ set part1 [format {_real_filter_collection %s %s } $regexp $nocase] -#@ set results "" -#@ set subclxn "" -#@ set subsize [expr [sizeof_collection $coll]/80 + 10] -#@ set counter 0 -#@ foreach_in_collection obj $coll { -#@ incr counter -#@ set cmd [format {%s %s {%s}} $part1 $obj [replace_direction $obj $ra(expression)]] -#@ append_to_collection subclxn [uplevel #0 $cmd] -#@ if {[expr $counter % $subsize] == 0} { -#@ append_to_collection results $subclxn -#@ set subclxn "" -#@ } -#@ } -#@ if {[sizeof_collection $subclxn] != 0} { -#@ append_to_collection results $subclxn -#@ } -#@ return $results -#@ } else { -#@ set cmd [format {_real_filter_collection %s %s %s {%s}} $regexp $nocase $coll $filter_expr] -#@ return [uplevel #0 $cmd] -#@ } -#@ } -#@ define_proc_attributes filter_collection -info " Filter a collection, resulting in new collection " -permanent -define_args { {-regexp "Operators =~ and !~ use regular expressions" "" boolean {optional}} {-nocase "Case insensitive string match" "" boolean {optional}} {collection1 "Collection to filter" "collection1" string {required}} {expression "Filter expression" "expression" string {required}} } -#@ -#@ } -#@ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/.dc_procs.tcl - -#@ -#@ # Temporary fix for the LMC_HOME variable- set it to an empty string -#@ -#@ if { [catch {getenv LMC_HOME } __err ] != 0 } { -#@ setenv LMC_HOME "" -#@ } -#@ -#@ -#@ # -#@ # -#@ # Site-Specific Variables -#@ # -#@ # These are the variables that are most commonly changed at a -#@ # specific site, either upon installation of the Synopsys software, -#@ # or by specific engineers in their local .synopsys files. -#@ # -#@ # -#@ -#@ # from the System Variable Group -#@ set link_library { * your_library.db } -#@ -#@ set search_path [list . ${synopsys_root}/libraries/syn ${synopsys_root}/minpower/syn ${synopsys_root}/dw/syn_ver ${synopsys_root}/dw/sim_ver] -#@ set target_library your_library.db -#@ set synthetic_library "" -#@ set command_log_file "./command.log" -#@ set designer "" -#@ set company "" -#@ set find_converts_name_lists "false" -#@ -#@ set symbol_library your_library.sdb -#@ -#@ # Turn on Formality SVF recording -#@ if { $synopsys_program_name == "dc_shell" || $synopsys_program_name == "de_shell" || $synopsys_program_name == "design_vision" } { -#@ set_svf -default default.svf -#@ } -#@ -#@ # from the Schematic Variable Group -#@ -#@ # from the Plot Variable Group -#@ # [froi] 07/06/2012: Remove old Design Analyzer plot_command variable -#@ #if { $sh_arch == "hp700" } { -#@ # set plot_command "lp -d" -#@ #} else { -#@ # set plot_command "lpr -Plw" -#@ #} -#@ -#@ set view_command_log_file "./view_command.log" -#@ -#@ # from the View Variable group -#@ if { $sh_arch == "hp700" } { -#@ set text_print_command "lp -d" -#@ } else { -#@ set text_print_command "lpr -Plw" -#@ } -#@ # -#@ # System Variable Group: -#@ # -#@ # These variables are system-wide variables. -#@ # -#@ set arch_init_path ${synopsys_root}/${sh_arch}/motif/syn/uid -#@ set auto_link_disable "false" -#@ set auto_link_options "-all" -#@ set uniquify_naming_style "%s_%d" -#@ set verbose_messages "true" -#@ set echo_include_commands "true" -#@ set svf_file_records_change_names_changes "true" -#@ set change_names_update_inst_tree "true" -#@ set change_names_dont_change_bus_members false -#@ set default_name_rules "" -#@ #set tdrc_enable_clock_table_creation "true" -#@ -#@ # -#@ # Compile Variable Group: -#@ # -#@ # These variables affect the designs created by the COMPILE command. -#@ # -#@ set compile_assume_fully_decoded_three_state_busses "false" -#@ set compile_no_new_cells_at_top_level "false" -#@ set compile_dont_touch_annotated_cell_during_inplace_opt "false" -#@ set compile_update_annotated_delays_during_inplace_opt "true" -#@ set compile_instance_name_prefix "U" -#@ set compile_instance_name_suffix "" -#@ set compile_negative_logic_methodology "false" -#@ set compile_disable_hierarchical_inverter_opt "false" -#@ set compile_use_low_timing_effort "false" -#@ set compile_fix_cell_degradation "false" -#@ set compile_preserve_subdesign_interfaces "false" -#@ set compile_enable_constant_propagation_with_no_boundary_opt "true" -#@ set port_complement_naming_style "%s_BAR" -#@ set compile_implementation_selection "true" -#@ set compile_delete_unloaded_sequential_cells "true" -#@ set reoptimize_design_changed_list_file_name "" -#@ set compile_checkpoint_phases "false" -#@ set compile_cpu_limit 0.0 -#@ set compile_log_format " %elap_time %area %wns %tns %drc %endpoint"; -#@ set compile_top_all_paths "false" -#@ set compile_top_acs_partition "false" -#@ set default_port_connection_class "universal" -#@ set compile_hold_reduce_cell_count "false" -#@ set compile_retime_license_behavior "wait" -#@ set dont_touch_nets_with_size_only_cells "false" -#@ if { $synopsys_program_name == "dc_shell" && [shell_is_in_topographical_mode] } { -#@ set dct_prioritize_area_correlation "false" -#@ set compile_error_on_missing_physical_cells "false" -#@ } -#@ -#@ set ldd_return_val 0 -#@ if { [string compare $dc_shell_mode "default"] == 0 } { -#@ set ldd_script ${synopsys_root}/auxx/syn/scripts/list_duplicate_designs.dcsh -#@ alias list_duplicate_designs "include -quiet ldd_script; dc_shell_status = ldd_return_val " -#@ -#@ } -#@ if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ if {$synopsys_program_name != "dc_sms_shell"} { -#@ source ${synopsys_root}/auxx/syn/scripts/list_duplicate_designs.tcl -#@ # 9000784997: Do not log to command.log when sourcing .tbc files -#@ set prev_sh_source_logging [get_app_var sh_source_logging] -#@ set_app_var sh_source_logging 0 -#@ source ${synopsys_root}/auxx/syn/scripts/analyze_datapath.tbc -#@ set_app_var sh_source_logging $prev_sh_source_logging -#@ } -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/scripts/list_duplicate_designs.tcl - -#@ ####################################################################### -#@ # -#@ # list_duplicate_designs.tcl 21 Sept. 2006 -#@ # -#@ # List designs in dc_shell memory that have the same design name -#@ # -#@ # COPYRIGHT (C) 2006, SYNOPSYS INC., ALL RIGHTS RESERVED. -#@ # -#@ ####################################################################### -#@ -#@ proc list_duplicate_designs { args } { -#@ parse_proc_arguments -args $args ra -#@ -#@ # Get the list of duplicate designs -#@ set the_pid [pid] -#@ set rand_1 [expr int(rand() * 100000)] -#@ set temp_file_1 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_1] -#@ -#@ redirect $temp_file_1 { foreach_in_collection ldd_design [find design "*"] { -#@ echo [get_object_name $ldd_design] -#@ } } -#@ -#@ set rand_2 [expr int(rand() * 100000)] -#@ set temp_file_2 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_2] -#@ -#@ sh sort $temp_file_1 | uniq -d | tee $temp_file_2 -#@ file delete $temp_file_1 -#@ -#@ # Report duplicates -#@ if { ! [file size $temp_file_2] } { -#@ echo [concat {No duplicate designs found.}] -#@ set ldd_return_val 0 -#@ } else { -#@ set rand_3 [expr int(rand() * 100000)] -#@ set temp_file_3 [format "/tmp/ldd_design_%s_%s" $the_pid $rand_3] -#@ echo {Warning: Multiple designs in memory with the same design name.} -#@ echo {} -#@ echo { Design File Path} -#@ echo { ------ ---- ----} -#@ list_designs -table > $temp_file_3 -#@ echo [sh fgrep -f $temp_file_2 $temp_file_3 | sort | grep -v 'Design.*File.*Path'] -#@ file delete $temp_file_3 -#@ set ldd_return_val 1 -#@ } -#@ -#@ # Clean up -#@ file delete $temp_file_2 -#@ -#@ set list_duplicate_designs1 $ldd_return_val -#@ } -#@ -#@ define_proc_attributes list_duplicate_designs -info " List designs of same names" -permanent -define_args { -#@ } -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/scripts/list_duplicate_designs.tcl - -#@ -#@ -#@ set compile_log_format " %elap_time %area %wns %tns %drc %endpoint"; -#@ -#@ set compile_top_all_paths "false" -#@ alias compile_inplace_changed_list_file_name reoptimize_design_changed_list_file_name -#@ -#@ # -#@ # These variables affects compile, report_timing and report_constraints -#@ # commands. -#@ # -#@ set enable_recovery_removal_arcs "false" -#@ set timing_report_attributes {dont_touch dont_use map_only size_only ideal_net infeasible_paths} -#@ -#@ # -#@ # Multibit Variable Group: -#@ # -#@ # These variables affect the multibit mapping functionality -#@ # -#@ -#@ set bus_multiple_separator_style "," -#@ set bus_multiple_name_separator_style ",," -#@ -#@ # -#@ # ILM Variable Group: -#@ # -#@ # These variables affect Interface Logic Model functionality -#@ # -#@ -#@ set ilm_ignore_percentage 25 -#@ -#@ # -#@ # Estimator Variable Group: -#@ # -#@ # These variables affect the designs created by the ESTIMATE command. -#@ # -#@ set estimate_resource_preference "fast" -#@ alias est_resource_preference estimate_resource_preference -#@ set lbo_lfo_enable_at_pin_count 3 -#@ set lbo_cells_in_regions "false" -#@ -#@ # Synthetic Library Group: -#@ # -#@ # These variable affect synthetic library processing. -#@ # -#@ set cache_dir_chmod_octal "777" -#@ set cache_file_chmod_octal "666" -#@ set cache_read "~" -#@ set cache_read_info "false" -#@ set cache_write "~" -#@ set cache_write_info "false" -#@ set synlib_dont_get_license {} -#@ set synlib_library_list {DW01 DW02 DW03 DW04 DW05 DW06 DW07} -#@ set synlib_wait_for_design_license {} -#@ set synlib_dwhomeip {} -#@ -#@ # -#@ # Insert_DFT Variable Group: -#@ # -#@ #set test_default_client_order [list] -#@ set insert_dft_clean_up "true" -#@ set insert_test_design_naming_style "%s_test_%d" -#@ # /*insert_test_scan_chain_only_one_clock = "false" -#@ # Replace by command line option (star 17215) -- Denis Martin 28-Jan-93*/ -#@ set test_clock_port_naming_style "test_c%s" -#@ set test_scan_clock_a_port_naming_style "test_sca%s" -#@ set test_scan_clock_b_port_naming_style "test_scb%s" -#@ set test_scan_clock_port_naming_style "test_sc%s" -#@ set test_scan_enable_inverted_port_naming_style "test_sei%s" -#@ set test_scan_enable_port_naming_style "test_se%s" -#@ set test_scan_in_port_naming_style "test_si%s%s" -#@ set test_scan_out_port_naming_style "test_so%s%s" -#@ set test_non_scan_clock_port_naming_style "test_nsc_%s" -#@ set test_default_min_fault_coverage 95 -#@ set test_dedicated_subdesign_scan_outs "false" -#@ set test_disable_find_best_scan_out "false" -#@ set test_dont_fix_constraint_violations "false" -#@ set test_isolate_hier_scan_out 0 -#@ set test_mode_port_naming_style "test_mode%s" -#@ set test_mode_port_inverted_naming_style "test_mode_i%s" -#@ set compile_dont_use_dedicated_scanout 1 -#@ set test_mux_constant_si "false" -#@ -#@ # -#@ # Analyze_Scan Variable Group: -#@ # -#@ # These variables affect the designs created by the PREVIEW_SCAN command. -#@ # -#@ set test_preview_scan_shows_cell_types "false" -#@ set test_scan_link_so_lockup_key "l" -#@ set test_scan_link_wire_key "w" -#@ set test_scan_segment_key "s" -#@ set test_scan_true_key "t" -#@ -#@ # -#@ # bsd Variable Group: -#@ -#@ # These variables affect the report generated by the check_bsd command -#@ # and the BSDLout generated by the write_bsdl command. -#@ # -#@ set test_user_test_data_register_naming_style "UTDR%d" -#@ -#@ set test_user_defined_instruction_naming_style "USER%d" -#@ -#@ set test_bsdl_default_suffix_name "bsdl" -#@ -#@ set test_bsdl_max_line_length 80 -#@ -#@ set test_cc_ir_masked_bits 0 -#@ -#@ set test_cc_ir_value_of_masked_bits 0 -#@ -#@ set test_bsd_allow_tolerable_violations "false" -#@ set test_bsd_optimize_control_cell "false" -#@ set test_bsd_control_cell_drive_limit 0 -#@ set test_bsd_manufacturer_id 0 -#@ set test_bsd_part_number 0 -#@ set test_bsd_version_number 0 -#@ set bsd_max_in_switching_limit 60000 -#@ set bsd_max_out_switching_limit 60000 -#@ -#@ # -#@ # TestManager Variable Group: -#@ # -#@ # These variables affect the TestManager methodology. -#@ # -#@ set multi_pass_test_generation "false" -#@ -#@ # -#@ # TestSim Variable Group: -#@ # -#@ # These variables affect the TestSim behavior. -#@ # -#@ # set testsim_print_stats_file "true" -#@ -#@ # Test DRC Variable Group: -#@ # -#@ # These variables affect the check_test command. -#@ # -#@ set test_capture_clock_skew "small_skew" -#@ set test_allow_clock_reconvergence "true" -#@ set test_check_port_changes_in_capture "true" -#@ set test_infer_slave_clock_pulse_after_capture "infer" -#@ -#@ # -#@ # Test Variable Group: -#@ # -#@ # These variables affect the rtldrc, check_test, write_test_protocol -#@ # and write_test command. -#@ # -#@ set test_default_delay 0.0 -#@ set test_default_bidir_delay 0.0 -#@ set test_default_strobe 40.0 -#@ set test_default_strobe_width 0.0 -#@ set test_default_period 100.0 -#@ set test_stil_max_line_length 72 -#@ -#@ #added for B-2008.09-place_opt-004 to disable this option in ICC -#@ -#@ if { $synopsys_program_name != "icc_shell"} { -#@ set test_write_four_cycle_stil_protocol "false" -#@ set test_protocol_add_cycle "true" -#@ set test_stil_multiclock_capture_procedures "false" -#@ set write_test_new_translation_engine "false" -#@ set test_default_scan_style "multiplexed_flip_flop" -#@ set test_jump_over_bufs_invs "true" -#@ set test_point_keep_hierarchy "false" -#@ set test_mux_constant_so "false" -#@ set test_use_test_models "false" -#@ set test_stil_netlist_format "db" -#@ group_variable test "test_protocol_add_cycle" -#@ group_variable test "test_write_four_cycle_stil_protocol" -#@ group_variable test "test_stil_multiclock_capture_procedures" -#@ group_variable test "test_default_scan_style" -#@ group_variable preview_scan "test_jump_over_bufs_invs" -#@ group_variable insert_dft "test_point_keep_hierarchy" -#@ group_variable insert_dft "test_mux_constant_so" -#@ group_variable test "test_stil_netlist_format" -#@ } -#@ set test_rtldrc_latch_check_style "default" -#@ set test_enable_capture_checks "true" -#@ set ctldb_use_old_prot_flow "false" -#@ set test_bsd_default_delay 0.0 -#@ set test_bsd_default_bidir_delay 0.0 -#@ set test_bsd_default_strobe 95.0 -#@ set test_bsd_default_strobe_width 0.0 -#@ -#@ # -#@ # Test Variable Group: -#@ # -#@ # These variables affects the set_scan_state command. -#@ # -#@ -#@ set compile_seqmap_identify_shift_registers_with_synchronous_logic_ascii false -#@ -#@ # -#@ # Write_Test Variable Group: -#@ # -#@ # These variables affect output of the WRITE_TEST command. -#@ # -#@ set write_test_input_dont_care_value "X" -#@ set write_test_vector_file_naming_style "%s_%d.%s" -#@ set write_test_scan_check_file_naming_style "%s_schk.%s" -#@ set write_test_pattern_set_naming_style "TC_Syn_%d" -#@ set write_test_max_cycles 0 -#@ set write_test_max_scan_patterns 0 -#@ # /*retain "tssi_ascii" (equivalent to "tds") for backward compatability */ -#@ set write_test_formats {synopsys tssi_ascii tds verilog vhdl wgl} -#@ set write_test_include_scan_cell_info "true" -#@ set write_test_round_timing_values "true" -#@ -#@ -#@ # -#@ # Schematic and EDIF and Hdl Variable Groups: -#@ # -#@ # These variables affect the schematics created by the -#@ # create_schematic command, define the behavior of the -#@ # DC system EDIF interface, and are for controlling hdl -#@ # reading. -#@ # -#@ set bus_dimension_separator_style {][} -#@ set bus_naming_style {%s[%d]} -#@ -#@ -#@ # -#@ # Schematic and EDIF Variable Groups: -#@ # -#@ # These variables affect the schematics created by the -#@ # create_schematic command and define the behavior of -#@ # the DC system EDIF interface. -#@ # -#@ set bus_range_separator_style ":" -#@ -#@ -#@ # -#@ # EDIF and Io Variable Groups: -#@ # -#@ # These variables define the behavior of the DC system EDIF interface and -#@ # define the behavior of the DC system interfaces, i.e. LSI, Mentor, TDL, SGE,# etc. -#@ -#@ set bus_inference_descending_sort "true" -#@ set bus_inference_style "" -#@ set write_name_nets_same_as_ports "false" -#@ # -#@ # Schematic Variable Group: -#@ # -#@ # These variables affect the schematics created by the -#@ # create_schematic command. -#@ # -#@ set font_library "1_25.font" -#@ set generic_symbol_library "generic.sdb" -#@ -#@ # -#@ # Io Variable Group: -#@ # -#@ # These variables define the behavior of the DC system -#@ # interfaces, i.e. LSI, Mentor, TDL, SGE, etc. -#@ # -#@ #set db2sge_output_directory "" -#@ #set db2sge_scale "2" -#@ #set db2sge_overwrite "true" -#@ #set db2sge_display_symbol_names "false" -#@ -#@ -#@ #set db2sge_display_pin_names "false" -#@ #set db2sge_display_instance_names "false" -#@ #set db2sge_use_bustaps "false" -#@ #set db2sge_use_compound_names "true" -#@ #set db2sge_bit_type "std_logic" -#@ #set db2sge_bit_vector_type "std_logic_vector" -#@ #set db2sge_one_name "'1'" -#@ #set db2sge_zero_name "'0'" -#@ #set db2sge_unknown_name "'X'" -#@ #set db2sge_target_xp "false" -#@ #set db2sge_tcf_package_file "synopsys_tcf.vhd" -#@ #set db2sge_use_lib_section "" -#@ #set db2sge_script "" -#@ #set db2sge_command "" -#@ -#@ # set equationout_and_sign "*" -#@ # set equationout_or_sign "+" -#@ # set equationout_postfix_negation "true" -#@ -#@ # # [wjchen] 2006/08/14: The following variables are obsoleted for DC simpilification. -#@ #set lsiin_net_name_prefix "NET_" -#@ #set lsiout_inverter_cell "" -#@ #set lsiout_upcase "true" -#@ -#@ #set mentor_bidirect_value "INOUT" -#@ #set mentor_do_path "" -#@ #set mentor_input_output_property_name "PINTYPE" -#@ #set mentor_input_value "IN" -#@ #set mentor_logic_one_value "1SF" -#@ #set mentor_logic_zero_one_property_name "INIT" -#@ #set mentor_logic_zero_value "0SF" -#@ #set mentor_output_value "OUT" -#@ #set mentor_primitive_property_name "PRIMITIVE" -#@ #set mentor_primitive_property_value "MODULE" -#@ #set mentor_reference_property_name "COMP" -#@ #set mentor_search_path "" -#@ #set mentor_write_symbols "true" -#@ -#@ ## [wjchen] 0606_simp -#@ #set pla_read_create_flip_flop "false" -#@ #set tdlout_upcase "true" -#@ -#@ # # [wjchen] 2006/08/14: The following4 variables are obsoleted for DC simpilification. -#@ # set xnfout_constraints_per_endpoint "50" -#@ # set xnfout_default_time_constraints true -#@ # set xnfout_clock_attribute_style "CLK_ONLY" -#@ # set xnfout_library_version "" -#@ -#@ # # [wjchen] 2006/08/11: The following 8 variables are obsoleted for DC simpilification. -#@ # set xnfin_family "4000" -#@ # set xnfin_ignore_pins "GTS GSR GR" -#@ # set xnfin_dff_reset_pin_name "RD" -#@ # set xnfin_dff_set_pin_name "SD" -#@ # set xnfin_dff_clock_enable_pin_name "CE" -#@ # set xnfin_dff_data_pin_name "D" -#@ # set xnfin_dff_clock_pin_name "C" -#@ # set xnfin_dff_q_pin_name "Q" -#@ # -#@ -#@ # -#@ # EDIF Variable Group: -#@ # -#@ # These variables define the behavior of the DC system -#@ # EDIF interface. -#@ # -#@ -#@ ##[wjchen] 2006/08/24 -#@ -#@ # set bus_extraction_style {%s[%d:%d]} -#@ -#@ ##[wjchen] 2006/08/24 -#@ #set edifin_autoconnect_offpageconnectors "false" -#@ #set edifin_autoconnect_ports "false" -#@ #set edifin_dc_script_flag "" -#@ #set edifin_delete_empty_cells "true" -#@ #set edifin_delete_ripper_cells "true" -#@ #set edifin_ground_net_name "" -#@ #set edifin_ground_net_property_name "" -#@ #set edifin_ground_net_property_value "" -#@ #set edifin_ground_port_name "" -#@ #set edifin_instance_property_name "" -#@ #set edifin_portinstance_disabled_property_name "" -#@ #set edifin_portinstance_disabled_property_value "" -#@ #set edifin_portinstance_property_name "" -#@ #set edifin_power_net_name "" -#@ #set edifin_power_net_property_name "" -#@ #set edifin_power_net_property_value "" -#@ #set edifin_power_port_name "" -#@ #set edifin_use_identifier_in_rename "false" -#@ #set edifin_view_identifier_property_name "" -#@ #set edifin_lib_logic_1_symbol "" -#@ #set edifin_lib_logic_0_symbol "" -#@ #set edifin_lib_in_port_symbol "" -#@ #set edifin_lib_out_port_symbol "" -#@ #set edifin_lib_inout_port_symbol "" -#@ #set edifin_lib_in_osc_symbol "" -#@ #set edifin_lib_out_osc_symbol "" -#@ #set edifin_lib_inout_osc_symbol "" -#@ #set edifin_lib_mentor_netcon_symbol "" -#@ #set edifin_lib_ripper_bits_property "" -#@ #set edifin_lib_ripper_bus_end "" -#@ #set edifin_lib_ripper_cell_name "" -#@ #set edifin_lib_ripper_view_name "" -#@ #set edifin_lib_route_grid 1024 -#@ #set edifin_lib_templates {} -#@ #set edifout_dc_script_flag "" -#@ #set edifout_design_name "Synopsys_edif" -#@ #set edifout_designs_library_name "DESIGNS" -#@ #set edifout_display_instance_names "false" -#@ #set edifout_display_net_names "false" -#@ #set edifout_external "true" -#@ #set edifout_external_graphic_view_name "Graphic_representation" -#@ #set edifout_external_netlist_view_name "Netlist_representation" -#@ #set edifout_external_schematic_view_name "Schematic_representation" -#@ #set edifout_ground_name "logic_0" -#@ #set edifout_ground_net_name "" -#@ #set edifout_ground_net_property_name "" -#@ #set edifout_ground_net_property_value "" -#@ #set edifout_ground_pin_name "logic_0_pin" -#@ #set edifout_ground_port_name "GND" -#@ #set edifout_instance_property_name "" -#@ #set edifout_instantiate_ports "false" -#@ #set edifout_library_graphic_view_name "Graphic_representation" -#@ #set edifout_library_netlist_view_name "Netlist_representation" -#@ #set edifout_library_schematic_view_name "Schematic_representation" -#@ #set edifout_merge_libraries "false" -#@ #set edifout_multidimension_arrays "false" -#@ #set edifout_name_oscs_different_from_ports "false" -#@ #set edifout_name_rippers_same_as_wires "false" -#@ #set edifout_netlist_only "false" -#@ #set edifout_no_array "false" -#@ #set edifout_numerical_array_members "false" -#@ #set edifout_pin_direction_in_value "" -#@ #set edifout_pin_direction_inout_value "" -#@ #set edifout_pin_direction_out_value "" -#@ #set edifout_pin_direction_property_name "" -#@ #set edifout_pin_name_property_name "" -#@ #set edifout_portinstance_disabled_property_name "" -#@ #set edifout_portinstance_disabled_property_value "" -#@ #set edifout_portinstance_property_name "" -#@ #set edifout_power_and_ground_representation "cell" -#@ #set edifout_power_name "logic_1" -#@ #set edifout_power_net_name "" -#@ #set edifout_power_net_property_name "" -#@ #set edifout_power_net_property_value "" -#@ #set edifout_power_pin_name "logic_1_pin" -#@ #set edifout_power_port_name "VDD" -#@ #set edifout_skip_port_implementations "false" -#@ #set edifout_target_system "" -#@ #set edifout_top_level_symbol "true" -#@ #set edifout_translate_origin "" -#@ #set edifout_unused_property_value "" -#@ #set edifout_write_attributes "false" -#@ #set edifout_write_constraints "false" -#@ #set edifout_write_properties_list {} -#@ #set read_name_mapping_nowarn_libraries {} -#@ #set write_name_mapping_nowarn_libraries {} -#@ -#@ # -#@ # Hdl and Vhdlio Variable Groups: -#@ # -#@ # These variables are for controlling hdl reading, writing, -#@ # and optimizing. -#@ # -#@ set hdlin_enable_upf_compatible_naming "FALSE" -#@ set hdlin_auto_save_templates "FALSE" -#@ set hdlin_generate_naming_style "%s_%d" -#@ set hdlin_enable_relative_placement "rb" -#@ set hdlin_mux_rp_limit "128x4" -#@ set hdlin_generate_separator_style "_" -#@ set hdlin_ignore_textio_constructs "TRUE" -#@ set hdlin_infer_function_local_latches "FALSE" -#@ set hdlin_keep_signal_name "all_driving" -#@ set hdlin_module_arch_name_splitting "FALSE" -#@ set hdlin_preserve_sequential "none" -#@ set hdlin_presto_net_name_prefix "N" -#@ set hdlin_presto_cell_name_prefix "C" -#@ set hdlin_strict_verilog_reader "FALSE" -#@ set hdlin_prohibit_nontri_multiple_drivers "TRUE" -#@ if { $synopsys_program_name == "de_shell" } { -#@ set hdlin_elab_errors_deep "TRUE" -#@ } else { -#@ set hdlin_elab_errors_deep "FALSE" -#@ } -#@ set hdlin_mux_size_min 2 -#@ set hdlin_subprogram_default_values "FALSE" -#@ set hdlin_field_naming_style "" -#@ set hdlin_upcase_names "FALSE" -#@ set hdlin_sv_union_member_naming "FALSE" -#@ set hdlin_enable_hier_map "FALSE" -#@ set hdlin_sv_interface_only_modules "" -#@ set hdlin_sv_enable_rtl_attributes "FALSE" -#@ set hdlin_vhdl_std 2008 -#@ set hdlin_vhdl93_concat "TRUE" -#@ set hdlin_vhdl_syntax_extensions "FALSE" -#@ set hdlin_analyze_verbose_mode 0 -#@ set hdlin_report_sequential_pruning "FALSE" -#@ set hdlin_vrlg_std 2005 -#@ set hdlin_sverilog_std 2012 -#@ set hdlin_while_loop_iterations 4096 -#@ set hdlin_reporting_level "basic" -#@ set hdlin_autoread_verilog_extensions ".v" -#@ set hdlin_autoread_sverilog_extensions ".sv .sverilog" -#@ set hdlin_autoread_vhdl_extensions ".vhd .vhdl" -#@ set hdlin_autoread_exclude_extensions "" -#@ -#@ set bus_minus_style "-%d" -#@ set hdlin_latch_always_async_set_reset FALSE -#@ set hdlin_ff_always_sync_set_reset FALSE -#@ set hdlin_ff_always_async_set_reset TRUE -#@ set hdlin_check_input_netlist FALSE -#@ set hdlin_check_no_latch FALSE -#@ set hdlin_mux_for_array_read_sparseness_limit 90 -#@ set hdlin_infer_mux "default" -#@ set hdlin_mux_oversize_ratio 100 -#@ set hdlin_mux_size_limit 32 -#@ set hdlin_mux_size_only 1 -#@ set hdlin_infer_multibit "default_none" -#@ set hdlin_enable_rtldrc_info "false" -#@ set hdlin_interface_port_ABI 3 -#@ set hdlin_shorten_long_module_name "false" -#@ set hdlin_module_name_limit 256 -#@ set hdlin_enable_assertions "FALSE" -#@ set hdlin_enable_configurations "FALSE" -#@ set hdlin_sv_blackbox_modules "" -#@ set hdlin_sv_tokens "FALSE" -#@ set hdlin_sv_packages "enable" -#@ set hdlin_verification_priority "FALSE" -#@ set hdlin_enable_elaborate_ref_linking "FALSE" -#@ set hdlin_enable_hier_naming "FALSE" -#@ set hdlin_enable_elaborate_update "true" -#@ set hdlin_vhdl_mixed_language_instantiation "FALSE" -#@ set hdl_preferred_license "" -#@ set hdl_keep_licenses "true" -#@ set hlo_resource_allocation "constraint_driven" -#@ set sdfout_top_instance_name "" -#@ set sdfout_time_scale 1.0 -#@ set sdfout_min_rise_net_delay 0. -#@ set sdfout_min_fall_net_delay 0. -#@ set sdfout_min_rise_cell_delay 0. -#@ set sdfout_min_fall_cell_delay 0. -#@ set sdfout_write_to_output "false" -#@ set sdfout_allow_non_positive_constraints "false" -#@ set sdfin_top_instance_name "" -#@ set sdfin_min_rise_net_delay 0. -#@ set sdfin_min_fall_net_delay 0. -#@ set sdfin_min_rise_cell_delay 0. -#@ set sdfin_min_fall_cell_delay 0. -#@ set sdfin_rise_net_delay_type "maximum" -#@ set sdfin_fall_net_delay_type "maximum" -#@ set sdfin_rise_cell_delay_type "maximum" -#@ set sdfin_fall_cell_delay_type "maximum" -#@ set site_info_file ${synopsys_root}/admin/license/site_info -#@ if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ alias site_info sh cat $site_info_file -#@ } else { -#@ alias site_info "sh cat site_info_file" -#@ } -#@ set template_naming_style "%s_%p" -#@ set template_parameter_style "%s%d" -#@ set template_separator_style "_" -#@ set verilogout_equation "false" -#@ set verilogout_ignore_case "false" -#@ set verilogout_no_tri "false" -#@ set verilogout_inout_is_in "false" -#@ set verilogout_single_bit "false" -#@ set verilogout_higher_designs_first "FALSE" -#@ # set verilogout_levelize "FALSE" -#@ set verilogout_include_files {} -#@ set verilogout_unconnected_prefix "SYNOPSYS_UNCONNECTED_" -#@ set verilogout_show_unconnected_pins "FALSE" -#@ set verilogout_no_negative_index "FALSE" -#@ #set enable_2003.03_verilog_reader TRUE -#@ # to have a net instead of 1'b0 and 1'b1 in inouts: -#@ set verilogout_indirect_inout_connection "FALSE" -#@ -#@ # set vhdlout_architecture_name "SYN_%a_%u" -#@ set vhdlout_bit_type "std_logic" -#@ # set vhdlout_bit_type_resolved "TRUE" -#@ set vhdlout_bit_vector_type "std_logic_vector" -#@ # set vhdlout_conversion_functions {} -#@ # set vhdlout_dont_write_types "FALSE" -#@ set vhdlout_equations "FALSE" -#@ set vhdlout_one_name "'1'" -#@ set vhdlout_package_naming_style "CONV_PACK_%d" -#@ set vhdlout_preserve_hierarchical_types "VECTOR" -#@ set vhdlout_separate_scan_in "FALSE" -#@ set vhdlout_single_bit "USER" -#@ set vhdlout_target_simulator "" -#@ set vhdlout_three_state_name "'Z'" -#@ set vhdlout_three_state_res_func "" -#@ # set vhdlout_time_scale 1.0 -#@ set vhdlout_top_configuration_arch_name "A" -#@ set vhdlout_top_configuration_entity_name "E" -#@ set vhdlout_top_configuration_name "CFG_TB_E" -#@ set vhdlout_unknown_name "'X'" -#@ set vhdlout_upcase "FALSE" -#@ set vhdlout_use_packages {IEEE.std_logic_1164} -#@ set vhdlout_wired_and_res_func "" -#@ set vhdlout_wired_or_res_func "" -#@ set vhdlout_write_architecture "TRUE" -#@ set vhdlout_write_components "TRUE" -#@ set vhdlout_write_entity "TRUE" -#@ set vhdlout_write_top_configuration "FALSE" -#@ # set vhdlout_synthesis_off "TRUE" -#@ set vhdlout_zero_name "'0'" -#@ #set vhdlout_levelize "FALSE" -#@ set vhdlout_dont_create_dummy_nets "FALSE" -#@ set vhdlout_follow_vector_direction "TRUE" -#@ -#@ -#@ # vhdl netlist reader variables -#@ set enable_vhdl_netlist_reader "FALSE" -#@ -#@ # variables pertaining to VHDL library generation -#@ set vhdllib_timing_mesg "true" -#@ set vhdllib_timing_xgen "false" -#@ set vhdllib_timing_checks "true" -#@ set vhdllib_negative_constraint "false" -#@ set vhdllib_glitch_handle "true" -#@ set vhdllib_pulse_handle "use_vhdllib_glitch_handle" -#@ # /*vhdllib_architecture = {FTBM, UDSM, FTSM, FTGS, VITAL}; */ -#@ set vhdllib_architecture {VITAL} -#@ set vhdllib_tb_compare 0 -#@ set vhdllib_tb_x_eq_dontcare FALSE -#@ set vhdllib_logic_system "ieee-1164" -#@ set vhdllib_logical_name "" -#@ -#@ # variables pertaining to technology library processing -#@ set read_db_lib_warnings FALSE -#@ set read_translate_msff TRUE -#@ set libgen_max_differences -1 -#@ -#@ # -#@ # Gui Variable Group -#@ # used for design_vision and psyn_gui -#@ # -#@ set gui_auto_start 0 -#@ set gui_start_option_no_windows 0 -#@ group_variable gui_variables "gui_auto_start" -#@ group_variable gui_variables "gui_start_option_no_windows" -#@ -#@ # -#@ # If you like emacs, uncomment the next line -#@ # set text_editor_command "emacs -fn 8x13 %s &" ; -#@ -#@ # You can delete pairs from this list, but you can't add new ones -#@ # unless you also update the UIL files. So, customers can not add -#@ # dialogs to this list, only Synopsys can do that. -#@ # -#@ set view_independent_dialogs { "test_report" " Test Reports " "report_print" " Report " "report_options" " Report Options " "report_win" " Report Output " "manual_page" " Manual Page " } -#@ -#@ # if color Silicon Graphics workstation -#@ if { [info exists x11_vendor_string] && [info exists x11_is_color]} { -#@ if { $x11_vendor_string == "Silicon" && $x11_is_color == "true" } { -#@ set x11_set_cursor_foreground "magenta" -#@ set view_use_small_cursor "true" -#@ set view_set_selecting_color "white" -#@ } -#@ } -#@ -#@ # if running on an Apollo machine -#@ set found_x11_vendor_string_apollo 0 -#@ set found_arch_apollo 0 -#@ if { [info exists x11_vendor_string]} { -#@ if { $x11_vendor_string == "Apollo "} { -#@ set found_x11_vendor_string_apollo 1 -#@ } -#@ } -#@ if { [info exists arch]} { -#@ if { $arch == "apollo"} { -#@ set found_arch_apollo 1 -#@ } -#@ } -#@ if { $found_x11_vendor_string_apollo == 1 || $found_arch_apollo == 1} { -#@ set enable_page_mode "false" -#@ } else { -#@ set enable_page_mode "true" -#@ } -#@ -#@ # don't work around this bug on the Apollo -#@ if { $found_x11_vendor_string_apollo == 1} { -#@ set view_extend_thick_lines "false" -#@ } else { -#@ set view_extend_thick_lines "true" -#@ } -#@ -#@ # -#@ # Suffix Variable Group: -#@ # -#@ # Suffixes recognized by the Design Analyzer menu in file choices -#@ # -#@ if { $synopsys_program_name == "design_vision" || $synopsys_program_name == "psyn_gui" } { -#@ # For star 93040 do NOT include NET in list, 108991 : pdb suffix added -#@ set view_read_file_suffix {db gdb sdb pdb edif eqn fnc lsi mif pla st tdl v vhd vhdl xnf} -#@ } else { -#@ set view_read_file_suffix {db gdb sdb edif eqn fnc lsi mif NET pla st tdl v vhd vhdl xnf} -#@ } -#@ -#@ set view_analyze_file_suffix {v vhd vhdl} -#@ set view_write_file_suffix {gdb db sdb do edif eqn fnc lsi NET neted pla st tdl v vhd vhdl xnf} -#@ set view_execute_script_suffix {.script .scr .dcs .dcv .dc .con} -#@ set view_arch_types {sparcOS5 hpux10 rs6000 sgimips} -#@ -#@ # -#@ # links_to_layout Variable Group: -#@ # -#@ # These variables affect the read_timing, write_timing -#@ # set_annotated_delay, compile, create_wire_load and reoptimize_design -#@ # commands. -#@ # -#@ if {$synopsys_program_name != "dc_sms_shell"} { -#@ set auto_wire_load_selection "true" -#@ set compile_create_wire_load_table "false" -#@ } -#@ set rtl_load_resistance_factor 0.0 -#@ -#@ # power Variable Group: -#@ # -#@ # These variables affect the behavior of power optimization and analysis. -#@ # -#@ -#@ set power_keep_license_after_power_commands "false" -#@ set power_rtl_saif_file "power_rtl.saif" -#@ set power_sdpd_saif_file "power_sdpd.saif" -#@ set power_preserve_rtl_hier_names "false" -#@ set power_do_not_size_icg_cells "true" -#@ set power_hdlc_do_not_split_cg_cells "false" -#@ set power_cg_flatten "false" -#@ set power_opto_extra_high_dynamic_power_effort "false" -#@ set power_default_static_probability 0.5 -#@ set power_default_toggle_rate 0.1 -#@ set power_default_toggle_rate_type "fastest_clock" -#@ set power_model_preference "nlpm" -#@ set power_sa_propagation_effort "low" -#@ set power_sa_propagation_verbose "false" -#@ set power_fix_sdpd_annotation "true" -#@ set power_fix_sdpd_annotation_verbose "false" -#@ set power_sdpd_message_tolerance 0.00001 -#@ set do_operand_isolation "false" -#@ set power_cg_module_naming_style "" -#@ set power_cg_cell_naming_style "" -#@ set power_cg_gated_clock_net_naming_style "" -#@ set power_rclock_use_asynch_inputs "false" -#@ set power_rclock_inputs_use_clocks_fanout "true" -#@ set power_rclock_unrelated_use_fastest "true" -#@ set power_lib2saif_rise_fall_pd "false" -#@ set power_min_internal_power_threshold "" -#@ -#@ -#@ # SystemC related variables -#@ set systemcout_levelize "true" -#@ set systemcout_debug_mode "false" -#@ -#@ # ACS Variables -#@ if { [info exists acs_work_dir] } { -#@ set acs_area_report_suffix "area" -#@ set acs_autopart_max_area "0.0" -#@ set acs_autopart_max_percent "0.0" -#@ set acs_budgeted_cstr_suffix "con" -#@ set acs_compile_script_suffix "autoscr" -#@ set acs_constraint_file_suffix "con" -#@ set acs_cstr_report_suffix "cstr" -#@ set acs_db_suffix "db" -#@ set acs_dc_exec "" -#@ set acs_default_pass_name "pass" -#@ set acs_exclude_extensions {} -#@ set acs_exclude_list [list $synopsys_root] -#@ set acs_global_user_compile_strategy_script "default" -#@ set acs_hdl_verilog_define_list {} -#@ set acs_hdl_source {} -#@ set acs_lic_wait 0 -#@ set acs_log_file_suffix "log" -#@ set acs_make_args "set acs_make_args" -#@ set acs_make_exec "gmake" -#@ set acs_makefile_name "Makefile" -#@ set acs_num_parallel_jobs 1 -#@ set acs_override_report_suffix "report" -#@ set acs_override_script_suffix "scr" -#@ set acs_qor_report_suffix "qor" -#@ set acs_timing_report_suffix "tim" -#@ set acs_use_autopartition "false" -#@ set acs_use_default_delays "false" -#@ set acs_user_budgeting_script "budget.scr" -#@ set acs_user_compile_strategy_script_suffix "compile" -#@ set acs_verilog_extensions {.v} -#@ set acs_vhdl_extensions {.vhd} -#@ set acs_work_dir [pwd] -#@ set check_error_list [list CMD-004 CMD-006 CMD-007 CMD-008 CMD-009 CMD-010 CMD-011 CMD-012 CMD-014 CMD-015 CMD-016 CMD-019 CMD-026 CMD-031 CMD-037 DB-1 DCSH-11 DES-001 ACS-193 FILE-1 FILE-2 FILE-3 FILE-4 LINK-7 LINT-7 LINT-20 LNK-023 OPT-100 OPT-101 OPT-102 OPT-114 OPT-124 OPT-127 OPT-128 OPT-155 OPT-157 OPT-181 OPT-462 UI-11 UI-14 UI-15 UI-16 UI-17 UI-19 UI-20 UI-21 UI-22 UI-23 UI-40 UI-41 UID-4 UID-6 UID-7 UID-8 UID-9 UID-13 UID-14 UID-15 UID-19 UID-20 UID-25 UID-27 UID-28 UID-29 UID-30 UID-32 UID-58 UID-87 UID-103 UID-109 UID-270 UID-272 UID-403 UID-440 UID-444 UIO-2 UIO-3 UIO-4 UIO-25 UIO-65 UIO-66 UIO-75 UIO-94 UIO-95 EQN-6 EQN-11 EQN-15 EQN-16 EQN-18 EQN-20 ] -#@ set ilm_preserve_core_constraints "false" -#@ } -#@ -#@ # -#@ # -#@ # DesignTime Variable Group -#@ # -#@ # The variables which affect the DesignTime timing engine -#@ # -#@ -#@ set case_analysis_log_file "" -#@ set case_analysis_sequential_propagate "false" -#@ set create_clock_no_input_delay "false" -#@ set disable_auto_time_borrow "false" -#@ set disable_case_analysis "false" -#@ set disable_conditional_mode_analysis "false" -#@ set disable_library_transition_degradation "false" -#@ set dont_bind_unused_pins_to_logic_constant "false" -#@ set enable_slew_degradation "true" -#@ set high_fanout_net_pin_capacitance 1.000000 -#@ set high_fanout_net_threshold 1000 -#@ set lib_thresholds_per_lib "true" -#@ set rc_adjust_rd_when_less_than_rnet "true" -#@ set rc_ceff_delay_min_diff_ps 0.250000 -#@ set rc_degrade_min_slew_when_rd_less_than_rnet "false" -#@ set rc_driver_model_max_error_pct 0.160000 -#@ set rc_filter_rd_less_than_rnet "true" -#@ set rc_input_threshold_pct_fall 50.000000 -#@ set rc_input_threshold_pct_rise 50.000000 -#@ set rc_output_threshold_pct_fall 50.000000 -#@ set rc_output_threshold_pct_rise 50.000000 -#@ set rc_rd_less_than_rnet_threshold 0.450000 -#@ set rc_slew_derate_from_library 1.000000 -#@ set rc_slew_lower_threshold_pct_fall 20.000000 -#@ set rc_slew_lower_threshold_pct_rise 20.000000 -#@ set rc_slew_upper_threshold_pct_fall 80.000000 -#@ set rc_slew_upper_threshold_pct_rise 80.000000 -#@ set timing_disable_cond_default_arcs "false" -#@ #timing_enable_multiple_clocks_per_reg is on by default -#@ #set timing_enable_multiple_clocks_per_reg "false" -#@ set timing_report_attributes {dont_touch dont_use map_only size_only ideal_net infeasible_paths} -#@ set timing_self_loops_no_skew "false" -#@ set when_analysis_permitted "true" -#@ set when_analysis_without_case_analysis "false" -#@ -#@ -#@ # -#@ # Variable Group Definitions: -#@ # -#@ # The group_variable() command groups variables for display -#@ # in the "File/Defaults" dialog and defines groups of variables -#@ # for the list() command. -#@ # -#@ -#@ set enable_instances_in_report_net "true" -#@ # Set report options env variables -#@ set view_report_interactive "true" -#@ set view_report_output2file "false" -#@ set view_report_append "true" -#@ -#@ if { $synopsys_program_name != "ptxr" } { -#@ -#@ group_variable report_variables "enable_instances_in_report_net" -#@ group_variable report_variables "view_report_interactive" -#@ group_variable report_variables "view_report_output2file" -#@ group_variable report_variables "view_report_append" -#@ -#@ # "links_to_layout" variables are used by multiple commands -#@ # auto_wire_load_selection is also in the "compile" variable group. -#@ group_variable links_to_layout "auto_wire_load_selection" -#@ -#@ # variables starting with "compile" are also in the compile variable group -#@ group_variable links_to_layout "compile_dont_touch_annotated_cell_during_inplace_opt" -#@ -#@ group_variable links_to_layout "compile_update_annotated_delays_during_inplace_opt" -#@ group_variable links_to_layout "compile_create_wire_load_table" -#@ -#@ group_variable links_to_layout "reoptimize_design_changed_list_file_name" -#@ group_variable links_to_layout "sdfout_allow_non_positive_constraints" -#@ -#@ } ;# $synopsys_program_name != "ptxr" -#@ -#@ # -#@ # to find the XErrorDB and XKeySymDB for X11 file -#@ set motif_files ${synopsys_root}/admin/setup -#@ # set filename for logging input file -#@ set filename_log_file "filenames.log" -#@ # whether to delete the filename log after the normal exits -#@ set exit_delete_filename_log_file "true" -#@ -#@ # executable to fire off RTLA/BCV -#@ set xterm_executable "xterm" -#@ -#@ if { $synopsys_program_name != "ptxr" } { -#@ -#@ # "system" variables are used by multiple commands -#@ group_variable system auto_link_disable -#@ group_variable system auto_link_options -#@ group_variable system command_log_file -#@ group_variable system company -#@ group_variable system compatibility_version -#@ -#@ if { [string compare $dc_shell_mode "default"] == 0 } { -#@ group_variable system "current_design" -#@ group_variable system "current_instance" -#@ group_variable system "dc_shell_status" -#@ } else { -#@ set current_design "" -#@ set current_instance "" -#@ group_variable system "current_design" -#@ group_variable system "current_instance" -#@ } -#@ -#@ group_variable system "designer" -#@ group_variable system "echo_include_commands" -#@ group_variable system "enable_page_mode" -#@ group_variable system "change_names_update_inst_tree" -#@ group_variable system "change_names_dont_change_bus_members" -#@ group_variable system "default_name_rules" -#@ group_variable system "verbose_messages" -#@ group_variable system "link_library" -#@ group_variable system "link_force_case" -#@ group_variable system "search_path" -#@ group_variable system "synthetic_library" -#@ group_variable system "target_library" -#@ group_variable system "uniquify_naming_style" -#@ group_variable system "suppress_errors" -#@ group_variable system "find_converts_name_lists" -#@ group_variable system "filename_log_file" -#@ group_variable system "exit_delete_filename_log_file" -#@ group_variable system "syntax_check_status" -#@ group_variable system "context_check_status" -#@ -#@ #/* "compile" variables are used by the compile command */ -#@ group_variable compile "compile_assume_fully_decoded_three_state_busses" -#@ group_variable compile "compile_no_new_cells_at_top_level" -#@ group_variable compile "compile_dont_touch_annotated_cell_during_inplace_opt" -#@ group_variable compile "reoptimize_design_changed_list_file_name" -#@ group_variable compile "compile_create_wire_load_table" -#@ group_variable compile "compile_update_annotated_delays_during_inplace_opt" -#@ group_variable compile "compile_instance_name_prefix" -#@ group_variable compile "compile_instance_name_suffix" -#@ group_variable compile "compile_negative_logic_methodology" -#@ group_variable compile "compile_disable_hierarchical_inverter_opt" -#@ -#@ group_variable compile "port_complement_naming_style" -#@ group_variable compile "auto_wire_load_selection" -#@ group_variable compile "rtl_load_resistance_factor" -#@ group_variable compile "compile_implementation_selection" -#@ group_variable compile "compile_use_low_timing_effort" -#@ group_variable compile "compile_fix_cell_degradation" -#@ group_variable compile "compile_preserve_subdesign_interfaces" -#@ group_variable compile "compile_enable_constant_propagation_with_no_boundary_opt" -#@ group_variable compile "compile_delete_unloaded_sequential_cells" -#@ group_variable compile "enable_recovery_removal_arcs" -#@ group_variable compile "compile_checkpoint_phases" -#@ group_variable compile "compile_cpu_limit" -#@ group_variable compile "compile_top_all_paths" -#@ group_variable compile "compile_top_all_paths" -#@ group_variable compile "compile_top_acs_partition" -#@ group_variable compile "default_port_connection_class" -#@ group_variable compile "compile_retime_license_behavior" -#@ group_variable compile "dont_touch_nets_with_size_only_cells" -#@ group_variable compile "compile_seqmap_no_scan_cell" -#@ -#@ if { $synopsys_program_name == "dc_shell" && [shell_is_in_topographical_mode] } { -#@ group_variable compile "dct_prioritize_area_correlation" -#@ group_variable compile "compile_error_on_missing_physical_cells" -#@ } -#@ -#@ # "multibit" variables are used by the the multibit mapping functionality -#@ -#@ group_variable multibit "bus_multiple_separator_style" -#@ -#@ # "ilm" variables are used by Interface Logic Model functionality -#@ -#@ group_variable ilm "ilm_ignore_percentage" -#@ -#@ # "estimate" variables are used by the estimate command -#@ # The estimate command also recognizes the "compile" variables. -#@ group_variable estimate "estimate_resource_preference" -#@ -#@ # "synthetic_library" variables -#@ group_variable synlib "cache_dir_chmod_octal" -#@ group_variable synlib "cache_file_chmod_octal" -#@ group_variable synlib "cache_read" -#@ group_variable synlib "cache_read_info" -#@ group_variable synlib "cache_write" -#@ group_variable synlib "cache_write_info" -#@ group_variable synlib "synlib_dont_get_license" -#@ group_variable synlib "synlib_wait_for_design_license" -#@ group_variable synlib "synthetic_library" -#@ -#@ # "insert_dft" variables are used by the insert_dft and preview_dft commands -#@ #group_variable insert_dft "test_default_client_order" -#@ group_variable insert_dft "insert_dft_clean_up" -#@ group_variable insert_dft "insert_test_design_naming_style" -#@ group_variable insert_dft "test_clock_port_naming_style" -#@ group_variable insert_dft "test_default_min_fault_coverage" -#@ group_variable insert_dft "test_scan_clock_a_port_naming_style" -#@ group_variable insert_dft "test_scan_clock_b_port_naming_style" -#@ group_variable insert_dft "test_scan_clock_port_naming_style" -#@ group_variable insert_dft "test_scan_enable_inverted_port_naming_style" -#@ group_variable insert_dft "test_scan_enable_port_naming_style" -#@ group_variable insert_dft "test_scan_in_port_naming_style" -#@ group_variable insert_dft "test_scan_out_port_naming_style" -#@ group_variable insert_dft "test_non_scan_clock_port_naming_style" -#@ group_variable insert_dft "test_dedicated_subdesign_scan_outs" -#@ group_variable insert_dft "test_disable_find_best_scan_out" -#@ group_variable insert_dft "test_dont_fix_constraint_violations" -#@ group_variable insert_dft "test_isolate_hier_scan_out" -#@ group_variable insert_dft "test_mode_port_naming_style" -#@ group_variable insert_dft "test_mode_port_inverted_naming_style" -#@ group_variable insert_dft "compile_dont_use_dedicated_scanout" -#@ group_variable insert_dft "test_mux_constant_si" -#@ -#@ # "preview_scan" variables are used by the preview_scan command -#@ group_variable preview_scan "test_preview_scan_shows_cell_types" -#@ group_variable preview_scan "test_scan_link_so_lockup_key" -#@ group_variable preview_scan "test_scan_link_wire_key" -#@ group_variable preview_scan "test_scan_segment_key" -#@ group_variable preview_scan "test_scan_true_key" -#@ -#@ # "bsd" variables are used by the check_bsd and write_bsdl commands -#@ group_variable bsd "test_user_test_data_register_naming_style" -#@ group_variable bsd "test_user_defined_instruction_naming_style" -#@ group_variable bsd "test_bsdl_default_suffix_name" -#@ group_variable bsd "test_bsdl_max_line_length" -#@ group_variable bsd "test_cc_ir_masked_bits" -#@ group_variable bsd "test_cc_ir_value_of_masked_bits" -#@ -#@ group_variable bsd "test_bsd_allow_tolerable_violations" -#@ group_variable bsd "test_bsd_optimize_control_cell" -#@ group_variable bsd "test_bsd_control_cell_drive_limit" -#@ group_variable bsd "test_bsd_manufacturer_id" -#@ group_variable bsd "test_bsd_part_number" -#@ group_variable bsd "test_bsd_version_number" -#@ group_variable bsd "bsd_max_in_switching_limit" -#@ group_variable bsd "bsd_max_out_switching_limit" -#@ -#@ # testmanager variables -#@ group_variable testmanager "multi_pass_test_generation" -#@ -#@ # "testsim" variables -#@ # group_variable testsim "testsim_print_stats_file" -#@ -#@ # "test" variables -#@ group_variable test "test_default_bidir_delay" -#@ group_variable test "test_default_delay" -#@ group_variable test "test_default_period" -#@ group_variable test "test_default_strobe" -#@ group_variable test "test_default_strobe_width" -#@ group_variable test "test_capture_clock_skew" -#@ group_variable test "test_allow_clock_reconvergence" -#@ group_variable test "test_check_port_changes_in_capture" -#@ group_variable test "test_stil_max_line_length" -#@ group_variable test "test_infer_slave_clock_pulse_after_capture" -#@ group_variable test "test_rtldrc_latch_check_style" -#@ group_variable test "test_enable_capture_checks" -#@ -#@ # "write_test" variables are used by the write_test command -#@ group_variable write_test "write_test_formats" -#@ group_variable write_test "write_test_include_scan_cell_info" -#@ group_variable write_test "write_test_input_dont_care_value" -#@ group_variable write_test "write_test_max_cycles" -#@ group_variable write_test "write_test_max_scan_patterns" -#@ group_variable write_test "write_test_pattern_set_naming_style" -#@ group_variable write_test "write_test_scan_check_file_naming_style" -#@ group_variable write_test "write_test_vector_file_naming_style" -#@ group_variable write_test "write_test_round_timing_values" -#@ -#@ group_variable view "test_design_analyzer_uses_insert_scan" -#@ -#@ # "io" variables are used by the read, read_lib, db2sge and write commands -#@ group_variable io "bus_inference_descending_sort" -#@ group_variable io "bus_inference_style" -#@ #group_variable io "db2sge_output_directory" -#@ #group_variable io "db2sge_scale" -#@ #group_variable io "db2sge_overwrite" -#@ #group_variable io "db2sge_display_symbol_names" -#@ #group_variable io "db2sge_display_pin_names" -#@ #group_variable io "db2sge_display_instance_names" -#@ #group_variable io "db2sge_use_bustaps" -#@ #group_variable io "db2sge_use_compound_names" -#@ #group_variable io "db2sge_bit_type" -#@ #group_variable io "db2sge_bit_vector_type" -#@ #group_variable io "db2sge_one_name" -#@ #group_variable io "db2sge_zero_name" -#@ #group_variable io "db2sge_unknown_name" -#@ #group_variable io "db2sge_target_xp" -#@ #group_variable io "db2sge_tcf_package_file" -#@ #group_variable io "db2sge_use_lib_section" -#@ #group_variable io "db2sge_script" -#@ #group_variable io "db2sge_command" -#@ -#@ # group_variable io "equationout_and_sign" -#@ # group_variable io "equationout_or_sign" -#@ # group_variable io "equationout_postfix_negation" -#@ -#@ # group_variable io "lsiin_net_name_prefix" -#@ # group_variable io "lsiout_inverter_cell" -#@ # group_variable io "lsiout_upcase" -#@ -#@ #group_variable io "mentor_bidirect_value" -#@ #group_variable io "mentor_do_path" -#@ #group_variable io "mentor_input_output_property_name" -#@ #group_variable io "mentor_input_value" -#@ #group_variable io "mentor_logic_one_value" -#@ #group_variable io "mentor_logic_zero_one_property_name" -#@ #group_variable io "mentor_logic_zero_value" -#@ #group_variable io "mentor_output_value" -#@ #group_variable io "mentor_primitive_property_name" -#@ #group_variable io "mentor_primitive_property_value" -#@ #group_variable io "mentor_reference_property_name" -#@ #group_variable io "mentor_search_path" -#@ #group_variable io "mentor_write_symbols" -#@ # group_variable io "pla_read_create_flip_flop" -#@ # group_variable io "tdlout_upcase" -#@ group_variable io "write_name_nets_same_as_ports" -#@ -#@ # # [wjchen] 2006/08/14: The following 4 variables are obsoleted for DC simpilification. -#@ -#@ # group_variable io "xnfout_constraints_per_endpoint" -#@ # group_variable io "xnfout_default_time_constraints" -#@ # group_variable io "xnfout_clock_attribute_style" -#@ # group_variable io "xnfout_library_version" -#@ -#@ # # [wjchen] 2006/08/11: The following 8 variables are obsoleted for DC simpilification. -#@ # group_variable io "xnfin_family" -#@ # group_variable io "xnfin_ignore_pins" -#@ # group_variable io "xnfin_dff_reset_pin_name" -#@ # group_variable io "xnfin_dff_set_pin_name" -#@ # group_variable io "xnfin_dff_clock_enable_pin_name" -#@ # group_variable io "xnfin_dff_data_pin_name" -#@ # group_variable io "xnfin_dff_clock_pin_name" ; -#@ # group_variable io "xnfin_dff_q_pin_name"; -#@ -#@ group_variable io "sdfin_min_rise_net_delay" ; -#@ group_variable io "sdfin_min_fall_net_delay" ; -#@ group_variable io "sdfin_min_rise_cell_delay" ; -#@ group_variable io "sdfin_min_fall_cell_delay" ; -#@ group_variable io "sdfin_rise_net_delay_type" ; -#@ group_variable io "sdfin_fall_net_delay_type" ; -#@ group_variable io "sdfin_rise_cell_delay_type" ; -#@ group_variable io "sdfin_fall_cell_delay_type" ; -#@ group_variable io "sdfin_top_instance_name" ; -#@ group_variable io "sdfout_time_scale" ; -#@ group_variable io "sdfout_write_to_output" ; -#@ group_variable io "sdfout_top_instance_name" ; -#@ group_variable io "sdfout_min_rise_net_delay" ; -#@ group_variable io "sdfout_min_fall_net_delay" ; -#@ group_variable io "sdfout_min_rise_cell_delay" ; -#@ group_variable io "sdfout_min_fall_cell_delay" ; -#@ group_variable io "read_db_lib_warnings" ; -#@ group_variable io "read_translate_msff" ; -#@ group_variable io "libgen_max_differences" ; -#@ -#@ # #[wjchen] 2006/08/22: The following variables are hidden for XG mode for DC simpilification. -#@ # group_variable io "read_name_mapping_nowarn_libraries" ; -#@ # group_variable io "write_name_mapping_nowarn_libraries" ; -#@ -#@ -#@ # "edif" variables are used by the EDIF format read, read_lib, write, -#@ # and write_lib commands -#@ # group_variable edif "bus_dimension_separator_style" ; -#@ # group_variable edif "bus_extraction_style" ; -#@ group_variable edif "bus_inference_descending_sort" ; -#@ group_variable edif "bus_inference_style" ; -#@ group_variable edif "bus_naming_style" ; -#@ group_variable edif "bus_range_separator_style" ; -#@ # group_variable edif "edifin_autoconnect_offpageconnectors" ; -#@ # group_variable edif "edifin_autoconnect_ports" ; -#@ # group_variable edif "edifin_delete_empty_cells" ; -#@ # group_variable edif "edifin_delete_ripper_cells" ; -#@ # group_variable edif "edifin_ground_net_name" ; -#@ # group_variable edif "edifin_ground_net_property_name" ; -#@ # group_variable edif "edifin_ground_net_property_value" ; -#@ # group_variable edif "edifin_ground_port_name" ; -#@ # group_variable edif "edifin_instance_property_name" ; -#@ # group_variable edif "edifin_portinstance_disabled_property_name" ; -#@ # group_variable edif "edifin_portinstance_disabled_property_value" ; -#@ # group_variable edif "edifin_portinstance_property_name" ; -#@ # group_variable edif "edifin_power_net_name" ; -#@ # group_variable edif "edifin_power_net_property_name" ; -#@ # group_variable edif "edifin_power_net_property_value" ; -#@ # group_variable edif "edifin_power_port_name" ; -#@ # group_variable edif "edifin_use_identifier_in_rename" ; -#@ # group_variable edif "edifin_view_identifier_property_name" ; -#@ # group_variable edif "edifin_dc_script_flag" ; -#@ # group_variable edif "edifin_lib_logic_1_symbol" ; -#@ # group_variable edif "edifin_lib_logic_0_symbol" ; -#@ # group_variable edif "edifin_lib_in_port_symbol" ; -#@ # group_variable edif "edifin_lib_out_port_symbol" ; -#@ # group_variable edif "edifin_lib_inout_port_symbol" ; -#@ # group_variable edif "edifin_lib_in_osc_symbol" ; -#@ # group_variable edif "edifin_lib_out_osc_symbol" ; -#@ # group_variable edif "edifin_lib_inout_osc_symbol" ; -#@ # group_variable edif "edifin_lib_mentor_netcon_symbol" ; -#@ # group_variable edif "edifin_lib_ripper_bits_property" ; -#@ # group_variable edif "edifin_lib_ripper_bus_end" ; -#@ # group_variable edif "edifin_lib_ripper_cell_name" ; -#@ # group_variable edif "edifin_lib_ripper_view_name" ; -#@ # group_variable edif "edifin_lib_route_grid" ; -#@ # group_variable edif "edifin_lib_templates" ; -#@ # group_variable edif "edifout_dc_script_flag" ; -#@ # group_variable edif "edifout_design_name" ; -#@ # group_variable edif "edifout_designs_library_name" ; -#@ # group_variable edif "edifout_display_instance_names" ; -#@ # group_variable edif "edifout_display_net_names" ; -#@ # group_variable edif "edifout_external" ; -#@ # group_variable edif "edifout_external_graphic_view_name" ; -#@ # group_variable edif "edifout_external_netlist_view_name" ; -#@ # group_variable edif "edifout_external_schematic_view_name" ; -#@ # group_variable edif "edifout_ground_name" ; -#@ # group_variable edif "edifout_ground_net_name" ; -#@ # group_variable edif "edifout_ground_net_property_name" ; -#@ # group_variable edif "edifout_ground_net_property_value" ; -#@ # group_variable edif "edifout_ground_pin_name" ; -#@ # group_variable edif "edifout_ground_port_name" ; -#@ # group_variable edif "edifout_instance_property_name" ; -#@ # group_variable edif "edifout_instantiate_ports" ; -#@ # group_variable edif "edifout_library_graphic_view_name" ; -#@ # group_variable edif "edifout_library_netlist_view_name" ; -#@ # group_variable edif "edifout_library_schematic_view_name" ; -#@ # group_variable edif "edifout_merge_libraries" ; -#@ # group_variable edif "edifout_multidimension_arrays" ; -#@ # group_variable edif "edifout_name_oscs_different_from_ports" ; -#@ # group_variable edif "edifout_name_rippers_same_as_wires" ; -#@ # group_variable edif "edifout_netlist_only" ; -#@ # group_variable edif "edifout_no_array" ; -#@ # group_variable edif "edifout_numerical_array_members" ; -#@ # group_variable edif "edifout_pin_direction_property_name" ; -#@ # group_variable edif "edifout_pin_direction_in_value" ; -#@ # group_variable edif "edifout_pin_direction_inout_value" ; -#@ # group_variable edif "edifout_pin_direction_out_value" ; -#@ # group_variable edif "edifout_pin_name_property_name" ; -#@ # group_variable edif "edifout_portinstance_disabled_property_name" ; -#@ # group_variable edif "edifout_portinstance_disabled_property_value" ; -#@ # group_variable edif "edifout_portinstance_property_name" -#@ # group_variable edif "edifout_power_and_ground_representation" -#@ # group_variable edif "edifout_power_name" -#@ # group_variable edif "edifout_power_net_name" -#@ # group_variable edif "edifout_power_net_property_name" -#@ # group_variable edif "edifout_power_net_property_value" -#@ # group_variable edif "edifout_power_pin_name" -#@ # group_variable edif "edifout_power_port_name" -#@ # group_variable edif "edifout_skip_port_implementations" -#@ # group_variable edif "edifout_target_system" -#@ # group_variable edif "edifout_top_level_symbol" -#@ # group_variable edif "edifout_translate_origin" -#@ # group_variable edif "edifout_unused_property_value" -#@ # group_variable edif "edifout_write_attributes" -#@ # group_variable edif "edifout_write_constraints" -#@ # group_variable edif "edifout_write_properties_list" -#@ # group_variable edif "write_name_nets_same_as_ports" -#@ -#@ # "hdl" variables are variables pertaining to hdl reading and optimizing -#@ group_variable hdl "bus_dimension_separator_style" -#@ group_variable hdl "bus_minus_style" -#@ group_variable hdl "bus_naming_style" -#@ group_variable hdl "hdlin_ignore_textio_constructs" -#@ group_variable hdl "hdlin_latch_always_async_set_reset" -#@ group_variable hdl "hdlin_ff_always_sync_set_reset" -#@ group_variable hdl "hdlin_ff_always_async_set_reset" -#@ group_variable hdl "hdlin_check_input_netlist" -#@ group_variable hdl "hdlin_check_no_latch" -#@ group_variable hdl "hdlin_reporting_level" -#@ group_variable hdl "hdlin_infer_mux" -#@ group_variable hdl "hdlin_mux_oversize_ratio" -#@ group_variable hdl "hdlin_mux_size_limit" -#@ group_variable hdl "hdlin_infer_multibit" -#@ group_variable hdl "hdl_preferred_license" -#@ group_variable hdl "hdl_keep_licenses" -#@ group_variable hdl "hlo_resource_allocation" -#@ group_variable hdl "template_naming_style" -#@ group_variable hdl "template_parameter_style" -#@ group_variable hdl "template_separator_style" -#@ group_variable hdl "verilogout_equation" -#@ group_variable hdl "verilogout_ignore_case" -#@ group_variable hdl "verilogout_no_tri" -#@ group_variable hdl "verilogout_inout_is_in" -#@ group_variable hdl "verilogout_single_bit" -#@ group_variable hdl "verilogout_higher_designs_first" -#@ # group_variable hdl "verilogout_levelize" -#@ group_variable hdl "verilogout_include_files" -#@ group_variable hdl "verilogout_unconnected_prefix" -#@ group_variable hdl "verilogout_show_unconnected_pins" -#@ group_variable hdl "verilogout_no_negative_index" -#@ group_variable hdl "hdlin_enable_rtldrc_info" -#@ group_variable hdl "hdlin_sv_blackbox_modules" -#@ group_variable hdl "hdlin_sv_enable_rtl_attributes" -#@ group_variable hdl "hdlin_enable_hier_map" -#@ group_variable hdl "hdlin_sv_interface_only_modules" -#@ group_variable hdl "hdlin_infer_function_local_latches" -#@ group_variable hdl "hdlin_module_arch_name_splitting" -#@ group_variable hdl "hdlin_mux_size_min" -#@ group_variable hdl "hdlin_prohibit_nontri_multiple_drivers" -#@ group_variable hdl "hdlin_subprogram_default_values" -#@ group_variable hdl "hdlin_upcase_names" -#@ group_variable hdl "hdlin_vhdl_std" -#@ group_variable hdl "hdlin_vhdl93_concat" -#@ group_variable hdl "hdlin_vhdl_syntax_extensions" -#@ group_variable hdl "hdlin_vrlg_std" -#@ group_variable hdl "hdlin_while_loop_iterations" -#@ group_variable hdl "hdlin_auto_save_templates" -#@ group_variable hdl "hdlin_elab_errors_deep" -#@ group_variable hdl "hdlin_enable_assertions" -#@ group_variable hdl "hdlin_enable_configurations" -#@ group_variable hdl "hdlin_field_naming_style" -#@ group_variable hdl "hdlin_generate_naming_style" -#@ group_variable hdl "hdlin_generate_separator_style" -#@ group_variable hdl "hdlin_enable_relative_placement" -#@ group_variable hdl "hdlin_mux_rp_limit" -#@ group_variable hdl "hdlin_keep_signal_name" -#@ group_variable hdl "hdlin_module_name_limit" -#@ group_variable hdl "hdlin_mux_size_only" -#@ group_variable hdl "hdlin_preserve_sequential" -#@ group_variable hdl "hdlin_presto_cell_name_prefix" -#@ group_variable hdl "hdlin_presto_net_name_prefix" -#@ group_variable hdl "hdlin_strict_verilog_reader" -#@ group_variable hdl "hdlin_shorten_long_module_name" -#@ group_variable hdl "hdlin_sv_packages" -#@ group_variable hdl "hdlin_sv_tokens" -#@ group_variable hdl "hdlin_enable_elaborate_ref_linking" -#@ group_variable hdl "hdlin_enable_hier_naming" -#@ group_variable hdl "hdlin_enable_elaborate_update" -#@ group_variable hdl "hdlin_autoread_verilog_extensions" -#@ group_variable hdl "hdlin_autoread_sverilog_extensions" -#@ group_variable hdl "hdlin_autoread_vhdl_extensions" -#@ group_variable hdl "hdlin_autoread_exclude_extensions" -#@ group_variable hdl "hdlin_enable_upf_compatible_naming" -#@ group_variable hdl "hdlin_report_sequential_pruning" -#@ group_variable hdl "hdlin_analyze_verbose_mode" -#@ -#@ # "vhdlio" variables are variables pertaining to VHDL generation -#@ group_variable vhdlio "vhdllib_timing_mesg" -#@ group_variable vhdlio "vhdllib_timing_xgen" -#@ group_variable vhdlio "vhdllib_timing_checks" -#@ group_variable vhdlio "vhdllib_negative_constraint" -#@ group_variable vhdlio "vhdllib_pulse_handle" -#@ group_variable vhdlio "vhdllib_glitch_handle" -#@ group_variable vhdlio "vhdllib_architecture" -#@ group_variable vhdlio "vhdllib_tb_compare" -#@ group_variable vhdlio "vhdllib_tb_x_eq_dontcare" -#@ group_variable vhdlio "vhdllib_logic_system" -#@ group_variable vhdlio "vhdllib_logical_name" -#@ -#@ # group_variable vhdlio "vhdlout_architecture_name" -#@ group_variable vhdlio "vhdlout_bit_type" -#@ # group_variable vhdlio "vhdlout_bit_type_resolved" -#@ group_variable vhdlio "vhdlout_bit_vector_type" -#@ # group_variable vhdlio "vhdlout_conversion_functions" -#@ # group_variable vhdlio "vhdlout_dont_write_types" -#@ group_variable vhdlio "vhdlout_equations" -#@ group_variable vhdlio "vhdlout_one_name" -#@ group_variable vhdlio "vhdlout_package_naming_style" -#@ group_variable vhdlio "vhdlout_preserve_hierarchical_types" -#@ group_variable vhdlio "vhdlout_separate_scan_in" -#@ group_variable vhdlio "vhdlout_single_bit" -#@ group_variable vhdlio "vhdlout_target_simulator" -#@ group_variable vhdlio "vhdlout_top_configuration_arch_name" -#@ group_variable vhdlio "vhdlout_top_configuration_entity_name" -#@ group_variable vhdlio "vhdlout_top_configuration_name" -#@ group_variable vhdlio "vhdlout_three_state_name" -#@ group_variable vhdlio "vhdlout_three_state_res_func" -#@ # group_variable vhdlio "vhdlout_time_scale" -#@ group_variable vhdlio "vhdlout_unknown_name" -#@ group_variable vhdlio "vhdlout_use_packages" -#@ group_variable vhdlio "vhdlout_wired_and_res_func" -#@ group_variable vhdlio "vhdlout_wired_or_res_func" -#@ group_variable vhdlio "vhdlout_write_architecture" -#@ group_variable vhdlio "vhdlout_write_entity" -#@ group_variable vhdlio "vhdlout_write_top_configuration" -#@ # group_variable vhdlio "vhdlout_synthesis_off" -#@ group_variable vhdlio "vhdlout_write_components" -#@ group_variable vhdlio "vhdlout_zero_name" -#@ # group_variable vhdlio "vhdlout_levelize" -#@ group_variable vhdlio "vhdlout_dont_create_dummy_nets" -#@ group_variable vhdlio "vhdlout_follow_vector_direction" -#@ -#@ # "suffix" variables are used to find the suffixes of different file types -#@ group_variable suffix "view_execute_script_suffix" -#@ group_variable suffix "view_read_file_suffix" -#@ group_variable suffix "view_analyze_file_suffix" -#@ group_variable suffix "view_write_file_suffix" -#@ -#@ # Meenakshi: Added new group scc (for SystemC compiler) -#@ group_variable scc {systemcout_levelize} -#@ group_variable scc {systemcout_debug_mode} -#@ -#@ # "power" variables are for power-analysis. -#@ group_variable power {power_keep_license_after_power_commands} -#@ group_variable power {power_preserve_rtl_hier_names} -#@ group_variable power {power_do_not_size_icg_cells} -#@ group_variable power {power_hdlc_do_not_split_cg_cells} -#@ group_variable power {power_rtl_saif_file} -#@ group_variable power {power_sdpd_saif_file} -#@ group_variable power {power_cg_flatten} -#@ group_variable power {power_opto_extra_high_dynamic_power_effort} -#@ group_variable power {power_default_static_probability} -#@ group_variable power {power_default_toggle_rate} -#@ group_variable power {power_default_toggle_rate_type} -#@ group_variable power {power_model_preference} -#@ group_variable power {power_sa_propagation_effort} -#@ group_variable power {power_sa_propagation_verbose} -#@ group_variable power {power_fix_sdpd_annotation} -#@ group_variable power {power_fix_sdpd_annotation_verbose} -#@ group_variable power {power_sdpd_message_tolerance} -#@ group_variable power {power_rclock_use_asynch_inputs} -#@ group_variable power {power_rclock_inputs_use_clocks_fanout} -#@ group_variable power {power_rclock_unrelated_use_fastest} -#@ group_variable power {power_lib2saif_rise_fall_pd} -#@ group_variable power {power_min_internal_power_threshold} -#@ group_variable power {power_cg_module_naming_style} -#@ group_variable power {power_cg_cell_naming_style} -#@ group_variable power {power_cg_gated_clock_net_naming_style} -#@ group_variable power {do_operand_isolation} -#@ -#@ # dpcm variables are used by DPCM lib and controllong DC when using DPCM -#@ -#@ if { [info exists dpcm_debuglevel] } { -#@ group_variable dpcm "dpcm_debuglevel" -#@ group_variable dpcm "dpcm_rulespath" -#@ group_variable dpcm "dpcm_rulepath" -#@ group_variable dpcm "dpcm_tablepath" -#@ group_variable dpcm "dpcm_libraries" -#@ group_variable dpcm "dpcm_version" -#@ group_variable dpcm "dpcm_level" -#@ group_variable dpcm "dpcm_temperaturescope" -#@ group_variable dpcm "dpcm_voltagescope" -#@ group_variable dpcm "dpcm_functionscope" -#@ group_variable dpcm "dpcm_wireloadscope" -#@ group_variable dpcm "dpcm_slewlimit" -#@ group_variable dpcm "dpcm_arc_sense_mapping" -#@ -#@ } -#@ -#@ set dpcm_slewlimit "TRUE" -#@ -#@ # executable to fire off RTLA/BCV -#@ group_variable hdl {xterm_executable} -#@ -#@ # Variable group for Chip Compiler -#@ if {[info exists acs_work_dir]} { -#@ group_variable acs acs_area_report_suffix -#@ group_variable acs acs_autopart_max_area -#@ group_variable acs acs_autopart_max_percent -#@ group_variable acs acs_budgeted_cstr_suffix -#@ group_variable acs acs_compile_script_suffix -#@ group_variable acs acs_constraint_file_suffix -#@ group_variable acs acs_cstr_report_suffix -#@ group_variable acs acs_db_suffix -#@ group_variable acs acs_dc_exec -#@ group_variable acs acs_default_pass_name -#@ group_variable acs acs_exclude_extensions -#@ group_variable acs acs_exclude_list -#@ group_variable acs acs_global_user_compile_strategy_script -#@ group_variable acs acs_hdl_verilog_define_list -#@ group_variable acs acs_hdl_source -#@ group_variable acs acs_lic_wait -#@ group_variable acs acs_log_file_suffix -#@ group_variable acs acs_make_args -#@ group_variable acs acs_make_exec -#@ group_variable acs acs_makefile_name -#@ group_variable acs acs_num_parallel_jobs -#@ group_variable acs acs_override_report_suffix -#@ group_variable acs acs_override_script_suffix -#@ group_variable acs acs_qor_report_suffix -#@ group_variable acs acs_timing_report_suffix -#@ group_variable acs acs_use_autopartition -#@ group_variable acs acs_use_default_delays -#@ group_variable acs acs_user_budgeting_script -#@ group_variable acs acs_user_compile_strategy_script_suffix -#@ group_variable acs acs_verilog_extensions -#@ group_variable acs acs_vhdl_extensions -#@ group_variable acs acs_work_dir -#@ group_variable acs check_error_list -#@ group_variable acs ilm_preserve_core_constraints -#@ -#@ } -#@ -#@ # -#@ # DesignTime Variable Group timing -#@ # -#@ -#@ group_variable timing case_analysis_log_file -#@ group_variable timing case_analysis_sequential_propagate -#@ group_variable timing case_analysis_with_logic_constants -#@ group_variable timing create_clock_no_input_delay -#@ group_variable timing disable_auto_time_borrow -#@ group_variable timing disable_case_analysis -#@ group_variable timing disable_conditional_mode_analysis -#@ group_variable timing disable_library_transition_degradation -#@ group_variable timing dont_bind_unused_pins_to_logic_constant -#@ group_variable timing enable_slew_degradation -#@ group_variable timing high_fanout_net_pin_capacitance -#@ group_variable timing high_fanout_net_threshold -#@ group_variable timing lib_thresholds_per_lib -#@ group_variable timing rc_adjust_rd_when_less_than_rnet -#@ group_variable timing rc_ceff_delay_min_diff_ps -#@ group_variable timing rc_degrade_min_slew_when_rd_less_than_rnet -#@ group_variable timing rc_driver_model_max_error_pct -#@ group_variable timing rc_filter_rd_less_than_rnet -#@ group_variable timing rc_input_threshold_pct_fall -#@ group_variable timing rc_input_threshold_pct_rise -#@ group_variable timing rc_output_threshold_pct_fall -#@ group_variable timing rc_output_threshold_pct_rise -#@ group_variable timing rc_rd_less_than_rnet_threshold -#@ group_variable timing rc_slew_derate_from_library -#@ group_variable timing rc_slew_lower_threshold_pct_fall -#@ group_variable timing rc_slew_lower_threshold_pct_rise -#@ group_variable timing rc_slew_upper_threshold_pct_fall -#@ group_variable timing rc_slew_upper_threshold_pct_rise -#@ group_variable timing timing_disable_cond_default_arcs -#@ # group_variable timing timing_enable_multiple_clocks_per_reg -#@ group_variable timing timing_report_attributes -#@ group_variable timing timing_self_loops_no_skew -#@ group_variable timing when_analysis_permitted -#@ group_variable timing when_analysis_without_case_analysis -#@ -#@ } ;# $synopsys_program_name != "ptxr" -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ # -#@ # IC Compile Variable Group: -#@ # -#@ # These variables affect the designs created by the route_opt command. -#@ # -#@ group_variable routeopt routeopt_checkpoint -#@ group_variable routeopt routeopt_disable_cpulimit -#@ } -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ # -#@ # IC Compiler Variable Group: MCMM -#@ # -#@ # These variables affect Multi-Corner/Multi-Mode. Currently, MCMM is -#@ # only supported in ICC--hence the "icc_shell" qualification, above -#@ # -#@ group_variable MCMM mcmm_enable_high_capacity_flow -#@ } -#@ -#@ # Aliases for backwards compatibility or other reasons -#@ group_variable compile {compile_log_format} -#@ alias view_cursor_number x11_set_cursor_number -#@ alias set_internal_load set_load -#@ alias set_internal_arrival set_arrival -#@ alias set_connect_delay "set_annotated_delay -net" -#@ alias create_test_vectors create_test_patterns -#@ alias compile_test insert_test -#@ alias check_clocks check_timing -#@ alias lint check_design -#@ # gen removed; alias gen create_schematic -#@ alias free remove_design -#@ alias group_bus create_bus -#@ alias ungroup_bus remove_bus -#@ alias groupvar group_variable -#@ alias report_constraints report_constraint -#@ alias report_attributes report_attribute -#@ alias fsm_reduce reduce_fsm -#@ alias fsm_minimize minimize_fsm -#@ alias disable_timing set_disable_timing -#@ alias dont_touch set_dont_touch -#@ alias dont_touch_network set_dont_touch_network -#@ alias dont_use set_dont_use -#@ alias fix_hold set_fix_hold -#@ alias prefer set_prefer -#@ alias remove_package "echo remove_package command is obsolete: packages are stored on disk not in-memory:" -#@ alias analyze_scan preview_scan -#@ alias get_clock get_clocks -#@ alias dc_shell_is_in_incr_mode shell_is_in_xg_mode -#@ alias set_vh_module_options set_dps_module_options -#@ alias set_vh_physopt_options set_dps_options -#@ alias update_vh_design update_dps_design -#@ alias vh_start dps_start -#@ alias vh_end dps_end -#@ alias all_vh_modules all_dps_modules -#@ alias all_designs_of_vh all_designs_of_dps -#@ alias vh_use_auto_partitioning dps_auto_partitioning -#@ alias vh_write_changes dps_write_changes -#@ alias vh_read_changes dps_read_changes -#@ alias vh_write_module_clock dps_write_module_clock -#@ alias get_lib get_libs -#@ -#@ # Enable unsupported psyn commands -#@ if { $synopsys_program_name == "psyn_shell" || $synopsys_program_name == "icc_shell"} { -#@ proc enable_unsupported_commands { { arg "default" } } { -#@ global cgpi_use_new_wire_factors -#@ global cgpi_use_relative_wire_factors -#@ global cgpi_use_new_path_factors -#@ global pwlm_use_new_wire_factors -#@ global pwlm_use_relative_wire_factors -#@ global pwlm_use_new_path_factors -#@ global psyn_unsupported_commands_dir -#@ global synopsys_root -#@ if {![info exists psyn_unsupported_commands_dir]} { -#@ set psyn_unsupported_commands_dir $synopsys_root/auxx/syn/psyn/unsupported_commands -#@ } -#@ set psyn_unsupported_commands_option1 $arg -#@ if {[file readable $psyn_unsupported_commands_dir/setup.tcl]} { -#@ source $psyn_unsupported_commands_dir/setup.tcl -#@ } else { -#@ source -encrypted $psyn_unsupported_commands_dir/setup.tcl.e -#@ } -#@ } -#@ } -#@ # For Intel -#@ if { $synopsys_program_name == "icc_shell"} { -#@ set psyn_unsupported_commands_dir $synopsys_root/auxx/syn/psyn/unsupported_commands -#@ source -encrypted $psyn_unsupported_commands_dir/max_dist.tcl.e -#@ } -#@ -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ # to enable CLE readline-ish terminal by default for ICC -#@ set sh_enable_line_editing true -#@ -#@ # Astro forms create an enormous number of new variables which are -#@ # very annoying for users to see, so the default of this variable -#@ # for ICC is false -#@ set sh_new_variable_message false -#@ } -#@ -#@ if { $synopsys_program_name == "icc_shell" || (($synopsys_program_name == "dc_shell") && ([shell_is_in_topographical_mode])) } { -#@ source $synopsys_root/auxx/syn/psyn/verify_ilm.tcl -#@ } -#@ -#@ # Enable vh psyn commands -#@ if { $synopsys_program_name == "psyn_shell" } { -#@ proc enable_vh_flow { } { -#@ global VH_SCRIPT_FILE -#@ global synopsys_root -#@ global suppress_errors -#@ set suppress_errors "$suppress_errors CMD-041 UID-95 SEL-003 SEL-005" -#@ if {![info exists VH_SCRIPT_FILE]} { -#@ set VH_SCRIPT_FILE $synopsys_root/auxx/syn/psyn/vh_pc.tcl.e -#@ } -#@ if {[file readable $VH_SCRIPT_FILE]} { -#@ if {[string match *.tcl $VH_SCRIPT_FILE]} { -#@ source $VH_SCRIPT_FILE -#@ } else { -#@ source -encrypted $VH_SCRIPT_FILE -#@ } -#@ } else { -#@ puts "Error: VH script file $VH_SCRIPT_FILE not found." -#@ } -#@ } -#@ } -#@ -#@ -#@ #Turn on enable_netl_view to true by default. -#@ set enable_netl_view "TRUE" -#@ -#@ -#@ #Turn on physopt_bypass_multiple_plib_check by default -#@ if { $synopsys_program_name == "psyn_shell" } { -#@ set physopt_bypass_multiple_plib_check TRUE -#@ } -#@ -#@ # The ls command is gone, now it is just an alias for dc_shell eqn mode -#@ -#@ if { [string compare $dc_shell_mode "default"] == 0 } { -#@ if { ( $sh_arch == {mips}) && ( ( $synopsys_program_name == {design_analyzer}) || ( $isatty == 0)) } { -#@ alias ls "sh ls -a " -#@ } else { -#@ if { ( $sh_arch == {mips}) || ( $sh_arch == {necmips}) } { -#@ alias ls "sh ls -aC " -#@ } else { -#@ alias ls "sh ls -aC " -#@ } -#@ } -#@ } -#@ -#@ # Aliases for RouteCompiler -#@ alias run_rodeo_router route66 -#@ -#@ # Removing route_global from the code. Earlier it was hidden. --Mukesh -#@ #proc route_global {} { -#@ # global route_global_keep_tmp_data -#@ # global rt66_dont_lock_dir -#@ # -#@ # set rt66_dont_lock_dir TRUE -#@ # -#@ # for { set i 0} {1==1} {incr i} { -#@ # set wdir [file join [pwd] ".route_global.$i"] -#@ # if {[file exist $wdir] == 0} { -#@ # break; -#@ # } -#@ # } -#@ # -#@ # set_routing_options -cut_out_covered_port CORE_ONLY -#@ # set_routing_options -internal_routing FALSE -#@ # set_routing_options -stick_routing FALSE -#@ # -#@ # ###puts "wdir = $wdir" -#@ # -#@ # set success [route66 -global -dontstop -dir $wdir] -#@ # -#@ # #clean tmp data if required: -#@ # if { $success == 1 } { -#@ # if [catch {string toupper $route_global_keep_tmp_data} result] { -#@ # #variable is not defined -#@ # ###puts "result_1 = $result => removing dir ..." -#@ # catch { file delete -force $wdir } -#@ # } else { -#@ # #variable is set to FALSE -#@ # if { [string compare $result "TRUE"] != 0} { -#@ # ###puts "result_2 = $result => removing dir ..." -#@ # catch { file delete -force $wdir } -#@ # } -#@ # } -#@ # } -#@ # -#@ # set rt66_dont_lock_dir FALSE -#@ # return 1 -#@ #} -#@ #define_proc_attributes route_global -hidden -#@ -#@ #/* Aliases added for report command */ -#@ alias report_clock_constraint "report_timing -path end -to all_registers(-data_pins)" -#@ alias report_clock_fanout "report_transitive_fanout -clock_tree" -#@ alias report_clocks report_clock -#@ alias report_synthetic report_cell -#@ -#@ # Alias added for Ultra backward compatibility mode -#@ alias set_ultra_mode set_ultra_optimization -#@ -#@ # alias for write_sge and menu item in DA for db2sge -#@ -#@ #if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ # set db2sge_script ${synopsys_root}/admin/setup/.dc_write_sge.tcl -#@ #} else { -#@ # set db2sge_script ${synopsys_root}/admin/setup/.dc_write_sge -#@ #} -#@ -#@ #set db2sge_command ${synopsys_root}/${sh_arch}/syn/bin/db2sge -#@ set view_script_submenu_items "\"DA to SGE Transfer\" write_sge" -#@ -#@ -#@ if { $synopsys_program_name != "lc_shell"} { -#@ # read schematic annotation setup file -#@ #source ${synopsys_root}/admin/setup/.dc_annotate -#@ -#@ # setup the default layer settings -#@ #source ${synopsys_root}/admin/setup/.dc_layers -#@ -#@ if {$synopsys_program_name != "dc_sms_shell"} { -#@ source ${synopsys_root}/admin/setup/.dc_name_rules -#@ } -#@ } else { -#@ #for read_lib -html -#@ source ${synopsys_root}/auxx/syn/lc/read_lib_html_msg_list.tcl -#@ } -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/admin/setup/.dc_name_rules - -#@ # -#@ -#@ # .dc_name_rules Initialization file for -#@ -#@ # Dc_Shell and Design_Analyzer -#@ -#@ # This files defines name rules for target systems. Change_names -#@ # will use this rules to fix the object names. -#@ -#@ #*/ -#@ -#@ -#@ define_name_rules sverilog -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules sverilog -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules sverilog -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ define_name_rules sverilog -reserved { "always" "always_comb" "always_ff" "always_latch" "and" "assert" "assert_strobe" "assign" "automatic" "begin" "bit" "break" "buf" "bufif0" "bufif1" "byte" "case" "casex" "casez" "cell" "changed" "char" "cmos" "config" "const" "continue" "deassign" "default" "defparam" "design" "disable" "do" "edge" "else" "end" "endcase" "endconfig" "endfunction" "endgenerate" "endinterface" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "endtransition" "enum" "event" "export" "extern" "for" "force" "forever" "fork" "forkjoin" "function" "generate" "genvar" "highz0" "highz1" "if" "iff" "ifnone" "import" "incdir" "include" "initial" "inout" "input" "instance" "int" "integer" "interface" "join" "large" "liblist" "library" "localparam" "logic" "longint" "longreal" "macromodule" "medium" "modport" "module" "nand" "negedge" "nmos" "nor" "noshowcancelled" "not" "notif0" "notif1" "or" "output" "packed" "parameter" "pmos" "posedge" "primitive" "process" "priority" "pull0" "pull1" "pullup" "pulldown" "pulsestyle_onevent" "pulsestyle_ondetect" "rcmos" "real" "realtime" "reg" "release" "repeat" "return" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "shortint" "shortreal" "showcancelled" "signed" "small" "specify" "specparam" "static" "strong0" "strong1" "struct" "supply0" "supply1" "table" "task" "time" "timeprecision" "timeunit" "tran" "tranif0" "tranif1" "transition" "tri" "tri0" "tri1" "triand" "trior" "trireg" "type" "typedef" "union" "unique" "use" "unsigned" "vectored" "void" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing -#@ -#@ define_name_rules verilog -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules verilog -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules verilog -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ define_name_rules verilog -reserved { "always" "and" "assign" "automatic" "begin" "buf" "bufif0" "bufif1" "case" "casex" "casez" "cell" "cmos" "config" "deassign" "default" "defparam" "design" "disable" "edge" "else" "end" "endcase" "endconfig" "endfunction" "endgenerate" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "event" "for" "force" "forever" "fork" "function" "generate" "genvar" "highz0" "highz1" "if" "ifnone" "incdir" "include" "initial" "inout" "input" "instance" "integer" "join" "large" "liblist" "library" "localparam" "macromodule" "medium" "module" "nand" "negedge" "nmos" "nor" "noshowcancelled" "not" "notif0" "notif1" "or" "output" "parameter" "pmos" "posedge" "primitive" "pull0" "pull1" "pullup" "pulldown" "pulsestyle_onevent" "pulsestyle_ondetect" "rcmos" "real" "realtime" "reg" "release" "repeat" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "showcancelled" "signed" "small" "specify" "specparam" "strong0" "strong1" "supply0" "supply1" "table" "task" "time" "tran" "tranif0" "tranif1" "tri" "tri0" "tri1" "triand" "trior" "trireg" "unsigned" "use" "vectored" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing -#@ -#@ define_name_rules verilog_1995 -type net -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules verilog_1995 -type port -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ -#@ define_name_rules verilog_1995 -type cell -allow "a-z A-Z 0-9 _ " -first_restrict "_ 0-9" -#@ define_name_rules verilog_1995 -reserved { "always" "and" "assign" "begin" "buf" "bufif0" "bufif1" "case" "casex" "casez" "cell" "cmos" "deassign" "default" "defparam" "design" "disable" "edge" "else" "end" "endcase" "endfunction" "endmodule" "endprimitive" "endspecify" "endtable" "endtask" "event" "for" "force" "forever" "fork" "function" "highz0" "highz1" "if" "ifnone" "initial" "inout" "input" "integer" "join" "large" "macromodule" "medium" "module" "nand" "negedge" "nmos" "nor" "notif0" "notif1" "or" "output" "parameter" "pmos" "posedge" "primitive" "pull0" "pull1" "pullup" "pulldown" "rcmos" "real" "realtime" "reg" "release" "repeat" "rnmos" "rpmos" "rtran" "rtranif0" "rtranif1" "scalared" "small" "specify" "specparam" "strong0" "strong1" "supply0" "supply1" "table" "task" "time" "tran" "tranif0" "tranif1" "tri" "tri0" "tri1" "triand" "trior" "trireg" "vectored" "wait" "wand" "weak0" "weak1" "while" "wire" "wor" "xor" "xnor" } -special verilog -target_bus_naming_style {%s[%d]} -flatten_multi_dimension_busses -check_internal_net_name -check_bus_indexing -#@ -#@ -#@ ####/* Name rule for VHDL */ -#@ -#@ ####/* Name rule for VHDL */ -#@ -#@ ####/* Name rule for VHDL */ -#@ -#@ define_name_rules vhdl -reserved_words { "abs" "access" "after" "alias" "all" "and" "architecture" "array" "assert" "attribute" \ -#@ "begin" "block" "body" "buffer" "bus" "case" "component" "configuration" "constant" "disconnect" "downto" "else" "elsif" "end" "entity" "exit" "file" "for" "function" "generate" "generic" "group" "guarded" "if" "impure" "in" "inertial" "inout" "is" "label" "library" "linkage" "literal" "loop" "map" "mod" "nand" "new" "next" "nor" "not" "null" "of" "on" "open" "or" "others" "out" "package" "port" "postponed" "procedure" "process" "pure" "range" "record" "register" "reject" "rem" "report" "return" "rol" "ror" "select" "severity" "signal" "shared" "sla" "sll" "sra" "srl" "subtype" "then" "to" "transport" "type" "unaffected" "units" "until" "use" "variable" "wait" "when" "while" "with" "xnor" "xor"} -case_insensitive -target_bus_naming_style "%s(%d)" -replacement_char "x" -special vhdl -#@ define_name_rules vhdl -type net -allowed "A-Z a-z _ 0-9 " -first_restricted "0-9 _" -last_restricted "_" -#@ define_name_rules vhdl -type port -allowed "A-Z a-z _ 0-9 " -first_restricted "0-9 _" -last_restricted "_" -#@ define_name_rules vhdl -type cell -allowed "A-Z a-z _ 0-9" -first_restricted "0-9 _" -last_restricted "_" -#@ define_name_rules vhdl -map { {{"__","_"},{"_$",""}} } -#@ -#@ ####/* Name rule for VHDL */ -#@ # -- End source /EDA/Synopsys/syn/O-2018.06-SP1/admin/setup/.dc_name_rules - -#@ -#@ if { $synopsys_program_name == "psyn_gui"} { -#@ # read RouteCompiler GUI file for timing critical pathes. -#@ source ${synopsys_root}/auxx/syn/route_gui/write_route_timing_path.tcl -#@ } -#@ -#@ # Set physopt_dw_opto to false -#@ if { [string match -nocase {*icc_shell*} $synopsys_program_name] } { -#@ set physopt_dw_opto FALSE -#@ } -#@ -#@ #/* Read budgeting setup script */ -#@ -#@ if { [string compare $dc_shell_mode "default"] == 0 } { -#@ -#@ # Need a encrypted file in Tcl format for budget.setup.et -#@ if { $sh_arch != "msvc50" && $sh_arch != "alpha_nt" } { -#@ # source -e synopsys_root + "/admin/setup/budget.setup.et" -#@ } -#@ } -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ source $synopsys_root/auxx/syn/.icc_procs.tcl -#@ source -encrypted $synopsys_root/auxx/syn/cts/fast_atomic_cts.tcl.e -#@ } -#@ -#@ if { $synopsys_program_name == "icc_shell"} { -#@ alias report_scenario report_scenarios -#@ } -#@ -#@ # floorplanning preferences globals -#@ global fp_snap_type -#@ -#@ set fp_snap_type(port) wiretrack -#@ set fp_snap_type(cell) litho -#@ set fp_snap_type(pin) wiretrack -#@ set fp_snap_type(movebound) litho -#@ set fp_snap_type(port_shape) wiretrack -#@ set fp_snap_type(wiring_keepout) wiretrack -#@ set fp_snap_type(placement_keepout) litho -#@ set fp_snap_type(net_shape) wiretrack -#@ set fp_snap_type(route_shape) wiretrack -#@ set fp_snap_type(none) litho -#@ -#@ # STAR 9000615813. PWR-18 is no longer internally suppressed. -#@ # Instead call tcl suppress_message so that it can be unsuppressed by users in -#@ # command line if needed -#@ suppress_message PWR-18 -#@ -#@ # alias for write_sge is always the last line of the setup file -#@ #if { [string compare $dc_shell_mode "tcl"] == 0 } { -#@ # alias write_sge "source db2sge_script" -#@ #} else { -#@ # alias write_sge "include db2sge_script" -#@ #} -#@ -#@ if { $dc_shell_mode == "tcl" } { -#@ # Configure Execute script dialog to display .tcl files -#@ set view_execute_script_suffix "$view_execute_script_suffix .tcl" -#@ } -#@ -#@ # -#@ # Shirley Lu 5/15/2007 -#@ # -#@ # Invoke NCX validation/correlation/fomatter from lc_shell: -#@ # -#@ # UNIX shell: -#@ # setenv SYNOPSYS_NCX_ROOT /mydisk/ncx_2007.06 -#@ # -#@ -#@ if {[info exists env(SYNOPSYS_NCX_ROOT)]} { -#@ -#@ set ncx_path $env(SYNOPSYS_NCX_ROOT)/ncx/${sh_arch}/bin -#@ -#@ # -#@ # check_ccs_lib -#@ # use libchecker under $ncx_path defined above -#@ # Disable this command since 2010.12-SP3 (should be done in 2010.12 release) -#@ #proc check_ccs_lib {args} { -#@ # global ncx_path -#@ # set cmdStr [linsert $args 0 ${ncx_path}/libchecker -lc_shell] -#@ # set cmd [open "| $cmdStr 2>@ stdout"] -#@ # catch { -#@ # while {[gets $cmd info] >= 0} { -#@ # echo $info -#@ # } -#@ # } -#@ # if {[catch {close $cmd} msg]} { -#@ # } -#@ #} -#@ -#@ # -#@ # format_lib -#@ # use ncx under $ncx_path defined above -#@ # Disable format_lib command in 2014.09 release -- xwwang, 7/25/2014 -#@ #proc format_lib {args} { -#@ # global ncx_path -#@ # echo "Warning: format_lib command is scheduled to become obsolete in a future production release." -#@ # set cmdStr [linsert $args 0 ${ncx_path}/ncx -lc_shell] -#@ # set cmd [open "| $cmdStr 2>@ stdout"] -#@ # catch { -#@ # while {[gets $cmd info] >= 0} { -#@ # echo $info -#@ # } -#@ # } -#@ # if {[catch {close $cmd} msg]} { -#@ # } -#@ #} -#@ -#@ } -#@ -#@ proc valias {v_orig v_alias} { -#@ uplevel 1 "upvar 0 $v_orig $v_alias" -#@ } -#@ -#@ set lc_run_from_legacy_library_compiler "true" -#@ -#@ set lc_enable_legacy_library_compiler "false" -#@ -#@ valias lc_enable_legacy_library_compiler lc_enable_common_shell_lc -#@ -#@ if {[info exists ::env(SYNOPSYS_LC_ROOT)] && [file exists $::env(SYNOPSYS_LC_ROOT)/$::sh_arch/lc/bin/lc_shell_exec]} { -#@ # make lc man pages search path override the default man page search path -#@ set man_path [linsert $man_path 0 $::env(SYNOPSYS_LC_ROOT)/doc/lc/man] -#@ } else { -#@ set lc_link "$::synopsys_root/$::sh_arch/syn/bin/lc_shell_exec" -#@ while { [file exists $lc_link] && [file type $lc_link] == "link"} { -#@ set lc_link [file readlink $lc_link] -#@ } -#@ # resolve symbol-link to get $exec_path of lc_shell_exec -#@ if { [file exists $lc_link] } { -#@ set LC_ROOT [file dirname [file dirname [file dirname [file dirname $lc_link]]]] -#@ set man_path [linsert $man_path 0 $LC_ROOT/doc/lc/man] -#@ } -#@ } -#@ -#@ source ${synopsys_root}/auxx/syn/lc_commands.tbc -#@ # -- Starting source /EDA/Synopsys/syn/O-2018.06-SP1/auxx/syn/lc_commands.tbc - -#@ ############################################################################## -#@ # Author : Liping Zhao -#@ # History: 2016/11/21 created -#@ # Description: This is the source tcl file of run_nglc.tbc. -#@ # The procs are all for run library compiler under the hood. -#@ # These procs are exracted from .synopsys_dc.setup -#@ ############################################################################## -#@ # TclPro::Compiler::Include -#@ -#@ if {[catch {package require tbcload 1.6} err] == 1} { -#@ return -code error "[info script]: The TclPro ByteCode Loader is not available or does not support the correct version -- $err" -#@ } -#@ tbcload::bceval { -#@ TclPro ByteCode 2 0 1.7 8.5 -#@ 44 0 426 61 0 0 312 0 12 44 44 -1 -1 -#@ 426 -#@ `:G,f=!CM1qv2&|=!A8#>!*BEKs!6#o9v.EW< -#@ !E;kpvJSapvQXxOwI1IOwI1IOwI1IOwI1IOwI1IOwI1IOwI1IOw -#@ 44 -#@ I%%n#;c(;v0g>a'?qwn#I%%n#I%%n#I%%n#I%%n#I%%n#I%%n#Hq^R# -#@ 61 -#@ x -#@ 4 -#@ ,CHr@ -#@ x -#@ 23 -#@ lj|Z?!aiaEw>m#H8&Z)F5mNaEt-E- -#@ x -#@ 1 -#@ A! -#@ p -#@ 5 0 29 3 0 0 20 0 9 5 5 -1 -1 -#@ 29 -#@ w0EpvQks6#;>fv!E*<!8^w!!a9)!!&E&s -#@ !18:3w4Ki!8^w!!KJv!!&E&s!1rA=!;Yq9-C^w -#@ !!+?!!!1;l!,A^w!!+?!!!fqlwv5v!!!D!!!!gF#!!&E&s!:8B=!4,tl#,eN48;I%!!'BWMe`BJ>'0.#3WW!0#>6#3# -#@ Ts!TG;I/m&3,!/uJv!#0EMe`BLP|f.#3WW!0#>6#82Ts!TG;I/o,3,!1,|v!#0EMe`BJ -#@ >'0.#3WW!0#>6#:8Ts!TG;I/m&3,!/uJv!#0E!^KnMe`BJ>'0.#3WW!0#>6#<>Ts!TG;I/m&3,!/uJv!#0E!_KnMe`BJ>'0.#3 -#@ WW!0#>6#>DTs!TG;I/m&3,!/uJv!#0Em#HvdM -#@ e`BBKMT+#3WW!w0EMe`BBKMT+#3WW!w0EMe`BBKMT+#3WW!w0EMe`BBKMT+#3WW!w0Em#HvdKv -#@ x -#@ 3 -#@ g'i- -#@ 0 -#@ 0 -#@ 1 2 -#@ 1 -#@ ?v -#@ 0 0 256 -#@ 3 -#@ g'i- -#@ 1 0 0 -#@ x -#@ 13 -#@ qd,r@dIa:@e-%lB.v -#@ x -#@ 6 -#@ 'E%6B_-v -#@ p -#@ 1 0 7 1 0 0 4 0 2 1 1 -1 -1 -#@ 7 -#@ ,|&v!)'!! -#@ 1 -#@ z -#@ 1 -#@ '! -#@ 1 -#@ x -#@ 21 -#@ w3F/D'gi'FrZ!iCdIa:@e-%lB.v -#@ 0 -#@ 0 -#@ 1 1 -#@ 4 -#@ %N|(F -#@ 0 0 256 -#@ x -#@ 21 -#@ w3F/D'gi'FrZ!iCdIa:@e-%lB.v -#@ x -#@ 5 -#@ %N|(FA! -#@ p -#@ 10 0 92 13 0 0 40 0 5 10 10 -1 -1 -#@ 92 -#@ )NrUNw,?WcEh7|7An1g+ -#@ x -#@ 5 -#@ )lP)F1v -#@ x -#@ 19 -#@ ,v(Z?!aiaEmo3mBm+BRAyOl, -#@ x -#@ 21 -#@ w3F/D'gi'FrZ!iCdIa:@VhrU@?v -#@ x -#@ 18 -#@ #k|Z?(FuSAhaBq@c^CkBHSw -#@ 0 -#@ 0 -#@ 1 3 -#@ 4 -#@ %N|(F -#@ 0 0 256 -#@ 8 -#@ o4jY?m'cSA -#@ 1 0 0 -#@ 4 -#@ g3IID -#@ 2 0 0 -#@ x -#@ 14 -#@ #k|Z?r0H8Aw9fwGJ%% -#@ p -#@ 7 0 70 13 0 0 28 0 6 7 7 -1 -1 -#@ 70 -#@ )Nre`B;a9?)v*<N%Je|v -#@ 13 -#@ x -#@ 3 -#@ _e|+ -#@ x -#@ 15 -#@ kaT5BgxUgCr6m*E_I-, -#@ x -#@ 6 -#@ sT2TAIPw -#@ x -#@ 8 -#@ m'cSANjkSA -#@ x -#@ 1 -#@ +v -#@ x -#@ 5 -#@ n0Hr@7v -#@ x -#@ 12 -#@ #graEv_Bq@,0B(F -#@ x -#@ 4 -#@ m'cSA -#@ x -#@ 6 -#@ gpbSAPSw -#@ x -#@ 6 -#@ AP5cE?Sw -#@ x -#@ 18 -#@ kaT5Bmv -#@ 0 -#@ 0 -#@ 0 1 -#@ 8 -#@ m'cSANjkSA -#@ 0 0 0 -#@ x -#@ 14 -#@ 4rBfD1-0CFq&fwGJ%% -#@ x -#@ 10 -#@ (KxhCN1-.DQ-v -#@ p -#@ 17 0 213 23 2 1 88 2 10 17 21 -1 -1 -#@ 213 -#@ w0E!8^w!!2V'!!*i=6#4;tl#=MGY!g@#!!ee6(!H,FN-gE -#@ EfR8SUNw

    :v8P60%.EW

    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 U?LA{-`GQ6lIsRY!!Tjj`UqEaWmH+?% diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-13.jpg b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready-13.jpg deleted file mode 100644 index b75b3ab90aa5ee8ca3c9ca593d2e35a096a807de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49023 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 diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready.spq b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready.spq deleted file mode 100644 index 78e2018..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready.spq +++ /dev/null @@ -1,101 +0,0 @@ -// ---------------------------------------------------------------------------- -// SpyGlass GuideWare Goal File -// -// Goal Name : dft_scan_ready -// Version : 5.5.0 -// -// Revision History: -// Ver Date Comments -// 5.5.0 11-Jun-2015 Initial version -// Added : Clock_26 -// Added : Info_testmode_conflict_01 -// Added : Info_untestable -// Removed: Info_path -// -// Copyright Synopsys Inc, 2019. All rights reserved. -// ---------------------------------------------------------------------------- - -=template++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -dft_scan_ready -* -Make registers scannable -* - SpyGlass DFT may be run on RTL designs without any built-in test logic or -on designs with test mode controls and test clocks. In the first case, -SpyGlass will identify the system logic that does not comply with DFT -requirements. In the second case, SpyGlass DFT will verify that the -design-for-test logic is performing correctly as well as identify where -additional design-for-test logic may be required or useful. - - This "scan ready" step is designed to ensure that as many registers in -the RTL as possible can easily be replaced with scan equivalents either -during logic synthesis or in a post-synthesis step. SpyGlass DFT does -not do the scan insertion or scan chain stitching but rather deals with -the clocks and the asynchronous signals to ensure compliance with -scan replacement requirements. - - For more details about this goal, please refer to the -SpyGlass-DFT-Methodology.pdf file in the doc subdirectory of your -SpyGlass installation -=cut+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -//------------------------------------------------ -// Policy Registration -//------------------------------------------------ - --policies=dft - - -//------------------------------------------------ -// General Setup commands -//------------------------------------------------ - - -//------------------------------------------------ -// Policy Specific Parameter Setting -//------------------------------------------------ - - -//------------------------------------------------ -// Rule Registration -//------------------------------------------------ - --rules Coverage_audit // Analyze coverage for circuit - --rules Info_coverage // Estimate fault and test coverage - --rules Async_07 // Asynchronous set/reset sources should be inactive during shift mode --overloadrules Async_07+msgLabel=Async_07_M1+severity=Error - --rules Async_08 // Asynchronous set/reset pins of all the flops should be fully controllable during capture. - --rules Clock_11 // All clock sources must be testclock controlled in shift mode --overloadrules Clock_11+msgLabel=Clock_11_M1+severity=Error - --rules Clock_11_capture // All clock sources must be testclock controlled in capture mode - --rules Clock_26 // Testclock constraint must not be applied on sensitized fanout of another test clock in Shift or Capture mode - --rules Diagnose_testclock // Display instances that blocks testclock propagation - --rules Diagnose_testmode // Display instances that blocks testmode propagation - --rules Info_forcedScan // Displays all registers and flip-flops specified as 'scan' - --rules Info_inferredNoScan // Displays all flip-flops which have been inferred as no_scan - --rules Info_noScan // Displays all registers and flip-flops specified as 'no_scan' - --rules Info_scanwrap // Report scanwrap related information - --rules Info_testclock // Display test clock propagation - --rules Info_testmode // Display testmode simulation results - --rules Info_testmode_conflict_01 // Display conflict in user specified testmode with respect to simulation result of fanin cone - --rules Info_untestable // Display untestable faults caused by test mode - -//------------------------------------------------ -// End of Rule Registration -//------------------------------------------------ diff --git a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready_debug_help.htm b/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready_debug_help.htm deleted file mode 100644 index a70ceca..0000000 --- a/src/UWE_projectCode/tmp/tmp/Scripts/custom_methodology/dft/dft_scan_ready_debug_help.htm +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - dft_scan_ready - - - - - - - - - - - - - -