{"id":74065,"date":"2026-02-08T23:58:30","date_gmt":"2026-02-08T15:58:30","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/74065.html"},"modified":"2026-02-08T23:58:30","modified_gmt":"2026-02-08T15:58:30","slug":"synopsys-dc%e7%bb%bc%e5%90%88%e7%a4%ba%e4%be%8b%ef%bc%88%e5%90%ab%e7%bb%bc%e5%90%88%e8%84%9a%e6%9c%ac%e5%8f%8a%e7%9b%ae%e5%bd%95%e6%a1%86%e6%9e%b6%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/74065.html","title":{"rendered":"Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09"},"content":{"rendered":"<\/p>\n<h4>\u76ee\u5f55<\/h4>\n<ul>\n<li>\n<ul>\n<li>\u4e00\u3001\u76ee\u5f55\u7ed3\u6784<\/li>\n<li>\u4e8c\u3001DC\u7efc\u5408\u811a\u672c<\/li>\n<li>\n<ul>\n<li>2.1 \u603b\u811a\u672c<\/li>\n<li>2.2 \u811a\u672c\u5404\u90e8\u5206\u8be6\u89e3<\/li>\n<li>2.3 setupLib.tcl \u6587\u4ef6\u8be6\u89e3<\/li>\n<li>2.4 np2h0011_filelist.f \u6587\u4ef6<\/li>\n<li>2.5 adder.sdc \u6587\u4ef6<\/li>\n<li>2.6 rpt.tcl \u6587\u4ef6\u8be6\u89e3<\/li>\n<li>2.7 clean.sh\u6587\u4ef6<\/li>\n<li>2.8 DC\u8fd0\u884c\u6587\u4ef6&#xff08;run.sh&#xff09;<\/li>\n<\/ul>\n<\/li>\n<li>\u4e09\u3001\u8865\u5145<\/li>\n<li>\n<ul>\n<li>3.1 adder\u4ee3\u7801\u6587\u4ef6<\/li>\n<li>3.2 nameRule.tcl\u811a\u672c<\/li>\n<li>3.3 compileOpt.tcl\u811a\u672c<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u4e00\u3001\u76ee\u5f55\u7ed3\u6784<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/02\/20260208155829-6988b2a53b662.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/> \u53ef\u4ee5\u770b\u89c1&#xff0c;\u56fe\u4e2d\u6587\u4ef6\u5939\u5747\u5728syn\u7efc\u5408\u76ee\u5f55\u4e0b\u3002<\/p>\n<p>\u5404\u6587\u4ef6\u5939\u542b\u4e49&#xff1a;<\/p>\n<ul>\n<li>db&#xff1a;\u5b58\u653eDesign Compiler\u7684\u6570\u636e\u5e93\u6587\u4ef6&#xff08;\u4e8c\u8fdb\u5236\u7684.ddc\u6587\u4ef6&#xff09;<\/li>\n<li>lib&#xff1a;\u5b58\u653e\u5de5\u827a\u5e93\u548cIP\u5e93\u6587\u4ef6<\/li>\n<li>log&#xff1a;\u5b58\u653e\u8fd0\u884c\u65e5\u5fd7\u6587\u4ef6<\/li>\n<li>main&#xff1a;\u5b58\u653eDC\u7efc\u5408\u811a\u672cnp2h0011_syn.tcl&#xff08;2.1&#xff09;<\/li>\n<li>mapped&#xff1a;\u5b58\u653e\u7efc\u5408\u6620\u5c04\u8f6c\u6362\u540e\u7684\u95e8\u7ea7\u4ee3\u7801\u6587\u4ef6<\/li>\n<li>netlist&#xff1a;\u5b58\u653e\u7efc\u5408\u540e\u751f\u6210\u7684\u7f51\u8868\u6587\u4ef6<\/li>\n<li>report&#xff1a;\u5b58\u653e\u7efc\u5408\u8fc7\u7a0b\u4e2d\u4ea7\u751f\u7684\u5404\u79cd\u62a5\u544a<\/li>\n<li>script&#xff1a;\u5b58\u653e\u7efc\u5408\u6d41\u7a0b\u4e2d\u8c03\u7528\u7684\u5b50\u811a\u672c\u548c\u914d\u7f6e\u6587\u4ef6<\/li>\n<li>work&#xff1a;\u5de5\u4f5c\u533a&#xff0c;\u5b58\u653e\u8fd0\u884c\u811a\u672c\u53ca\u4e2d\u95f4\u6587\u4ef6<\/li>\n<li>clean.sh&#xff1a;\u6e05\u7406\u811a\u672c&#xff0c;\u7528\u4e8e\u6e05\u7406\u524d\u4e00\u6b21\u7efc\u5408\u4ea7\u751f\u7684\u6240\u6709\u6587\u4ef6<\/li>\n<\/ul>\n<h3>\u4e8c\u3001DC\u7efc\u5408\u811a\u672c<\/h3>\n<h4>2.1 \u603b\u811a\u672c<\/h4>\n<p><span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span>       view_name     <span class=\"token number\">20260130<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span>       topDesign     adder<\/p>\n<p><span class=\"token builtin class-name\">set<\/span>       PROJECT       np2h0011<br \/>\n<span class=\"token builtin class-name\">set<\/span>       NETLIST_DIR    <span class=\"token punctuation\">..<\/span>\/netlist<br \/>\n<span class=\"token builtin class-name\">set<\/span>       COMMON_DIR     <span class=\"token punctuation\">..<\/span>\/script<br \/>\n<span class=\"token builtin class-name\">set<\/span>       rptPath        <span class=\"token punctuation\">..<\/span>\/report<\/p>\n<p><span class=\"token builtin class-name\">set<\/span>       chkfile       <span class=\"token punctuation\">[<\/span>format <span class=\"token string\">&#034;%s%s%s&#034;<\/span>  <span class=\"token string\">&#034;..\/report\/&#034;<\/span>  <span class=\"token variable\">$PROJECT<\/span> <span class=\"token string\">&#034;_syn_<span class=\"token variable\">${view_name}<\/span>.check&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span>       rptfile       <span class=\"token punctuation\">[<\/span>format <span class=\"token string\">&#034;%s%s%s&#034;<\/span>  <span class=\"token string\">&#034;..\/report\/&#034;<\/span>  <span class=\"token variable\">$PROJECT<\/span> <span class=\"token string\">&#034;_syn_<span class=\"token variable\">${view_name}<\/span>.rpt&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span>       scrfile       <span class=\"token punctuation\">[<\/span>format <span class=\"token string\">&#034;%s%s%s&#034;<\/span>  <span class=\"token string\">&#034;..\/report\/&#034;<\/span>  <span class=\"token variable\">$PROJECT<\/span> <span class=\"token string\">&#034;_syn_<span class=\"token variable\">${view_name}<\/span>.scr&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span>       vgfile        <span class=\"token punctuation\">[<\/span>format <span class=\"token string\">&#034;%s%s%s&#034;<\/span>  <span class=\"token string\">&#034;..\/netlist\/&#034;<\/span> <span class=\"token variable\">$PROJECT<\/span> <span class=\"token string\">&#034;_syn_<span class=\"token variable\">${view_name}<\/span>.vg&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\">#\/ read in lib &amp; verilog files<\/span><br \/>\n<span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- <\/span><\/p>\n<p><span class=\"token builtin class-name\">source<\/span>    <span class=\"token variable\">$COMMON_DIR<\/span>\/setupLib.tcl<\/p>\n<p>set_svf <span class=\"token punctuation\">..<\/span>\/<span class=\"token punctuation\">..<\/span>\/fm\/svf\/syn_<span class=\"token variable\">${view_name}<\/span>.svf<br \/>\nsuppress_message VER-130<br \/>\nsuppress_message VER-936<br \/>\nsuppress_message <span class=\"token punctuation\">[<\/span>list <span class=\"token environment constant\">UID<\/span>-401<span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token builtin class-name\">set<\/span> hdlin_auto_save_templates <span class=\"token boolean\">true<\/span><\/p>\n<p><span class=\"token function\">sh<\/span> <span class=\"token function\">rm<\/span> -rf .\/work\/*<\/p>\n<p>define_design_lib work -path work<\/p>\n<p>analyze -library work -define <span class=\"token punctuation\">{<\/span> SYNTHESIS<span class=\"token punctuation\">}<\/span> -vcs <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n       &#043;incdir&#043;<span class=\"token punctuation\">..<\/span>\/<span class=\"token punctuation\">..<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n       &#043;incdir&#043;<span class=\"token punctuation\">..<\/span>\/<span class=\"token punctuation\">..<\/span>\/rtl <span class=\"token punctuation\">\\\\<\/span><br \/>\n       <span class=\"token punctuation\">}<\/span> -format sverilog <span class=\"token variable\">$COMMON_DIR<\/span>\/np2h0011_filelist.f<\/p>\n<p>elaborate <span class=\"token variable\">$topDesign<\/span><\/p>\n<p><span class=\"token function\">link<\/span><\/p>\n<p><span class=\"token comment\">#\/ link design<\/span><br \/>\n<span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- <\/span><\/p>\n<p>current_design <span class=\"token variable\">$topDesign<\/span><\/p>\n<p>uniquify<\/p>\n<p>check_design <span class=\"token operator\">&gt;<\/span> <span class=\"token punctuation\">..<\/span>\/report\/check_design_<span class=\"token variable\">${view_name}<\/span>.rpt <\/p>\n<p><span class=\"token comment\">#\/ setting constrains<\/span><br \/>\n<span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- <\/span><\/p>\n<p><span class=\"token comment\">#source   -v -e   $COMMON_DIR\/set_dont_touch.tcl<\/span><\/p>\n<p><span class=\"token comment\">#source   -v -e   $COMMON_DIR\/clkCnst.tcl<\/span><\/p>\n<p><span class=\"token comment\">#source   -v -e    $COMMON_DIR\/groupPath.tcl<\/span><\/p>\n<p><span class=\"token comment\">#source   -v -e    $COMMON_DIR\/ioCnst.tcl<\/span><\/p>\n<p><span class=\"token comment\">#source   -v -e    $COMMON_DIR\/timeExcpt.tcl<\/span><\/p>\n<p><span class=\"token comment\">#source   -v -e    $COMMON_DIR\/drcCnst.tcl<\/span><\/p>\n<p><span class=\"token builtin class-name\">source<\/span>   -v -e    <span class=\"token variable\">$COMMON_DIR<\/span>\/adder.sdc<\/p>\n<p><span class=\"token comment\">#\/ Compile design<\/span><br \/>\n<span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- <\/span><\/p>\n<p><span class=\"token builtin class-name\">source<\/span>   -v -e   <span class=\"token variable\">$COMMON_DIR<\/span>\/nameRule.tcl<\/p>\n<p><span class=\"token builtin class-name\">source<\/span>   -v -e    <span class=\"token variable\">$COMMON_DIR<\/span>\/compileOpt.tcl<\/p>\n<p>check_timing <span class=\"token operator\">&gt;<\/span> <span class=\"token punctuation\">..<\/span>\/report\/check_timing_<span class=\"token variable\">${view_name}<\/span>.txt<\/p>\n<p><span class=\"token comment\"># clock gating<\/span><br \/>\n<span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/span><\/p>\n<p><span class=\"token comment\">#compile -map_effort medium<\/span><\/p>\n<p><span class=\"token builtin class-name\">set<\/span> compile_enable_register_merging <span class=\"token boolean\">false<\/span><\/p>\n<p>set_fix_multiple_port_nets -feedthroughs -buffer -all<\/p>\n<p>current_design <span class=\"token variable\">$topDesign<\/span><\/p>\n<p>compile_ultra -no_autoungroup -no_seq_output_inversion -no_boundary_optimization -gate_clock -no_design_rule<\/p>\n<p><span class=\"token comment\">#<\/span><br \/>\n<span class=\"token comment\">#check_timing &gt; 2.txt<\/span><br \/>\n<span class=\"token comment\">#<\/span><br \/>\n<span class=\"token comment\">#<\/span><br \/>\n<span class=\"token comment\">#compile_ultra -no_autoungroup -no_seq_output_inversion -no_boundary_optimization  -gate_clock  -incr  -no_design_rule<\/span><\/p>\n<p><span class=\"token comment\">#write -f verilog -h -o ..\/netlist\/$PROJECT.h.v <\/span><\/p>\n<p><span class=\"token function\">write<\/span>  -h -output <span class=\"token punctuation\">..<\/span>\/db\/compile_ultra.ddc<\/p>\n<p><span class=\"token function\">write<\/span> -format verilog -hier -out <span class=\"token punctuation\">..<\/span>\/mapped\/design_net.v<\/p>\n<p><span class=\"token comment\">#\/ Report Design<\/span><br \/>\n<span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- <\/span><\/p>\n<p><span class=\"token builtin class-name\">source<\/span>    <span class=\"token variable\">$COMMON_DIR<\/span>\/nameRule.tcl<br \/>\n<span class=\"token builtin class-name\">source<\/span>    <span class=\"token variable\">$COMMON_DIR<\/span>\/rpt.tcl<\/p>\n<p>set_svf off<\/p>\n<p><span class=\"token comment\"># Exit<\/span><br \/>\n<span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- <\/span><\/p>\n<p><span class=\"token builtin class-name\">exit<\/span><\/p>\n<p>\u4e0a\u8ff0\u603b\u811a\u672c\u4e2d\u6d89\u53ca\u5230\u5173\u952e\u7684\u51e0\u4e2a\u811a\u672c\u4e3a&#xff1a;<\/p>\n<ul>\n<li>setupLib.tcl&#xff1a;RTL\u4ee3\u7801\u7684\u8bbe\u8ba1\u94fe\u63a5\u811a\u672c<\/li>\n<li>np2h0011_filelist.f&#xff1a;\u6587\u4ef6\u5217\u8868&#xff08;\u7528\u4e8e\u8bfb\u53d6&#xff09;<\/li>\n<li>adder.sdc&#xff1a;\u7ea6\u675f\u6587\u4ef6<\/li>\n<li>nameRule.tcl&#xff1a;\u547d\u540d\u89c4\u5219<\/li>\n<li>compileOpt.tcl&#xff1a;\u7f16\u8bd1\u4f18\u5316\u9009\u9879\u8bbe\u7f6e\u811a\u672c<\/li>\n<li>rpt.tcl&#xff1a;\u62a5\u544a\u751f\u6210\u811a\u672c<\/li>\n<\/ul>\n<p>\u63a5\u4e0b\u6765\u4f1a\u5bf9\u4e0a\u8ff0\u51e0\u4e2a\u91cd\u8981\u811a\u672c\u8fdb\u884c\u8be6\u7ec6\u8bf4\u660e\u3002<\/p>\n<h4>2.2 \u811a\u672c\u5404\u90e8\u5206\u8be6\u89e3<\/h4>\n<ul>\n<li>1. \u5b9a\u4e49<\/li>\n<\/ul>\n<p># \u53d8\u91cf\u5b9a\u4e49<br \/>\n#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n# define variable for design<br \/>\nset       view_name     20260130<br \/>\nset       topDesign     adder<\/p>\n<p># \u8def\u5f84\u548c\u6587\u4ef6\u5b9a\u4e49<br \/>\nset       PROJECT       np2h0011<br \/>\nset       NETLIST_DIR    ..\/netlist<br \/>\nset       COMMON_DIR     ..\/script<br \/>\nset       rptPath        ..\/report<\/p>\n<p># \u8f93\u51fa\u6587\u4ef6\u8def\u5f84\u5b9a\u4e49&#xff08;\u76ee\u5f55\u5b9a\u4e49&#xff09;<br \/>\n# \u4f7f\u7528format\u547d\u4ee4\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\u751f\u6210\u6587\u4ef6\u540d<\/p>\n<p>set       chkfile       [format &#034;%s%s%s&#034;  &#034;..\/report\/&#034;  $PROJECT &#034;_syn_${view_name}.check&#034;]<br \/>\n# \u751f\u6210\u683c\u5f0f&#xff1a;..\/report\/np2h0011_syn_1226.check<br \/>\n# \u4f5c\u7528&#xff1a;\u7efc\u5408\u540e\u8bbe\u8ba1\u68c0\u67e5\u6587\u4ef6<\/p>\n<p>set       rptfile       [format &#034;%s%s%s&#034;  &#034;..\/report\/&#034;  $PROJECT &#034;_syn_${view_name}.rpt&#034;]<br \/>\n# \u7efc\u5408\u7ed3\u679c\u62a5\u544a\u6587\u4ef6<\/p>\n<p>set       scrfile       [format &#034;%s%s%s&#034;  &#034;..\/report\/&#034;  $PROJECT &#034;_syn_${view_name}.scr&#034;]<br \/>\n# \u811a\u672c\u8bb0\u5f55\u6587\u4ef6&#xff0c;\u53ef\u80fd\u5305\u542b\u7efc\u5408\u8fc7\u7a0b\u4e2d\u7684\u547d\u4ee4<\/p>\n<p>set       vgfile        [format &#034;%s%s%s&#034;  &#034;..\/netlist\/&#034; $PROJECT &#034;_syn_${view_name}.vg&#034;]<br \/>\n# \u8f93\u51fa\u95e8\u7ea7\u7f51\u8868\u6587\u4ef6&#xff08;.vg\u901a\u5e38\u8868\u793aVerilog gate-level\u7f51\u8868&#xff09;<\/p>\n<ul>\n<li>2. \u8bbe\u7f6e<\/li>\n<\/ul>\n<p># \u5e93\u6587\u4ef6\u8bbe\u7f6e<br \/>\nsource    $COMMON_DIR\/setupLib.tcl<\/p>\n<p># SVF\u6587\u4ef6\u8bbe\u7f6e<br \/>\nset_svf ..\/..\/fm\/svf\/syn_${view_name}.svf<\/p>\n<p>SVF\u6587\u4ef6\u8bb0\u5f55\u7efc\u5408\u8fc7\u7a0b\u4e2d\u7684\u6240\u6709\u8bbe\u8ba1\u53d8\u6362&#xff0c;\u7528\u4e8e\u5f62\u5f0f\u9a8c\u8bc1\u5de5\u5177&#xff08;\u5982Formality&#xff09;\u9a8c\u8bc1RTL\u4e0e\u95e8\u7ea7\u7f51\u8868\u7684\u4e00\u81f4\u6027<\/p>\n<ul>\n<li>3. \u6d88\u606f\u6291\u5236<\/li>\n<\/ul>\n<p>suppress_message VER-130<br \/>\nsuppress_message VER-936<br \/>\nsuppress_message [list UID-401]<\/p>\n<ul>\n<li>\n<p>\u4f5c\u7528&#xff1a; \u6291\u5236\u7279\u5b9a\u8b66\u544a\/\u4fe1\u606f<\/p>\n<\/li>\n<li>\n<p>\u5e38\u7528\u6d88\u606f\u4ee3\u7801&#xff1a;<\/p>\n<ul>\n<li>VER-130&#xff1a;\u672a\u4f7f\u7528\u7684\u7aef\u53e3\/\u4fe1\u53f7<\/li>\n<li>VER-936&#xff1a;\u5e38\u91cf\u8fde\u63a5\u4f18\u5316<\/li>\n<li>UID-401&#xff1a;\u8bbe\u8ba1\u4fdd\u5b58\u76f8\u5173\u4fe1\u606f<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>4. \u4f18\u5316\u64cd\u4f5c<\/p>\n<\/li>\n<\/ul>\n<p># \u8bbe\u7f6e\u53d8\u91cf&#xff0c;\u5728\u8bfb\u53d6\u8bbe\u8ba1\u65f6\u81ea\u52a8\u4fdd\u5b58\u8bbe\u8ba1\u6a21\u677f<br \/>\nset hdlin_auto_save_templates true<\/p>\n<p># sh\u547d\u4ee4&#xff1a;\u6267\u884cshell\u547d\u4ee4<br \/>\n# \u5220\u9664work\u76ee\u5f55\u4e0b\u7684\u6240\u6709\u6587\u4ef6&#xff0c;\u786e\u4fdd\u5e72\u51c0\u7684\u7f16\u8bd1\u73af\u5883<br \/>\nsh rm -rf .\/work\/*<\/p>\n<p># \u5b9a\u4e49\u4e00\u4e2a\u540d\u4e3a&#034;work&#034;\u7684\u8bbe\u8ba1\u5e93&#xff0c;\u8def\u5f84\u4e3a\u5f53\u524d\u76ee\u5f55\u4e0b\u7684work\u6587\u4ef6\u5939<br \/>\ndefine_design_lib work -path work<\/p>\n<ul>\n<li>5. \u8bfb\u53d6\u8bbe\u8ba1\u6587\u4ef6<\/li>\n<\/ul>\n<p>analyze -library work -define { SYNTHESIS} -vcs { \\\\<br \/>\n       &#043;incdir&#043;..\/.. \\\\<br \/>\n       &#043;incdir&#043;..\/..\/rtl \\\\<br \/>\n       } -format sverilog $COMMON_DIR\/np2h0011_filelist.f<\/p>\n<p>elaborate $topDesign<br \/>\n# \u4eceRTL\u751f\u6210GTECH&#xff08;\u901a\u7528\u6280\u672f&#xff09;\u7f51\u8868<\/p>\n<p>link<br \/>\n# \u89e3\u6790\u8bbe\u8ba1\u4e2d\u7684\u6240\u6709\u6a21\u5757\u3001\u5e93\u5f15\u7528<\/p>\n<p>\u5173\u952e\u53c2\u6570\u542b\u4e49&#xff1a;<\/p>\n<ul>\n<li>\n<p>analyze&#xff1a;\u5206\u6790\u8bbe\u8ba1\u6587\u4ef6&#xff0c;\u5efa\u7acb\u4e2d\u95f4\u8868\u793a<\/p>\n<\/li>\n<li>\n<p>-library work&#xff1a;\u5c06\u5206\u6790\u7ed3\u679c\u5b58\u5165work\u5e93<\/p>\n<\/li>\n<li>\n<p>-define { SYNTHESIS}&#xff1a;\u5b9a\u4e49SYNTHESIS\u5b8f&#xff0c;\u53ef\u7528\u4e8eRTL\u4e2d\u7684\u6761\u4ef6\u7f16\u8bd1<\/p>\n<\/li>\n<li>\n<p>-vcs&#xff1a;\u6307\u5b9aVCS\u98ce\u683c\u9009\u9879<\/p>\n<\/li>\n<li>\n<p>-format sverilog&#xff1a;\u6307\u5b9aSystemVerilog\u683c\u5f0f<\/p>\n<\/li>\n<li>\n<p>$COMMON_DIR\/np2h0011_filelist.f&#xff1a;\u6587\u4ef6\u5217\u8868\u6587\u4ef6&#xff0c;\u5305\u542b\u6240\u6709RTL\u6587\u4ef6\u8def\u5f84<\/p>\n<\/li>\n<li>\n<p>6. \u8bbe\u8ba1\u68c0\u67e5\u548c\u552f\u4e00\u5316<\/p>\n<\/li>\n<\/ul>\n<p>current_design $topDesign<br \/>\nuniquify<br \/>\ncheck_design &gt; ..\/report\/check_design_${view_name}.rpt<\/p>\n<ul>\n<li>current_design&#xff1a;\u8bbe\u7f6e\u5f53\u524d\u64cd\u4f5c\u7684\u8bbe\u8ba1<\/li>\n<li>uniquify&#xff1a;\u4e3a\u6bcf\u4e2a\u5b9e\u4f8b\u521b\u5efa\u552f\u4e00\u526f\u672c&#xff0c;\u89e3\u51b3\u91cd\u590d\u5b9e\u4f8b\u95ee\u9898<\/li>\n<li>check_design&#xff1a;\u68c0\u67e5\u8bbe\u8ba1\u57fa\u672c\u95ee\u9898<\/li>\n<\/ul>\n<hr \/>\n<ul>\n<li>7. \u7ea6\u675f\u52a0\u8f7d<\/li>\n<\/ul>\n<p>\u7b80\u7565\u7248&#xff1a;<\/p>\n<p>source   -v -e    $COMMON_DIR\/adder.sdc<\/p>\n<p>.sdc\u6587\u4ef6\u76f4\u63a5\u5305\u542b\u4e86\u7aef\u53e3\u3001\u65f6\u949f\u7b49\u7ea6\u675f<\/p>\n<p>\u8be6\u7ec6\u7248\u672c&#xff1a;<\/p>\n<p># -v: \u8be6\u7ec6\u6a21\u5f0f&#xff0c;\u663e\u793a\u6267\u884c\u7684\u547d\u4ee4<br \/>\n# -e: \u51fa\u9519\u65f6\u7ee7\u7eed\u6267\u884c<br \/>\nsource   -v -e   $COMMON_DIR\/set_dont_touch.tcl<br \/>\nsource   -v -e   $COMMON_DIR\/clkCnst.tcl<br \/>\nsource   -v -e    $COMMON_DIR\/groupPath.tcl<br \/>\nsource   -v -e    $COMMON_DIR\/ioCnst.tcl<br \/>\nsource   -v -e    $COMMON_DIR\/timeExcpt.tcl<br \/>\nsource   -v -e    $COMMON_DIR\/drcCnst.tcl<\/p>\n<ul>\n<li>set_dont_touch.tcl&#xff1a;\u8bbe\u7f6e\u4e0d\u4f18\u5316\u7684\u6a21\u5757\/\u5b9e\u4f8b<\/li>\n<li>clkCnst.tcl&#xff1a;\u65f6\u949f\u7ea6\u675f&#xff08;\u9891\u7387\u3001\u4e0d\u786e\u5b9a\u6027\u3001\u5ef6\u65f6\u7b49&#xff09;<\/li>\n<li>groupPath.tcl&#xff1a;\u8def\u5f84\u5206\u7ec4\u7ea6\u675f<\/li>\n<li>ioCnst.tcl&#xff1a;\u8f93\u5165\u8f93\u51fa\u5ef6\u65f6\u7ea6\u675f<\/li>\n<li>timeExcpt.tcl&#xff1a;\u65f6\u5e8f\u4f8b\u5916&#xff08;\u591a\u5468\u671f\u8def\u5f84\u3001\u865a\u5047\u8def\u5f84\u7b49&#xff09;<\/li>\n<li>drcCnst.tcl&#xff1a;\u8bbe\u8ba1\u89c4\u5219\u7ea6\u675f&#xff08;\u6700\u5927\u7535\u5bb9\u3001\u8f6c\u6362\u65f6\u95f4\u7b49&#xff09;<\/li>\n<\/ul>\n<hr \/>\n<ul>\n<li>8. \u89c4\u5219\u8bbe\u7f6e<\/li>\n<\/ul>\n<p># \u8bbe\u7f6e\u547d\u540d\u89c4\u5219<br \/>\nsource   -v -e   $COMMON_DIR\/nameRule.tcl<\/p>\n<p># \u7f16\u8bd1\u4f18\u5316\u9009\u9879<br \/>\nsource   -v -e    $COMMON_DIR\/compileOpt.tcl<\/p>\n<p># \u68c0\u67e5\u65f6\u5e8f\u7ea6\u675f\u7684\u5b8c\u6574\u6027\u548c\u4e00\u81f4\u6027<br \/>\ncheck_timing &gt; ..\/report\/check_timing_${view_name}.txt<\/p>\n<p>set compile_enable_register_merging false<br \/>\n# \u7981\u7528\u5bc4\u5b58\u5668\u5408\u5e76\u4f18\u5316<br \/>\n# \u9632\u6b62\u5de5\u5177\u5408\u5e76\u529f\u80fd\u76f8\u540c\u7684\u5bc4\u5b58\u5668&#xff0c;\u4fdd\u6301\u8bbe\u8ba1\u7ed3\u6784<\/p>\n<p>set_fix_multiple_port_nets -feedthroughs -buffer -all<br \/>\n# \u4fee\u590d\u591a\u7aef\u53e3\u7f51\u7edc\u95ee\u9898<br \/>\n# -feedthroughs: \u4fee\u590d\u76f4\u901a\u8def\u5f84<br \/>\n# -buffer: \u63d2\u5165\u7f13\u51b2\u5668<br \/>\n# -all: \u4fee\u590d\u6240\u6709\u591a\u7aef\u53e3\u7f51\u7edc<\/p>\n<ul>\n<li>9. \u7f16\u8bd1\u4f18\u5316<\/li>\n<\/ul>\n<p># \u91cd\u65b0\u8bbe\u7f6e\u5f53\u524d\u8bbe\u8ba1&#xff0c;\u786e\u4fdd\u64cd\u4f5c\u6b63\u786e\u7684\u8bbe\u8ba1<br \/>\ncurrent_design $topDesign<\/p>\n<p>compile_ultra -no_autoungroup -no_seq_output_inversion \\\\<br \/>\n              -no_boundary_optimization -gate_clock \\\\<br \/>\n              -no_design_rule<\/p>\n<ul>\n<li>-no_autoungroup&#xff1a;\u7981\u7528\u81ea\u52a8\u53d6\u6d88\u5c42\u6b21\u7ed3\u6784<\/li>\n<li>-gate_clock&#xff1a;\u542f\u7528\u65f6\u949f\u95e8\u63a7\u4f18\u5316<\/li>\n<li>-no_design_rule&#xff1a;\u4e0d\u4fee\u590d\u8bbe\u8ba1\u89c4\u5219\u8fdd\u89c4<\/li>\n<li>-no_seq_output_inversion&#xff1a;\u7981\u6b62\u89e6\u53d1\u5668\u8f93\u51fa\u53cd\u76f8<\/li>\n<li>-no_boundary_optimization&#xff1a;\u7981\u6b62\u8fb9\u754c\u4f18\u5316<\/li>\n<\/ul>\n<hr \/>\n<ul>\n<li>10. \u8f93\u51fa\u548c\u62a5\u544a<\/li>\n<\/ul>\n<p>#write -f verilog -h -o ..\/netlist\/$PROJECT.h.v<\/p>\n<p>write  -h -output ..\/db\/compile_ultra.ddc<br \/>\n# \u4fdd\u5b58\u8bbe\u8ba1\u6570\u636e\u5e93<br \/>\n# -h: \u4fdd\u6301\u5c42\u6b21\u7ed3\u6784<\/p>\n<p>write -format verilog -hier -out ..\/mapped\/design_net.v<br \/>\n# \u8f93\u51faVerilog\u95e8\u7ea7\u7f51\u8868(\u7efc\u5408\u540e)<br \/>\n# write\u547d\u4ee4&#xff1a;\u5c06\u5f53\u524d\u8bbe\u8ba1\u4ee5\u6307\u5b9a\u683c\u5f0f\u4fdd\u5b58\u5230\u6587\u4ef6\u4e2d<\/p>\n<p>source    $COMMON_DIR\/nameRule.tcl<br \/>\n# \u91cd\u65b0\u52a0\u8f7d\u547d\u540d\u89c4\u5219&#xff0c;\u786e\u4fdd\u8f93\u51fa\u6587\u4ef6\u547d\u540d\u6b63\u786e<\/p>\n<p>source    $COMMON_DIR\/rpt.tcl<br \/>\n# \u751f\u6210\u5404\u79cd\u62a5\u544a&#xff0c;\u901a\u5e38\u5305\u62ec&#xff1a;<br \/>\n# report_timing -nosplit<br \/>\n# report_area -nosplit<br \/>\n# report_power -nosplit<br \/>\n# report_constraint -nospli<\/p>\n<p>set_svf off<br \/>\n# \u505c\u6b62\u8bb0\u5f55SVF\u6587\u4ef6<br \/>\n# \u907f\u514d\u5f71\u54cd\u540e\u7eed\u64cd\u4f5c<\/p>\n<p>exit<br \/>\n# \u9000\u51faDesign Compiler<\/p>\n<ul>\n<li>\u8f93\u51fa\u6587\u4ef6&#xff1a;\n<ul>\n<li>DDC\u6587\u4ef6&#xff1a;\u4e8c\u8fdb\u5236\u683c\u5f0f&#xff0c;\u5305\u542b\u5b8c\u6574\u8bbe\u8ba1\u4fe1\u606f<\/li>\n<li>\u5404\u79cd\u62a5\u544a&#xff1a;\u65f6\u5e8f\u3001\u9762\u79ef\u3001\u529f\u8017\u3001\u8fdd\u4f8b\u7b49<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>DC\u4e2dwrite\u547d\u4ee4\u901a\u7528\u8bed\u6cd5&#xff1a;<\/p>\n<p><span class=\"token function\">write<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span>-format<span class=\"token operator\">|<\/span>-f<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span>format<span class=\"token operator\">&gt;<\/span>         <span class=\"token comment\"># \u8f93\u51fa\u683c\u5f0f<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span>-hierarchy<span class=\"token operator\">|<\/span>-hier<span class=\"token operator\">|<\/span>-h<span class=\"token punctuation\">]<\/span>         <span class=\"token comment\"># \u4fdd\u6301\u5c42\u6b21\u7ed3\u6784<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span>-output<span class=\"token operator\">|<\/span>-o<span class=\"token operator\">|<\/span>-out<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span>filename<span class=\"token operator\">&gt;<\/span>  <span class=\"token comment\"># \u8f93\u51fa\u6587\u4ef6<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span>\u5176\u4ed6\u9009\u9879<span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\"># \u4e0d\u6307\u5b9a-format\u65f6&#xff0c;\u6839\u636e\u6587\u4ef6\u6269\u5c55\u540d\u81ea\u52a8\u5224\u65ad  <\/span><\/p>\n<h4>2.3 setupLib.tcl \u6587\u4ef6\u8be6\u89e3<\/h4>\n<p># STDCELL_LIBDIR&#xff1a;\u6807\u51c6\u5355\u5143\u5e93\u76ee\u5f55&#xff0c;\u5305\u542b\u903b\u8f91\u95e8\u3001\u89e6\u53d1\u5668\u7b49\u7684\u65f6\u5e8f\u5e93<br \/>\nset STDCELL_LIBDIR ..\/lib\/arm_7t_rvt\/db<\/p>\n<p># \u5c06\u5e93\u6587\u4ef6\u6dfb\u52a0\u5230DC\u7684\u641c\u7d22\u8def\u5f84<br \/>\nset search_path  [list $STDCELL_LIBDIR ]<\/p>\n<p># \u8bbe\u7f6eDesignWare\u5e93\u8def\u5f84&#xff08;DesignWare\u5e93&#xff1a;Synopsys\u63d0\u4f9b\u7684\u53ef\u7efc\u5408IP\u5e93&#xff09;<br \/>\nset synthetic_library dw_foundation.sldb<br \/>\n#\/* define db  ( fst or tpl  or slw ) *\/<br \/>\n#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p># \u6807\u51c6\u5355\u5143\u5e93\u914d\u7f6e&#xff08;\u4e09\u4e2a\u5de5\u827a\u89d2&#xff09;<br \/>\n# \u5feb\u901f&#xff08;FF&#xff09;\u5de5\u827a\u89d2\u2014\u2014\u5ef6\u8fdf\u6700\u5c0f&#xff0c;\u7528\u4e8e\u4fdd\u6301\u65f6\u95f4(hold)\u5206\u6790<br \/>\nset STDCELL_LIBRARY_FAST [format &#034;%s%s&#034;  $STDCELL_LIBDIR \/sc7_logic018ll_base_rvt_ff_typ_min_1p98v_m40c.db]<br \/>\n# set STDCELL_LIBNAME_FAST ff_typ_min_1p98v_m40c<br \/>\nset STDCELL_LIBNAME_FAST sc7_logic018ll_base_rvt_ff_typ_min_1p98v_m40c<\/p>\n<p># \u5178\u578b(TT)\u5de5\u827a\u89d2<br \/>\nset STDCELL_LIBRARY_TYPICAL [format &#034;%s%s&#034;  $STDCELL_LIBDIR \/sc7_logic018ll_base_rvt_tt_typ_max_1p80v_25c.db]<br \/>\nset STDCELL_LIBNAME_TYPICAL sc7_logic018ll_base_rvt_tt_typ_max_1p80v_25c<br \/>\n# tt&#xff1a;typical-typical&#xff0c;\u5178\u578b\u5de5\u827a\u89d2<br \/>\n# 1p80v&#xff1a;1.80V\u7535\u538b<br \/>\n# 25c&#xff1a;25\u00b0C\u6e29\u5ea6<br \/>\n# typ_max&#xff1a;\u6700\u5927\u5178\u578b\u503c<\/p>\n<p># \u6162\u901f(SS)\u5de5\u827a\u89d2\u2014\u2014\u5ef6\u8fdf\u6700\u5927&#xff0c;\u7528\u4e8e\u5efa\u7acb\u65f6\u95f4(setup)\u5206\u6790<br \/>\nset STDCELL_LIBRARY_SLOW [format &#034;%s%s&#034;  $STDCELL_LIBDIR \/sc7_logic018ll_base_rvt_ss_typ_max_1p62v_125c.db]<br \/>\n# set STDCELL_LIBNAME_SLOW ss_typ_max_1p62v_125c<br \/>\nset STDCELL_LIBNAME_SLOW sc7_logic018ll_base_rvt_ss_typ_max_1p62v_125c<br \/>\n# ss&#xff1a;slow-slow&#xff0c;\u6700\u6162\u5de5\u827a\u89d2<br \/>\n# 1p62v&#xff1a;1.62V\u7535\u538b<br \/>\n# 125c&#xff1a;125\u00b0C\u6e29\u5ea6<br \/>\n# typ_max&#xff1a;\u6700\u5927\u5178\u578b\u503c<\/p>\n<p># \u9009\u62e9\u5f53\u524d\u4f7f\u7528\u7684\u5de5\u827a\u89d2&#xff08;\u6162\u901f\u89d2\u2014\u2014\u8bbe\u8ba1\u5c06\u5728\u6700\u574f\u6761\u4ef6\u4e0b\u8fdb\u884c\u7efc\u5408&#xff09;<br \/>\nset STDCELL_LIBRARY $STDCELL_LIBRARY_SLOW<br \/>\nset STDCELL_LIBNAME $STDCELL_LIBNAME_SLOW<\/p>\n<p># \u76ee\u6807\u5e93\u8bbe\u7f6e   [list &#8230;]\u521b\u5efa\u5217\u8868&#xff0c;\u53ef\u5305\u542b\u591a\u4e2a\u5e93<br \/>\nset target_library  [list $STDCELL_LIBRARY ]<\/p>\n<p># set link library \u94fe\u63a5\u5e93\u8bbe\u7f6e<br \/>\nset link_library [list &#034;*&#034; $target_library ]<\/p>\n<p># *&#xff1a;\u5df2\u52a0\u8f7d\u5230\u5185\u5b58\u4e2d\u7684\u8bbe\u8ba1<br \/>\n# $target_library&#xff1a;\u76ee\u6807\u5e93&#xff08;\u6162\u901f\u6807\u51c6\u5355\u5143\u5e93&#xff09;<br \/>\n# $synthetic_library&#xff1a;DesignWare\u5e93<br \/>\n# $EFUSE_LIBRARY&#xff1a;EFUSE\u5e93<\/p>\n<p># \u6700\u5c0f\u5e93\u8bbe\u7f6e<br \/>\nset_min_library $STDCELL_LIBRARY_SLOW -min_version $STDCELL_LIBRARY_FAST<\/p>\n<p># \u4e3b\u5e93&#xff1a;$STDCELL_LIBRARY_SLOW&#xff08;\u6162\u901f\u5e93&#xff0c;\u7528\u4e8e\u6700\u5927\u5ef6\u8fdf&#xff09;<br \/>\n# \u6700\u5c0f\u5e93&#xff1a;$STDCELL_LIBRARY_FAST&#xff08;\u5feb\u901f\u5e93&#xff0c;\u7528\u4e8e\u6700\u5c0f\u5ef6\u8fdf&#xff09;<\/p>\n<p># \u5efa\u7acb\u65f6\u95f4\u5206\u6790\u7528\u6162\u901f\u5e93&#xff08;\u6700\u5927\u5ef6\u8fdf&#xff09;<br \/>\n# \u4fdd\u6301\u65f6\u95f4\u5206\u6790\u7528\u5feb\u901f\u5e93&#xff08;\u6700\u5c0f\u5ef6\u8fdf&#xff09;<\/p>\n<p>#set_dont_use [find cell [format &#034;%s%s&#034;   $STDCELL_LIBNAME  &#034;\/*&#034;   ]]<\/p>\n<h4>2.4 np2h0011_filelist.f \u6587\u4ef6<\/h4>\n<p>&#096;include &#034;rtl\/adder.v&#034;<\/p>\n<p>\u6b64\u6587\u4ef6\u5305\u542b\u8981\u88ab\u7efc\u5408\u7684\u6240\u6709RTL\u4ee3\u7801\u6587\u4ef6\u8def\u5f84\u3002<\/p>\n<h4>2.5 adder.sdc \u6587\u4ef6<\/h4>\n<p># adder.sdc<\/p>\n<p># 1. clock: 2ns (500MHz)<br \/>\ncreate_clock -name CLK -period 2.0 [get_ports clk]<\/p>\n<p># 2. clock_uncertainty<br \/>\nset_clock_uncertainty 0.1 [get_clocks CLK]<\/p>\n<p># 3. in\/out<br \/>\nset_input_delay  0.8 -clock CLK [all_inputs]<br \/>\nset_output_delay 0.8 -clock CLK [all_outputs]<\/p>\n<p># 4. design rule<br \/>\nset_max_fanout 8 [current_design]<br \/>\nset_max_transition 0.2 [current_design]<\/p>\n<p># 5. env<br \/>\nset_load 0.05 [all_outputs]<\/p>\n<p>\u5305\u542b\u4e00\u4e9b\u7b80\u5355\u7ea6\u675f&#xff0c;\u7528\u4e8e\u7efc\u5408\u6d4b\u8bd5<\/p>\n<h4>2.6 rpt.tcl \u6587\u4ef6\u8be6\u89e3<\/h4>\n<p># \u5b9a\u4e49\u6587\u4ef6\u5939\u8def\u5f84<br \/>\nset summary_dir   &#034;$rptPath\/summary&#034;<br \/>\nset analysis_dir  &#034;$rptPath\/analysis&#034;<br \/>\nset debug_dir     &#034;$rptPath\/debug&#034;<br \/>\nset config_dir    &#034;$rptPath\/config&#034;<\/p>\n<p># \u521b\u5efa\u6587\u4ef6\u5939<br \/>\nfile mkdir $summary_dir<br \/>\nfile mkdir $analysis_dir<br \/>\nfile mkdir $debug_dir<br \/>\nfile mkdir $config_dir<\/p>\n<p># Summary_dir &#xff08;\u5fc5\u8bfb\u62a5\u544a&#xff09;<br \/>\n# \u7efc\u5408\u7ed3\u679c\u6458\u8981<br \/>\ncheck_design -multiple_designs   &gt; $summary_dir\/check_design_${view_name}.rpt<\/p>\n<p># \u65f6\u5e8f\u68c0\u67e5\u62a5\u544a&#xff08;\u672a\u7ea6\u675f\u8def\u5f84\u7b49\u65f6\u5e8f\u95ee\u9898&#xff09;<br \/>\ncheck_timing                     &gt; $summary_dir\/check_timing_${view_name}.rpt<\/p>\n<p># \u8bbe\u8ba1\u8d28\u91cf\u62a5\u544a&#xff08;\u65f6\u5e8f\u3001\u9762\u79ef\u3001\u529f\u8017\u603b\u7ed3&#xff09;<br \/>\nreport_qor                       &gt; $summary_dir\/qor_${view_name}.rpt<\/p>\n<p># \u7ea6\u675f\u8fdd\u4f8b\u62a5\u544a&#xff08;\u6240\u6709\u8fdd\u4f8b\u7684\u7b80\u6d01\u5217\u8868&#xff09;<br \/>\nreport_constraint -all_violators -nosplit \\\\<br \/>\n -max_delay \\\\<br \/>\n -multiport_net \\\\<br \/>\n -max_fanout \\\\<br \/>\n -max_capacitance \\\\<br \/>\n                                 &gt; $summary_dir\/constraint_${view_name}.rpt<\/p>\n<p># \u65f6\u5e8f\u8fdd\u4f8b\u8be6\u60c5\u62a5\u544a&#xff08;\u8d1fslack\u8def\u5f84\u7684\u8be6\u7ec6\u4fe1\u606f&#xff09;<br \/>\nreport_timing \\\\<br \/>\n     -attribute \\\\<br \/>\n     -capacitance \\\\<br \/>\n     -delay max \\\\<br \/>\n     -enable_preset_clear_arcs \\\\<br \/>\n     -input_pins \\\\<br \/>\n     -slack_lesser_than 0 \\\\<br \/>\n     -max_paths 5 \\\\<br \/>\n     -nets \\\\<br \/>\n     -nworst 2\\\\<br \/>\n     -path full_clock \\\\<br \/>\n     -transition &gt; $summary_dir\/timing_violate_${view_name}.rpt <\/p>\n<p># analysis_dir&#xff08;\u6df1\u5ea6\u5206\u6790\u76ee\u5f55&#xff09;<br \/>\n# \u5efa\u7acb\u65f6\u95f4\u65f6\u5e8f\u62a5\u544a&#xff08;\u5206\u6790\u6700\u5dee\u65f6\u5e8f\u8def\u5f84&#xff09;<br \/>\nreport_timing -delay max -max_paths 100 -nosplit -path full_clock_expanded -nets -transition_time -input_pins \\\\<br \/>\n                                 &gt; $analysis_dir\/timing_max_${view_name}.rpt<\/p>\n<p># \u9762\u79ef\u62a5\u544a&#xff08;\u5206\u6790\u9762\u79ef\u5206\u5e03\u548c\u4f18\u5316&#xff09;<br \/>\nreport_area -hierarchy -physical -designware &gt; $analysis_dir\/area_${view_name}.rpt<\/p>\n<p># \u529f\u8017\u62a5\u544a<br \/>\nreport_power -nosplit            &gt; $analysis_dir\/power_${view_name}.rpt<\/p>\n<p># \u8be6\u7ec6\u8fdd\u4f8b\u62a5\u544a<br \/>\nreport_constraint -all_violators -verbose \\\\<br \/>\n -max_delay \\\\<br \/>\n -multiport_net \\\\<br \/>\n -max_fanout \\\\<br \/>\n -max_capacitance \\\\<br \/>\n                                 &gt; $analysis_dir\/constraint_${view_name}.rpt<\/p>\n<p># \u96f6\u4e92\u8fde\u5ef6\u8fdf\u5206\u6790&#xff08;\u8bc4\u4f30\u903b\u8f91\u7ed3\u6784\u6027\u80fd&#xff09;<br \/>\nset_zero_interconnect_delay_mode true<br \/>\nreport_timing -delay max -path full_clock_expanded -max_paths 10 -nets -transition_time -input_pins -nosplit \\\\<br \/>\n                                 &gt; $analysis_dir\/zero_interconnect_timing_${view_name}.rpt<\/p>\n<p>report_qor                       &gt; $analysis_dir\/zero_interconnect_qor_${view_name}.rpt<br \/>\nset_zero_interconnect_delay_mode false<\/p>\n<p># dubug_dir&#xff08;\u7279\u5b9a\u95ee\u9898\u5206\u6790\u76ee\u5f55&#xff09;<br \/>\n# \u9ad8\u6247\u51fa\u7f51\u7edc<br \/>\nreport_net_fanout -threshold 32 &gt; $debug_dir\/high_fanout_nets_${view_name}.rpt<\/p>\n<p># \u65f6\u949f\u95e8\u63a7\u62a5\u544a<br \/>\nreport_clock_gating -multi_stage -verbose -gated -ungated \\\\<br \/>\n                                 &gt; $debug_dir\/clock_gating_${view_name}.rpt<\/p>\n<p># \u9501\u5b58\u5668\u62a5\u544a<br \/>\nquery_objects -truncate 0 [all_registers -level_sensitive ] \\\\<br \/>\n                                 &gt; $debug_dir\/latches_${view_name}.rpt<\/p>\n<p># \u65f6\u949f\u6811\u62a5\u544a<br \/>\nreport_clock_tree -summary -settings -structure \\\\<br \/>\n                                 &gt; $debug_dir\/clock_tree_${view_name}.rpt<\/p>\n<p>report_port -verbose -nosplit    &gt; $debug_dir\/port_${view_name}.rpt<\/p>\n<p># \u5c42\u6b21\u7ed3\u6784\u62a5\u544a<br \/>\nreport_hierarchy                 &gt; $debug_dir\/hierarchy_${view_name}.rpt<\/p>\n<p># \u8d44\u6e90\u4f7f\u7528\u62a5\u544a<br \/>\nreport_resources -hierarchy      &gt; $debug_dir\/resources_${view_name}.rpt<\/p>\n<p># config_dir&#xff08;\u914d\u7f6e\u4fe1\u606f&#xff09;<br \/>\n# \u8bbe\u8ba1\u4fe1\u606f\u62a5\u544a<br \/>\nreport_design                    &gt; $config_dir\/design_${view_name}.rpt<\/p>\n<p># \u65f6\u949f\u62a5\u544a<br \/>\nreport_clocks -attributes -skew  &gt; $config_dir\/clocks_${view_name}.rpt<\/p>\n<p># \u7f16\u8bd1\u9009\u9879\u62a5\u544a<br \/>\nreport_compile_options           &gt; $config_dir\/compile_options_${view_name}.rpt<\/p>\n<p># \u9694\u79bb\u7aef\u53e3\u62a5\u544a<br \/>\nreport_isolate_ports -nosplit    &gt; $config_dir\/isolate_ports_${view_name}.rpt<\/p>\n<p># Write Verilog<br \/>\n# &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n# \u547d\u540d\u89c4\u5219\u4fee\u6539<br \/>\ncurrent_design $topDesign<\/p>\n<p>change_name -rule verilog -h<br \/>\ndefine_name_rule gcore -restrict &#034;\\\\\\\\\\\\[\\\\]&#034;<br \/>\ndefine_name_rule gcore -remove_internal_net_bus<br \/>\nreport_name_rule gcore<br \/>\nchange_name -rule gcore  -h <\/p>\n<p># \u6587\u4ef6\u540c\u6b65&#xff08;\u786e\u4fdd\u6587\u4ef6\u7cfb\u7edf\u5199\u5165\u5b8c\u6210&#xff09;<br \/>\nsh sync<\/p>\n<p># DDC\u8f93\u51fa&#xff08;\u5e94\u7528\u547d\u540d\u89c4\u5219\u540e&#xff09;<br \/>\nwrite -f ddc -h -output ..\/db\/changename_${view_name}.ddc<\/p>\n<p># Verilog\u95e8\u7ea7\u7f51\u8868<br \/>\nwrite     -f verilog -h -output ..\/netlist\/${topDesign}_syn.vg<\/p>\n<p># SDC\u7ea6\u675f\u6587\u4ef6<br \/>\nwrite_sdc -nosplit -version 1.9 ..\/netlist\/${topDesign}.sdc<\/p>\n<p># \u6700\u7ec8DDC\u6587\u4ef6<br \/>\nwrite -h -f ddc -o ..\/db\/${topDesign}_${view_name}.ddc<\/p>\n<p>set_svf -off<\/p>\n<p>\u811a\u672c\u4e2d\u672a\u5b9a\u4e49topDesign\u3001view_name\u3001rptPath\u7b49\u53d8\u91cf&#xff0c;\u662f\u56e0\u4e3a\u8fd9\u4e9b\u53d8\u91cf\u6765\u81ea\u4e3b\u7efc\u5408\u811a\u672c&#xff0c;\u901a\u8fc7source\u547d\u4ee4\u52a0\u8f7d\u65f6&#xff0c;rpt.tcl\u7ee7\u627f\u4e3b\u811a\u672c\u7684\u53d8\u91cf\u4f5c\u7528\u57df\u3002<\/p>\n<h4>2.7 clean.sh\u6587\u4ef6<\/h4>\n<p><span class=\"token function\">rm<\/span> db\/* -rf<br \/>\n<span class=\"token function\">rm<\/span> log\/* -rf<br \/>\n<span class=\"token function\">rm<\/span> netlist\/* -rf<br \/>\n<span class=\"token function\">rm<\/span> report\/* -rf<br \/>\n<span class=\"token function\">rm<\/span> mapped\/* -rf<br \/>\n<span class=\"token function\">rm<\/span> <span class=\"token punctuation\">..<\/span>\/fm\/svf\/* -rf<\/p>\n<p>\u6bcf\u6b21\u7efc\u5408\u524d&#xff0c;\u9700\u8981\u8fd0\u884c\u6b64\u811a\u672c\u6e05\u9664\u4e0a\u4e00\u6b21\u7efc\u5408\u4ea7\u751f\u7684\u5404\u79cd\u6587\u4ef6&#xff0c;\u786e\u4fdd\u6b64\u6b21\u7efc\u5408\u73af\u5883\u5e72\u51c0\u3002<\/p>\n<p>\u6ce8\u610f&#xff1a; \u4e0d\u8981\u628ascript\u76ee\u5f55\u4e0b\u7684\u811a\u672c\u6587\u4ef6\u5168\u6e05\u7406\u4e86&#xff01;<\/p>\n<h4>2.8 DC\u8fd0\u884c\u6587\u4ef6&#xff08;run.sh&#xff09;<\/h4>\n<p>dc_shell -f <span class=\"token punctuation\">..<\/span>\/main\/np2h0011_syn.tcl <span class=\"token operator\">|<\/span><span class=\"token function\">tee<\/span> <span class=\"token punctuation\">..<\/span>\/log\/np2h0011_syn.log<\/p>\n<p>\u6b64\u6587\u4ef6\u653e\u7f6e\u5728work\u5de5\u4f5c\u76ee\u5f55\u4e0b&#xff0c;\u5728work\u4e0b\u76f4\u63a5\u8fd0\u884c\u6b64\u811a\u672c\u5373\u53ef(sh run.sh)<\/p>\n<ul>\n<li>dc_shell&#xff1a;\u542f\u52a8DC&#xff08;\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c&#xff09;\n<ul>\n<li>dc_shell -gui&#xff1a;\u56fe\u5f62\u754c\u9762\u6a21\u5f0f<\/li>\n<li>dc_shell-t&#xff1a;64\u4f4d\u7248\u672c<\/li>\n<\/ul>\n<\/li>\n<li>-f&#xff1a;\u6307\u5b9a\u811a\u672c\u6587\u4ef6\u9009\u9879<\/li>\n<li>..\/main\/np2h0011_syn.tcl&#xff1a;\u7efc\u5408\u811a\u672c\u6587\u4ef6\u8def\u5f84<\/li>\n<li>| &#xff1a;Linux\u7ba1\u9053\u7b26(\u91cd\u5b9a\u5411\u8f93\u51fa&#xff0c;\u5c06\u524d\u547d\u4ee4\u8f93\u51fa\u4f5c\u4e3a\u540e\u547d\u4ee4\u8f93\u5165)<\/li>\n<li>tee&#xff1a;tee\u547d\u4ee4&#xff08;\u65e0\u9009\u9879\u2014\u2014\u8986\u76d6\u6587\u4ef6&#xff09;\n<ul>\n<li>tee -a&#xff1a;\u8ffd\u52a0\u5230\u6587\u4ef6&#xff0c;\u800c\u975e\u8986\u76d6<\/li>\n<li>tee -i&#xff1a;\u5ffd\u7565\u4e2d\u65ad\u4fe1\u53f7<\/li>\n<\/ul>\n<\/li>\n<li>..\/log\/np2h0011_syn.log&#xff1a;\u65e5\u5fd7\u6587\u4ef6\u8def\u5f84<\/li>\n<\/ul>\n<h3>\u4e09\u3001\u8865\u5145<\/h3>\n<h4>3.1 adder\u4ee3\u7801\u6587\u4ef6<\/h4>\n<p>module adder <span class=\"token punctuation\">(<\/span><br \/>\n  input        clk,<br \/>\n  input        rst_n,<br \/>\n  input  <span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span>:0<span class=\"token punctuation\">]<\/span> a,<br \/>\n  input  <span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span>:0<span class=\"token punctuation\">]<\/span> b,<br \/>\n  output reg <span class=\"token punctuation\">[<\/span><span class=\"token number\">4<\/span>:0<span class=\"token punctuation\">]<\/span> <span class=\"token function\">sum<\/span><br \/>\n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>  always &#064;<span class=\"token punctuation\">(<\/span>posedge clk or negedge rst_n<span class=\"token punctuation\">)<\/span> begin<br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>rst_n<span class=\"token punctuation\">)<\/span> begin<br \/>\n      <span class=\"token function\">sum<\/span> <span class=\"token operator\">&lt;&#061;<\/span> <span class=\"token number\">5<\/span>&#039;b0<span class=\"token punctuation\">;<\/span><br \/>\n    end <span class=\"token keyword\">else<\/span> begin<br \/>\n      <span class=\"token function\">sum<\/span> <span class=\"token operator\">&lt;&#061;<\/span> a &#043; b<span class=\"token punctuation\">;<\/span><br \/>\n    end<br \/>\n  end<\/p>\n<p>endmodule<\/p>\n<h4>3.2 nameRule.tcl\u811a\u672c<\/h4>\n<p>define_name_rules asic_top_rules -reset<\/p>\n<p>        define_name_rules verilog <span class=\"token punctuation\">\\\\<\/span><br \/>\n                -allow <span class=\"token punctuation\">[<\/span>list a-z <span class=\"token number\">0<\/span>-9 _<span class=\"token punctuation\">]<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n                -first_restrict <span class=\"token punctuation\">[<\/span>list <span class=\"token number\">0<\/span>-9 _<span class=\"token punctuation\">]<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n                -type net<\/p>\n<p>        define_name_rules verilog <span class=\"token punctuation\">\\\\<\/span><br \/>\n                -reserved <span class=\"token punctuation\">[<\/span>list always and assign begin <span class=\"token punctuation\">\\\\<\/span><br \/>\n                buf bufif0 bufif1 <span class=\"token keyword\">case<\/span> casex casez cmos <span class=\"token punctuation\">\\\\<\/span><br \/>\n                deassign default defparam disable edge <span class=\"token punctuation\">\\\\<\/span><br \/>\n                <span class=\"token keyword\">else<\/span> end endattribute endcase endfunction <span class=\"token punctuation\">\\\\<\/span><br \/>\n                endmodule endprimitive endspecify endtable <span class=\"token punctuation\">\\\\<\/span><br \/>\n                endtask event <span class=\"token keyword\">for<\/span> force forever fork <span class=\"token keyword\">function<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n                highz0 highz1 <span class=\"token keyword\">if<\/span> initial inout input integer <span class=\"token punctuation\">\\\\<\/span><br \/>\n                <span class=\"token function\">join<\/span> large macromodule medium module nand <span class=\"token punctuation\">\\\\<\/span><br \/>\n                negedge nmos nor not notif0 notif1 or output <span class=\"token punctuation\">\\\\<\/span><br \/>\n                parameter pmos posedge primitive pull0 <span class=\"token punctuation\">\\\\<\/span><br \/>\n                pull1 pullup pulldown reg rcmos reg release <span class=\"token punctuation\">\\\\<\/span><br \/>\n                repeat rnmos rpmos rtran rtranif0 rtranif1 <span class=\"token punctuation\">\\\\<\/span><br \/>\n                scalared small specify specparam strength <span class=\"token punctuation\">\\\\<\/span><br \/>\n                strong0 strong1 supply0 supply1 table task <span class=\"token punctuation\">\\\\<\/span><br \/>\n                <span class=\"token function\">time<\/span> tran tranif0 tranif1 tri tri0 tri1 <span class=\"token punctuation\">\\\\<\/span><br \/>\n                trinand trior trireg use vectored <span class=\"token function\">wait<\/span> wand <span class=\"token punctuation\">\\\\<\/span><br \/>\n                weak0 weak1 <span class=\"token keyword\">while<\/span> wire wor xor xnor<span class=\"token punctuation\">]<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n                -target_bus_naming_style <span class=\"token punctuation\">{<\/span>%s<span class=\"token punctuation\">[<\/span>%d<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">#define_name_rules asic_top_rules -max_length 32 -type port<\/span><\/p>\n<p><span class=\"token comment\"># Define core naming rule<\/span><br \/>\n<span class=\"token comment\"># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><\/p>\n<p>define_name_rules asic_core_rules -reset<\/p>\n<p>define_name_rules asic_core_rules -max_length <span class=\"token number\">255<\/span><\/p>\n<p><span class=\"token comment\"># Change name<\/span><br \/>\n<span class=\"token comment\"># &#8212;&#8212;&#8212;&#8211;<\/span><\/p>\n<p>change_names -hierarchy -rules verilog<\/p>\n<p>change_names -hierarchy -rules asic_core_rules<\/p>\n<p>change_names -rules asic_top_rules<\/p>\n<p><span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><br \/>\n<span class=\"token comment\"># Set design write-out options<\/span><br \/>\n<span class=\"token comment\">#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><\/p>\n<p>        <span class=\"token builtin class-name\">set<\/span> verilogout_no_tri <span class=\"token boolean\">true<\/span><\/p>\n<h4>3.3 compileOpt.tcl\u811a\u672c<\/h4>\n<p><span class=\"token builtin class-name\">set<\/span> verilogout_show_unconnected_pins <span class=\"token string\">&#034;true&#034;<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span> verilogout_no_tri <span class=\"token string\">&#034;true&#034;<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span> verilogout_single_bit <span class=\"token string\">&#034;false&#034;<\/span><\/p>\n<p><span class=\"token comment\">#                    Compile Options                     <\/span><br \/>\n<span class=\"token comment\"># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/span><\/p>\n<p><span class=\"token comment\">#\/* we want to force it to use MUXes *\/<\/span><br \/>\n<span class=\"token comment\"># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/span><\/p>\n<p><span class=\"token comment\">#set hdlin_dont_infer_mux_for_resource_sharing &#034;false&#034;<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span>  hdlin_infer_mux <span class=\"token boolean\">false<\/span><\/p>\n<p><span class=\"token comment\">#               MISCELLANIOUS STUFF                     <\/span><br \/>\n<span class=\"token comment\"># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/span><\/p>\n<p><span class=\"token builtin class-name\">set<\/span> compile_no_new_cells_at_top_level <span class=\"token boolean\">true<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span> compile_instance_name_prefix <span class=\"token string\">&#034;u&#034;<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span> gen_max_ports_on_symbol_side <span class=\"token number\">0<\/span><br \/>\n<span class=\"token builtin class-name\">set<\/span> bus_naming_style <span class=\"token punctuation\">{<\/span>%s<span class=\"token punctuation\">[<\/span>%d<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">#when use negedge,add inverter on clock and use posedge dff<\/span><br \/>\n<span class=\"token comment\"># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/span><\/p>\n<p><span class=\"token builtin class-name\">set<\/span> compile_automatic_clock_phase_inference none<\/p>\n<p>current_design <span class=\"token variable\">$topDesign<\/span><\/p>\n<p><span class=\"token comment\">#<\/span><br \/>\nuniquify<\/p>\n<p><span class=\"token builtin class-name\">set<\/span> compile_seqmap_propagate_constants <span class=\"token boolean\">true<\/span><br \/>\n<span class=\"token comment\">#set_boundary_optimization [find design &#034;*&#034;]<\/span><\/p>\n<p>set_fix_multiple_port_nets -all -feedthroughs -outputs -buffer_constants <\/p>\n<p><span class=\"token comment\">#set_flatten true -effort medium -minimize single_output -design [find design &#034;*&#034;]<\/span><br \/>\nset_structure <span class=\"token boolean\">true<\/span> -timing <span class=\"token boolean\">true<\/span> -design <span class=\"token punctuation\">[<\/span>find design <span class=\"token string\">&#034;*&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>check_design<br \/>\nset_max_area <span class=\"token number\">0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u76ee\u5f55\u4e00\u3001\u76ee\u5f55\u7ed3\u6784\u4e8c\u3001DC\u7efc\u5408\u811a\u672c2.1 \u603b\u811a\u672c2.2 \u811a\u672c\u5404\u90e8\u5206\u8be6\u89e32.3 setupLib.tcl \u6587\u4ef6\u8be6\u89e32.4 np2h0011_filelist.f \u6587\u4ef62.5 adder.sdc \u6587\u4ef62.6 rpt.tcl \u6587\u4ef6\u8be6\u89e32.7 clean.sh\u6587\u4ef62.8 DC\u8fd0\u884c\u6587\u4ef6&#xff08;run.sh&#xff09;\u4e09\u3001\u8865\u51453.1 adder\u4ee3\u7801\u6587\u4ef63.2 nameRule.tcl\u811a\u672c3.3 compileOpt.tcl\u811a\u672c\u4e00\u3001\u76ee\u5f55\u7ed3\u6784 \u53ef\u4ee5\u770b\u89c1&#xff0c;\u56fe\u4e2d\u6587\u4ef6\u5939\u5747\u5728<\/p>\n","protected":false},"author":2,"featured_media":74064,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[58],"topic":[],"class_list":["post-74065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-linux"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/74065.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u76ee\u5f55\u4e00\u3001\u76ee\u5f55\u7ed3\u6784\u4e8c\u3001DC\u7efc\u5408\u811a\u672c2.1 \u603b\u811a\u672c2.2 \u811a\u672c\u5404\u90e8\u5206\u8be6\u89e32.3 setupLib.tcl \u6587\u4ef6\u8be6\u89e32.4 np2h0011_filelist.f \u6587\u4ef62.5 adder.sdc \u6587\u4ef62.6 rpt.tcl \u6587\u4ef6\u8be6\u89e32.7 clean.sh\u6587\u4ef62.8 DC\u8fd0\u884c\u6587\u4ef6&#xff08;run.sh&#xff09;\u4e09\u3001\u8865\u51453.1 adder\u4ee3\u7801\u6587\u4ef63.2 nameRule.tcl\u811a\u672c3.3 compileOpt.tcl\u811a\u672c\u4e00\u3001\u76ee\u5f55\u7ed3\u6784 \u53ef\u4ee5\u770b\u89c1&#xff0c;\u56fe\u4e2d\u6587\u4ef6\u5939\u5747\u5728\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/74065.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-08T15:58:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/02\/20260208155829-6988b2a53b662.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/74065.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/74065.html\",\"name\":\"Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-02-08T15:58:30+00:00\",\"dateModified\":\"2026-02-08T15:58:30+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/74065.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/74065.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/74065.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/74065.html","og_locale":"zh_CN","og_type":"article","og_title":"Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u76ee\u5f55\u4e00\u3001\u76ee\u5f55\u7ed3\u6784\u4e8c\u3001DC\u7efc\u5408\u811a\u672c2.1 \u603b\u811a\u672c2.2 \u811a\u672c\u5404\u90e8\u5206\u8be6\u89e32.3 setupLib.tcl \u6587\u4ef6\u8be6\u89e32.4 np2h0011_filelist.f \u6587\u4ef62.5 adder.sdc \u6587\u4ef62.6 rpt.tcl \u6587\u4ef6\u8be6\u89e32.7 clean.sh\u6587\u4ef62.8 DC\u8fd0\u884c\u6587\u4ef6&#xff08;run.sh&#xff09;\u4e09\u3001\u8865\u51453.1 adder\u4ee3\u7801\u6587\u4ef63.2 nameRule.tcl\u811a\u672c3.3 compileOpt.tcl\u811a\u672c\u4e00\u3001\u76ee\u5f55\u7ed3\u6784 \u53ef\u4ee5\u770b\u89c1&#xff0c;\u56fe\u4e2d\u6587\u4ef6\u5939\u5747\u5728","og_url":"https:\/\/www.wsisp.com\/helps\/74065.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-02-08T15:58:30+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/02\/20260208155829-6988b2a53b662.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"12 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/74065.html","url":"https:\/\/www.wsisp.com\/helps\/74065.html","name":"Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-02-08T15:58:30+00:00","dateModified":"2026-02-08T15:58:30+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/74065.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/74065.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/74065.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Synopsys DC\u7efc\u5408\u793a\u4f8b\uff08\u542b\u7efc\u5408\u811a\u672c\u53ca\u76ee\u5f55\u6846\u67b6\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/74065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=74065"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/74065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/74064"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=74065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=74065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=74065"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=74065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}