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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207820.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207820.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207820.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我獲取股票和期貨數據的常用函數

記錄一下獲取數據所使用的函數&#xff0c;以防止遺忘和方便查找。 # 獲取掘金的數據 # 需要打開并登陸掘金終端 def get_data_juejin(symbol"bu2112",start"2021-8-1",end"2021-8-30 23:00:00",frequency"1800s",fields"eob,sy…

MySQL視圖介紹與實驗練習

文章目錄 1. MySQL 中的視圖&#xff08;View&#xff09;簡介1.1 視圖的基本概念&#xff1a;1.2 創建視圖&#xff1a;1.3 查看視圖&#xff1a;1.4 更新視圖&#xff1a;1.5 刪除視圖&#xff1a;1.6 視圖的嵌套&#xff1a;1.7 權限管理&#xff1a;1.8 檢查視圖信息&#…

vuepress-----15、md用法進階

vuepress markdown說明文檔 https://www.vuepress.cn/guide/markdown.html # 示例&#xff1a;封裝countUp.js為Vue組件 https://github.com/inorganik/countUp.js https://inorganik.github.io/countUp.js/ # 安裝 yarn add countup.js# 創建vue文件 全局Vue組件存放位置…

web項目服務器后臺運行

阿里官方方法 在Linux系統的ECS實例內,當斷開SSH客戶端后,如何保持進程繼續運行的解決方案_云服務器 ECS-阿里云幫助中心 (aliyun.com)

<Linux>(極簡關鍵、省時省力)《Linux操作系統原理分析之文件管理(1)》(22)

《Linux操作系統原理分析之文件管理&#xff08;1&#xff09;》&#xff08;22&#xff09; 7 文件管理7.1 文件與文件系統7.1.1 文件7.1.3 文件系統及其功能 7.2 文件的組織結構7.2.1 文件的邏輯結構7.2.2 文件的物理結構一、順序結構&#xff08;順序文件或連續文件&#xf…

Java來實現二叉樹算法,將一個二叉樹左右倒置(左右孩子節點互換)

文章目錄 二叉樹算法二叉樹左右變換數據 今天來和大家談談常用的二叉樹算法 二叉樹算法 二叉樹左右變換數據 舉個例子&#xff1a; Java來實現二叉樹算法&#xff0c;將一個二叉樹左右倒置&#xff08;左右孩子節點互換&#xff09;如下圖所示 實現的代碼如下&#xff1a;以…

ECharts的顏色漸變

目錄 一、直接配置參數實現顏色漸變 二、使用ECharts自帶的方法實現顏色漸變 一、兩種漸變的實現方法 1、直接配置參數實現顏色漸變 橫向的漸變&#xff1a; //主要代碼 option {xAxis: {type: category,boundaryGap: false,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yA…

云上巴蜀丨云軸科技ZStack成功實踐精選(川渝)

巴蜀——古政權必爭之地 不僅擁有優越的戰略位置 而且擁有豐富的自然資源&#xff0c;悠久的歷史文化 如今的川渝經濟、人口發展迅速 2023年前三季度&#xff0c;四川與重慶GDP增速均超過國家平均線&#xff0c;為6.5%為5.6% 川渝經濟發展帶動數字化發展浪潮 云軸科技ZSt…

打造專屬小程序,喬拓云模板平臺助力商家搶占先機

打造專屬小程序&#xff0c;喬拓云模板平臺助力商家搶占先機&#xff01;該平臺涵蓋全行業小程序模板&#xff0c;一鍵復制即可上線。 想要快速創建高效實用的小程序&#xff0c;喬拓云小程序模板開發平臺為您提供了解決方案&#xff01;我們為您提供一系列精心設計的小程序模板…

LeetCode Hot100 131.分割回文串

題目&#xff1a; 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正著讀和反著讀都一樣的字符串。 方法&#xff1a;靈神-子集型回溯 假設每對相鄰字符之間有個逗號&#xff0c;那么就看…

