pretty code

顯示具有 VC 標籤的文章。 顯示所有文章
顯示具有 VC 標籤的文章。 顯示所有文章

2024年3月17日 星期日

Try Dataflow analyzer of pyverilog

pyverilog 有一個 Dataflow analyzer 的功能,此功能需要 pygraphviz module。

安裝時有一些錯誤,試了一下,按照下面步驟即可成功(網路上的解答適用舊版 pip,pip 23 以後需要這裡的步驟)。

我的環境在 Windows 下,故我要先安裝 graphviz,預設安裝路徑在 C:\Program Files\Graphviz,裡面已經包含相關的 header file and library。

接著打開 "x64 Native Tools Command Prompt for VS 2019",然後輸入底下指令即可。

pip install pygraphviz --config-settings="--build-option=build_ext" --config-settings="--build-option=-IC:\Program Files\Graphviz\include" --config-settings="--build-option=-LC:\Program Files\Graphviz\lib"

另外,example_graphgen.py 100 行有錯,需改成 graphgen.generate(target, walk=options.walk, identical=options.identical, step=options.step, do_reorder=options.reorder, delay=options.delay)

試了一下 OpenROAD-flow 裡面的 gcd.v,把 walk 選項設成 True 後,結果如下圖。

2023年5月31日 星期三

cl command line

即使在 Windows 下,我還是習慣用 gcc 來編譯自己寫的 C 程式,如果是別人的專案,只要是寫得好的 project,用 gcc 理論上也不會有什麼大問題。

至於一些有名的專案,為了減少編譯問題,大部份都還是提供 VC 的編譯選項,確實 Windows 下用 VC 問題會比較少!

另外,有些專案也會附上 cmake 設定檔,只要電腦環境有安裝好其他的相依性函式庫,這種的問題也不大。

但如果是一些 github 上的小專案,又沒有提供編譯說明文件,這時就會有點小麻煩,理論上用 IDE 來設定應該會比較輕鬆?

但我是個不習慣使用 IDE 的人,還是來找一下 command line 編譯選項好了。

https://github.com/j30206868/StereoSGBMNote

以上面專案為例,此專案是實作 SGBM 匹配演算法的專案,可以幫助我們學習演算法,他本身有用到 OpenCV。

底下是編譯步驟:

01. 配合電腦的 VC  版本,找到 OpenCV 有提供預先編譯好的版本,以 VS2015 為例,可以下載 3.4.10 版本!

02. 將下載檔案解壓縮到某個資料夾,此處我是解壓縮到 E:\OpenCV_C。

03. 切換目錄到 StereoSGBMNote 專案路徑,在這裡新增一個 build.bat,內容如下。

@echo off

set path=%path%;E:\OpenCV_C\opencv\build\x64\vc14\bin

cl main.cpp stereoSGBM.cpp /Fe"test.exe" /I E:\OpenCV_C\opencv\build\include /link E:\OpenCV_C\opencv\build\x64\vc14\lib\opencv_world3410.lib

echo.
pause

set path 是為了執行的時候可以找到相關 DLL 檔。
/Fe 是指定執行檔名稱。
/I 是指定標頭檔路徑。
/link 是指定 link 的 library,預設是 Release。

有些原始碼會有其他字元集的註解,假設跟當前終端機預設不同會有警告,如果是 UTF-8 編碼字元,可以加上 /utf-8 消除編譯警告。

04. 配合批次檔內容,開啟對應的 VC prompt,以此例來說是 "VS2015 x64 Native Tools Command Prompt"。

05. 在開啟的 VS 視窗中,切換工作目錄到專案路徑,執行我們剛準備好的 build.bat 即可。

2021年4月8日 星期四

VS Command Prompt

程式設計師都是小腦,每次都要 Google,留一份在網誌備忘。

2020年2月20日 星期四

Print integer string in the macro of VC

有些軟體編譯時在標頭檔會檢查 Compiler 版本,以 VC 來說,版本號是定義在 "_MSC_VER"。

今天為了檢查 TensorFlow build error 的問題,需要知道編譯時期在錯誤的 include file 中,這個 "_MSC_VER" 的值為何?

查了一下,可以用底下的方式搞定。

#pragma message("_MSC_VER is " _CRT_STRINGIZE(_MSC_VER))

另外,在 llvm\include\llvm\Support\Compiler.h 裡,有列出一些 VC 版本對應參考。

/// * 1910: VS2017, version 15.1 & 15.2
/// * 1911: VS2017, version 15.3 & 15.4
/// * 1912: VS2017, version 15.5
/// * 1913: VS2017, version 15.6
/// * 1914: VS2017, version 15.7
/// * 1915: VS2017, version 15.8
/// * 1916: VS2017, version 15.9
/// * 1920: VS2019, version 16.0
/// * 1921: VS2019, version 16.1