Tcl scripts: Reading STAchecklist, get_timing_path, write the setup/hold violation to csv

这是一个2018年1月1日的Tcl脚本,用于读取名为STA_check.csv的输入CSV文件,解析文件以生成用于PrimeTime检查设置/保持违规的get_timing_path命令,并将违规情况写入CSV报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

File description:

Time:2018/01/01

Description: This scripts used to reading STA_check.csv file and parsing this file to generate get_timing_path command which used in PrimeTime to check the setup/hold violations, and write out the reports to .csv

Input CSV file(STA_check.csv):

Type,Description,Launch,From,Thr1,Thr2,Thr3,To,Capture,setup,setup_req,setup_bor,hold,hold_req
Clock,Path1,,,,,,/IDDR4CHA/DDR4CHACHAN_GUT/path1_to/cell<1>/a,clk_cap_path1,,,,,
Clock,Path2,clk_lau_path2,,,,,/IDDR4CHA/DDR4CHACHAN_GUT/path2_to/cell<2>/a,clk_cap_path2,,,,,
Clock,Path3,clk_lau_path3,/IDDR4CHA/DDR4CHACHAN_GUT/path3_from/cell<1>/a,,,,/IDDR4CHA/DDR4CHACHAN_GUT/path3_to/cell<3>/a,clk_cap_path3,,,,,
Clock,Path4,clk_lau_path4,/IDDR4CHA/DDR4CHACHAN_GUT/path4_from/cell<2>/a,/IDDR4CHA/DDR4CHACHAN_GUT/path4_thr1/cell<3>/a,/IDDR4CHA/DDR4CHACHAN_GUT/path4_thr2/cell<3>/a,,/IDDR4CHA/DDR4CHACHAN_GUT/path4_to/cell<4>/a,clk_cap_path4,,,,,
Clock,Path5,clk_lau_path5,/IDDR4CHA/DDR4CHACHAN_GUT/path5_from/cell<3>/a,/IDDR4CHA/DDR4CHACHAN_GUT/path5_thr1/cell<4>/a,/IDDR4CHA/DDR4CHACHAN_GUT/path5_thr2/cell<4>/a,,/IDDR4CHA/DDR4CHACHAN_GUT/path5_to/cell<5>/a,clk_cap_path5,,,,,
Clock,Path6,clk_lau_path6,/IDDR4CHA/DDR4CHACHAN_GUT/path6_from/cell<4>/a,/IDDR4CHA/DDR4CHACHAN_GUT/path6_thr1/cell<5>/a,/IDDR4CHA/DDR4CHACHAN_GUT/path6_thr2/cell<5>/a,/IDDR4CHA/DDR4CHACHAN_GUT/path6_thr3/cell<5>/a,/IDDR4CHA/DDR4CHACHAN_GUT/path6_to/cell<6>/a,clk_cap_path6,,,,,
,,,,,,,,,,,,,
Gate,Gate_path1,clk_gate1,/IDDR4CHA/DDR4CHACHAN_GUT/gate_paht_from1/cell<4>/a,,,,/IDDR4CHA/DDR4CHACHAN_GUT/gate_paht_to_1/cell<4>/a,clk_gate_to1,,,,,

CheckListRpt.tcl

set RmPathHeader "/IDDR4CHA/"
set debug_file "./ChkPointRpt_debug.csv"

proc test {args} {
    set vars(-f) "STA_check.csv"
    set vars(-out) "ChkPointRpt.csv"
    set vars(-d) "./ChkPointRpt_debug.csv"
    #parse_proc_argments -args $args vars
    #parse_proc_argments $args vars
    #puts "$vars(-f)"
    #puts "$vars(-out)"
    if { [file exists $vars(-f)] } {
        set fo [open $vars(-out) w]
        set pathLib [ ReadCheckList $vars(-f)]
        set pathLib [ RptTiming $pathLib]
        set pathLib [ RptPtList $pathLib]
        WriteCheckList $vars(-out) $vars(-d
### 解决 Python `ModuleNotFoundError` 错误 当遇到 `ModuleNotFoundError: No module named 'Scripts.api_to_get_coordinate'` 的错误时,这通常意味着解释器无法找到指定的模块。以下是几种可能的原因以及相应的解决方案: #### 1. 检查文件路径和结构 确保模块所在的目录位于 Python 路径中。如果模块不在标准库或当前工作目录下,则需将其位置添加到系统的环境变量 PATH 或者在运行脚本前动态修改 sys.path。 对于特定于项目的相对导入情况,确认项目包结构是否正确设置,并且包含了必要的初始化文件 (`__init__.py`) 来标记各个子目录作为包的一部分[^1]。 ```python import os import sys sys.path.append(os.path.abspath('/path/to/project')) ``` #### 2. 安装缺失依赖项 有时该报错是因为尚未安装所需的第三方库。使用 pip 工具来检查并安装任何缺少的软件包: ```bash pip install scripts-api-to-get-coordinate==version_number ``` 请注意替换为实际存在的 PyPI 上可获得的名字及版本号;如果不是公开可用的资源则应考虑其他分发方式如私有仓库等。 #### 3. 使用 importlib 动态加载本地模块 针对非标准安装途径下的自定义模块,可以采用类似于 Lumerical API 加载的方式来进行处理: ```python import importlib.util module_path = '/full/path/to/your/module/scripts/api_to_get_coordinate.py' spec = importlib.util.spec_from_file_location('scripts.api_to_get_coordinate', module_path) api_module = importlib.util.module_from_spec(spec) spec.loader.exec_module(api_module) # Now you can use functions or classes from api_module as needed. result = api_module.some_function() print(result) ``` 以上方法允许直接从文件系统中的任意位置加载未经过打包发布的 .py 文件而不必先将其加入 PYTHONPATH 中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值