【小代码】01-去除verilog工程的make_debug的python脚本

参考:

【Python库】05—RE正则表达式

【Python库】04—glob文件查找

import re
import glob
#读取整个文件
file = glob.iglob(r'.\src\*.v')
for i in file:
    with open(i,'r', encoding='utf-8') as f1:
        all_text = f1.read()
        new_text = re.sub(r'(\(\*mark_debug \= \"true\"\*\))|(\(\*MARK_DEBUG \= \"TRUE\"\*\))','',all_text)  
    f1.close()

    with open(i,'w', encoding='utf-8') as f2:
        f2.write(new_text)
    f2.close()

之前的代码,不支持遍历子目录的内容,先更新代码后,可以支持遍历子目录的内容。

import re
import glob
#读取整个文件
file = glob.iglob(r'**\*.v',recursive=True)
for i in file:
    with open(i,'r', encoding='utf-8') as f1:
        all_text = f1.read()
        new_text = re.sub(r'(\(\*mark_debug \= \"true\"\*\))|(\(\*MARK_DEBUG \= \"TRUE\"\*\))','',all_text)  
    f1.close()

    with open(i,'w', encoding='utf-8') as f2:
        f2.write(new_text)
    f2.close()

REF:

https://blog.youkuaiyun.com/jy692405180/article/details/52245829

https://docs.python.org/3/library/glob.html

<think>好的,我需要帮助用户解析一段Synopsys Design Compiler (DC)的TCL脚本,并解释每一步的功能。首先,我应该回忆一下Design Compiler的基本工作流程和常用命令。DC主要用于逻辑综合,将RTL代码转换为门级网表,涉及步骤包括设置库、读取设计、约束设置、优化和输出网表等。 用户提供的示例脚本可能包含这些典型步骤。比如,开头可能设置目标库和链接库,接着读取设计文件,应用时钟约束,进行编译优化,最后生成报告和输出网表。每个命令都有特定的作用,比如`set_target_library`指定工艺库,`read_verilog`读取设计文件,`create_clock`定义时钟信号,`compile_ultra`执行优化综合,`report_timing`生成时序报告,`write`输出结果。 需要注意TCL脚本在DC中的执行顺序和各个命令的参数。例如,`set_host_options -max_cores 4`可能用于设置多核并行处理,提升综合速度。`set_compile_directives`可能控制优化策略。此外,错误处理和日志记录命令如`redirect -tee`也很重要,确保综合过程的信息被保存以供调试。 在解释时,要确保术语准确,比如区分目标库和链接库,说明时钟约束对综合结果的影响,以及不同优化选项的作用。同时,要指出可能的常见问题,比如库路径错误、约束不完整导致时序违规等。最后,生成相关问题时,可以涉及优化方法、约束设置技巧、调试策略等,帮助用户深入理解DC脚本的编写和调整。</think>### Synopsys Design Compiler TCL 脚本逐行解析 以下是一个典型的Synopsys Design Compiler(DC)TCL脚本示例及其功能解析,假设脚本文件名为`synth.tcl`: ```tcl # 设置工艺库和设计约束 set target_library "tsmc65wc.db" # 设置目标工艺库[^1] set link_library "* $target_library" # 设置链接库(包含IP库) # 读取设计文件 read_verilog -rtl design.v # 读取RTL级Verilog设计文件 current_design top_module # 设置顶层模块名称 # 设置设计约束 create_clock -name clk -period 10 [get_ports clk] # 创建10ns时钟周期约束 set_input_delay 2 -clock clk [all_inputs] # 设置输入端口延迟约束 set_output_delay 1 -clock clk [all_outputs] # 设置输出端口延迟约束 # 综合优化配置 set_host_options -max_cores 4 # 设置多核并行综合(加速处理) set_compile_directives -map_effort high # 设置综合优化级别为高 # 执行综合 compile_ultra # 启动超线程优化综合流程 # 生成报告 report_timing > timing.rpt # 输出时序报告 report_area > area.rpt # 输出面积报告 report_power > power.rpt # 输出功耗报告 # 保存结果 write -format verilog -output design_gate.v # 输出门级网表 write_sdc design_gate.sdc # 输出标准设计约束文件 ``` #### 关键命令解析: 1. **工艺库设置** - `set_target_library`:指定目标工艺库(如TSMC 65nm),包含单元时序/功耗信息[^1] - `set_link_library`:定义综合时需链接的额外库(如IP核库) 2. **设计输入** - `read_verilog -rtl`:读入RTL级Verilog代码-rtl参数表示保留层次结构 - `current_design`:明确顶层模块,用于约束应用 3. **约束定义** - `create_clock`:定义时钟信号属性(周期、端口),驱动时序优化目标 - `set_input/output_delay`:设置I/O接口时序约束,模拟外部环境时序要求 4. **优化控制** - `compile_ultra`:DC的优化算法,支持自动门控时钟/时序驱动优化等高级功能 - `set_host_options`:控制资源利用率,多核并行可缩短综合时间30%-50%[^2] 5. **结果输出** - `write -format verilog`:生成门级网表,用于后续布局布线 - `write_sdc`:导出包含实际延迟信息的约束文件,供物理设计使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值