{"id":1674,"date":"2025-04-25T13:17:00","date_gmt":"2025-04-25T05:17:00","guid":{"rendered":"https:\/\/dop.lyg-semi.com\/?page_id=1674"},"modified":"2025-12-09T12:24:45","modified_gmt":"2025-12-09T04:24:45","slug":"dfa-flowdev","status":"publish","type":"page","link":"https:\/\/dop.lyg-semi.com\/index.php\/dfa-flowdev\/","title":{"rendered":"DFA \u6d41\u7a0b\u5f00\u53d1\u624b\u518c"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>1. \u5f15\u8a00<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 DFA \u5de5\u5177\u5b9a\u4f4d<\/h3>\n\n\n\n<p>DFA\uff08Design Flow Automation\uff09\u662fDOP\uff08Design Operation Platform\uff09\u7684\u6838\u5fc3\u6a21\u5757\uff0c\u901a\u8fc7<strong>\u6807\u51c6\u4e66\u7b7e\u6587\u4ef6\uff08standard ticket format\uff09<\/strong>\u548c<strong>\u6d41\u7a0b\u5b9a\u4e49\u6587\u4ef6\uff08design flow definition\uff09<\/strong>\uff0c\u5b9e\u73b0\u96c6\u6210\u7535\u8def\u82af\u7247\u8bbe\u8ba1\u6d41\u7a0b\u7684\u6807\u51c6\u5316\u548c\u81ea\u52a8\u5316\uff0c\u4f7f\u7528\u8005\u53ea\u8981\u6309\u7167\u9700\u6c42\u586b\u5165Ticket\u4e2d\u7684\u53c2\u6570\uff0c\u5c31\u53ef\u4ee5\u8c03\u7528\u7cfb\u7d71\u9884\u5148\u8bbe\u5b9a\u7684Design Flow\u6d41\u7a0b\u8303\u672c, \u4ea7\u751f\u53ef\u6267\u884c\u7684EDA\u5de5\u4f5c\u73af\u5883\u76ee\u5f55\u3002\u5176\u6838\u5fc3\u4ef7\u503c\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6d88\u9664\u4eba\u4e3a\u5dee\u5f02<\/strong>\uff1a\u901a\u8fc7Ticket\u7edf\u4e00\u8f93\u5165\u53c2\u6570\u3001\u5de5\u827a\u5e93\u7248\u672c\u53ca\u6d41\u7a0b\u914d\u7f6e\u3002<\/li>\n\n\n\n<li><strong>\u590d\u6742\u6d41\u7a0b\u7ba1\u7406<\/strong>\uff1a\u652f\u6301\u591a\u6b65\u9aa4\u5d4c\u5957\u6d41\u7a0b\uff08\u5982\u7efc\u5408\u2192\u65f6\u5e8f\u5206\u6790\u2192\u7269\u7406\u9a8c\u8bc1\uff09\u3002<\/li>\n\n\n\n<li><strong>\u8d28\u91cf\u4e0e\u6548\u7387\u63d0\u5347<\/strong>\uff1a\u96c6\u6210DQI\uff08Design Quality Indicator\uff09\uff0c\u81ea\u52a8\u63d0\u53d6\u5173\u952e\u6307\u6807\u5e76\u751f\u6210\u62a5\u544a\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">1.2 \u9002\u7528\u89d2\u8272\u4e0e\u573a\u666f<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>\u89d2\u8272<\/strong><\/th><th><strong>\u5178\u578b\u573a\u666f<\/strong><\/th><th><strong>\u5173\u952e\u64cd\u4f5c<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>\u82af\u7247\u8bbe\u8ba1\u5de5\u7a0b\u5e08<\/strong><\/td><td>\u65e5\u5e38\u4efb\u52a1\u6267\u884c\uff08Synthesis\u3001STA\uff09\u3001\u6570\u636e\u63d0\u4ea4\u4e0e\u7248\u672c\u7ba1\u7406<\/td><td>\u7f16\u8f91Ticket\u3001\u751f\u6210\u8fd0\u884c\u76ee\u5f55\u3001\u6267\u884c\u6d41\u7a0b<\/td><\/tr><tr><td><strong>\u6d41\u7a0b\u8bbe\u8ba1\u5de5\u7a0b\u5e08<\/strong><\/td><td>\u7ef4\u62a4\u6d41\u7a0b\u6a21\u677f\u3001\u4f18\u5316\u811a\u672c\u3001\u5f00\u53d1\u6d41\u7a0b\u8303\u672c<\/td><td>\u7f16\u5199.dfd\u6587\u4ef6\u3001\u8c03\u8bd5\u6d41\u7a0b\u903b\u8f91<\/td><\/tr><tr><td><strong>\u9879\u76ee\u7ecf\u7406<\/strong><\/td><td>\u76d1\u63a7\u6d41\u7a0b\u72b6\u6001\u3001\u5ba1\u8ba1\u8bbe\u8ba1\u8d28\u91cf\u3001\u534f\u8c03\u8de8\u56e2\u961f\u534f\u4f5c<\/td><td>\u67e5\u770bDQI\u62a5\u544a\u3001\u6267\u884c\u5168\u5c40\u5ba1\u8ba1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. \u7cfb\u7edf\u8981\u6c42\u4e0e\u5b89\u88c5<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">2.1 \u786c\u4ef6\u4e0e\u8f6f\u4ef6\u8981\u6c42<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>\u7ec4\u4ef6<\/strong><\/th><th><strong>\u89c4\u683c<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>\u8ba1\u7b97\u8282\u70b9<\/strong><\/td><td>\u652f\u6301Slurm\u4f5c\u4e1a\u8c03\u5ea6<\/td><\/tr><tr><td><strong>\u8f6f\u4ef6\u4f9d\u8d56<\/strong><\/td><td>Python 3.12+\u3001EDA\u5de5\u5177\u94fe\uff08Synopsys\/Cadence\/Mentor\uff09<\/td><\/tr><tr><td><strong>\u5e73\u53f0\u7ec4\u4ef6<\/strong><\/td><td>DVC \uff08\u7248\u672c\u63a7\u5236\uff09\u3001TLP \uff08\u5de5\u827a\u5e93\u7ba1\u7406\uff09\u3001DQI\uff08\u8d28\u91cf\u6307\u6807\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">2.2 \u5b89\u88c5\u4e0e\u914d\u7f6e\u6b65\u9aa4<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4e0b\u8f7dDFA\u8f6f\u4ef6\u5305<\/strong>\uff1a\u901a\u8fc7\u7ec8\u7aef\u6216\u547d\u4ee4\u63d0\u793a\u7b26\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u4e0b\u8f7d DFA \u5305<br>  git clone https:\/\/gitlab.lyg-semi.com\/ly0108\/dop.git<\/li>\n\n\n\n<li><strong>\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf<\/strong>\uff1a\u4e0b\u8f7d\u5b8c\u6210\u540e\uff0csource DFA\u73af\u5883\u53d8\u91cf\u5230\u60a8\u7684\u5f53\u524d shell \u4f1a\u8bdd<br>  source dop-master\/cshrc_dop &nbsp;<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. \u7528\u6237\u754c\u9762\u4e0e\u6838\u5fc3\u6982\u5ff5<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">3.1 DFA \u7cfb\u7edf\u67b6\u6784<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DFA\u603b\u4f53\u67b6\u6784\u5982\u4e0b\u56fe\u6240\u793a<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"743\" height=\"1024\" src=\"https:\/\/dop.lyg-semi.com\/wp-content\/uploads\/2025\/09\/DFA\u603b\u4f53\u67b6\u6784-743x1024.png\" alt=\"\" class=\"wp-image-2582\" srcset=\"https:\/\/dop.lyg-semi.com\/wp-content\/uploads\/2025\/09\/DFA\u603b\u4f53\u67b6\u6784-743x1024.png 743w, https:\/\/dop.lyg-semi.com\/wp-content\/uploads\/2025\/09\/DFA\u603b\u4f53\u67b6\u6784-218x300.png 218w, https:\/\/dop.lyg-semi.com\/wp-content\/uploads\/2025\/09\/DFA\u603b\u4f53\u67b6\u6784-768x1059.png 768w, https:\/\/dop.lyg-semi.com\/wp-content\/uploads\/2025\/09\/DFA\u603b\u4f53\u67b6\u6784-1114x1536.png 1114w, https:\/\/dop.lyg-semi.com\/wp-content\/uploads\/2025\/09\/DFA\u603b\u4f53\u67b6\u6784.png 1262w\" sizes=\"(max-width: 743px) 100vw, 743px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u4ee5\u4e0b\u8868\u683c\u4e3a\u5404\u4e2a\u6587\u4ef6\u5185\u5bb9\u8bf4\u660e\uff1a<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u540d\u5b57<\/th><th>\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td><strong><code>ticket<\/code><\/strong><\/td><td>standard ticket format\u6587\u4ef6\u4ed3\u5e93\uff0c\u5b58\u50a8\u5404\u4e2adesign flow\u5bf9\u5e94\u7684.stf\u6587\u4ef6\uff0c\u5176\u4e2d.stf\u6587\u4ef6\u7684\u547d\u540d\u683c\u5f0f\u4e3a <code>&lt; T{FLOW_ID}.stf &gt;<\/code> ex.<strong><code>&lt; T510_RCX.stf &gt;<\/code><\/strong><\/td><\/tr><tr><td><strong><code>cshrc_dfa<\/code><\/strong><\/td><td>DFA\u73af\u5883\u914d\u7f6e\u811a\u672c\uff0c\u4f7f\u7528DFA\u524d\u9700\u8981\u5148\u6267\u884c<strong><code>source cshrc_dop<\/code><\/strong>\u547d\u4ee4\uff0c<code>cshrc_dop<\/code>\u4e2d\u5305\u542b\u5bf9\u6b64\u73af\u5883\u914d\u7f6e\u811a\u672c\u7684source<\/td><\/tr><tr><td><strong><code>flow<\/code><\/strong><\/td><td>\u50a8\u5b58\u6784\u5efa\u8d77EDA\u5de5\u4f5c\u73af\u5883\u7684design flow\u7684\u811a\u672c\u7684\u76ee\u5f55\uff0c\u76ee\u5f55\u7ed3\u6784\u4e3a\u5982\u56fe\u6240\u793a\u7684<code>stage_id\/flow_ref_id<\/code>\u7684\u683c\u5f0f\u3002<\/td><\/tr><tr><td><strong><code>dqi_def<\/code><\/strong><\/td><td>\u5b58\u50a8\u62bd\u53d6design flow\u7684dqi\u5224\u65ad\u6587\u4ef6\u7684\u76ee\u5f55\uff0c\u6bcf\u4e2a <code>.dqi<\/code> \u6587\u4ef6\u5bf9\u5e94\u4e00\u4e2a\u8bbe\u8ba1\u8d28\u91cf\u6307\u6807\uff08DQI\uff09\uff0c\u5b9a\u4e49\u5176\u53d6\u503c\u3001\u5355\u4f4d\u53ca\u5404\u4e2a\u72b6\u6001\uff08\u5982 Pass\u3001Fail\uff09\u7684\u5224\u65ad\u6761\u4ef6\u3002<\/td><\/tr><tr><td><strong><code>bin | etc | lib<\/code><\/strong><\/td><td>DFA\u7cfb\u7edf\u76f8\u5173\u6587\u4ef6\u7684\u5b58\u653e\u76ee\u5f55<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3.2 \u4e0eDOP\u5404\u4e2a\u6a21\u5757\u7684\u4ea4\u4e92<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">3.2.1 DOP\u6982\u8ff0<\/h4>\n\n\n\n<p>DOP\uff08Design Operation Platform\uff09\u662f\u82af\u7247\u8bbe\u8ba1\u5168\u6d41\u7a0b\u7ba1\u7406\u5e73\u53f0\uff0c\u5305\u542b\u4ee5\u4e0b\u6838\u5fc3\u6a21\u5757\uff1a<\/p>\n\n\n\n<p><strong><code>DVC\uff08Design Version Control\uff09<\/code><\/strong>\uff1a\u7ba1\u7406\u8bbe\u8ba1\u6570\u636e\u7248\u672c\uff0c\u652f\u6301\u5206\u652f\u3001\u6807\u7b7e\u548c\u7248\u672c\u56de\u6eda\u3002<\/p>\n\n\n\n<p><strong><code>TLM\uff08Technology Library Management\uff09<\/code><\/strong>\uff1a\u6807\u51c6\u5355\u5143\u5e93\u7684\u5b89\u88c5\u3001\u66f4\u65b0\u4e0e\u8def\u5f84\u7ba1\u7406\u3002<\/p>\n\n\n\n<p><strong><code>DFA\uff08Design Flow Automation\uff09<\/code><\/strong>\uff1a\u81ea\u52a8\u5316\u6267\u884c\u8bbe\u8ba1\u6d41\u7a0b\uff0c\u652f\u6301\u591a\u6d41\u7a0b\u7ec4\u5408\u4e0e\u52a8\u6001\u6269\u5c55\u3002<\/p>\n\n\n\n<p><strong><code>DQI\uff08Design Quality Indicator\uff09<\/code><\/strong>\uff1a\u81ea\u52a8\u5316\u751f\u6210\u8bbe\u8ba1\u8d28\u91cf\u62a5\u544a\uff0c\u652f\u6301\u8de8\u9879\u76ee\u5bf9\u6bd4\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2.2 DFA\u4e0eDOP\u5404\u4e2a\u6a21\u5757\u7684\u4ea4\u4e92<\/h4>\n\n\n\n<p><strong><code>DVC<\/code><\/strong>\uff1a\u4ece DVC\uff08Design Version Control\uff09\u83b7\u53d6\u4ee5\u53ca\u5b58\u50a8\u8bbe\u8ba1\u6570\u636e\uff0c\u786e\u4fdd\u6d41\u7a0b\u8f93\u5165\u7684\u4e00\u81f4\u6027\u3002\uff08<code>DVC_SRC<\/code>\u4e3a\u8f93\u5165\u8def\u5f84\uff0c<code>DVC_DST<\/code>\u4e3a\u8f93\u51fa\u8def\u5f84\uff09\u3002<\/p>\n\n\n\n<p><strong><code>TLM<\/code><\/strong>\uff1a\u901a\u8fc7 TLM\uff08Technology Library Management\uff09\u81ea\u52a8\u52a0\u8f7d\u6280\u672f\u5e93\u8def\u5f84\uff0c\u907f\u514d\u624b\u52a8\u914d\u7f6e\u9519\u8bef\uff08\u901a\u8fc7\u5728<code>TECHLIB<\/code>\u5b57\u6bb5\u6307\u5b9a\u5e93\u914d\u7f6e\u6587\u4ef6\uff09\u3002<\/p>\n\n\n\n<p><strong><code>DQI<\/code><\/strong>\uff1a\u81ea\u52a8\u5316\u751f\u6210\u8d28\u91cf\u62a5\u544a\uff08\u5982\u65f6\u5e8f\u8fdd\u4f8b\u3001\u529f\u8017\u5206\u6790\uff09\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.3 \u5173\u952e\u914d\u7f6e\u6587\u4ef6<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Standard Ticket Format(.stf)<\/strong>\uff1a ticket\u6587\u4ef6\u662fDFA\u7684\u6838\u5fc3\u914d\u7f6e\u6587\u4ef6\uff0c\u4e3b\u8981\u7528\u4e8e\u5b9a\u4e49flow\u7684\u8f93\u5165\/\u8f93\u51fa\u8def\u5f84\u3001\u7248\u672c\u63a7\u5236\u4fe1\u606f\u3001\u5de5\u827a\u5e93\u914d\u7f6e\u53ca\u8fd0\u884c\u53c2\u6570\uff0c\u7528\u6237\u901a\u8fc7\u5728ticket\u6587\u4ef6\u4e2d\u6309\u7167\u9700\u6c42\u586b\u5165\u53c2\u6570\uff0c\u5c31\u4f1a\u6784\u5efa\u51fa\u5bf9\u5e94design flow\u7684EDA\u5de5\u4f5c\u73af\u5883\uff0c\u6b64\u6587\u4ef6\u5b58\u4e8eDFA\u7684standard ticket format\u6587\u4ef6\u4ed3\u5e93\uff08ticket\u76ee\u5f55\uff09\uff0c\u6587\u4ef6\u547d\u540d\u683c\u5f0f\u4e3a<code>T{FLOW_ID}.stf<\/code>\uff0cex.<code>T510_RCX.sft<\/code>\uff0cFLOW_ID\u7684\u547d\u540d\u683c\u5f0f\u5747\u4e3a\u4e09\u4f4d\u6570\u5b57\u6216\u5b57\u6bcd\u52a0\u4e0aflow\u540d\u79f0\u7684\u683c\u5f0f\uff0c\u4f8b\u5982510_RCX\uff0c5C0_STA\u7b49\u7b49\u3002ticket\u683c\u5f0f\u5982\u4e0b\uff1a<br><strong>[HEADER]<\/strong><br>## DESCRIPTION : flow name &amp; run directory<br>## ARGUMENT \u00a0 : &lt; flow_name:run_dir_name >, ex. 510_RCX:rcxt_spef<br>FLOW_ID = flow_reference_id:ticket_run_dir<br>\u200b<br>## DESCRIPTION : techlib confilg file from TLM<br>## ARGUMENT \u00a0 : &lt; techlib config file name >, ex.dfalib.cfg<br>TECHLIB = techlib_config_file<br>\u200b<br>## DESCRIPTION : source path from DVC<br>## ARGUMENT \u00a0 : &lt; source path >, ex.phase\/block\/stage\/v1<br>DVC_SRC = design_source_version_path<br>\u200b<br>## DESCRIPTION : destination path from DVC<br>## ARGUMENT \u00a0 : &lt; destination path >, ex.phase\/block\/stage\/v2<br>DVC_DST = design_dest_version_path<br>\u200b<br>## DESCRIPTION : top module name<br>## ARGUMENT \u00a0 : &lt; top module name >, ex.design<br>DESIGN \u00a0= top_module_name<br>\u200b<br>\u200b<br><strong>[INPUT]<\/strong><br>## DESCRIPTION : input file of this flow<br>## ARGUMENT \u00a0 : &lt; path | file_name >, ex.NETLIST_FILE = netlist.v<br>input_ref_id1 \u00a0= input_file_name<br>input_ref_id2 \u00a0= input_dir_name<br>\u200b<br>\u200b<br><strong>[OUTPUT]<\/strong><br>## DESCRIPTION : output file of this flow<br>## ARGUMENT \u00a0 : &lt; path | file_name >, ex.NETLIST_FILE = netlist.v<br>output_ref_id1 = output_file_name<br>output_ref_id2 = output_dir_name<br>\u200b<br>\u200b<br><strong>[PARAMETER]<\/strong><br>## DESCRIPTION : Script path of EDA tool<br>## ARGUMENT \u00a0 : <eda_tool_path_script>, ex. encounter<br>TOOL = encounter<br>\u200b<br>## DESCRIPTION : Set tool option<br>## ARGUMENT \u00a0 : <eda_tool_options>ex. tool version, &#8230;<br>TOOL_OPTION = -uv 9.10-e014_1 -u64<br>\u200b<br>## DESCRIPTION : Specify queue name<br>## ARGUMENT \u00a0 : [ Local | FE | BE ]<br>## if QUEUE = Local, only run job in local machine<br>QUEUE = Local<br>\u200b<br>## DESCRIPTION: Set queue option<br>## ARGMENT \u00a0 : <queue_options>\u00a0 #ex. slurm&#8217;s options<br>QUEUE_OPTION = &#8211;mem=64G -c 1 \u00a0 #slurm&#8217;s options<br>\u200b<br>## DESCRIPTION : PARAMETER of this flow<br>## ARGUMENT \u00a0 : &lt; path | parameter >, ex.rc_corner = Typ_85c<br>parameter_id1 \u00a0= parameter_value1<br>parameter_id2 \u00a0= parameter_value2<br>&#8230;<\/queue_options><\/eda_tool_options><\/eda_tool_path_script><\/li>\n<\/ul>\n\n\n\n<p><strong>Standard Ticket Format\u6587\u4ef6\u6848\u4f8b<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>[HEADER]<\/strong><br>## DESCRIPTION : flow name &amp; run directory<br>## ARGUMENT \u00a0  : &lt; flow_name:run_dir_name >, ex. 510_RCX:rcxt_spef<br>FLOW_ID = 510-RCX<br>\u200b<br>## DESCRIPTION : techlib confilg file from TLM<br>## ARGUMENT \u00a0  : &lt; techlib config file name >, ex.dfalib.cfg <br>TECHLIB = dfalib.cfg<br>\u200b<br>## DESCRIPTION : source path from DVC<br>## ARGUMENT \u00a0  : &lt; source path >, ex.phase\/block\/stage\/v1<br>DVC_SRC = phase\/block\/stage\/v1<br>\u200b<br>## DESCRIPTION : destination path from DVC<br>## ARGUMENT \u00a0  : &lt; destination path >, ex.phase\/block\/stage\/v2<br>DVC_DST = phase\/block\/stage\/v2<br>\u200b<br>## DESCRIPTION : top module name <br>## ARGUMENT \u00a0  : &lt; top module name >, ex.design <br>DESIGN = hg2325<br>\u200b<br>\u200b<br><strong>[INPUT]<\/strong><br>## DESCRIPTION : input file of this flow<br>## ARGUMENT \u00a0  : &lt; path | file_name  ><br>TOP_DEF_FILE = \/lyg\/projects\/d6ui418a\/HG2325\/RUN\/shizhu\/apr_DFT_0410a\/out\/hg2325.full_chip.def.gz<br>METAL_FILL_GDS_FILE = \/lyg\/projects\/d6ui418a\/HG2325\/RUN\/shizhu\/apr_DFT_0410a\/pv\/04_BE\/hg2325_Dummy_BE.gds<br>\u200b<br>\u200b<br><strong>[OUTPUT]<\/strong><br>## DESCRIPTION : output file of this flow<br>## ARGUMENT \u00a0  : &lt; output file_name  ><br>COUPLING_REPORT_FILE = abc\/couplingreport.rep<br>NETLIST_FILE =${DESIGN}.spef.gz<br>\u200b<br>\u200b<br><strong>[PARAMETER]<\/strong><br>## DESCRIPTION : PARAMETER of this flow<br>## ARGUMENT \u00a0  : &lt; path | parameter ><br>MAPPING_FILE = \/tools\/d6techlib\/PDK\/SYNOPSYS\/layers.map<br>CORNERS_FILE = \/lyg\/projusers\/d6ui418a\/d6ui418ab18\/RUN\/RCX\/0.7\/script\/corners.smc<br>GDS_LAYER_MAP_FILE =  \/lyg\/projusers\/d6ui418a\/d6ui418ab18\/RUN\/RCX\/0.7\/script\/dummy_gds.map<br>SELECTED_CORNERS =Typ_85c<br>\u200b<br>## DESCRIPTION : Script path of EDA tool<br>## ARGUMENT \u00a0  : &lt;eda_tool_path_script>, ex. encounter<br>TOOL = synopsys_starrc_shell_U<br>\u200b<br>## DESCRIPTION : Set tool option<br>## ARGUMENT \u00a0  : &lt;eda_tool_options> ex. tool version, ...<br>TOOL_OPTION = -2022.12-SP5-2<br>\u200b<br>## DESCRIPTION : Specify queue name<br>## ARGUMENT \u00a0  : [Local | BE | FE ]<br>## if QUEUE = Local, only run job in local machine<br>QUEUE = BE<br>\u200b<br>## DESCRIPTION: Set queue option<br>## ARGMENT \u00a0  : &lt;queue_options> \u00a0 #ex. slurm's options<br>QUEUE_OPTION = --mem=64G -c 4<\/pre>\n\n\n\n<p><strong>\u6ce8\uff1a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ticket\u7684[INPUT]\u4e2d\u53c2\u6570\u7684\u503c\u652f\u6301\u4ee5\u7edd\u5bf9\u8def\u5f84\u53bb\u6307\u5b9a\u8f93\u5165\u6587\u6863\uff0c\u4f8b\u5982\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">#\u7edd\u5bf9\u8def\u5f84<br><strong>[INPUT]<\/strong><br>NETLIST_FILE = \/home\/netlist\/design.v<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[INPUT]\u4e0b\u7684\u53c2\u6570\u540c\u6837\u652f\u6301\u4ee5\u76f8\u5bf9\u8def\u5f84\u53bb\u6307\u5b9a\u4f4d\u4e8eDVC\u4e0b\u7684\u6587\u6863\uff0c\u6b64\u76f8\u5bf9\u8def\u5f84\u662f\u76f8\u5bf9\u4e8eDVC_SRC\u7684\u56db\u5c42\u76ee\u5f55\u4e0b\u7684\u76f8\u5bf9\u8def\u5f84\uff0c\u4ee5\u4e0b\u9762\u7247\u6bb5\u4e3a\u4f8b\u82e5\u8981\u4f7f\u7528DVC\u7684phase\/block\/stage\/version\/netlist\/design.v\u8fd9\u4e00\u8def\u5f84\u4e0b\u7684design.v\u7684\u5316\u5219\u9700\u6309\u7167\u5982\u4e0b\u4f8b\u5b50\u65b9\u5f0f\u586b\u5199\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">#DVC\u4e2d\u7684data<br>DVC_SRC = phase\/block\/stage\/version <br>...<br><strong>[INPUT]<\/strong><br>NETLIST_FILE = netlist\/design.v<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[INPUT]\u4e0b\u7684\u53c2\u6570\u503c\u7684\u76f8\u5bf9\u8def\u5f84\u9664\u4f4d\u4e8eDVC\u4e0b\u5916\uff0c\u8fd8\u6709\u53e6\u4e00\u79cd\u60c5\u51b5\u662f\u7531\u53e6\u4e00flow\u4ea7\u751f\uff0c\u6b64\u65f6INPUT\u586b\u5199\u7684\u53c2\u6570\u503c\u5219\u9700\u8981\u586b\u5199\u8fd9\u4e24\u6761flow\u7684::main\u76ee\u5f55\u7684\u76f8\u5bf9\u8def\u5f84\uff0c\u5373\u5b58\u5728\u4ee5\u4e0b\u76ee\u5f55\u7ed3\u6784\uff0c\u5176\u76f8\u5bf9\u8def\u5f84\u7684\u586b\u5199\u5219\u5982\u4e0b<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">#\u76ee\u5f55\u7ed3\u6784<br>\u251c\u2500\u2500 rcxt2spef\/ &nbsp; &nbsp; <br>|   \u2514\u2500\u2500::main\/<br>| &nbsp; &nbsp;   \u2514\u2500\u2500design.spef <br>\u2514\u2500\u2500 spef2sdf\/ &nbsp; &nbsp; <br>    \u2514\u2500\u2500::main\/<br> &nbsp; &nbsp;    \u2514\u2500\u2500design.spef -&gt; ..\/.inpSPEF_FILE &nbsp; &nbsp;  #\u6b64\u6587\u6863\u662f\u7531rcxt2spef\u8fd9\u4e00flow\u4ea7\u751f<br>\u200b<br>#ticket\u4e2dINPUT\u586b\u5199<br><strong>[INPUT]<\/strong><br>spef2sdf\/SPEF_FILE = ..\/..\/rcxt2spef\/::main\/design.spef  #\u6b64\u76f8\u5bf9\u8def\u5f84\u4e3aspef2sdf\u7684::main\u76ee\u5f55\u76f8\u5bf9\u4e8e\u539f\u59cb\u6587\u4ef6\u76ee\u5f55\u7684\u8def\u5f84<br><strong>[OUTPUT]<\/strong><br>rcxt2spef\/SPEF_FILE = design.spef<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ticket\u4e2d\u652f\u6301\u5728\u503c\u4e2d\u4f7f\u7528\u4e0a\u4e0b\u6587\u4e2d\u7684\u53d8\u91cf\u53bb\u6307\u5b9a\u7684\u884c\u4e3a\uff0c\u4f8b\u5982\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">DESIGN = design<br>......<br>SPEF_FILE = ${DESIGN}_${rc_corner}.spef.gz &nbsp;<br>......<br>rc_corner = cworst<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ticket\u4e2d\u652f\u6301\u5728\u952e\u524d\u6307\u5b9a\u8def\u5f84\u7684\u884c\u4e3a\uff0c\u4e14\u9002\u7528\u901a\u914d\u7b26\u53bb\u5339\u914d\u8def\u5f84\uff0c\u4f8b\u5982\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">5M0_MMMC\/01_RCX\/cbest_125\/DEF_FILE = ${rc_corner}.def<br>......<br>5M0_MMMC\/01_RCX\/*\/SPEF_FILE = ${DESIGN}_${rc_corner}.spef.gz<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u4e00\u4e2a\u5b8c\u6574\u7684\u8bbe\u8ba1\u6d41\u7a0b\uff0c\u53ef\u4ee5\u62c6\u89e3\u6210\u8bb8\u591a\u7684\u5c0f\u6b65\u9aa4\uff08flow step\uff09\uff0c\u6267\u884c\u6bcf\u4e2astep\u90fd\u5fc5\u987b\u6307\u5b9a\u4f7f\u7528\u7684EDA\u5de5\u5177\uff08tool\uff09\u53ca\u53c2\u6570(parameters)\uff0c\u6765\u6e90\u8d44\u6599\uff08input data\uff09\u4ee5\u53ca\u8f93\u51fa\u8d44\u6599\uff08output data ),\u8fd8\u6709\u5de5\u5177\u8fd0\u884c\u65f6\u4ea7\u751f\u7684\u68c0\u9a8c\u62a5\u544a\uff08report file\uff09\u8ddf\u8fc7\u7a0b\u8bb0\u5f55\uff08log file\uff09\u6863\u6848\u7b49\uff0c\u4e8e\u662f\u6211\u4eec\u89c4\u8303\u4e86\u4e00\u4e2a\u6807\u51c6\u7684\u6d41\u7a0b\u6b65\u9aa4\u5b9a\u4e49\u6863\u6848\uff0c\u5373Flow Step Definition\u6587\u4ef6<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Flow Step Definition \uff08.dfd\uff09\uff1a<\/strong>definition\u6587\u4ef6\u4e2d\u4e3b\u8981\u662f\u5b9a\u4e49\u96c6\u6210\u7535\u8def\u8bbe\u8ba1\u6d41\u7a0b\u7684\u6b65\u9aa4\u3001\u53c2\u6570\u4f20\u9012\u7684\u89c4\u5219\u4ee5\u53ca\u5b50\u6d41\u7a0b\u4f9d\u8d56\u7b49\u4fe1\u606f\uff0c\u6b64\u6587\u4ef6\u7ecf\u7531\u6d41\u7a0b\u8bbe\u8ba1\u8005\u8bbe\u8ba1\uff0c\u7528\u6237\u65e0\u9700\u4fee\u6539\uff0c\u5176\u6587\u6863\u4e2d\u7684\u5185\u5bb9\u4e3a\u6b64design flow\u7684\u9ed8\u8ba4\u503c\uff0c\u8be5\u6587\u4ef6\u5b58\u653e\u4e8eDFA\u4e2d\u7684\u5bf9\u5e94\u7684flow script\u76ee\u5f55\u4e0b\uff08flow\u76ee\u5f55\uff09\uff0c\u6863\u540d\u683c\u5f0f\u4e3a<strong><code>&lt; {FLOW_ID}.dfd &gt;<\/code><\/strong>\uff0c\u5176\u4e2d\u5355\u4e2astep\u7684\u683c\u5f0f\u5982\u4e0b\uff1aDEFINE STEP &lt;step_name&gt;<br>\u200b<br>INPUT input_ref_id1 = input_file;<br>INPUT input_ref_id1 = input_file;<br>OUTPUT output_ref_id = output_file;<br>OUTPUT output_ref_id = output_file;<br>PARAM param_ref_id = default_value;<br>\u200b<br>## DESCRIPTION : Script path of EDA tool<br>## ARGUMENT &nbsp; : &lt;eda_tool_path_script&gt;, ex. encounter<br>PARAM TOOL = encounter<br>\u200b<br>## DESCRIPTION : Set tool option<br>## ARGUMENT &nbsp; : &lt;eda_tool_options&gt; ex. tool version, &#8230;<br>PARAM TOOL_OPTION = -uv 9.10-e014_1 -u64<br>\u200b<br>## DESCRIPTION : Specify queue name<br>## ARGUMENT &nbsp; : [Local | &lt;queue_name&gt;]<br>## if QUEUE = Local, only run job in local machine<br>PARAM QUEUE = Local<br>\u200b<br>## DESCRIPTION: Set queue option<br>## ARGMENT &nbsp; : &lt; queue_options &gt; &nbsp; #ex. slurm&#8217;s options<br>PARAM QUEUE_OPTION = -mem 64 -core 1 &nbsp; #slurm&#8217;s options<br>\u200b<br>## DESCRIPTION: flow scripts<br>## ARGMENT &nbsp; : &lt; script_file_name &gt; &nbsp; #ex. run_precheck<br>PRE_CHECK pre_check_script<br>EXEC $eda_cmd &#8230;.<br>POST_CHECK post_check_script<br>## DESCRIPTION: script that extracts the dqi report<br>EXEC_DQI exec_dqi.script<br>\u200b<br>END STEP<\/li>\n\n\n\n<li><strong>Flow Step Definition\u6587\u4ef6\u4e2d\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/strong><ul><li>\u6d41\u7a0b\u4fe1\u606f\uff1a\u6307\u5b9a\u8be5\u6b65\u9aa4\u7684\u8f93\u5165\u8f93\u51fa\u6587\u4ef6\u4ee5\u53ca\u53c2\u6570\u7684\u9ed8\u8ba4\u503c\uff0ceda\u5de5\u5177\u4ee5\u53ca\u8fd0\u884c\u6a21\u5f0f\u7b49\u6d41\u7a0b\u76f8\u5173\u4fe1\u606f\uff0c\u5176\u4e2d\uff1a<ul><li><strong><code>DEFINE STEP &lt;step_name&gt;<\/code><\/strong>:\u6b64\u9879\u4e3a\u6b64\u6d41\u7a0b\u7684\u540d\u5b57\uff0c\u5176\u4e2d&lt;step_name&gt;\u4e2d\u586b\u5199\u7684\u4e3a\u8be5\u6d41\u7a0b\u7684FLOW_ID\u3002ex.<code>DEFINIFE STEP 510_RCX<\/code><\/li><li><strong><code>INPUT<\/code><\/strong>:\u6b64\u9879\u4e3a\u6b64\u6d41\u7a0b\u6240\u9700\u7684\u8f93\u5165\u6863\u6848\uff0c\u5305\u542b\u8bbe\u8ba1\u8d44\u6599\uff0c\u8bbe\u8ba1\u89c4\u8303\u6587\u6863\uff0c\u5176\u683c\u5f0f\u4e3a <code>INPUT input_ref_id = input_file<\/code>\uff0c\u5176\u4e2dinput_ref_id\u4e3a\u5176\u8f93\u5165\u53c2\u6570\u952e\u540d\uff0cinput_file_name\u4e3a\u5176\u8f93\u5165\u53c2\u6570\u9ed8\u8ba4\u503c\u3002ex.<code>INPUT DEF_FILE = design.def<\/code><\/li><li><strong><code>OUTPUT<\/code><\/strong>:\u6b64\u9879\u4e3a\u6b64\u6d41\u7a0b\u8fd0\u884c\u6240\u4ea7\u751f\u7684\u8bbe\u8ba1\u8d44\u6599\uff0c\u8bbe\u8ba1\u8d28\u91cf\u62a5\u544a\uff0c\u6267\u884c\u65e5\u8bb0\u6587\u4ef6\u7b49\u7b49\uff0c\u5176\u683c\u5f0f\u4e3a<code>OUTPUT output_ref_id = output_file<\/code>\uff0c\u540cINPUT\u76f8\u540c\uff0coutput_ref_id\u548coutput_file_name\u4e3a\u5176\u8f93\u51fa\u53c2\u6570\u7684\u952e\u503c\u3002ex.<code>OUTPUT NETLIST_FILE = design.v<\/code><\/li><li><strong><code>PARAM<\/code><\/strong>:\u6b64\u9879\u4e3a\u6b64\u6d41\u7a0b\u8fd0\u884c\u6240\u9700\u7684\u5176\u4ed6\u53c2\u6570\u8bbe\u7f6e\uff0c\u5176\u4e2d<code>TOOL<\/code>,<code>TOO_OPTION<\/code>,<code>QUEUE<\/code>,<code>QUEUE_OPTION<\/code>\u4e3a\u5fc5\u987b\u53c2\u6570\uff0c\u5176\u4ed6\u53c2\u6570\u683c\u5f0f\u4e5f\u662f\u9075\u5faa<code>PARAM param_ref_id = param<\/code>\u7684\u683c\u5f0f\uff0c\u5176\u4e2d<ul><li><strong><code>TOOL<\/code><\/strong>:\u6b64\u9879\u5185\u5bb9\u4e3a\u6539\u6d41\u7a0b\u6240\u9700\u4f7f\u7528\u7684eda\u5de5\u5177\u7684\u540d\u5b57<\/li><li><strong><code>TOOL_OPTION<\/code><\/strong>\uff1a\u6b64\u9879\u5185\u5bb9\u4e3a\u8be5\u6d41\u7a0b\u6240\u4f7f\u7528\u7684eda\u5de5\u5177\u7684\u7248\u672c\uff0c\u53c2\u6570<\/li><li><strong><code>QUEUE<\/code><\/strong>\uff1a\u6b64\u9879\u5185\u5bb9\u4e3a\u8be5\u6d41\u7a0b\u4f5c\u4e1a\u65f6\u6240\u8fd0\u884c\u7684slurm\u961f\u5217\uff0c\u6709 <strong><code>&lt; Local | FE | BE &gt;<\/code><\/strong>\u8fd9\u4e09\u79cd\uff0c\u5176\u4e2dLocal\u4e3a\u4e0d\u4f7f\u7528slurm\uff0c\u4ec5\u5728\u5f53\u524d\u8282\u70b9\u8fd0\u884c\uff0cFE\u4e3a\u524d\u7aef\u4f5c\u4e1a\u8282\u70b9\uff08cal06-cal10\uff09\uff0cBE\u4e3a\u540e\u7aef\u4f5c\u4e1a\u8282\u70b9\uff08cal11-cal16\uff09<\/li><li><strong><code>QUEUE_OPTION<\/code><\/strong>:\u6b64\u9879\u4e3a\u8be5\u6d41\u7a0b\u4f5c\u4e1a\u65f6\u7684slurm\u4f5c\u4e1a\u63d0\u4ea4\u7684\u53c2\u6570<\/li><\/ul><\/li><\/ul><\/li><li>\u6d41\u7a0b\u811a\u672c\uff1a\u901a\u8fc7\u6307\u5b9a\u6d41\u7a0b\u811a\u672c\u6765\u51b3\u5b9a\u6d41\u7a0b\u7684\u8fd0\u884c\u6b65\u9aa4\uff0c\u5176\u4e2d\uff1a<ul><li><strong><code>PRE_CHECK<\/code><\/strong>:\u6b64\u9879\u811a\u672c\u4e3a\u9a8c\u8bc1Ticket\u6863\u4e2d\u8f93\u5165\u6587\u4ef6\u548c\u53c2\u6570\u662f\u5426\u5b58\u5728\uff0c\u4ee5\u53ca\u5176\u8bbe\u5b9a\u503c\u662f\u5426\u5408\u7406<\/li><li><strong><code>EXEC<\/code><\/strong>\uff1a\u6b64\u9879\u4e3a\u751f\u6210EDA\u5de5\u5177\u6d41\u7a0b\u811a\u672c\u4ee5\u53ca\u8fd0\u884cEDA\u5de5\u5177\u7684\u4e3b\u8981\u811a\u672c<\/li><li><strong><code>POST_CHECk<\/code><\/strong>\uff1a\u6b64\u9879\u4e3aEDA\u5de5\u4f5c\u7ed3\u675f\u540e\uff0c\u5bf9EDA\u5de5\u4f5c\u7ed3\u679c\u590d\u67e5\uff0c\u786e\u4fddEDA\u5de5\u4f5c\u6b63\u5e38\u5b8c\u6210\u7684\u811a\u672c<\/li><li><strong><code>EXEC_DQI<\/code><\/strong>\uff1a\u6b64\u9879\u811a\u672c\u7528\u4e8eEDA\u5de5\u4f5c\u6b63\u5e38\u7ed3\u675f\u540e\uff0c\u4ece\u4ea7\u51fa\u7684\u62a5\u544a\u6216\u65e5\u8bb0\u6587\u4ef6\u4e2d\u62bd\u53d6\u51fa<code>&lt;DQI_ID&gt;.val<\/code>\u6587\u4ef6\uff0c<code>&lt;DQI_DI&gt;.val<\/code>\u4e3a\u751f\u6210dqi_rpt.json\u7684\u4e2d\u95f4\u6587\u4ef6\uff0c\u53e6\u5916\uff0c\u7cfb\u7edf\u5df2\u6709\u652f\u6301\u62bd\u53d6\u51fa<code>&lt;DQI_ID&gt;.val<\/code>\u6587\u4ef6\u7684\u7a0b\u5e8f\uff0c\u53ea\u9700\u5728\u6d41\u7a0b\u811a\u672c\u76ee\u5f55\u4e0b\u51c6\u5907dqi_ext.spec\u6587\u4ef6\u5373\u53ef\u4f9d\u9760\u7cfb\u7edf\u5b9e\u73b0\u62bd\u53d6\uff0c\u6d41\u7a0b\u8bbe\u8ba1\u8005\u53ef\u81ea\u884c\u9009\u62e9\u91c7\u7528\u7cfb\u7edf\u81ea\u5e26\u7a0b\u5e8f\u62bd\u53d6\u6216\u8005\u5b9e\u4f5c<code>EXEC_DQI<\/code>\u811a\u672c\u53bb\u62bd\u53d6<code>&lt;DQI_ID&gt;.val<\/code>\u6587\u4ef6\uff0c\u8be6\u7ec6\u8fc7\u7a0b\u8bf7\u53c2\u80036.1<\/li><\/ul><\/li><\/ul><strong>Flow Step Definition\u6587\u4ef6\u6848\u4f8b<\/strong>DEFINE STEP 510-RCX<br>INPUT METAL_FILL_GDS_FILE &nbsp;= \/lyg\/projects\/d6ui418a\/HG2325\/RUN\/shizhu\/apr_DFT_0410a\/out\/hg2325.full_chip.def.gz<br>INPUT TOP_DEF_FILE &nbsp; &nbsp; &nbsp; &nbsp; = \/lyg\/projects\/d6ui418a\/HG2325\/RUN\/shizhu\/apr_DFT_0410a\/pv\/04_BE\/hg2325_Dummy_BE.gds<br>OUTPUT NETLIST_FILE &nbsp; &nbsp; &nbsp; &nbsp; = ${DESIGN}.spef.gz<br>OUTPUT COUPLING_REPORT_FILE = couplingreport.rep<br>PARAM rc_corner &nbsp; &nbsp;= Typ_85c<br>PARAM TOOL &nbsp; &nbsp; &nbsp; &nbsp; = synopsys_starrc_shell_U<br>PARAM TOOL_OPTION &nbsp;= -2022.12-SP5-2<br>PARAM QUEUE &nbsp; &nbsp; &nbsp; &nbsp;= BE<br>PARAM QUEUE_OPTION = &#8211;mem=64G -c 1<br>PRE_CHECK run_precheck<br>EXEC run_execute<br>POST_CHECK run_postcheck<br>EXEC_DQI run_execdqi<br>END STEP<\/li>\n\n\n\n<li><strong>\u4e00\u6761flow\u53ef\u4ee5\u901a\u8fc7\u4e00\u4e2astep\u6216\u8005\u591a\u4e2astep\u7ec4\u6210\uff0c\u591a\u4e2astep\u7ec4\u6210\u7684flow step definition\u6587\u4ef6\u683c\u5f0f\u5982\u4e0b\uff1a<\/strong>DEFINE FLOW <flow_name><br>\u200b<br>INPUT input_ref_id1 = input_file;<br>INPUT input_ref_id2 = input_file;<br>OUTPUT output_ref_id1 = output_file;<br>OUTPUT output_ref_id2 = output_file;<br>PARAM param_name = default_value;<br>\u200b<br>STEP step_name step_id<br>&gt; step_input = $input_file<br>&lt; step_output = $output_file<br>+ param_name = $param_value<br>;<br>SUBFLOW flow_name flow_id<br>&gt; step-input = $input_file<br>&lt; step_output = $output_file<br>+ param_name = $param_value<br>;<br>\u200b<br>END FLOW<\/flow_name>\n<ul class=\"wp-block-list\">\n<li><strong>\u591a\u4e2astep\u7ec4\u6210\u7684flow\u7684flow step definition\u6587\u4ef6\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong><code>DEFINE FLOW &lt;flow_name&gt;<\/code><\/strong>:\u6b64\u9879\u4e3aflow\u540d\u5b57\uff0c\u540cSTEP\u4e2d\u7684<code>DEFINE STEP &lt;step_name&gt;<\/code>\u76f8\u540c<\/li>\n\n\n\n<li><strong>\u6d41\u7a0b\u6b65\u9aa4\u5b9a\u4e49<\/strong>\uff1a\u63cf\u8ff0\u8bbe\u8ba1\u6d41\u7a0b\u7684\u5404\u4e2a\u6b65\u9aa4\u7684\u4e32\u63a5\uff0c\u6839\u636e\u8f93\u5165\u8f93\u51fa\u7684\u5173\u7cfb\u81ea\u52a8\u751f\u6210\u5b50\u6d41\u7a0b\u7684\u6267\u884c\u987a\u5e8f\uff0c\u786e\u4fdd\u4f9d\u8d56\u9879\u5148\u4e8e\u76ee\u6807\u6b65\u9aa4\u6267\u884c<\/li>\n\n\n\n<li><strong>\u8f93\u5165\u8f93\u51fa\u6620\u5c04<\/strong>\uff1a\u6307\u5b9a\u6bcf\u4e2a\u6b65\u9aa4\u7684\u8f93\u5165\uff08<code>&gt; =<\/code>\uff09\u4ee5\u53ca\u8f93\u51fa\uff08<code>&lt; =<\/code>\uff09\uff0c\u5f62\u6210\u6570\u636e\u6d41\u4f9d\u8d56<\/li>\n\n\n\n<li><strong>\u53c2\u6570\u4f20\u9012<\/strong>\uff1a\u901a\u8fc7<code>+ =<\/code>\u4f20\u9012\u53c2\u6570<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u5b57\u6bb5\u8bf4\u660e<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong><code>STEP\/SUBFLOW<\/code><\/strong>\uff1a\u901a\u8fc7\u5b9a\u4e49\u5b50\u6d41\u7a0b\u4f9d\u8d56\u53ef\u4ee5\u5b9e\u73b0\u590d\u6742\u6d41\u7a0b\u94fe\u5f62\u6210<\/li>\n\n\n\n<li><strong><code>step_name\/flow_name<\/code><\/strong>\uff1a\u6b64\u9879\u5185\u5bb9\u4e3a\u5b50\u6d41\u7a0b\u7684\u8fd0\u884c\u76ee\u5f55\u7684\u540d\u79f0\uff0c\u652f\u6301\u591a\u5c42\u76ee\u5f55\u3002ex.<code>01_RCX\/cbest_125<\/code><\/li>\n\n\n\n<li><strong><code>step_id\/flow_id<\/code><\/strong>\uff1a\u6b64\u9879\u4e3a\u5b50\u6d41\u7a0b\u5bf9\u5e94\u7684FLOW_ID<\/li>\n\n\n\n<li><strong><code>&gt; &lt; +<\/code><\/strong>\uff1a\u8f93\u5165\u8f93\u51fa\u6620\u5c04\uff08<code>&gt;<\/code>\u8868\u793a\u8f93\u5165\uff0c<code>&lt;<\/code>\u8868\u793a\u8f93\u51fa\uff09\u4ee5\u53ca\u53c2\u6570\u4f20\u9012\uff08+\u8868\u793a\u53c2\u6570\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><strong>\u591a\u4e2astep\u7684Step Flow Definition\u6587\u4ef6\u6848\u4f8b<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">  DEFINE FLOW &nbsp;  521-DEF2SDF<br>  INPUT &nbsp; DEF_FILE = design.def<br>  INPUT &nbsp; VLOG_FILE =  design.v<br>  OUTPUT  SDF_FILE = design.sdf.gz<br>  OUTPUT  SPEF_FILE =  design.spef<br>  PARAM &nbsp; rc_corner = Cmax_WCL<br>  PARAM &nbsp; lib_corner = WC<br>\u200b<br>  STEP 01\/rcxt_spef  510-RCX<br>  &gt; DEF_FILE &nbsp;= design.def<br>  &lt; SPEF_FILE = design.spef<br>  + rc_corner = Cmax_WCL<br>  ;<br>  SUBFLOW 02\/spef2sdf 511-SPEF2SDF<br>  &gt; VLOG_FILE = design.v<br>  &gt; SPEF_FILE = design.spef<br>  &lt; SDF_FILE &nbsp;= design.sdf.gz<br>  + lib_corner = WC<br>  ;<br>\u200b<br>  END FLOW<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. \u57fa\u672c\u64cd\u4f5c\u6d41\u7a0b<\/strong><\/h2>\n\n\n\n<p>\u82af\u7247\u8bbe\u8ba1\u5de5\u7a0b\u5e08\u4e3b\u8981\u901a\u8fc7\u4f7f\u7528DFA\u6765\u5b9e\u73b0\u81ea\u52a8\u6784\u5efa\u51fa\u53ef\u6267\u884c\u7684EDA\u5de5\u4f5c\u73af\u5883\uff0c\u4ee5\u4e0b\u662f\u7528\u6237\u4f7f\u7528DFA\u6784\u5efa\u6d41\u7a0b\u7684\u57fa\u672c\u64cd\u4f5c\u6b65\u9aa4<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u64cd\u4f5c\u6b65\u9aa4<\/strong>\uff1a<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Source environment valuable<\/strong>\uff1a\u5728\u4f7f\u7528DFA\u524d\u5148source\u4f4d\u4e8eDOP\u4e2d\u5fc3\u76ee\u5f55\u4e0b\u7684\u73af\u5883\u53d8\u91cf\u811a\u672c\uff0c\u8fd9\u6837\u624d\u80fd\u4f7f\u7528DFA\u547d\u4ee4source \/path\/to\/DOP\/cshrc_dop<\/li>\n\n\n\n<li><strong>Checkout Ticket<\/strong>\uff1a\u82af\u7247\u8bbe\u8ba1\u5de5\u7a0b\u5e08\u4eceDFA\u4e2d\u5fc3\u8d44\u6599\u5e93\u4e2d\u4e0b\u8f7dPM\/CAD\u51c6\u5907\u7684Ticket\u6587\u4ef6\u5230\u672c\u5730\u5de5\u4f5c\u6267\u884c\u73af\u5883 dop ticket checkout &lt;Ticket file name&gt; &nbsp; &nbsp;<\/li>\n\n\n\n<li><strong>Edit Ticket<\/strong>\uff1a\u4f7f\u7528\u8005\u6839\u636e\u9700\u6c42\u4fee\u6539Ticket\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9\u53c2\u6570<\/li>\n\n\n\n<li><strong>Build Ticket<\/strong>\uff1a\u6839\u636eTicket\u5b9a\u4e49\u7684\u5185\u5bb9\u4ea7\u751f\u53ef\u6267\u884c\u7684EDA\u5de5\u4f5c\u73af\u5883\uff08create run directory &amp; Makefile\uff09,\u5305\u542b\u628a\u6240\u9700\u8981\u7684\u8f93\u5165\u8bbe\u8ba1\u6587\u6863\u4ee5\u53ca\u8bbe\u8ba1\u89c4\u8303\u4e0b\u8f7d\u5230\u5de5\u4f5c\u6267\u884c\u73af\u5883\uff0cEDA\u5de5\u5177\u8fd0\u884c\u6d41\u7a0b\u4e5f\u4f1a\u6839\u636eTicket\u6587\u4ef6\u4e2d\u7684\u53c2\u6570\u8fdb\u884c\u8c03\u8bd5\uff0c\u540c\u65f6\u4e5f\u4f1a\u5bf9\u8d44\u6599\u5b8c\u6574\u6027\u8fdb\u884c\u9a8c\u8bc1\uff0c\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4:dop ticket build &lt;Ticket file name&gt; \u5373\u53ef\u5c55\u5f00\u6d41\u7a0b\uff0c\u5176\u4e2dDFA\u6d41\u7a0b\u5c55\u5f00\u7684\u8fc7\u7a0b\u5982\u4e0b\u56fe\u6240\u793a\uff1a<img decoding=\"async\" src=\"https:\/\/youke1.picui.cn\/s1\/2025\/07\/25\/6882e2e5be917.png\" alt=\"build-flow.png\">\u4e4b\u540e\u4f1a\u6839\u636eticket\u4ee5\u53cadefinition\u6587\u4ef6\u7684\u5185\u5bb9\u751f\u6210\u76ee\u5f55\u53c2\u8003\u5982\u4e0b\uff1a### \u5355\u4e2aSTEP\u7684flow\u5c55\u5f00\u540e\u76ee\u5f55\u7ed3\u6784 ###<br>ticket_run_dir<br>\u251c\u2500\u2500.techlib -&gt; TLP\/techlib_config_file<br>\u251c\u2500\u2500.design -&gt; DVC\/phase\/block\/stage\/version<br>\u251c\u2500\u2500.script -&gt; DFA\/flow\/flow_stage_id<br>\u251c\u2500\u2500.inp$input_ref_id1 -&gt; .design\/input_file_name<br>\u251c\u2500\u2500.out$output_ref_id1 -&gt; ::main\/output_file_name<br>\u2514\u2500\u2500::main\/<br>&nbsp; &nbsp; \u251c\u2500\u2500script -&gt; ..\/.script\/flow_ref_id<br>&nbsp; &nbsp; \u251c\u2500\u2500input_file_name -&gt; ..\/.inp$input_ref_id1<br>&nbsp; &nbsp; \u2514\u2500\u2500Makefile -&gt; script\/Makefile.flow<br>&nbsp; &nbsp; &nbsp;<br>### \u591a\u4e2aSTEP\u7684flow\u5c55\u5f00\u540e\u76ee\u5f55\u7ed3\u6784 ###<br>ticket_run_dir<br>\u251c\u2500\u2500.techlib -&gt; TLP\/techlib_config_file<br>\u251c\u2500\u2500.design -&gt; DVC\/phase\/block\/stage\/version<br>\u251c\u2500\u2500.script -&gt; DFA\/flow\/flow_stage_id<br>\u251c\u2500\u2500.inp$input_ref_id1 -&gt; .design\/input_file_name1<br>\u251c\u2500\u2500.inp$input_ref_id2 -&gt; .design\/input_file_name2<br>\u251c\u2500\u2500.out$output_ref_id1 -&gt; step_dir1\/.out$output_ref_id1<br>\u251c\u2500\u2500.out$output_ref_id2 -&gt; step_dir2\/.out$output_ref_id2<br>\u251c\u2500\u2500::main\/<br>| &nbsp; &nbsp; \u251c\u2500\u2500script -&gt; ..\/.script\/flow_ref_id<br>| &nbsp; &nbsp; \u251c\u2500\u2500input_file_name1 -&gt; ..\/.inp$input_ref_id1<br>| &nbsp; &nbsp; \u251c\u2500\u2500input_file_name2 -&gt; ..\/.inp$input_ref_id2<br>| &nbsp; &nbsp; \u251c\u2500\u2500output_file_name1 -&gt; ..\/.out$output_ref_id1<br>| &nbsp; \u251c\u2500\u2500output_file_name2 -&gt; ..\/.out$output_ref_id2<br>| &nbsp; &nbsp; \u2514\u2500\u2500Makefile -&gt; script\/Makefile.flow<br>\u251c\u2500\u2500 step_dir1\/ &nbsp; &nbsp;<br>| \u251c\u2500\u2500.techlib -&gt; ..\/.techlib<br>| \u251c\u2500\u2500.design -&gt; ..\/.design<br>| \u251c\u2500\u2500.script -&gt; ..\/.script<br>| \u251c\u2500\u2500.inp$input_ref_id1 -&gt; ..\/input_file_name1<br>| \u251c\u2500\u2500.out$output_ref_id1 -&gt; ::main\/output_file_name1<br>| \u2514\u2500\u2500::main\/<br>| &nbsp; &nbsp; \u251c\u2500\u2500script -&gt; ..\/.script\/flow_ref_id<br>| &nbsp; &nbsp; \u251c\u2500\u2500input_file_name1 -&gt; ..\/.inp$input_ref_id1<br>| &nbsp; &nbsp; \u2514\u2500\u2500Makefile -&gt; script\/Makefile.flow<br>\u2514\u2500\u2500 step_dir2\/ &nbsp; &nbsp;<br>\u251c\u2500\u2500.techlib -&gt; ..\/.techlib<br>\u251c\u2500\u2500.design -&gt; ..\/.design<br>\u251c\u2500\u2500.script -&gt; ..\/.script<br>\u251c\u2500\u2500.inp$input_ref_id2 -&gt; ..\/input_file_name2<br>\u251c\u2500\u2500.inp$output_ref_id1 -&gt; ..\/step_dir1\/.out$output_ref_id1 &nbsp; &nbsp; ### \u5404\u4e2aSTEP\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\u901a\u8fc7\u94fe\u63a5\u6784\u5efa<br>\u251c\u2500\u2500.out$output_ref_id2 -&gt; ::main\/output_file_name2<br>\u2514\u2500\u2500::main\/<br>&nbsp; &nbsp; \u251c\u2500\u2500script -&gt; ..\/.script\/flow_ref_id<br>&nbsp; &nbsp; \u251c\u2500\u2500input_file_name2 -&gt; ..\/.inp$input_ref_id2<br>&nbsp; &nbsp; \u2514\u2500\u2500Makefile -&gt; script\/Makefile.flow\u4f1a\u5728::main\u76ee\u5f55\u4e0b\u751f\u6210Makefile\u6587\u4ef6\uff0c\u53c2\u8003\u5982\u4e0b\uff1a### STEP\u4e0b\u7684Makefile\u6587\u4ef6 ###<br>FLOW &nbsp; &nbsp; &nbsp; &nbsp; := 510-RCX<br>INPUT &nbsp; &nbsp; &nbsp; := input_file_name<br>OUTPUT &nbsp; &nbsp; &nbsp; := output_file_name<br>TOOL &nbsp; &nbsp; &nbsp; &nbsp; := synopsys_starrc_shell_U<br>TOOL_OPTION := -2022.12-SP5-2<br>QUEUE &nbsp; &nbsp; &nbsp; := BE<br>QUEUE_OPTION := &#8211;mem=64G -c 4<br>PRE_CHECK &nbsp; := script\/run_precheck<br>EXEC &nbsp; &nbsp; &nbsp; &nbsp; := script\/run_execute<br>POST_CHECK &nbsp; := script\/run_postcheck<br>EXEC_DQI &nbsp; &nbsp; := script\/run_execdqi<br>run :<br>&nbsp; &nbsp; &nbsp; ..\/.dfa\/dfa_run.sh<br>precheck :$(INPUT)<br>&nbsp; &nbsp; &nbsp; &nbsp;$(PRE_CHECK) | tee precheck.log<br>$(OUTPUT) :precheck<br>&nbsp; &nbsp; &nbsp; &nbsp;$(EXEC) | tee execute.log<br>postcheck :$(OUTPUT)<br>&nbsp; &nbsp; &nbsp; &nbsp;$(POST_CHECK) | tee postcheck.log<br>dqi :$(OUTPUT)<br>&nbsp; &nbsp; &nbsp; dqi_extractor.py &#8211;spec .\/script\/dqi_ext.spec &#8211;dfd ..\/.dfa\/dfd.tcl &#8211;ticket ..\/.dfa\/ticket.tcl<br>&nbsp; &nbsp; &nbsp; dqi_generate_rpt.py &#8211;flow_dqi_value_path .\/.dqi &#8211;flow_dqi_path ${DFA_FOLDER}\/dqi_def &#8211;output .\/dqi_rpt.json<br>&nbsp; &nbsp; &nbsp; cksum dqi_rpt.json &gt; ..\/.dfa\/.dqi_cksum<br>clean :<br>&nbsp; &nbsp; &nbsp; &nbsp;rm -rf .\/.dqi\/* .\/dfa.log .\/dfa_run_*.log<br>&nbsp; &nbsp; &nbsp; dfa_set_status.sh 00_dfa_Init<br>&nbsp; &nbsp; &nbsp; script\/f_flow_clean.run<br>rerun :<br>&nbsp; &nbsp; &nbsp; &nbsp;make clean<br>&nbsp; &nbsp; &nbsp; &nbsp;make run<br>kill :<br>&nbsp; &nbsp; &nbsp; dfaPid=$$(cat ..\/.dfa\/dfa.pid)<br>&nbsp; &nbsp; &nbsp; &nbsp;kill -9 $$dfaPid<br>checkin :<br>&nbsp; &nbsp; &nbsp; dfa_checkin.py<br>&nbsp; &nbsp; &nbsp; &nbsp;<br>### \u591a\u4e2aSTEP\u6d41\u7a0b\u4e0b\u7684\u9876\u5c42Makefile\u6587\u4ef6 ###<br>FLOW &nbsp; &nbsp; := 521-DEF2SDF<br>INPUT &nbsp; &nbsp; := A.v design.def design.spef.gz design.v<br>OUTPUT &nbsp; := design.sdf.gz design.spef.gz<br>run:<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/510-RCX\/::main &amp;&amp; make run<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/511-SPEF2SDF\/::main &amp;&amp; make run<br>clean:<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/510-RCX\/::main &amp;&amp; make clean<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/511-SPEF2SDF\/::main &amp;&amp; make clean<br>kill:<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/510-RCX\/::main &amp;&amp; make kill<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/511-SPEF2SDF\/::main &amp;&amp; make kill<br>precheck:<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/510-RCX\/::main &amp;&amp; make precheck<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/511-SPEF2SDF\/::main &amp;&amp; make precheck<br>postcheck:<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/510-RCX\/::main &amp;&amp; make postcheck<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/511-SPEF2SDF\/::main &amp;&amp; make postcheck<br>dqi:<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/510-RCX\/::main &amp;&amp; make dqi<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/511-SPEF2SDF\/::main &amp;&amp; make dqi<br>checkin:<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/510-RCX\/::main &amp;&amp; make checkin<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/511-SPEF2SDF\/::main &amp;&amp; make checkin<br>rerun: clean run<br>design.sdf.gz: A.v design.spef.gz design.v<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/511-SPEF2SDF\/::main &amp;&amp; make design.sdf.gz<br>design.spef.gz: A.v design.def<br>&nbsp; &nbsp; &nbsp; &nbsp;cd ..\/510-RCX\/::main &amp;&amp; make design.spef.gz<strong>\u6ce8\uff1a<\/strong>::main\u76ee\u5f55\u4e3a\u8be5\u6d41\u7a0b\u7684\u4e3b\u8981\u8fd0\u884c\u76ee\u5f55\uff0c\u6d41\u7a0b\u811a\u672c\u90fd\u4f4d\u4e8e::main\/script\u76ee\u5f55\u4e4b\u4e0b\uff0c\u82e5\u811a\u672c\u4e2d\u6709\u9700\u8981\u8c03\u7528\u5176\u4f59\u811a\u672c\u7684\u8bdd\uff0c\u540c\u6837\u4f1a\u4f4d\u4e8e::main\/script\u76ee\u5f55\u4e4b\u4e0b\uff0c\u8bf7\u6ce8\u610f\u811a\u672c\u4e4b\u95f4\u7684\u76f8\u5bf9\u8def\u5f84\u8bbe\u7f6e<\/li>\n\n\n\n<li><strong>Execute Ticket<\/strong>\uff1a \u8c03\u7528\u6240\u9700\u7684EDA\u5de5\u5177\u6267\u884c\u8bbe\u8ba1\uff0c\u4ea7\u51fa\u8bbe\u8ba1\u8f93\u51fa\u6587\u6863\uff0c\u6b64\u9636\u6bb5\u4e5f\u53ef\u4ee5\u642d\u914d\u8bbe\u8ba1\u6d41\u7a0b\u7ba1\u63a7\u5de5\u5177\uff08DFA Job Manager\uff09\u5b9e\u65f6\u76d1\u63a7\u5de5\u5177\u6267\u884c\u72b6\u6001\uff0c\u5207\u6362\u5230::main\u76ee\u5f55\u4e0b\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1amake run<\/li>\n\n\n\n<li><strong>Checkin Design<\/strong>\uff1a\u5c06\u8be5\u6d41\u7a0b\u4ea7\u751f\u7684\u8bbe\u8ba1\u6570\u636e\u4ee5\u53ca\u62bd\u53d6\u7684\u91cd\u8981\u8bbe\u8ba1\u8d44\u6599\u4e0a\u4f20\u81f3DVC\u7684\u8bbe\u8ba1\u8d44\u6599\u5e93\u4e2d\u5fc3make checkin<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. \u6838\u5fc3\u529f\u80fd\u8be6\u89e3<\/strong><\/h2>\n\n\n\n<p>DFA \u652f\u6301\u4e09\u79cd\u4e3b\u8981\u7684\u6d41\u7a0b\u7c7b\u578b\uff1a<strong>\u5355\u4e00\u6d41\u7a0b\uff08<code>Single Flow<\/code>\uff09<\/strong>\u3001<strong>\u5c42\u6b21\u5316\u6d41\u7a0b\uff08<code>Hierarchical Flow<\/code>\uff09<\/strong>\u548c<strong>\u52a8\u6001\u6d41\u7a0b\uff08<code>Dynamic Flow<\/code>\uff09<\/strong>\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.1 \u5355\u4e00\u6d41\u7a0b\uff08Single flow\uff09<\/h3>\n\n\n\n<p>\u7528\u4e8e\u6267\u884c\u5355\u4e00\u7684 EDA \u4efb\u52a1\uff0c\u5982\u7efc\u5408\uff08Synthesis\uff09\u6216\u9759\u6001\u65f6\u5e8f\u5206\u6790\uff08STA\uff09\u3002\u5355\u4e00\u6d41\u7a0b\u662f\u6700\u57fa\u672c\u7684\u6d41\u7a0b\u7c7b\u578b\uff0c\u5b83\u5305\u542b\u9884\u68c0\u67e5\uff08PRECHECK\uff09\u3001\u4e3b\u6d41\u7a0b\uff08EXECUTE\uff09\u3001\u540e\u68c0\u67e5\uff08POSTCHECK\uff09\u548c\u751f\u6210\u8bbe\u8ba1\u8d28\u91cf\u6307\u6807\u62a5\u544a\uff08EXECDQI\uff09\u7b49\u6b65\u9aa4\u3002\u4ee5\u4e0b\u4e3a\u6d41\u7a0b\u8fd0\u884c\u65f6\u5404\u4e2a\u6d41\u7a0b\u811a\u672c\u95f4\u8fd0\u884c\u65f6\u7684\u6d41\u7a0b\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/youke1.picui.cn\/s1\/2025\/07\/25\/6882e2e5eee28.png\" alt=\"make_run.png\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9884\u68c0\u67e5\uff08PRE_CHECK\uff09<\/strong>\uff1a\u68c0\u67e5\u7528\u6237\u8f93\u5165\u5230ticket\u5185\u7684\u8f93\u5165\u6587\u4ef6\u4ee5\u53ca\u53c2\u6570\u662f\u5426\u5b58\u5728\u4ee5\u53ca\u662f\u5426\u5408\u7406\u3002<\/li>\n\n\n\n<li><strong>\u4e3b\u6d41\u7a0b\uff08EXEC\uff09<\/strong>\uff1a\u8bfb\u53d6Flow\u5b9a\u4e49\u4e0e\u7528\u6237\u8bbe\u5b9a\u7684Ticket\u7684\u5185\u5bb9\uff0c\u4ea7\u751fEDA\u5de5\u4f5c\u73af\u5883\u5e76\u6267\u884cEDA<\/li>\n\n\n\n<li><strong>\u540e\u68c0\u67e5\uff08POST_CHECK\uff09<\/strong>\uff1a\u5f53EDA\u6267\u884c\u7ed3\u675f\u540e\u5bf9EDA\u7ed3\u679c\u8fdb\u884c\u590d\u67e5\uff0c\u786e\u4fddEDA\u6b63\u5e38\u7ed3\u675f\u5de5\u4f5c<\/li>\n\n\n\n<li><strong>\u751f\u6210 DQI \u62a5\u544a\uff08EXECDQI\uff09<\/strong>\uff1a\u62bd\u53d6\u6267\u884cEDA\u540e\u4ea7\u51fa\u7684\u62a5\u544a\u4e2d\u7684\u91cd\u8981\u9879\u76ee\u5e76\u5f52\u7eb3\u6210DQI\u62a5\u544a<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5.2 \u5c42\u6b21\u5316\u6d41\u7a0b\uff08Hierarchical Flow\uff09<\/h3>\n\n\n\n<p>\u5c06\u591a\u4e2a\u5355\u4e00\u6d41\u7a0b\u7ec4\u5408\u8d77\u6765\uff0c\u5f62\u6210\u66f4\u590d\u6742\u7684\u6d41\u7a0b\u3002\u5c42\u6b21\u5316\u6d41\u7a0b\u53ef\u4ee5\u7528\u4e8e\u5904\u7406\u591a\u6b65\u9aa4\u7684\u8bbe\u8ba1\u4efb\u52a1\uff0c\u5982\u5148\u8fdb\u884c\u7efc\u5408\uff0c\u518d\u8fdb\u884c\u5e03\u5c40\u5e03\u7ebf\uff08Place and Route\uff09\uff0c\u6700\u540e\u8fdb\u884c\u65f6\u5e8f\u5206\u6790\u3002DFA \u4f1a\u6839\u636e\u5b50\u6d41\u7a0b\u7684\u8f93\u5165\u6587\u4ef6\u548c\u8f93\u51fa\u6587\u4ef6\u7684\u5173\u7cfb\uff0c\u81ea\u52a8\u751f\u6210 Makefile \u6587\u4ef6\uff0c\u63a7\u5236\u5b50\u6d41\u7a0b\u7684\u6267\u884c\u987a\u5e8f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.3 \u52a8\u6001\u6d41\u7a0b\uff08Dynamic Flow\uff09<\/h3>\n\n\n\n<p>\u7528\u4e8e\u5904\u7406\u89c4\u6a21\u5927\u4e14\u4f1a\u53d8\u52a8\u7684\u6d41\u7a0b\uff0c\u5982\u591a\u6a21\u5f0f\u591a\u89d2\uff08MMMC\uff09\u6d41\u7a0b\u3002\u52a8\u6001\u6d41\u7a0b\u53ef\u4ee5\u6839\u636e\u7528\u6237\u6307\u5b9a\u7684\u53c2\u6570\u52a8\u6001\u751f\u6210\u591a\u4e2a\u5b50\u6d41\u7a0b\uff0cDFA \u4f1a\u81ea\u52a8\u7ba1\u7406\u8fd9\u4e9b\u5b50\u6d41\u7a0b\u7684\u6267\u884c\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. \u9ad8\u7ea7\u529f\u80fd\u4e0e\u6280\u5de7<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">6.1 \u6d41\u7a0b\u5f00\u53d1\u6b65\u9aa4<\/h3>\n\n\n\n<p>\u6d41\u7a0b\u8bbe\u8ba1\u5de5\u7a0b\u5e08\u4e3b\u8981\u662f\u8bbe\u8ba1\u6d41\u7a0b\uff0c\u4ee5\u4e0b\u662f\u7528\u6237\u4f7f\u7528DFA\u8bbe\u8ba1\u6d41\u7a0b\u7684\u57fa\u672c\u64cd\u4f5c\u6b65\u9aa4 \uff0c\u4ee5single flow\u4e3a\u4f8b\uff1a <strong>\u64cd\u4f5c\u6b65\u9aa4<\/strong>\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u786e\u8ba4Flow\u7f16\u53f7\u540d\u521b\u5efa\u6d41\u7a0b\u76ee\u5f55<\/strong>\uff1a\u786e\u8ba4flow\u7684\u5206\u7c7b\u4ee5\u53ca\u7f16\u53f7\u540d\uff0c\u7136\u540e\u5728DFA\u4e2d\u5fc3\u8d44\u6599\u5e93\u5efa\u7acbflow\u7684\u6587\u4ef6\u5939\uff0c\u5373\u5728DFA\u4e2d\u5fc3\u8d44\u6599\u5e93\u5efa\u7acb<code>flow<\/code>\/<code>&lt;flow_stage_id&gt;<\/code>\/<code>&lt;flow_ref_id&gt;<\/code>\u76ee\u5f55 \u3002ex.<code>flow\/500-TIMING\/510_RCX<\/code><\/li>\n\n\n\n<li><strong>\u51c6\u5907Definition\u6587\u4ef6<\/strong>\uff1a \u5728<code>flow<\/code>\/<code>&lt;flow_stage_id&gt;<\/code>\/<code>&lt;flow_ref_id&gt;<\/code>\u4e0b\u51c6\u5907<code>&lt;flow_ref_id&gt;.dfd<\/code>\u6587\u4ef6\uff0cdefinition\u6587\u4ef6\u9700\u8981\u4e25\u683c\u9075\u5b88\u524d\u6587\u63d0\u5230\u7684\u683c\u5f0f\u3002ex.<code>510_RCX.dfd<\/code><\/li>\n\n\n\n<li><strong>\u51c6\u5907Ticket\u6587\u4ef6<\/strong>\uff1a\u51c6\u5907<code>T&lt;FLOW_ID&gt;.ticket<\/code>\u653e\u5728DFA\u4e2d\u5fc3\u8d44\u6599\u5e93\u7684ticket\u6587\u4ef6\u5939\u4e0b\uff0cticket\u6587\u4ef6\u9700\u8981\u4e25\u683c\u9075\u5b88\u524d\u6587\u63d0\u5230\u7684\u683c\u5f0f\uff0c\u4e14\u6b64\u6587\u6863\u9762\u5411\u4f7f\u7528\u8005\u4f5c\u8bbe\u5b9a\uff0c\u56e0\u6b64\u9700\u8981\u7ed9\u6bcf\u4e2a\u53c2\u6570\u586b\u5199\u5b8c\u6574\u7684\u6ce8\u91ca\uff0c\u8bf4\u660e\u8be5\u53c2\u6570\u7684\u610f\u4e49\u4e0e\u53ef\u63a5\u53d7\u7684\u8bbe\u5b9a\u4e3a\u4f55<\/li>\n\n\n\n<li><strong>\u5728<code>flow<\/code>\/<code>&lt;flow_stage_id&gt;<\/code>\/<code>&lt;flow_ref_id&gt;<\/code>\u4e0b\u51c6\u5907run_precheck\uff0crun_execute\uff0crun_postcheck\uff0crun_flowclean\u811a\u672c<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li><strong><code>run_precheck<\/code><\/strong>:\u68c0\u67e5\u7528\u6237\u8f93\u5165\u5230ticket\u5185\u7684\u8f93\u5165\u6587\u4ef6\u4ee5\u53ca\u53c2\u6570\u662f\u5426\u5b58\u5728\u4ee5\u53ca\u662f\u5426\u5408\u7406\uff0c\u9700\u8981\u6309\u987a\u5e8f\u5148\u540esource dfd.tcl\u4ee5\u53caticket.tcl\u8fd9\u4e24\u4efd\u6863\u6848\uff0c \u5c06DFA\u7684\u53c2\u6570\u4f20\u9012\u7ed9\u6d41\u7a0b\u811a\u672c\u4e2d\u3002\u5176\u4e2d\u6709\u9519\u8bef\u5219exit1\u8df3\u51fa\u811a\u672c\uff0c\u6ca1\u6709\u5219exit 0\u7ee7\u7eed\u8fd0\u884c\u3002\u53ef\u53c2\u8003\u4ee5\u4e0b\u793a\u4f8b\u6587\u4ef6\uff1a#!\/usr\/bin\/tclsh<br>source ..\/.dfa\/dfd.tcl &nbsp; &nbsp; &nbsp; &nbsp;<br>source ..\/.dfa\/ticket.tcl &nbsp; &nbsp;#\u9700\u8981\u6309\u987a\u5e8f\u5148\u540esource\u8fd9\u4e24\u4e2atcl\u6587\u4ef6\uff0c\u4f20\u9012DFA flow\u7684\u53c2\u6570 &nbsp; &nbsp; &nbsp;<br>\u200b<br>if {[info exists NETLIST_FILE]} {<br>&nbsp;if {$NETLIST_FILE eq &#8220;&#8221;} {<br>&nbsp; &nbsp;puts &#8220;\\[Error 5C0_STA\\] please assign for I_NETLIST_FILE in ticket file&#8221;<br>&nbsp; &nbsp;exit 1<br>} else {<br>&nbsp; &nbsp;if {[file exist $NETLIST_FILE] == 0} {<br>&nbsp; &nbsp; &nbsp;puts &#8220;\\[Error 5C0_STA\\] file($I_NETLIST_FILE) isn&#8217;t existed&#8221;<br>&nbsp; &nbsp; &nbsp;exit 1<br>&nbsp; }<br>}<br>} else {<br>&nbsp;puts &#8220;\\[Error 5C0_STA\\] NETLIST_FILE is required in ticket file&#8221;<br>&nbsp;exit 1<br>}<br>if {[info exists SPEF_FILE]} {<br>&nbsp;if {$SPEF_FILE eq &#8220;&#8221;} {<br>&nbsp; &nbsp;puts &#8220;\\[Error 5C0_STA\\] please assign for SPEF_FILE in ticket file&#8221;<br>&nbsp; &nbsp;exit 1<br>} else {<br>&nbsp; &nbsp;if {[file exist $I_SPEF_FILE] == 0} {<br>&nbsp; &nbsp; &nbsp;puts &#8220;\\[Error 5C0_STA\\] file($I_SPEF_FILE) isn&#8217;t existed&#8221;<br>&nbsp; &nbsp; &nbsp;exit 1<br>&nbsp; }<br>}<br>} else {<br>&nbsp;puts &#8220;\\[Error 5C0_STA\\] I_SPEF is required in ticket file&#8221;<br>&nbsp;exit 1<br>}<br>after 5000<br>exit 0<br>&nbsp;<\/li>\n\n\n\n<li><strong><code>run_execute<\/code><\/strong>\uff1a\u8bfb\u53d6Flow\u5b9a\u4e49\u4e0e\u7528\u6237\u8bbe\u5b9a\u7684Ticket\u7684\u5185\u5bb9\uff0c\u4ea7\u751fEDA\u5de5\u4f5c\u73af\u5883\u5e76\u6267\u884cEDA \uff0c\u540c\u6837\u9700\u8981\u6309\u987a\u5e8f\u5148\u540esource dfd.tcl\u4ee5\u53caticket.tcl\u8fd9\u4e24\u4efd\u6863\u6848\uff0c \u5c06DFA\u7684\u53c2\u6570\u4f20\u9012\u7ed9\u6d41\u7a0b\u811a\u672c\u4e2d\u3002\u53ef\u53c2\u8003\u4ee5\u4e0b\u793a\u4f8b\u6587\u4ef6\uff1a#!\/usr\/bin\/env tclsh<br>\u200b<br>source ..\/.dfa\/dfd.tcl<br>source ..\/.dfa\/ticket.tcl<br>\u200b<br>set template_file &#8220;script\/clp.tcl&#8221;<br>set output_file &#8220;clp.tcl&#8221;<br>\u200b<br>\u200b<br>if {![file exists $template_file]} {<br>&nbsp; &nbsp;error &#8220;Template file &#8216;$template_file&#8217; does not exist!&#8221;<br>}<br>\u200b<br>set f [open $template_file r]<br>set content [read $f]<br>close $f<br>\u200b<br>set replacements [list \\<br>&nbsp; &nbsp;&#8220;&lt;tech_file&gt;&#8221; $TECH_FILE \\<br>&nbsp; &nbsp;&#8220;&lt;netlist_file&gt;&#8221; $NETLIST_FILE \\<br>&nbsp; &nbsp;&#8220;&lt;upf_file&gt;&#8221; $UPF_FILE \\<br>&nbsp; &nbsp;&#8220;&lt;analysis_style&gt;&#8221; $ANALYSIS_STYLE \\<br>&nbsp; &nbsp;&#8220;&lt;clp_rpt&gt;&#8221; $CLP_RPT \\<br>]<br>set content [string map $replacements $content]<br>set out [open $output_file w]<br>puts -nonewline $out $content<br>close $out<br>\u200b<br>exec echo &#8220;#!\/usr\/bin\/csh&#8221; &gt;run.csh<br>exec echo &#8220;module load $TOOL$TOOL_OPTION&#8221; &gt;&gt;run.csh<br>exec echo &#8220;lec -lpgxl -lp -verify -nogui -dofile clp.tcl&#8221; &gt;&gt;run.csh<br>exec chmod 755 .\/run.csh<br>\u200b<br>exec .\/run.csh<br>\u200b<br>exit 0<\/li>\n\n\n\n<li><strong><code>run_postcheck<\/code><\/strong>\uff1a\u5f53EDA\u6267\u884c\u7ed3\u675f\u540e\u5bf9EDA\u7ed3\u679c\u8fdb\u884c\u590d\u67e5\uff0c\u786e\u4fddEDA\u6b63\u5e38\u7ed3\u675f\u5de5\u4f5c\uff0c\u5176\u4e2d\u811a\u672c\u68c0\u6d4b\u5230\u6709\u9519\u5219exit 1 \u8df3\u51fa\u811a\u672c\uff0c\u6ca1\u6709\u5219exit 0\uff0c\u53ef\u53c2\u8003\u4ee5\u4e0b\u793a\u4f8b\u6587\u4ef6\uff1a#!\/bin\/tcsh<br>&nbsp;<br># read EDA tool report<br>set hit = `grep Failed .\/PTSI*.log`<br>if (&#8220;$hit&#8221; != &#8220;&#8221;) then<br>&nbsp;echo &#8220;[Error 5C0_STA] Post Check Failed, reason: $hit&#8221;<br>&nbsp;exit 1<br>endif<br>\u200b<br>exit 0<\/li>\n\n\n\n<li><strong><code>run_flowclean<\/code><\/strong>\uff1a\u6b64\u811a\u672c\u7528\u4e8e\u7528\u6237\u5e0c\u671b\u91cd\u65b0\u8fd0\u884c\u6b64\u6d41\u7a0b\u65f6\uff0c\u5220\u9664\u4e0a\u4e00\u6b21\u8fd0\u884c\u6b64\u6d41\u7a0b\u5728::main\u76ee\u5f55\u4e0b\u6240\u4ea7\u51fa\u7684\u6587\u4ef6\uff0c\u53ef\u53c2\u8003\u4ee5\u4e0b\u793a\u4f8b\u6587\u4ef6\uff1a#!\/usr\/bin\/tclsh<br>&nbsp;<br>source ..\/.dfa\/dfd.tcl<br>source ..\/.dfa\/ticket.tcl<br>\u200b<br># delete all files generated by this flow<br>exec rm -rf slurm* run* clp.tcl clp2html dfa* .dqi dqi*<br>\u200b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u5728<code>flow<\/code>\/<code>&lt;flow_stage_id&gt;<\/code>\/<code>&lt;flow_ref_id&gt;<\/code>\u4e0b\u51c6\u5907dqi_ext.spec\u6587\u4ef6\u6216run_execudqi\u6587\u4ef6<\/strong>dqi_ext.spec\u6587\u4ef6\u4e2d\u9700\u8981\u63cf\u8ff0\u5982\u4f55\u4ece\u5404\u7c7b EDA \u62a5\u544a\u4e2d\u62bd\u53d6\u6570\u636e\uff0c\u5176\u683c\u5f0f\u5982\u4e0b\uff1a<ul><li>\u6bcf\u4e00\u884c\u4ee3\u8868\u4e00\u4e2a\u5f85\u63d0\u53d6\u7684 DQI \u6761\u76ee\u3002<\/li><li>\u4f7f\u7528 <strong>Tab (<code>\\t<\/code>)<\/strong> \u4f5c\u4e3a\u5b57\u6bb5\u5206\u9694\u7b26\u3002<\/li><li><code>#<\/code> \u5f00\u5934\u4e3a\u6ce8\u91ca\u884c\uff0c\u5c06\u88ab\u5ffd\u7565\u3002<\/li><\/ul><strong>\u5b57\u6bb5\u5b9a\u4e49<\/strong>\u5e8f\u53f7\u5b57\u6bb5\u540d\u63cf\u8ff01<strong><code>&lt;category&gt;\/&lt;DQI_ID&gt;<\/code><\/strong>\u7c7b\u522b\u548cDQI_ID\uff0c\u7528\u4e8e\u8f93\u51fa\u8def\u5f84\u548c\u6587\u4ef6\u7684\u540d\u5b57\u3002ex.510-RCX\/RCX-0012<strong><code>Report_path<\/code><\/strong>\u6240\u9700\u63d0\u53d6dqi\u7684\u6587\u4ef6\u7684\u8def\u5f84\uff0c\u53ef\u4ee5\u4f7f\u7528ticket\u548cdfd\u6587\u4ef6\u4e2d\u7684\u53d8\u91cf3<strong><code>Simple_regex<\/code><\/strong>\u7528\u4e8e\u63d0\u53d6\u503c\u7684\u6b63\u503c\u8868\u8fbe\u5f0f4<strong><code>Only_extract_first<\/code><\/strong>&lt; true | false &gt;\uff0c\u7528\u4e8e\u5224\u65ad\u662f\u5426\u53ea\u63d0\u53d6\u7b2c\u4e00\u4e2a\u5339\u914d\u98795<strong><code>Default_value<\/code><\/strong>\u5982\u679c\u627e\u4e0d\u5230\u5339\u914d\u9879\u5219\u4f7f\u7528\u8fd9\u4e2a\u9ed8\u8ba4\u503c6<strong><code>Complex_match_script<\/code><\/strong>\u5f53\u67d0\u4e2adqi value\u96be\u4ee5\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u63d0\u53d6\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528\u811a\u672c\u63d0\u53d6value\u503c\uff0c\u6b64\u9879\u4e3a\u811a\u672c\u7684\u8def\u5f84\u586b\u5199\u680f\u4f4d<strong>dqi_ext.spec\u6587\u4ef6\u793a\u4f8b<\/strong># &lt;category&gt;\/&lt;DQI_ID&gt;\\tReport_path\\tSimple_regex\\tOnly_extract_first\\tDefault_value\\tComplex_match_script<br>361-SCAN_DC\/SCAN_DC_INSERT_0001 REPORT\/$RPT \/^Total number of test points : (\\d+)\/ true &nbsp; 0 &nbsp; none<br>361-SCAN_DC\/SCAN_DC_INSERT_0002 REPORT\/$RPT \/^Number of Autofix test points: (\\d+)\/ false &nbsp; 0 &nbsp; nonedqi_ext.spec\u6587\u4ef6\u4e2d\u7684\u6bcf\u4e00\u884c\u90fd\u4f1a\u63d0\u53d6\u51fa\u4e00\u4efd.val\u6587\u4ef6\u5230::main\/.dqi\u76ee\u5f55\u4e0b\uff0c.val\u6587\u4ef6\u8bb0\u5f55\u6bcf\u4e2aDQI\u6307\u6807\u7684\u5b9e\u9645\u8f93\u51fa\u7ed3\u679c\uff0c\u5176\u547d\u540d\u683c\u5f0f\u4e3a<code>&lt;DQI_ID&gt;.val<\/code>\uff0c\u5176\u6587\u4ef6\u5185\u5bb9\u683c\u5f0f\u5982\u4e0b\uff1a &lt;VALUE&gt; &nbsp; &lt;DATE_TIME&gt; &nbsp; &nbsp; &nbsp; &nbsp; &lt;PATH&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ATTACHMENT&gt;<br>ex.5616 &nbsp; 20250610_141306 &nbsp; \/path\/to\/report:10 &nbsp; &nbsp; none<strong>\u5b57\u6bb5\u8bf4\u660e<\/strong>\u5b57\u6bb5\u540d\u63cf\u8ff0<strong><code>VALUE<\/code><\/strong>\u6570\u503c\u5b57\u6bb5\uff0c\u7cfb\u7edf\u53ea\u8bfb\u53d6\u7b2c\u4e00\u884c\u7684\u8be5\u503c\u8fdb\u884c\u6761\u4ef6\u5224\u65ad<strong><code>DATE_TIME<\/code><\/strong>\u65f6\u95f4\u6233\uff0c\u683c\u5f0f\u4e3a <code>YYYYMMDD_HHMMSS<\/code>\uff0c\u53ef\u9009<strong><code>PATH<\/code><\/strong>\u539f\u59cb\u62a5\u544a\u8def\u5f84\u53ca\u884c\u53f7\u4fe1\u606f\uff0c\u53ef\u9009<strong><code>ATTACHMENT<\/code><\/strong>\u9644\u4ef6\u8bf4\u660e\u3001\u5907\u6ce8\u6216\u6bd4\u5bf9\u6765\u6e90\u4fe1\u606f\uff0c\u53ef\u9009<strong>\u6ce8\u610f\u4e8b\u9879<\/strong><ol start=\"\"><li>\u7cfb\u7edf\u53ea\u8bfb\u53d6 <code>.val<\/code> \u6587\u4ef6\u7684\u7b2c\u4e00\u884c <code>VALUE<\/code> \u5b57\u6bb5\uff1b<\/li><li>\u5982\u679c\u6587\u4ef6\u7f3a\u5931\uff0c\u7cfb\u7edf\u5c06\u62a5\u9519\u5e76\u4e2d\u6b62\uff1b<\/li><li>\u5982\u679c\u65e0\u6cd5\u5c06 <code>VALUE<\/code> \u8f6c\u6362\u4e3a\u6570\u503c\u7c7b\u578b\uff0c\u5219\u8be5\u6761\u4ef6\u81ea\u52a8\u5224\u5b9a\u4e3a\u4e0d\u6ee1\u8db3\uff1b<\/li><li><code>.val<\/code> \u7684\u6570\u503c\u7c7b\u578b\u9700\u4e0e <code>.dqi<\/code> \u4e2d\u7684 <code>DATA_TYPE<\/code> \u4e00\u81f4\uff1a<ul><li><code>real<\/code>: float\uff0c\u5982 <code>123.45<\/code><\/li><li><code>integer<\/code>: int\uff0c\u5982 <code>100<\/code><\/li><li><code>bool<\/code>: <code>\"true\"<\/code> or <code>\"false\"<\/code>\uff08\u6682\u4e0d\u63a8\u8350\uff09<\/li><li><code>string<\/code>: \u4efb\u610f\u6587\u672c\uff08\u6682\u4e0d\u652f\u6301\u53c2\u4e0e\u8fd0\u7b97\uff09<\/li><\/ul><\/li><\/ol>\u5982\u679c\u4e0d\u4f7f\u7528dqi_ext.spec\u53bb\u62bd\u53d6\u751f\u6210.val\u6587\u4ef6\u7684\u8bdd\uff0cflow designer\u53ef\u4ee5\u81ea\u884c\u51c6\u5907<strong><code>run_execdqi<\/code><\/strong>\u811a\u672c\u53bb\u62bd\u53d6\u6b64flow\u7684\u6240\u6709\u7684.val\u6587\u4ef6\uff0c\u53ea\u8981\u62bd\u53d6\u51fa.val\u6587\u4ef6\u9075\u5faa\u4ee5\u4e0a\u683c\u5f0f\u8981\u6c42\u5373\u53ef\uff0c<code>run_execdqi<\/code>\u811a\u672c\u53ef\u53c2\u8003\u4e0b\u9762\u811a\u672c\uff1a#!\/usr\/bin\/tclsh<br>\u200b<br>source ..\/.dfa\/dfd.tcl<br>source ..\/.dfa\/ticket.tcl<br>\u200b<br>exec .\/script\/CLP2HTML<br>\u200b<br>set error_count 0<br>set warning_count 0<br>set total_severity 0<br>\u200b<br>if {[file exists &#8220;1801.rpt&#8221;]} {<br>&nbsp; &nbsp;set file_handle [open &#8220;1801.rpt&#8221; r]<br>&nbsp; &nbsp;while {[gets $file_handle line] &gt;= 0} {<br>&nbsp; &nbsp; &nbsp; &nbsp;if {[regexp {Severity:\\s*Error\\y} $line]} {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;incr error_count<br>&nbsp; &nbsp; &nbsp; } elseif {[regexp {Severity:\\s*Warning\\y} $line]} {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;incr warning_count<br>&nbsp; &nbsp; &nbsp; }<br>&nbsp; }<br>&nbsp; &nbsp;close $file_handle<br>} else {<br>&nbsp; &nbsp;puts stderr &#8220;[Error] 1801.rpt is not exist&#8221;<br>&nbsp; &nbsp;exit 1<br>}<br>\u200b<br>set total_count [expr {$error_count + $warning_count}]<br>\u200b<br>set timestamp [clock format [clock seconds] -format &#8220;%Y%m%d_%H%M%S&#8221;]<br>set rpt_path [file normalize &#8220;1801.rpt&#8221;]<br>set clp2html_path &#8220;[file normalize &#8220;clp2html&#8221;]\/clp2html.html&#8221;<br>\u200b<br>exec mkdir -p &#8220;.dqi\/4A0_CLP&#8221;<br>set output_file [open &#8220;.dqi\/4A0_CLP\/CLP_001.val&#8221; w]<br>puts $output_file &#8220;$total_count\\t$timestamp\\t$rpt_path\\t$clp2html_path&#8221;<br>close $output_file<\/li>\n\n\n\n<li><strong>\u5728<code>dfa\/dqi_def\/&lt;flow_stage_id&gt;\/&lt;category&gt;<\/code>\u4e0b\u51c6\u5907<code>&lt;DQI_ID&gt;.dqi<\/code>\u6587\u4ef6<\/strong>&lt;DQI_ID&gt;.dqi\u6587\u4ef6\u4e2d\u5b9a\u4e49\u4e86\u5404\u79cd\u72b6\u6001\u6761\u4ef6\uff08STATUS_NAME \u4e0e CRITERIA\uff09\uff0c\u6bcf\u4e2a <code>.dqi<\/code> \u6587\u4ef6\u5bf9\u5e94\u4e00\u4e2a\u8bbe\u8ba1\u8d28\u91cf\u6307\u6807\uff08DQI\uff09\uff0c\u5b9a\u4e49\u5176\u53d6\u503c\u3001\u5355\u4f4d\u53ca\u5404\u4e2a\u72b6\u6001\uff08\u5982 Pass\u3001Fail\uff09\u7684\u5224\u65ad\u6761\u4ef6\uff0c\u4ee5\u4e0b\u4e3a\u5176\u6587\u4ef6\u7ed3\u6784\uff08\u6b64\u6587\u4ef6\u540cdqi_ext.spec\u76f8\u540c\uff0c\u53ea\u80fd\u901a\u8fc7<strong>Tab<\/strong>\u4f5c\u4e3a\u5206\u9694\uff09\uff1a[DQI_ID.dqi]<br>DQI_ID &nbsp; &nbsp; &nbsp; &nbsp; &lt;unique identifier&gt;<br>TITLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;short title&gt;<br>\u200b<br>DATA_TYPE &nbsp; &nbsp; &nbsp; &lt;integer | real | bool | string&gt;<br>DATA_UINT &nbsp; &nbsp; &nbsp; &lt;unit, e.g., %, mm2, count&gt;<br>DESCRIPTION &nbsp; &nbsp; &lt;description&gt;<br>REFERENCE &nbsp; &nbsp; &nbsp; &lt;document link or reference&gt;<br>\u200b<br>STATUS_NAME &nbsp; &nbsp; &lt;optional internal name&gt;<br>STATUS &nbsp; &nbsp; &lt;Pass | Fail | Warning&gt;<br>@CRITERIA = &lt;expression&gt;<br>;<br>\u200b<br>&#8230; more status blocks &#8230;<br>\u200b<br>DQI_END<strong>\u5b57\u6bb5\u8bf4\u660e<\/strong>\u5b57\u6bb5\u540d\u8bf4\u660e<code>DQI_ID<\/code>\u6307\u6807\u4ee3\u53f7\uff0c\u5e94\u4e0e\u6587\u4ef6\u540d\u4e00\u81f4<code>TITLE<\/code>\u7b80\u77ed\u6807\u9898<code>DATA_TYPE<\/code>\u6570\u636e\u7c7b\u578b\uff1a<code>integer<\/code>\u3001<code>real<\/code>\u3001<code>bool<\/code>\u3001<code>string<\/code><code>DATA_UNIT<\/code>\u6570\u636e\u5355\u4f4d\uff0c\u5982 <code>%<\/code>\u3001<code>count<\/code>\u3001<code>mm2<\/code> \u7b49<code>DESCRIPTION<\/code>\u8be6\u7ec6\u63cf\u8ff0<code>REFERENCE<\/code>\u5916\u90e8\u6587\u4ef6\u6216\u7f51\u9875\u53c2\u8003<strong>\u72b6\u6001\u5224\u65ad\u533a<\/strong>\u7c7b\u522b\u8fd0\u7b97\u7b26\u793a\u4f8b\u6bd4\u8f83\u8fd0\u7b97<code>==<\/code>, <code>!=<\/code>, <code>&lt;<\/code>, <code>&gt;<\/code>, <code>&lt;=<\/code>, <code>&gt;=<\/code><code>$FOO &gt; 100<\/code>\u903b\u8f91\u8fd0\u7b97<code>&amp;&amp;<\/code>, <code>||<\/code>, <code>!<\/code><code>$A &gt; 0 &amp;&amp; $B == 0<\/code>\u7b97\u672f\u8fd0\u7b97<code>+<\/code>, <code>-<\/code>, <code>*<\/code>, <code>\/<\/code><code>($X + $Y) \/ 2 &gt; 5<\/code>\u62ec\u53f7<code>\uff08\uff0c\uff09<\/code><code>($A &gt; 10)<\/code><strong>\u6ce8\u610f\u4e8b\u9879\uff1a<\/strong><ol start=\"\"><li>\u8868\u8fbe\u5f0f\u4e2d\u7684\u6240\u6709\u53d8\u91cf\u5e94\u4e3a<code>$&lt;DQI_ID&gt;<\/code>\uff0c\u7cfb\u7edf\u56de\u81ea\u52a8\u4ece.val\u6587\u4ef6\u4e2d\u8bfb\u53d6\u503c<\/li><li>\u6bcf\u4e2a\u72b6\u6001\u533a\u5757\u5fc5\u987b\u4ee5\u5206\u53f7 <code>;<\/code> \u7ed3\u675f<\/li><li>\u82e5\u4f7f\u7528\u591a\u4e2a\u53d8\u91cf\uff0c\u7cfb\u7edf\u5c06\u5206\u522b\u67e5\u627e\u5bf9\u5e94\u7684 <code>.val<\/code> \u6587\u4ef6<\/li><li>\u82e5\u627e\u4e0d\u5230\u67d0\u53d8\u91cf\u7684 <code>.val<\/code> \u6587\u4ef6\uff0c\u7cfb\u7edf\u5c06\u4e2d\u6b62\u5e76\u62a5\u9519<\/li><li>\u82e5 <code>.val<\/code> \u5b58\u5728\u4f46\u5185\u5bb9\u975e\u6cd5\u6216\u4e0d\u53ef\u8f6c\u4e3a\u6570\u5b57\uff0c\u8be5\u6761\u4ef6\u89c6\u4e3a\u4e0d\u5339\u914d<\/li><li>\u7cfb\u7edf\u5c06\u8fd4\u56de <strong>\u9996\u4e2a\u6ee1\u8db3\u6761\u4ef6\u7684 <code>STATUS<\/code> \u5b57\u6bb5\u503c<\/strong><\/li><\/ol><strong>\u793a\u4f8b\u5982\u4e0b<\/strong>\u5355\u53d8\u91cf\u793a\u4f8b\uff1a<br>DQI_ID &nbsp; &nbsp; &nbsp; &nbsp; AREA<br>TITLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Cell Area<br>DATA_TYPE &nbsp; &nbsp; &nbsp; real<br>DATA_UINT &nbsp; &nbsp; &nbsp; mm2<br>DESCRIPTION &nbsp; &nbsp; Total standard cell area<br>REFERENCE &nbsp; &nbsp; &nbsp; http:\/\/&#8230;<br>\u200b<br>STATUS_NAME &nbsp; &nbsp; pass_cond<br>STATUS &nbsp; &nbsp; Pass<br>@CRITERIA = $AREA &lt; 100.0<br>;<br>\u200b<br>STATUS_NAME &nbsp; &nbsp; fail_cond<br>STATUS &nbsp; &nbsp; Fail<br>@CRITERIA = $AREA &gt;= 100.0<br>;<br>\u200b<br>DQI_END<br>\u200b<br>\u200b<br>\u591a\u53d8\u91cf\u793a\u4f8b\uff1a<br>STATUS_NAME &nbsp; &nbsp; ok<br>STATUS &nbsp; &nbsp; Pass<br>@CRITERIA = $TP1 == 0 &amp;&amp; $TP2 == 0<br>;<br>\u200b<br>STATUS_NAME &nbsp; &nbsp; ng<br>STATUS &nbsp; &nbsp; Fail<br>@CRITERIA = $TP1 &gt; 0 || $TP2 &gt; 0<br>;<br>\u200b<br>DQI_END<\/li>\n\n\n\n<li><strong>\u5728<code>flow<\/code>\/<code>&lt;flow_stage_id&gt;<\/code>\/<code>&lt;flow_ref_id&gt;\/<\/code>\u4e0b\u51c6\u5907run_flow_checkin\u811a\u672c\u4ee5\u53ca\u5728<code>dop\/dvc\/stage\/&lt;stage_name&gt;\/<\/code>\u4e0b\u51c6\u5907<code>STG_REQ_FILE_LIST<\/code>\u6587\u4ef6<\/strong>\u6b64\u9636\u6bb5\u4e3a\u51b3\u5b9a\u5c06\u6b64\u6d41\u7a0b\u6240\u9700\u8981checkin\u5230DVC\u6570\u636e\u4e2d\u5fc3\u7684\u6570\u636e\uff0c\u9996\u5148\u9700\u8981\u5728<strong><code>dop\/dvc\/stage\/&lt;stage_name&gt;\/<\/code><\/strong>\u4e0b\u51c6\u5907<strong><code>STG_REQ_FILE_LIST<\/code><\/strong>\u6587\u4ef6\uff0c\u6b64\u6587\u4ef6\u4e3aDVC\u4e2d\u786e\u4fdd\u672c\u6d41\u7a0b\u5df2\u7ecf\u5c06\u6240\u9700\u7684\u6587\u4ef6\u5df2\u7ecfcheckin\u5230DVC\u6307\u5b9a\u8def\u5f84\u4e4b\u4e2d\u7684\u4e00\u4e2a\u6587\u4ef6\u6e05\u5355\uff0c\u6d41\u7a0b\u8bbe\u8ba1\u5e08\u5728\u5b9a\u4e49\u6b64\u6587\u4ef6\u7684\u65f6\u5019\u9700\u540c\u9879\u76ee\u8d1f\u8d23\u4eba\uff08PM\/PL\uff09\u6216\u4e3b\u7ba1\u5546\u5b9a\u6b64\u6d41\u7a0b\u4e2d\u6240\u9700checkin\u7684\u6587\u4ef6\u6e05\u5355\uff0c\u7136\u540e\u518d\u5c06\u6b64\u6e05\u5355\u5236\u4f5c\u6210<strong><code>STG_REQ_FILE_LIST<\/code><\/strong>\u6587\u4ef6\u7f6e\u4e8e<code>dop\/dvc\/stage\/&lt;stage_name&gt;\/<\/code>\u76ee\u5f55\u4e0b\uff0c\u7528\u4e8e\u540e\u7eedDVC\u5bf9\u5176\u5bf9\u5e94\u7248\u672c\u7684\u8bbe\u8ba1\u6587\u4ef6\u8fdb\u884c\u6821\u9a8c\uff0c\u6b64\u6587\u4ef6\u683c\u5f0f\u5982\u4e0b\uff1a<design_file_item> <operator> <expression1> <expression2> &#8230;\u5176\u4e2d\u6bcf\u4e00\u884c\u8868\u793a\u4e00\u4e2a\u8bbe\u8ba1\u6587\u4ef6\u7c7b\u578b\u7684\u68c0\u67e5\u89c4\u5219\uff0c\u4ee5\u4e0b\u4e3a\u5176\u8bed\u6cd5\u89c4\u5219\u8bf4\u660e\uff1a<ul><li><strong><code>&lt;design_file_item&gt;<\/code><\/strong>\uff1a\u903b\u8f91\u540d\u79f0\uff0c\u7528\u4e8e\u6807\u8bc6\u4e00\u7c7b\u8bbe\u8ba1\u6587\u4ef6\uff0c\u5982 <code>VERILOG_FILE<\/code>\u3001<code>SYMBOL_TABLE<\/code>\u3002<\/li><li><strong><code>&lt;operator&gt;<\/code><\/strong>\uff1a<ul><li><code>+=<\/code>\uff1a<strong>\u5fc5\u8981\u9879<\/strong>\uff0c\u5fc5\u987b\u81f3\u5c11\u5b58\u5728\u4e00\u4e2a\u6587\u4ef6\u7b26\u5408\u4efb\u4e00\u8868\u8fbe\u5f0f\uff1b<\/li><li><code>*=<\/code>\uff1a<strong>\u53ef\u9009\u9879<\/strong>\uff0c\u76ee\u5f55\u4e2d\u53ef\u4ee5\u6ca1\u6709\uff0c\u4f46\u82e5\u6709\u6587\u4ef6\u5b58\u5728\uff0c\u5219\u5fc5\u987b\u7b26\u5408\u4efb\u4e00\u8868\u8fbe\u5f0f\u3002<\/li><\/ul><\/li><li><strong><code>&lt;expression&gt;<\/code><\/strong>\uff1a\u4f7f\u7528 <code>\/...\/<\/code> \u5305\u88f9\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u7528\u4e8e\u5339\u914d\u6587\u4ef6\u8def\u5f84\u3002<\/li><\/ul>\u5176\u793a\u4f8b\u5982\u4e0b\uff1a# \u6ce8\u91ca\u4e0e\u7a7a\u884c\u5c06\u88ab\u5ffd\u7565<br>VERILOG_FILE &nbsp; += \/.*\\.v\/ \/.*\\.gv\/<br>VERILOG_TOP &nbsp; &nbsp; *= \/.*_top\\.v\/<br>SYMBOL_TABLE &nbsp; += \/.*\\.tbl\/run_flow_checkin\u811a\u672c\u4e3a\u5c06\u6b64\u6d41\u7a0b\u4e2d\u4ea7\u751f\u7684\u8bbe\u8ba1\u6570\u636e\u4ee5\u53ca\u62a5\u544acheckin\u5230DVC\u4e4b\u4e2d\uff0c\u4e3b\u8981\u4f9d\u8d56\u4e8e<code>dvc local creat<\/code>\u4ee5\u53ca<code>dvc local put<\/code>\u8fd9\u4e24\u4e2advc\u547d\u4ee4\uff0c\u5148\u901a\u8fc7<code>dvc local creat<\/code>\u5728DVC\u4e2d\u521b\u5efa\u51faDVC_DST\u8fd9\u4e00\u5c42\u76ee\u5f55\uff0c\u518d\u901a\u8fc7<code>dvc local put<\/code>\u8fd9\u4e00\u547d\u4ee4\u5c06\u76ee\u6807\u6587\u4ef6checkin\u5230DVC\u4e2d\uff0c\u6b64\u811a\u672c\u53ef\u53c2\u8003\u4ee5\u4e0b\u793a\u4f8b\u505a\u6cd5\uff1a#!\/usr\/bin\/tclsh<br>source ..\/.dfa\/dfd.tcl<br>source ..\/.dfa\/ticket.tcl<br>\u200b<br>exec dvc local create $DVC_DST<br>exec dvc local put $DVC_DST dqi_rpt.json<br>\u200b<br>exit 0<strong>\u6ce8\u610f\u4e8b\u9879<\/strong><\/expression2><\/expression1><\/operator><\/design_file_item>\n<ul class=\"wp-block-list\">\n<li>\u8be5\u811a\u672c\u9700\u8981\u5148\u540esource dfd.tcl\u548cticket.tcl\u8fd9\u4e24\u4efdtcl\u6587\u6863\u4f20\u9012\u6d41\u7a0b\u7684\u53c2\u6570<\/li>\n\n\n\n<li>\u82e5\u4f7f\u7528\u6b64\u6a21\u677f\uff0c\u5373\u9700\u66f4\u653926\u884c\u7684local put\u540e\u7684\u53c2\u6570\uff0c\u6539\u4e3a<code>STG_REQ_FILE_LIST<\/code>\u6e05\u5355\u4e2d\u6240\u5b9a\u4e49\u7684\u6587\u4ef6\u5373\u53ef<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u5efa\u7acbtest case\u5e76\u901a\u8fc7QA<\/strong><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">6.2 \u5c42\u6b21\u5316\u6d41\u7a0b\uff08Hierarchical Flow\uff09\u5f00\u53d1<\/h3>\n\n\n\n<p><strong>Hierarchical flow\u5f00\u53d1\u9700\u8981\u989d\u5916\u5728Definition\u6587\u4ef6\u4e2d\u5b9a\u4e49\u4f9d\u8d56\u5173\u7cfb\u7684\u914d\u7f6e\uff1a<\/strong><\/p>\n\n\n\n<p>\u5728Definition\u6587\u4ef6\u4e2d\u5b9a\u4e49\u5b50\u6d41\u7a0b\u5b9e\u4f8b\u53ca\u5176\u8f93\u5165\u8f93\u51fa\u4f9d\u8d56\uff0cSub-flow instance\u7684\u76f8\u4f9d\u5173\u7cfb\u662f\u6839\u636esub-flow\u7684input file\u4e0e\u5176\u4ed6sub-flow\u7684output file\u7684\u5173\u7cfb\u6765\u505a\u5224\u65ad\u4f9d\u636e\u3002DFA System\u4f1a\u4f9d\u636e\u8fd9\u4e2a\u5173\u7cfb\u6765\u51b3\u5b9asub-flow instance\u7684\u5148\u540e\u6267\u884c\u987a\u5e8f\u5e76\u63cf\u8ff0\u5728Makefile\u91cc\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">STEP step_name step_id<br>&gt; step-input = $input_file<br>&lt; step_output = $output_file<br>+ param_name = $param_value<br>;<br>SUBFLOW flow_name flow_id<br>&gt; step-input = $input_file<br>&lt; step_output = $output_file<br>+ param_name = $param_value<br>;<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.3 \u52a8\u6001\u6d41\u7a0b\uff08Dynamic Flow\uff09<\/h3>\n\n\n\n<p>\u524d\u9762\u4ecb\u7ecd\u7684single flow\u4e0ehierarchical flow\u90fd\u662fpre-defined\u7684\uff0c\u5f53flow\u89c4\u6a21\u4e0d\u5b9a\u7684\u65f6\u5019\uff0cFlow\u5f00\u53d1\u5c31\u9700\u8981\u5199\u7a0b\u5e8f\u6765\u4ea7\u751fdefinition\u6587\u4ef6\u4e0eticket\uff0c\u4ee5MMMC flow\u4e3a\u4f8b\u5b50\uff0c\u7528\u6237\u9700\u8981\u628a<code>Flow\/etc\/5M0_MMMC_non_criticalSI\/timing_view.yaml.sample<\/code>\u62f7\u8d1d\u5230\u81ea\u5df1\u7684\u5de5\u4f5c\u76ee\u5f55\u4e0b,\u5728\u5176\u5185\u6307\u5b9a\u6240\u9700\u505aSTA\u7684 Lib corner, RC corner, Constraint Mode\u7b49\u7b49\u4e4b\u540e\u518d\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff0c\u4ea7\u751fDefinition\u6587\u4ef6\u4ee5\u53caticket\u6587\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gen_5M0_MMMC_non_criticalSI.py .\/timing_view.yaml.sample <\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>7. \u6545\u969c\u5904\u7406\u4e0e\u7ef4\u62a4<\/strong><\/h2>\n\n\n\n<p>DFA \u5728\u4ee5\u4e0b\u9636\u6bb5\u4f1a\u6709\u62a5\u9519\uff0c\u4ee5\u4e0b\u4e3a\u5bf9\u5e94\u9636\u6bb5\u62a5\u9519\u539f\u56e0\u4ee5\u53ca\u5904\u7406<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.1\u7968\u636e\u5c55\u5f00\u9636\u6bb5\uff1a<\/h3>\n\n\n\n<p>\u62a5\u9519\u539f\u56e0\uff1a\u5982\u679c\u7968\u636e\u6587\u4ef6\u4e2d\u7684\u53c2\u6570\u586b\u5199\u9519\u8bef\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u7968\u636e\u5c55\u5f00\u5931\u8d25\u3002<\/p>\n\n\n\n<p>\u62a5\u9519\u5904\u7406\uff1a\u68c0\u67e5\u7968\u636e\u6587\u4ef6\u4e2d\u7684\u53c2\u6570\u662f\u5426\u6b63\u786e\u586b\u5199\uff0c\u786e\u4fdd\u6240\u6709\u5fc5\u586b\u53c2\u6570\u90fd\u5df2\u586b\u5199\uff0c\u5e76\u4e14\u683c\u5f0f\u6b63\u786e\u3002\u67e5\u770b DFA \u751f\u6210\u7684\u65e5\u5fd7\u6587\u4ef6\uff0c\u5b9a\u4f4d\u5177\u4f53\u7684\u62a5\u9519\u4fe1\u606f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.2\u9884\u68c0\u67e5\u9636\u6bb5 \uff1a<\/h3>\n\n\n\n<p>\u62a5\u9519\u539f\u56e0\uff1a\u8f93\u5165\u6587\u6863\u6216\u53c2\u6570\u9a8c\u8bc1\u5931\u8d25\u3002<\/p>\n\n\n\n<p>\u62a5\u9519\u5904\u7406\uff1a\u68c0\u67e5\u8f93\u5165\u6587\u6863\u662f\u5426\u5b8c\u6574\u4e14\u683c\u5f0f\u6b63\u786e\uff0c\u786e\u4fdd\u6240\u6709\u53c2\u6570\u90fd\u7b26\u5408\u9884\u5b9a\u4e49\u7684\u8981\u6c42\u3002\u67e5\u770b\u65e5\u5fd7\u6587\u4ef6\u4e2d\u7684\u5177\u4f53\u62a5\u9519\u4fe1\u606f\uff0c\u8fdb\u884c\u76f8\u5e94\u7684\u8c03\u6574\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.3\u4e3b\u6d41\u7a0b\u9636\u6bb5 \uff1a<\/h3>\n\n\n\n<p>\u62a5\u9519\u539f\u56e0\uff1aEDA \u5de5\u5177\u6267\u884c\u5931\u8d25\u3002<\/p>\n\n\n\n<p>\u62a5\u9519\u5904\u7406\uff1a\u68c0\u67e5 EDA \u5de5\u5177\u7684\u8bbe\u7f6e\u6587\u4ef6\u662f\u5426\u6b63\u786e\u751f\u6210\uff0c\u786e\u4fdd EDA \u5de5\u5177\u7684\u6267\u884c\u73af\u5883\u914d\u7f6e\u6b63\u786e\u3002\u67e5\u770b EDA \u5de5\u5177\u7684\u65e5\u5fd7\u6587\u4ef6\uff0c\u5b9a\u4f4d\u5177\u4f53\u7684\u62a5\u9519\u4fe1\u606f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.4\u540e\u68c0\u67e5\u9636\u6bb5 \uff1a<\/h3>\n\n\n\n<p>\u62a5\u9519\u539f\u56e0\uff1aEDA \u5de5\u5177\u7684\u7ed3\u679c\u9a8c\u8bc1\u5931\u8d25\u3002<\/p>\n\n\n\n<p>\u62a5\u9519\u5904\u7406\uff1a\u68c0\u67e5 EDA \u5de5\u5177\u7684\u8f93\u51fa\u6587\u4ef6\u662f\u5426\u5b8c\u6574\u4e14\u683c\u5f0f\u6b63\u786e\uff0c\u786e\u4fdd\u6240\u6709\u5173\u952e\u6307\u6807\u90fd\u7b26\u5408\u9884\u671f\u3002\u67e5\u770b\u65e5\u5fd7\u6587\u4ef6\u4e2d\u7684\u5177\u4f53\u62a5\u9519\u4fe1\u606f\uff0c\u8fdb\u884c\u76f8\u5e94\u7684\u8c03\u6574\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.5\u751f\u6210 DQI \u62a5\u544a\u9636\u6bb5 \uff1a<\/h3>\n\n\n\n<p>\u62a5\u9519\u539f\u56e0\uff1aDQI \u62a5\u544a\u751f\u6210\u5931\u8d25\u3002<\/p>\n\n\n\n<p>\u62a5\u9519\u5904\u7406\uff1a\u68c0\u67e5 EDA \u5de5\u5177\u7684\u7ed3\u679c\u6587\u4ef6\u662f\u5426\u5b8c\u6574\u4e14\u683c\u5f0f\u6b63\u786e\uff0c\u786e\u4fdd DQI \u62a5\u544a\u751f\u6210\u811a\u672c\u914d\u7f6e\u6b63\u786e\u3002\u67e5\u770b\u65e5\u5fd7\u6587\u4ef6\u4e2d\u7684\u5177\u4f53\u62a5\u9519\u4fe1\u606f\uff0c\u8fdb\u884c\u76f8\u5e94\u7684\u8c03\u6574\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>8. \u6848\u4f8b\u5206\u6790\u4e0e\u5b9e\u6218\u6f14\u7ec3<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8.1 build ticket\u6848\u4f8b\uff1a<\/strong><\/h3>\n\n\n\n<p>\u4f7f\u7528<code>dop ticket checkout T510_RCXT.ticket<\/code>\u5c06ticket checkout\u5230\u672c\u5730\u5de5\u4f5c\u76ee\u5f55\uff0c\u4fee\u6539ticket\u5185\u5bb9<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>[HEADER]<\/strong><br>## DESCRIPTION : flow name &amp; run directory<br>## ARGUMENT \u00a0  : &lt; flow_name:run_dir_name >, ex. 510_RCX:rcxt_spef<br>FLOW_ID = 510-RCX\uff1arcxt<br>\u200b<br>## DESCRIPTION : techlib confilg file from TLM<br>## ARGUMENT \u00a0  : &lt; techlib config file name >, ex.dfalib.cfg<br>TECHLIB = dfalib.cfg<br>\u200b<br>## DESCRIPTION : source path from DVC<br>## ARGUMENT \u00a0  : &lt; source path >, ex.phase\/block\/stage\/v1<br>DVC_SRC = phase\/block\/stage\/v1<br>\u200b<br>## DESCRIPTION : destination path from DVC<br>## ARGUMENT \u00a0  : &lt; destination path >, ex.phase\/block\/stage\/v2<br>DVC_DST = phase\/block\/stage\/v2<br>\u200b<br>## DESCRIPTION : top module name<br>## ARGUMENT \u00a0  : &lt; top module name >, ex.design<br>DESIGN = design<br>\u200b<br>\u200b<br><strong>[INPUT]<\/strong><br>\u200b<br>## DESCRIPTION : input file of this flow<br>## ARGUMENT \u00a0  : &lt; path | file_name  >, ex. netlist.v<br>TOP_DEF_FILE = design.full_chip.def.gz<br>METAL_FILL_GDS_FILE = design_Dummy_BE.gds<br>\u200b<br>\u200b<br><strong>[OUTPUT]<\/strong><br>\u200b<br>## DESCRIPTION : output file of this flow<br>## ARGUMENT \u00a0  : &lt; output file_name  >, ex. netlist.v<br>COUPLING_REPORT_FILE = couplingreport.rep<br>NETLIST_FILE =${DESIGN}.spef.gz<br>\u200b<br>\u200b<br><strong>[PARAMETER]<\/strong><br>\u200b<br>## DESCRIPTION : PARAMETER of this flow<br>## ARGUMENT \u00a0  : &lt; path | parameter  >, ex. Typ_85c<br>MAPPING_FILE = \/path\/to\/layers.map<br>CORNERS_FILE = .\/script\/corners.smc<br>GDS_LAYER_MAP_FILE =  .\/script\/dummy_gds.map<br>SELECTED_CORNERS =Typ_85c<br>\u200b<br>## DESCRIPTION : Script path of EDA tool<br>## ARGUMENT \u00a0  : &lt;eda_tool_path_script>, ex. encounter<br>TOOL = synopsys_starrc_shell_U<br>\u200b<br>## DESCRIPTION : Set tool option<br>## ARGUMENT \u00a0  : &lt;eda_tool_options> ex. tool version, ...<br>TOOL_OPTION = -2022.12-SP5-2<br>\u200b<br>## DESCRIPTION : Specify queue name<br>## ARGUMENT \u00a0  : [Local | BE | FE ]<br>## if QUEUE = Local, only run job in local machine<br>QUEUE = BE<br>\u200b<br>## DESCRIPTION: Set queue option<br>## ARGMENT \u00a0  : &lt;queue_options> \u00a0 #ex. slurm's options<br>QUEUE_OPTION = --mem=64G -c 4<br>\u200b<\/pre>\n\n\n\n<p>\u4fee\u6539\u5b8cticket\u540e\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff0c\u5efa\u7acbflow\u73af\u5883<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">dop ticket build T510_RCXT.ticket<\/pre>\n\n\n\n<p>\u5efa\u7acb\u51fa\u5982\u4e0b\u7684\u76ee\u5f55\u7ed3\u6784\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rcxt\/<br>\u251c\u2500\u2500 .design  -&gt; $DVC_HOME\/P1-trial\/CPU\/500-TIMING\/2025_0101_RCX<br>\u251c\u2500\u2500 .script  -&gt; DFA\/flow\/500-TIMING<br>\u251c\u2500\u2500 .techlib -&gt; $TLM_HOME\/20250101.cfg<br>\u251c\u2500\u2500 .inpTOP_DEF_FILE  -&gt; .design\/design.full_chip.def.gz<br>\u251c\u2500\u2500 .inpMETAL_FILL_GDS_FILE  -&gt; .design\/design_Dummy_BE.gds<br>\u251c\u2500\u2500 .outNETLIST_FILE -&gt; ::main\/design.spef.gz<br>\u251c\u2500\u2500 .outCOUPLING_REPORT_FILE -&gt; ::main\/couplingreport.rep<br>\u2514\u2500\u2500 ::main<br> &nbsp;  \u251c\u2500\u2500 design.full_chip.def.gz -&gt; ..\/.inpTOP_DEF_FILE<br> &nbsp;  \u251c\u2500\u2500 design_Dummy_BE.gds -&gt; ..\/.inpMETAL_FILL_GDS_FILE<br> &nbsp;  \u251c\u2500\u2500 script  -&gt; ..\/.script\/510-RCXT<br> &nbsp;  \u2514\u2500\u2500 Makefile -&gt; script\/Makefile<\/pre>\n\n\n\n<p>\u8fdb\u5165::main\u76ee\u5f55\uff0c\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u5f00\u59cb\u8fd0\u884cEDA\u5de5\u4f5c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">make run<\/pre>\n\n\n\n<p>\u786e\u8ba4\u65e0\u8bef\u540e\u5c06\u6d41\u7a0b\u6240\u4ea7\u751f\u7684\u8bbe\u8ba1\u6570\u636e\u4ee5\u53ca\u62bd\u53d6\u7684\u91cd\u8981\u8bbe\u8ba1\u8d44\u6599\u4e0a\u4f20\u81f3DVC\u7684\u8bbe\u8ba1\u8d44\u6599\u5e93\u4e2d\u5fc3<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">make checkin<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">8.2 Flow \u5f00\u53d1\u6848\u4f8b\uff1a<\/h3>\n\n\n\n<p>\u5728DFA\u4e2d\u5fc3\u8d44\u6599\u5e93\u7684flow\u76ee\u5f55\u4e0b\u521b\u5efa\u76ee\u5f55<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">flow\/<br>\u2514\u2500\u2500 500-TIMING<br> &nbsp;  \u2514\u2500\u2500 510-RCXT<\/pre>\n\n\n\n<p>\u5728flow\u76ee\u5f55\u4e0b\u51c6\u5907.dfd\u6587\u4ef6\uff0crun_precheck\uff0crun_exec\uff0crun_postcheck\uff0crun_flow_checkin\uff0cdqi_ext.spec\/run_execdqi\u811a\u672c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">flow\/<br>\u2514\u2500\u2500 500-TIMING<br> &nbsp;  \u2514\u2500\u2500 510_RCXT<br> &nbsp;      \u251c\u2500\u2500510_RCXT.dfd<br> &nbsp;      \u251c\u2500\u2500run_precheck<br> &nbsp;      \u251c\u2500\u2500run_exec<br> &nbsp;      \u251c\u2500\u2500run_postcheck<br> &nbsp;      \u251c\u2500\u2500run_flow_checkin<br> &nbsp;      \u251c\u2500\u2500run_flowclean<br> &nbsp;      \u2514\u2500\u2500dqi_ext.spec\/run_execdqi<\/pre>\n\n\n\n<p>\u5728dqi_def\u76ee\u5f55\u4e0b\u51c6\u5907.dqi\u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">dqi_def\/<br>\u2514\u2500\u2500 500-TIMING<br> &nbsp;  \u2514\u2500\u2500 510_RCXT<br> &nbsp;      \u251c\u2500\u2500RCX_001.dqi<br> &nbsp;      \u251c\u2500\u2500RCX_002.dqi<br> &nbsp;      \u251c\u2500\u2500RCX_003.dqi<br> &nbsp;      \u251c\u2500\u2500RCX_004.dqi<br> &nbsp;      \u2514\u2500\u2500RCX_005.dqi<\/pre>\n\n\n\n<p>\u5728DFA\u4e2d\u5fc3\u8d44\u6599\u5e93\u7684ticket\u76ee\u5f55\u4e0b\u51c6\u5907ticket\u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ticket\/<br>\u2514\u2500\u2500 T510_RCXT.sft<\/pre>\n\n\n\n<p>trial run\u80fd\u6b63\u5e38\u8fd0\u884c\u540e\u518d\u901a\u8fc7QA\u5373\u53ef\u5c06\u6b64flow\u4e0a\u4f20\u81f3git<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>9. \u9644\u5f55<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">9.1 \u547d\u4ee4\u901f\u67e5\u8868<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>\u529f\u80fd<\/strong><\/th><th><strong>\u547d\u4ee4<\/strong><\/th><\/tr><\/thead><tbody><tr><td>\u67e5\u770bDFA\u4e2d\u5fc3\u8d44\u6599\u5e93\u53ef\u7528ticket<\/td><td><code>dop ticket query<\/code><\/td><\/tr><tr><td>\u5c06DFA\u4e2d\u5fc3\u8d44\u6599\u5e93\u4e2d\u7684ticket checkout\u5230\u672c\u5730<\/td><td><code>dop ticket checkout &lt;ticket file name&gt;<\/code><\/td><\/tr><tr><td>\u6784\u5efaEDA\u5de5\u4f5c\u73af\u5883<\/td><td><code>dop ticket build &lt;ticket file name&gt;<\/code><\/td><\/tr><tr><td>\u6267\u884cEDA\u5de5\u4f5c<\/td><td><code>make run<\/code><\/td><\/tr><tr><td>\u5c06\u4fee\u6539\u8fc7\u7684Ticket\u6587\u6863\u4ee5\u53ca\u957f\u5904\u7684\u91cd\u8981\u8bbe\u8ba1\u8d44\u6599\u4e0a\u4f20\u81f3DVC\u7684\u8bbe\u8ba1\u8d44\u6599\u5e93\u4e2d\u5fc3<\/td><td><code>make checkin<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n"},"excerpt":{"rendered":"<p>1. \u5f15\u8a00 1.1 DFA \u5de5\u5177\u5b9a\u4f4d DFA\uff08Design Flow Automation\uff09\u662fDOP\uff08Desi [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1674","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/dop.lyg-semi.com\/index.php\/wp-json\/wp\/v2\/pages\/1674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dop.lyg-semi.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dop.lyg-semi.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dop.lyg-semi.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dop.lyg-semi.com\/index.php\/wp-json\/wp\/v2\/comments?post=1674"}],"version-history":[{"count":9,"href":"https:\/\/dop.lyg-semi.com\/index.php\/wp-json\/wp\/v2\/pages\/1674\/revisions"}],"predecessor-version":[{"id":2638,"href":"https:\/\/dop.lyg-semi.com\/index.php\/wp-json\/wp\/v2\/pages\/1674\/revisions\/2638"}],"wp:attachment":[{"href":"https:\/\/dop.lyg-semi.com\/index.php\/wp-json\/wp\/v2\/media?parent=1674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}