当前位置: 首页 > news >正文

DreamPlace 的下载安装与使用

DreamPlace 是一款芯片放置工具,用于宏单元(macro)和标准单元(Standard Cell)的放置以及布线,并计算 HPWL、Overlap 等用于衡量芯片性能的参数。


一、环境

1. 系统环境:Ubuntu 20.04

DreamPlace 只能在 Linux 环境使用

2. Python 环境:

  • Python 3.8
  • PyTorch 2.0.0
  • Cuda 11.8

二、安装 Dreamplace

1. 安装第三方 Dependency

  • Boost
    sudo apt-get update
    sudo apt-get install libboost-all-dev
    
  • Bison & flex
    sudo apt-get install flex bison
    

2. 下载 DreamPlace

git clone --recursive https://github.com/limbo018/DREAMPlace.git

3. 安装 Python Dependency

cd DREAMPlace
pip install -r requirements.txt

4. Build Dreamplace

build 之前需要先打开 DREAMPlace/dreamplace/ops/CMakeLists.txt 文件,把第 12 行的注释打开(不然无法安装这个包,我在运行 deepplace 的时候用到了这个包,其他情况下还没有用到)

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<installation directory> -DPython_EXECUTABLE=$(which python)
make
make install
  • -DCMAKE_INSTALL_PREFIX 是安装路径,默认是 DREAMPLACE/install
  • -DPython_EXECUTABLE 是 python 路径,如果有 anaconda 默认是 base 环境

5. Install Benchmarks

cd ../install
python benchmarks/ispd2005_2015.py

另外,benchmark 也可以自己下载并解压到正确的文件夹下,具体位置可参考下文目录树。DreamPlace 只支持 bookshelf 和 Lef/Def 格式的文件。

6. 测试是否安装成功

python dreamplace/Placer.py test/ispd2005/adaptec1.json
python unittest/ops/hpwl_unittest.py

安装完成后的目录结构如下,主要用到的东西都在 install 文件夹内:

