1. 只读环境使用原则
file、head、less、
grep、strings、view。
这些命令只读取文件,不会修改原文件。
source、read_sdc、read_def、
read_verilog 和 read_ddc
不是普通“打开”,而是执行脚本或把数据导入 EDA 工具会话。
save_block、save_lib、
write_def、read_def,
也不要重复读取 SDC 或 source 修改属性的 Tcl 脚本。
如果要在 DC、PT、ICC2、Formality 或 DFT 工具中加载这些文件, 建议先切换到自己的可写目录,再从对方目录读取输入文件:
mkdir -p ~/rl7142_rx2_analysis
cd ~/rl7142_rx2_analysis
# 根据需要启动工具
icc2_shell
# dc_shell
# pt_shell
# fm_shell
改变 Linux 工作目录不会复制或修改对方文件,只是让日志和临时文件写到自己的目录。
2. 文件用途与打开方式汇总
| 文件 | 类别 | 主要用途 | 只读查看 | 真正加载方式 | 当前只读 block 建议 |
|---|---|---|---|---|---|
rl7142_rx2.preCTS.sdc |
preCTS 约束 | CTS 前时序约束,可能使用理想时钟、预估 clock latency、 uncertainty 和时序例外。 | less -Sgrep |
DC/ICC2/PT:read_sdc |
只查看,不要重复读入 |
lib.tcl |
库配置脚本 | 配置 search path、target/link library、 reference library 或其他工具环境。 | less -S lib.tcl |
Tcl:source lib.tcl |
审查内容后才能 source |
HPF_eco_timing.sdc |
ECO 约束 | ECO 阶段附加时序约束,可能包含 false path、 case analysis、max/min delay 等。 | less -Sgrep |
ICC2/PT:read_sdc |
不要叠加到现有约束 |
rl7142_rx2.sdc |
主时序约束 | 主 SDC,通常包含 clock、generated clock、IO delay、 clock group 和 timing exception。 | less -Sgrep |
DC/ICC2/PT:read_sdc |
当前 block 可能已有约束 |
HPF_eco_dontch.tcl |
ECO 属性脚本 | 根据名称推测,可能设置 dont_touch、size_only 或 ECO 保护属性;准确用途以文件内容为准。 | less -Sgrep |
Tcl:source |
不要在只读 block 中 source |
group_path.tcl |
Path Group 脚本 | 创建 REG2REG、IN2REG、REG2OUT 等时序路径组, 用于分类报告或优化。 | less -Sgrep group_path |
DC/ICC2/PT:source |
source 会改变当前会话 |
rl7142_rx2.ddc |
DC 数据库 | Synopsys Design Compiler 数据库,保存综合网表、 层次、约束和综合属性。 | file rl7142_rx2.ddc |
Design Compiler:read_ddc |
在自己的 DC 会话读取 |
rl7142_rx2.v |
门级网表 | 描述 module、port、标准单元、macro 实例和 net 连接。 | less -Sgrep "^module" |
ICC2/PT/Formality:read_verilog |
文本查看安全 |
rl7142_rx2.sdf |
延时反标 | Standard Delay Format,保存 cell delay、 interconnect delay 和 timing checks。 | headless -S |
VCS/Xcelium 等仿真器进行 SDF annotation | 文本查看安全 |
rl7142_rx2.def |
物理 DEF | 可能包含 DIEAREA、rows、placement、pins、blockages、 special nets 和 routing。 | less -Sgrep "^DIEAREA" |
ICC2:read_def |
不要导入当前只读 block |
rl7142_rx2.resourcefile |
用途待确认 | 扩展名不能唯一确定格式,可能属于 DFT、 ATPG 或内部自动化流程。 | fileheadstrings |
根据文件头和生成工具判断 | 不要直接加载 |
rl7142_rx2.compression.spf |
疑似 DFT 协议 | 结合 compression 命名,较可能是 scan compression 或 ATPG 使用的协议文件。 | headgrep -i scan |
TestMAX/TetraMAX/DFT 工具 | 先确认 STIL/scan 关键字 |
rl7142_rx2.internal.spi |
格式待确认 | 可能是 SPICE 网表,也可能是 scan compression 内部信息文件,不能仅凭扩展名判断。 | fileheadgrep |
根据内容选择 SPICE 或 DFT 工具 | 先找 SUBCKT/scan 关键字 |
rl7142_rx2.scan_def |
Scan DEF | 描述 scan chain、ordered scan cells、 floating cells 和物理重排信息。 | less -Sgrep SCANCHAINS |
ICC2/DFT:通常由 read_def 读取 |
不要导入当前只读 block |
rl7142_rx2.svf |
Formality Guidance | 保存综合过程中的 rename、flatten、register mapping 等信息,辅助等价验证。 | filehead |
Formality:set_svf |
在自己的 Formality 会话使用 |
3. 文件详细说明
3.1 SDC:preCTS、主约束和 ECO 约束
相关文件:
rl7142_rx2.preCTS.sdcrl7142_rx2.sdcHPF_eco_timing.sdc
preCTS SDC
用于 Clock Tree Synthesis 之前。由于真实时钟树尚未建立, 可能使用 ideal clock、预估 latency 和较大的 uncertainty。
主 SDC
通常包含设计的基础时序环境,例如主时钟、generated clock、 IO delay、clock group、false path 和 multicycle path。
ECO Timing SDC
通常在主约束基础上补充 ECO 所需的 case analysis、 false path、max/min delay 或其他局部约束。
安全查看
less -S rl7142_rx2.sdc
grep -nE "create_clock|create_generated_clock" rl7142_rx2.sdc
grep -nE \
"set_false_path|set_multicycle_path|set_max_delay|set_min_delay" \
rl7142_rx2.sdc
grep -nE \
"set_clock_groups|set_case_analysis|set_clock_uncertainty" \
rl7142_rx2.sdc
当前只读 ICC2 block 中的建议
如果 block 已经保存了约束,不要为了“查看”而再次执行
read_sdc。优先报告当前数据库中的约束:
report_clocks
report_clock_settings
report_exceptions
report_disable_timing
report_modes
report_corners
report_scenarios
3.2 Tcl:库配置、ECO 保护和 Path Group
lib.tcl
可能包含:
search_pathtarget_librarylink_libraryset_ref_libsset_app_varset_app_options
less -S lib.tcl
grep -nE \
"search_path|target_library|link_library|ref_lib|set_app" \
lib.tcl
HPF_eco_dontch.tcl
文件名中的 dontch 很可能是
dont_touch 的缩写,但必须根据实际内容确认。
less -S HPF_eco_dontch.tcl
grep -nE \
"dont_touch|size_only|ideal|remove|delete|create|connect" \
HPF_eco_dontch.tcl
group_path.tcl
可能通过 group_path 创建 REG2REG、IN2REG、
REG2OUT 等时序路径分组。
less -S group_path.tcl
grep -n "group_path" group_path.tcl
source xxx.tcl 会执行脚本里的全部 Tcl 命令。
在未审查脚本前,不要在当前只读 block 会话中 source。
3.3 DDC 与 Verilog:综合数据库和门级网表
rl7142_rx2.ddc
DDC 是 Design Compiler 的内部设计数据库,通常比 “Verilog + SDC”保存更多综合状态和对象属性。 它不是 ICC2 的 NDM block。
建议在自己的可写目录中启动 DC:
mkdir -p ~/rl7142_rx2_dc
cd ~/rl7142_rx2_dc
dc_shell
进入 DC 后再读取:
# lib.tcl 必须先审查,确认适用于当前 DC 环境
source /absolute/path/to/lib.tcl
read_ddc /absolute/path/to/rl7142_rx2.ddc
current_design
report_design
report_area
report_reference
rl7142_rx2.v
门级 Verilog 网表描述逻辑连接,不负责保存完整 placement、 routing 或寄生信息。
less -S rl7142_rx2.v
# 查看全部 module
grep -nE "^[[:space:]]*module[[:space:]]" \
rl7142_rx2.v | head -50
# 查找顶层
grep -n "module rl7142_rx2" rl7142_rx2.v
3.4 DEF 与 Scan DEF:物理实现和 Scan Chain
rl7142_rx2.def
DEF 可能包含:
DIEAREA:Die 或 block 边界ROW:标准单元 placement rowsCOMPONENTS:实例及 placementPINS:顶层端口和物理位置BLOCKAGES:Placement/routing blockageSPECIALNETS:电源地特殊网络NETS:普通信号网络及可能的 routing
安全查看 DEF
# 查看设计名、单位和边界
grep -nE "^VERSION|^DESIGN|^UNITS|^DIEAREA" \
rl7142_rx2.def | head
# 查看包含哪些主要 section
grep -nE \
"^(ROW|COMPONENTS|PINS|NETS|SPECIALNETS|VIAS|BLOCKAGES|REGIONS|GROUPS)" \
rl7142_rx2.def | head -100
rl7142_rx2.scan_def
Scan DEF 主要记录 scan chain 结构、scan cell 顺序及物理重排信息。
less -S rl7142_rx2.scan_def
grep -nE \
"^DESIGN|^SCANCHAINS|END SCANCHAINS" \
rl7142_rx2.scan_def
read_def 会向设计数据库导入或更新物理内容。
当前已经打开的是别人完成的只读 block,因此不要把普通 DEF
或 Scan DEF 再次导入该 block。
3.5 SDF:门级仿真延时反标
rl7142_rx2.sdf 是 Standard Delay Format 文件,
可能包含:
- Cell delay
- Interconnect delay
- Setup/hold timing check
- Recovery/removal
- Pulse-width check
安全查看
head -n 50 rl7142_rx2.sdf
grep -nE \
"SDFVERSION|DESIGN|DATE|VENDOR|PROGRAM|VERSION|TIMESCALE" \
rl7142_rx2.sdf | head -30
典型仿真反标
initial begin
$sdf_annotate("rl7142_rx2.sdf", dut);
end
3.6 SVF:Formality 等价验证辅助文件
rl7142_rx2.svf 一般由 Design Compiler 生成,
保存综合过程中的 guidance,例如:
- Register mapping
- Object rename
- Flatten / ungroup
- Constant propagation
- Clock-gating 转换
- Datapath 优化映射
在自己的 Formality 会话中使用:
set_svf /absolute/path/to/rl7142_rx2.svf
3.7 Compression SPF、Internal SPI 和 Resourcefile
下面三个文件不能只根据扩展名给出绝对结论:
rl7142_rx2.compression.spfrl7142_rx2.internal.spirl7142_rx2.resourcefile
compression.spf
结合文件名中的 compression 以及同目录中的
scan_def,它较可能是 scan compression 或 ATPG
使用的协议文件,而不是普通寄生参数文件。
head -n 50 rl7142_rx2.compression.spf
grep -nEi \
"STIL|Scan|Clock|Procedure|Load|Unload|Capture|compression" \
rl7142_rx2.compression.spf | head -50
internal.spi
如果出现以下关键字,通常属于 SPICE 类网表:
.SUBCKT
.ENDS
.MODEL
M...
X...
如果出现 scan、chain、compression、protocol 等关键字, 则更可能属于 DFT 内部数据。
file rl7142_rx2.internal.spi
head -n 50 rl7142_rx2.internal.spi
grep -nEi \
"SUBCKT|ENDS|MODEL|scan|chain|compression|protocol|clock" \
rl7142_rx2.internal.spi | head -50
resourcefile
.resourcefile 不是能唯一识别格式的标准扩展名。
它可能由 DFT、ATPG 或公司内部脚本产生。
file rl7142_rx2.resourcefile
head -n 50 rl7142_rx2.resourcefile
# 如果含有不可打印字符
strings rl7142_rx2.resourcefile | head -100
4. 文件之间的关系
5. “查看文件”和“加载文件”的区别
| 操作 | 示例 | 是否改变工具会话 | 只读场景建议 |
|---|---|---|---|
| 查看文本 | less -S file |
否 | 安全 |
| 查看文件头 | head -n 50 file |
否 | 安全 |
| 搜索关键字 | grep -n pattern file |
否 | 安全 |
| 识别文件格式 | file file |
否 | 安全 |
| 执行 Tcl | source file.tcl |
是,执行脚本中全部命令 | 必须先审查 |
| 读取 SDC | read_sdc file.sdc |
是,改变当前约束状态 | 不要为查看而重复读取 |
| 读取 DEF | read_def file.def |
是,更新物理数据库 | 不要导入当前只读 block |
| 读取网表 | read_verilog file.v |
是,创建或更新逻辑设计 | 在自己的独立环境读取 |
| 读取 DDC | read_ddc file.ddc |
是,载入 DC 设计数据库 | 在自己的 DC 会话读取 |
6. 推荐的第一轮只读检查
以下命令只读取文件,不会修改原始目录内容:
# 1. 查看文件权限、大小和格式
ls -lh
file *
# 2. 查看主 SDC 中的时钟和时序例外
grep -nE "create_clock|create_generated_clock" \
rl7142_rx2.sdc
grep -nE \
"set_false_path|set_multicycle_path|set_max_delay|set_min_delay" \
rl7142_rx2.sdc
# 3. 查看 DEF 的设计名、单位和边界
grep -nE "^DESIGN|^UNITS|^DIEAREA" \
rl7142_rx2.def | head
# 4. 查看 Scan DEF 的 Scan Chain 部分
grep -nE "^DESIGN|^SCANCHAINS|END SCANCHAINS" \
rl7142_rx2.scan_def
# 5. 查看 SDF 的基本信息
grep -nE \
"SDFVERSION|DESIGN|DATE|VENDOR|PROGRAM|TIMESCALE" \
rl7142_rx2.sdf | head -30
# 6. 确认三个格式存在歧义的文件
head -n 50 rl7142_rx2.resourcefile
head -n 50 rl7142_rx2.compression.spf
head -n 50 rl7142_rx2.internal.spi
7. 最终建议
-
使用
file、head、grep、less对文件做第一轮只读检查。 - 不要在别人目录中启动会创建 log、临时文件和报告的 EDA 流程。
-
当前只读 ICC2 block 已经包含设计状态时,不要重复执行
read_sdc、read_def或属性修改脚本。 - 如果要重建设计,应在自己的工作目录中创建独立的 ICC2、DC、PT、Formality 或 DFT 会话。
- Tcl 文件必须先审查再 source,因为 source 是执行,不是查看。
-
compression.spf、internal.spi和resourcefile的最终用途,应根据文件头、 designer 的生成脚本和使用工具确认。