[c++]—string類___深度學習string標準庫成員函數與非成員函數(string的增刪查改函數)

沉淀,沉淀,再沉淀. &#x1f469;&#x1f3fb;?&#x1f4bb;作者:chlorine &#x1f449;上一篇&#xff1a;string標準庫成員函數和非成員函數(上) 目錄 &#x1f36d;構造和析構的實現 &#x1f36d; string→c類型的字符串數組 &#x1f36d;operator[]類對象元素的訪…

c語言-動態內存管理

文章目錄 一、為什么會有動態內存管理二、申請內存函數1、malloc2、free3、calloc4、realloc 三、常見的動態內存的錯誤四、練習 一、為什么會有動態內存管理 1.我們一般的開辟空間方式&#xff1a; int a 0;//申請4個字節空間 int arr[10] { 0 };//申請40個字節空間2.這樣…

解決在Linux中進行redis的主從復制時出現的從機可以獲取到主機的信息,主機獲取不到從機的信息~

主機&#xff1a; 從機1&#xff1a; 從機2&#xff1a; 出現上述的原因是我在redis.conf中設置了密碼&#xff0c;那么就導致了我在進行主從復制時&#xff0c;需要進行密碼驗證&#xff0c;然后我在網上查閱了很多資料&#xff0c;有的說讓在從機中指定密碼&#xff0c;有的說…

一對多聊天室

多人聊天包 由于要先創建服務面板&#xff0c;接收客戶端連接的信息&#xff0c;此代碼使用順序為先啟動服務端&#xff0c;在啟動客戶端&#xff0c;服務端不用關&#xff0c;不然會報錯。多運行幾次客戶端&#xff0c;實現單人聊天 創建服務面板 package yiduiduo;import j…

【頭歌系統數據庫實驗】實驗7 SQL的復雜多表查詢-1

目錄 第1關&#xff1a;求各顏色零件的平均重量 第2關&#xff1a;求北京和天津供應商的總個數 第3關&#xff1a;求各供應商供應的零件總數 第4關&#xff1a;求各供應商供應給各工程的零件總數 第5關&#xff1a;求重量大于所有零件平均重量的零件名稱 第6關&#xff1…

初識人工智能,一文讀懂人工智能概論(1)

&#x1f3c6;作者簡介&#xff0c;普修羅雙戰士&#xff0c;一直追求不斷學習和成長&#xff0c;在技術的道路上持續探索和實踐。 &#x1f3c6;多年互聯網行業從業經驗&#xff0c;歷任核心研發工程師&#xff0c;項目技術負責人。 &#x1f389;歡迎 &#x1f44d;點贊?評論…

Python Django-allauth: 構建全面的用戶身份驗證系統

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com Django-allauth是一個功能強大的Django插件&#xff0c;旨在簡化和定制Web應用程序中的用戶身份驗證和管理。本文將深入介紹Django-allauth的核心功能、基本用法以及實際應用場景&#xff0c;通過豐富的示例代碼…

AWTK 串口屏開發(1) - Hello World

1. 功能 這個例子很簡單&#xff0c;制作一個調節溫度的界面。在這里例子中&#xff0c;模型&#xff08;也就是數據&#xff09;里只有一個溫度變量&#xff1a; 變量名數據類型功能說明溫度整數溫度。范圍 (0-100) 攝氏度 2. 創建項目 從模板創建項目&#xff0c;將 hmi/…

挑選在線客服系統的七大注意事項

越來越多的企業開始注重客戶服務&#xff0c;所以在線客服系統也逐漸成為了電商企業不可或缺的一部分。然而在挑選在線客服系統的過程中&#xff0c;蠻多企業會遇到各種各樣的問題&#xff0c;這就導致了最終選擇的系統并不適合自己企業的需求。接下來我將提醒大家挑選在線客服…