精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何優化HLS仿真腳本運行時間

jf_FPuwyZRU ? 來源:CSDN-雪天魚 ? 2024-02-23 09:29 ? 次閱讀

菜雞一枚,記錄下自己的學習過程,可能后續有更新,也可能沒有更新,謹慎參考。

v1.0 24-02-22 C++ 打印秒級時間戳,向 TXT 文件寫入多維數組

2 C++ 打印秒級時間戳

需求:由于自己目前一個 HLS 仿真腳本需要運行 1個多小時,先打算通過打印時間戳的方式找出最耗時的部分,然后想辦法優化。

具體代碼如下:

#include
#include
#include

//Getcurrenttimestamp(inseconds)
longlonggetCurrentTimestampInSeconds(){
autonow=std::now();
autonow_seconds=std::time_point_cast(now);
returnnow_seconds.time_since_epoch().count();
}

//Converttimestamptodate-timestring
std::stringtimestampToDateTimeString(longlongtimestamp){
autotime=std::from_time_t(timestamp);
std::time_tc_time=std::to_time_t(time);
charbuffer[80];
std::strftime(buffer,80,"%Y-%m-%d%H:%M:%S",std::localtime(&c_time));
returnstd::string(buffer);
}

voidprint_timestamp(){
//1Getcurrenttimestamp(seconds)
longlongtimestamp_seconds=getCurrentTimestampInSeconds();
std::cout<

HLS 仿真輸出:

Currenttimestamp(seconds):1708591115
Currentdateandtime:2024-02-221635

C++ 代碼在線調試 |

使用方式:將上述代碼復制到 testbench 對應的cpp中。再需要打印時間戳時,調用 print_timestamp() 函數即可在 vitis hls 的控制臺打印當前時間。(也可以放到一個額外的 cpp 文件中,然后testbench 包含該cpp對應的頭文件即可)

代碼解析:在C++中打印時間戳,可以使用標準庫 來獲取當前時間,并將其轉換為時間戳。調用 getCurrentTimestampInSeconds 函數會返回當前時間的秒級時間戳。然后可以使用 頭文件中的函數來將時間戳轉換為年月日小時分秒的格式。

在 timestampToDateTimeString 函數中,先將時間戳轉換為 std::system_clock 類型的時間點,然后使用將其轉換為 std::time_t 類型。最后使用 std::strftime 函數將 std::time_t 類型的時間轉換為日期時間字符串。

在 print_timestamp 中先獲取秒級時間戳,再將時間戳轉換為日期時間字符串并打印出來。

3 向 TXT 文件寫入多維數組

我比較喜歡用 python 腳本生成測試激勵(存儲到 txt 文件中,一行一個數據),然后 HLS testbench 讀取激勵文件。同時 hls 仿真結果也會寫入到指定的 TXT 文件,用于與參考值進行詳細對比,從而驗證硬件代碼是否功能正確。

這里以向 TXT 文件寫入 3D 數組為例,具體代碼如下:

#include
#include
#include
#include
#include
#include

usingnamespacestd;

//設置存放hls仿真結果的文件夾
conststringresult_path="path/to/hls_result/";
//這里的p_limit,b_limit,i_limit替換為想設置的常量,假設data為hls仿真結果
intdata[p_limit][b_limit][i_limit];

intmain()
{
ostringstreamoss;
{
cout<

若指定路徑下無該 txt 文件,會自動創建 output_hls.txt 文件。

代碼解析:先通過拼接得到文件的絕對路徑( 絕對路徑已嘗試過可行,相對路徑未嘗試 ),然后創建/打開該文件,再逐個讀取數據數據,寫入到文件中,最后關閉文件。

也可將該代碼寫為一個工具函數,方便進行調用, 如下所示

#include
#include
#include
#include
#include
#include

usingnamespacestd;

template
voidwrite_3d_matrix_txt(Tsrc[],
stringpath,stringfname,
constintp_limit,
constintb_limit,
constinti_limit
)
{//fname:"output"
ostringstreamoss;
oss<

根據上述模板,可寫出 1d, 2d, 4d... 等數組的寫入工具函數。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4233

    瀏覽量

    61961
  • C++
    C++
    +關注

    關注

    21

    文章

    2084

    瀏覽量

    73297
  • 代碼
    +關注

    關注

    30

    文章

    4667

    瀏覽量

    67751
  • Vitis
    +關注

    關注

    0

    文章

    145

    瀏覽量

    7310

原文標題:Vitis HLS 仿真 C++ 工具代碼分享

文章出處:【微信號:集成電路設計教程,微信公眾號:集成電路設計教程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何縮短Vivado的運行時間

    在Vivado Implementation階段,有時是有必要分析一下什么原因導致運行時間(runtime)過長,從而找到一些方法來縮短運行時間
    的頭像 發表于 05-29 14:37 ?1.4w次閱讀
    如何縮短Vivado的<b class='flag-5'>運行時間</b>

    如何檢查Linux服務器的運行時間

    Linux 中的 uptime 用于查看系統啟動后的運行時間。它是一個比較簡單的 Linux 命令,可以不帶參數直接運行
    發表于 11-25 15:25 ?1.5w次閱讀
    如何檢查Linux服務器的<b class='flag-5'>運行時間</b>

    stm32做https的server ,serverkeychange運行時間10多s怎么優化

    stm32做https的server ,serverkeychange這一步運行時間10多s,求優化辦法
    發表于 03-27 08:03

    STM8S在IAR軟件仿真Simulator怎么查看運行時間

    STM8S 在IAR軟件仿真Simulator怎么查看運行時間?在某些芯片通信時,會要求延時5us,10us,150ms等,這些延時不需要太精確,只要大概就好,但怎么在Simulator仿真里能通過斷點查看,即兩個斷點之間的
    發表于 05-09 07:48

    freertos的任務運行時間怎么設置

    對于相同優先級的任務采用時間片輪詢的方式運行,那比如說有兩個優先級都為5的任務,那這兩個任務的運行時間如何設置呢?在rt-thread中創建任務時就可以設置任務的運行時間,在freer
    發表于 07-19 08:03

    運行時軟件故障注入器的設計與實現

    針對實際故障診斷中難以有效獲得故障現場信息的問題,提出通過在軟件運行時注入故障的方式獲取故障現場信息,設計并實現一種運行時軟件故障注入器,給出其中的故障腳本
    發表于 04-06 08:40 ?19次下載

    C語言教程之顯示程序運行時間

    C語言教程之顯示程序運行時間,很好的C語言資料,快來學習吧。
    發表于 04-25 16:09 ?0次下載

    基于本地任務與遠程任務運行時間的CPS和PAA的概念

    評價由某一特定預測策略提供的預測運行時間精度的標準。仿真實驗表明:與本地任務預測策略如Last和滑動窗口中值(SM)相比,CPS的平均相對殘差下降了1.58%、1.62%;與遠程任務預測策略如平均運行時間(RM)和加權移動平均值
    發表于 01-04 14:13 ?0次下載
    基于本地任務與遠程任務<b class='flag-5'>運行時間</b>的CPS和PAA的概念

    電機運行時間進行排列 是分為兩個部分來完成這個程序的設計的

    前幾天有個學員咨詢一個程序設計的問題,程序的控制要求如下:需要控制5臺電機的運行,每臺電機運行時需要記錄運行時間,電機啟動運行時,根據記錄的運行時間
    的頭像 發表于 07-19 08:57 ?6865次閱讀
    電機<b class='flag-5'>運行時間</b>進行排列 是分為兩個部分來完成這個程序的設計的

    最大化延長即使具有老化電池的汽車電池組運行時間

    最大化延長即使具有老化電池的汽車電池組運行時間
    發表于 03-20 12:44 ?9次下載
    最大化延長即使具有老化電池的汽車電池組<b class='flag-5'>運行時間</b>

    如何高效測量ECU的運行時間

    ,最終可能會引起運行時間方面的問題。這在項目后期需要大量的時間和金錢來解決。如果不能掌握系統的運行狀態,則很難發現系統內缺陷的根源。 解決方案 將TA軟件工具套件與VX1000測量標定硬件相結合,可同步分析 ECU內部
    的頭像 發表于 10-28 11:05 ?2063次閱讀

    淺析STM32代碼運行時間的技巧

    前言 ????測試代碼的運行時間的兩種方法: 使用單片機內部定時器,在待測程序段的開始啟動定時器,在待測程序段的結尾關閉定時器。為了測量的準確性,要進行多次測量,并進行平均取值。 借助示波器的方法
    的頭像 發表于 11-09 09:52 ?3667次閱讀
    淺析STM32代碼<b class='flag-5'>運行時間</b>的技巧

    ch32v307記錄程序運行時間

    ,不僅會降低用戶的體驗,甚至可能會導致系統的崩潰。 因此,在程序設計和調試中,我們常常需要記錄程序的運行時間,并通過不斷的優化來提升程序的性能。本文將介紹如何在各種編程語言中記錄程序運行時間,并分享一些提高程序性能的技巧。
    的頭像 發表于 08-22 15:53 ?725次閱讀

    西門子SCL編程50臺電機運行時間累計方法

    當RUN信號為TRUE時,開始計時,為FALSE時停止計時,單次運行時間清零,長按RESET為5秒時,單次和總運行時間都清零。
    發表于 11-27 09:59 ?1574次閱讀
    西門子SCL編程50臺電機<b class='flag-5'>運行時間</b>累計方法

    三菱plc累計運行時間怎么編程

    具有重要意義。本文將詳細介紹如何使用三菱PLC編程實現累計運行時間的統計功能。 一、概述 累計運行時間是指設備或系統在一定時間內的總運行時間。在工業生產中,對設備的累計
    的頭像 發表于 06-20 11:31 ?1300次閱讀