DREAMPlace
|-- CMakeLists.txt
|-- Dockerfile
|-- LICENSE
|-- README.md
|-- benchmarks
|-- build
|-- cmake
|-- dreamplace
|-- images
|-- install
|   |-- benchmarks
|   |   |-- ispd2005
|   |   |   |-- adaptec1
|   |   |   |   |-- adaptec1.aux
|   |   |   |   |-- adaptec1.dp.aux
|   |   |   |   |-- adaptec1.eplace-ip.pl
|   |   |   |   |-- adaptec1.eplace.aux
|   |   |   |   |-- adaptec1.lg.pl
|   |   |   |   |-- adaptec1.nets
|   |   |   |   |-- adaptec1.nodes
|   |   |   |   |-- adaptec1.pl
|   |   |   |   |-- adaptec1.scl
|   |   |   |   `-- adaptec1.wts
|   |   |   |-- adaptec2
|   |   |   |-- adaptec3
|   |   |   |-- adaptec4
|   |   |   |-- bigblue1
|   |   |   |-- bigblue2
|   |   |   |-- bigblue3
|   |   |   `-- bigblue4
|   |   |-- ispd2005_2015.py
|   |   `-- ispd2019.py
|   |-- bin
|   |-- dreamplace
|   |   |-- BasicPlace.py
|   |   |-- EvalMetrics.py
|   |   |-- NesterovAcceleratedGradientOptimizer.py
|   |   |-- NonLinearPlace.py
|   |   |-- Params.py
|   |   |-- PlaceDB.py
|   |   |-- PlaceObj.py
|   |   |-- Placer.py
|   |   |-- Timer.py
|   |   |-- __init__.py
|   |   |-- configure.py
|   |   |-- ops
|   |   `-- params.json
|   |-- include
|   |-- lib
|   |-- test
|   |   |-- dac2012
|   |   |-- iccad2014
|   |   |-- iccad2015.ot
|   |   |-- ispd2005
|   |   |-- ispd2015
|   |   `-- ispd2019
|   |-- thirdparty
|   `-- unittest
|-- requirements.txt
|-- test
|-- thirdparty
`-- unittest

三、测试脚本

回到根目录根目录创建新文件夹,并创建测试脚本

cd ~
mkdir test_dreamplace
cd test_dreamplace
vim main.py

脚本内容如下,其中 params 用来加载配置参数,我们需要提供关于 bechmark 的配置文件,配置文件格式可以参考 test 文件夹内的文件:

import Params, Placerparams = Params.Params()# load parameters
add = "./test/ispd2005/adaptec3.json"
params.load(add)
r = Placer.place(params)
r = r[-3][0]
wl = float(r[0].hpwl.data)
overf = float(r[0].overflow.data)print(wl)
print(overf)

将 DreamPlace 移植到该目录下:

cd ~
cp -r DREAMPlace/install/* test_dreamplace/

然后将 test_dreamplace/dreamplace 文件夹下的除 ops、init.py、configure.py 之外的其他文件移动到 test_dreamplace/ 目录下。
之后运行脚本跑通即可:

python main.py

目前该文件夹结构为:

test_dreamplace
|-- BasicPlace.py
|-- EvalMetrics.py
|-- NesterovAcceleratedGradientOptimizer.py
|-- NonLinearPlace.py
|-- Params.py
|-- PlaceDB.py
|-- PlaceObj.py
|-- Placer.py
|-- Timer.py
|-- __pycache__
|-- benchmarks
|   |-- ispd2005
|   |-- ispd2005_2015.py
|   `-- ispd2019.py
|-- bin
|-- dreamplace
|   |-- __init__.py
|   |-- __pycache__
|   |-- configure.py
|   `-- ops
|-- include
|-- lib
|-- main.py
|-- params.json
|-- results
|   `-- adaptec3
|-- test
|-- thirdparty
`-- unittest

相关文章:

DreamPlace 的下载安装与使用

DreamPlace 是一款芯片放置工具&#xff0c;用于宏单元&#xff08;macro&#xff09;和标准单元&#xff08;Standard Cell&#xff09;的放置以及布线&#xff0c;并计算 HPWL、Overlap 等用于衡量芯片性能的参数。 一、环境 1. 系统环境&#xff1a;Ubuntu 20.04 DreamPla…...

FPGA模块——SPI协议(读写FLASH)

FPGA模块——SPI协议&#xff08;读写FLASH&#xff09; &#xff08;1&#xff09;FLASH芯片 W25Q16BV&#xff08;2&#xff09;SPI协议&#xff08;3&#xff09;芯片部分命令1.Write Enable&#xff08;06h&#xff09;2.Chip Erase (C7h / 60h)3.写指令&#xff08;02h&am…...

SQL自学通之表达式条件语句与运算

目录 一、目标 二、表达式条件语句 1、表达式&#xff1a; 2、条件 2.1、WHERE 子句 三、运算 1、数值型运算: 1.1、加法() 1.2、减法 (-) 1.3、除法&#xff08;/&#xff09; 1.4、乘法 &#xff08;*&#xff09; 1.5、取模 &#xff08;%&#xff09; 优先级别…...

公网域名如何解析到内网IP服务器——快解析域名映射外网访问

在本地搭建主机应用后&#xff0c;由于没有公网IP或没有公网路由权限&#xff0c;在需要发布互联网时&#xff0c;就需要用到外网访问内网的一些方案。由于内网IP在外网不能直接访问&#xff0c;通常就用通过外网域名来访问内网的方法。那么&#xff0c;公网域名如何解析到内网…...

线程安全与并发区别

在并发编程中&#xff0c;"线程安全 "和 "并发 "是相关的概念&#xff0c;但它们有着不同的含义。 线程安全 如果一个类或方法可以同时被多个线程使用&#xff0c;而不会导致数据损坏或意外行为&#xff0c;那么这个类或方法就被认为是线程安全的。即使多…...

SEO优化是什么,如何进行SEO优化

SEO&#xff08;Search Engine Optimization&#xff09;是指通过对网站进行优化&#xff0c;提高其在搜索引擎中的排名&#xff0c;从而增加有机流量和改善用户体验的一系列技术和方法。 进行SEO优化可以帮助网站获得更多的有机搜索流量&#xff0c;并提升网站的曝光度和可见…...

nodejs发起http或https请求

前言&#xff1a;使用node内置模块http、https http请求 const express require(express) const http require(http)const app express()const loginConfig (token) > {return {hostname: api.test.com,port: 80,path: /test?access_token${token},method: GET} }app.…...

举例C#使用特性排除某些类成员不参与XML序列化和反序列化

在C#中&#xff0c;可以使用 [XmlIgnore] 特性来排除某些类成员不参与XML序列化和反序列化。这个特性告诉XML序列化器忽略被标记的成员。 以下是一个使用 [XmlIgnore] 特性的示例&#xff1a; using System; using System.IO; using System.Xml.Serialization;public class P…...

PHP基础 - 输入输出

在 PHP 中,有多种方法可以用来输出内容。下面是其中的几种: 1、echo: 这是最常见的输出语句之一,可以输出一个或多个字符串。它是一个语言结构,可以省略括号。使用示例如下: <?php // 使用 echo 语句输出一个字符串 echo "Hello, world!\n";// 可以使用…...

大创项目推荐 交通目标检测-行人车辆检测流量计数 - 大创项目推荐

文章目录 0 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…...

利用R语言heatmap.2函数进行聚类并画热图

数据聚类然后展示聚类热图是生物信息中组学数据分析的常用方法&#xff0c;在R语言中有很多函数可以实现&#xff0c;譬如heatmap,kmeans等&#xff0c;除此外还有一个用得比较多的就是heatmap.2。最近在网上看到一个笔记文章关于《一步一步学heatmap.2函数》&#xff0c;在此与…...

伦茨科技宣布ST17H6x芯片已通过Apple Find My「查找」认证

深圳市伦茨科技有限公司&#xff08;以下简称“伦茨科技”&#xff09;发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家&#xff0c;该平台提供可通过Apple Find My认证的Apple查找&#xff08;Find My&#xff09;功能集成解决方案。…...

nodejs微信小程序+python+PHP的游戏测评网站设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…...

在 JavaScript 中导入和导出 Excel XLSX 文件:SpreadJS

在 JavaScript 中导入和导出 Excel XLSX 文件 2023 年 12 月 5 日 使用 MESCIUS 的 SpreadJS 将完整的 JavaScript 电子表格添加到您的企业应用程序中。 SpreadJS 是一个完整的企业 JavaScript 电子表格解决方案&#xff0c;用于创建财务报告和仪表板、预算和预测模型、科学、工…...

【Pytorch】Fizz Buzz

文章目录 1 数据编码2 网络搭建3 网络配置&#xff0c;训练4 结果预测5 翻车现场 学习参考来自&#xff1a; Fizz Buzz in Tensorflowhttps://github.com/wmn7/ML_Practice/tree/master/2019_06_10Fizz Buzz in Pytorch I need you to print the numbers from 1 to 100, excep…...

C++ Primer Plus第十四章笔记

目录 1.包含对象成员的类 valarray类简介 1.2 Student类的设计 1.3 接口和实现 1.4 C和约束 2. 私有继承 2.1 私有继承和组合的异同 2.2 初始化基类组件 2.3 访问基类的方法 2.4 访问基类对象 2.5 访问基类的友元函数 2.5 使用组合还是私有继承 3. 保护继承 4. 使…...

CentOS 7 mini 运行环境搭建与测试——CentOS Mini 安装ifconfig工具【云原生开发部署实践笔记】

云原生开发部署实践笔记 一、开发测试环境搭建与测试 1.1 Linux运行环境的搭建与测试 虽然CentOS已经更新到Stream 9 版本&#xff0c;但基于大多数企业和单位多数使用CentOS 7版本作为运行底座&#xff0c;7版本也一直在更行维护&#xff0c;此实践基于CentOS 7 Mini版本搭…...

案例061:基于微信小程序的互助学习系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

【ELK03】ES 索引的Mapping映射详解、数据类型和settings属性设置

一、ES 索引的映射和设置 1.MAPPING 映射(MAPPING)就是es中一个决定了文档如何存储,如何生成索引,字段各种类型定义的过程.类似于我们在关系型数据库中创建一个表格数据之前先定义表格有哪些字段,每个字段是什么类型,然后数据会按照这个配置写入表格,ES中同样是这个过程,它由…...

线性代数入门与学习笔记

该内容为重拾部分线性代数知识的学习笔记&#xff0c;内容上更多的是为了解决问题而学习的内容&#xff0c;并非系统化的学习。 针对的问题为&#xff1a;Music算法推导求解过程中的矩阵计算知识。 学习的内容包括&#xff1a;矩阵原理、矩阵行列式、矩阵的秩、线性变换矩阵变换…...

【秣厉科技】LabVIEW工具包——OpenCV 实战:Mat 类在工业视觉中的高效数据流转

1. Mat类&#xff1a;工业视觉的数据高速公路 在工业视觉系统中&#xff0c;图像数据就像流水线上的零件&#xff0c;需要快速准确地传递到各个处理环节。OpenCV的Mat类就是这条流水线上的传送带&#xff0c;而LabVIEW则是控制整个生产线的智能大脑。我第一次在半导体检测项目…...

OpenClaw浏览器自动化:Qwen3-32B-Chat实现智能爬虫与数据分析

OpenClaw浏览器自动化&#xff1a;Qwen3-32B-Chat实现智能爬虫与数据分析 1. 为什么需要智能化的浏览器自动化&#xff1f; 上个月我需要收集某个垂直领域的行业报告&#xff0c;手动复制粘贴了十几个网页后&#xff0c;突然意识到&#xff1a;这种重复劳动不正是AI该解决的问…...

LobeChat新手入门指南:从零开始,打造专属智能助手

LobeChat新手入门指南&#xff1a;从零开始&#xff0c;打造专属智能助手 1. 为什么选择LobeChat&#xff1f; 在当今数字化时代&#xff0c;智能对话系统已经成为提升工作效率和生活品质的重要工具。LobeChat作为一款开源的高性能聊天机器人框架&#xff0c;凭借其易用性和强…...

MacBook上5分钟搞定Jmeter接口压测:从下载到脚本自动保存结果(附BeanShell代码)

MacBook高效接口压测指南&#xff1a;5分钟实现Jmeter自动化结果收集 每次遇到偶发性接口问题&#xff0c;手动点击上百次查看结果是不是让你抓狂&#xff1f;作为开发者&#xff0c;我们需要的不仅是工具&#xff0c;更是一套能自动完成脏活的解决方案。今天我们就来彻底解决…...

解码像素,探寻隐匿——CTF-03图片隐写学习心得

CTF-03聚焦图片隐写专项学习&#xff0c;是从基础安全知识迈向数据隐藏与取证实战的重要进阶。通过本次学习&#xff0c;我系统掌握了图片隐写的核心原理、常见工具与实操技巧&#xff0c;不仅深化了对“数据隐匿”攻防思维的理解&#xff0c;更提升了对图片文件的深度分析与信…...

Cisco Packet Tracer新手必看:5分钟搞定路由器静态路由配置(附避坑指南)

Cisco Packet Tracer静态路由配置实战&#xff1a;从零到精通的完整指南 刚接触网络工程的朋友们&#xff0c;第一次在Cisco Packet Tracer中配置静态路由时&#xff0c;是不是经常遇到"网络不通"的困扰&#xff1f;作为网络通信的基础技能&#xff0c;静态路由配置看…...

STM32主从定时器实战:用CubeMX搞定PWM移相+动态调占空比(附G474配置)

STM32主从定时器实战&#xff1a;CubeMX图形化配置PWM移相与动态调占空比 在电力电子和电机控制领域&#xff0c;精确的PWM信号控制是系统高效运行的关键。对于需要多路相位可调PWM的应用场景&#xff0c;如交错并联DC/DC变换器、三相逆变器等&#xff0c;传统的手动寄存器配置…...

工业设计必看:SolidWorks曲面建模中的NURBS核心原理与7个避坑指南(2024版)

工业设计进阶&#xff1a;SolidWorks曲面建模中的NURBS核心原理与高阶实践&#xff08;2024版&#xff09; 在汽车外壳的流线型曲面或消费电子产品的有机形态背后&#xff0c;NURBS&#xff08;非均匀有理B样条&#xff09;技术始终是工业设计软件的核心引擎。作为SolidWorks等…...

别再被Kettle的流程线骗了!详解‘阻塞数据直到步骤都完成’控件的正确用法与避坑指南

Kettle并行执行模型深度解析&#xff1a;如何正确使用"阻塞数据直到步骤都完成"控件 在ETL工具Kettle的使用过程中&#xff0c;许多开发者都会遇到一个令人困惑的现象&#xff1a;明明在转换中画了流程线&#xff0c;步骤却没有按照预期的顺序执行。这种认知偏差往往…...

FreeMoCap终极指南:如何用普通摄像头实现专业级3D动作捕捉

FreeMoCap终极指南&#xff1a;如何用普通摄像头实现专业级3D动作捕捉 【免费下载链接】freemocap Free Motion Capture for Everyone &#x1f480;✨ 项目地址: https://gitcode.com/GitHub_Trending/fr/freemocap 还在为专业动作捕捉设备的高昂价格而烦恼吗&#xff…...