日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 處芯積律

1導(dǎo)言

今天介紹的工具是Verdi自帶的HW/SW,特點(diǎn)是將匯編語言/C語言/寄存器狀態(tài)/memory狀態(tài)和Verdi的波形同步,便于debug。

越來越多的設(shè)計(jì)包含嵌入式處理器內(nèi)核。這意味著這些設(shè)計(jì)的驗(yàn)證涉及在嵌入式內(nèi)核上運(yùn)行的代碼,通常是開發(fā)系統(tǒng)的一個(gè)組成部分。同樣,測試代碼的開發(fā)通常是整體驗(yàn)證策略的一部分。硬件調(diào)試在硬件級(jí)別工作,硬件狀態(tài)可視化為信號(hào),而嵌入式代碼則以匯編或C級(jí)別編寫。這導(dǎo)致了抽象水平的差距。目前,彌合差距涉及對(duì)嵌入式核心工作的扎實(shí)理解。它通常通過開發(fā)臨時(shí)腳本來完成,以將捕獲的跟蹤數(shù)據(jù)細(xì)化到程序集級(jí)別。回到C級(jí)通常只能通過繁瑣的體力勞動(dòng)來實(shí)現(xiàn)。(官方的介紹)

來點(diǎn)直觀的感受:

左邊是eclipse,分別展現(xiàn)匯編(包含pc,opcode等),C語言,通用寄存器,memory等信息。右側(cè)是Verdi展示的硬件執(zhí)行波形。

波形-匯編-C語言-寄存器-memory完全同步,數(shù)據(jù)對(duì)debug而言一目了然,非常直觀。左側(cè)可以單步執(zhí)行,其他模塊(包括Verdi波形)也同步變化。如果調(diào)試右側(cè)波形,左側(cè)的eclipse信息也是同步變化。


2基本介紹

目前手冊明確說支持的平臺(tái)有RedHat和SUSE。亦安自己使用的平臺(tái):RedHat7.9(64),Verdi2023.12,VCS2023.12。

官方特別支持的核包括ARM的所有核以及部分合作商的核。對(duì)RISC-V架構(gòu)也同樣支持。

如果你使用的是ARM的核,那么就屬于官方支持的架構(gòu)和核,我們只需要指定仿真核的參數(shù),即可生成hwsw.fsdb用于HW/SW仿真。流程如下:

轉(zhuǎn)換流程如下:

轉(zhuǎn)換命令:

hwsw_debug_convert cpuType=Cortex-M3 exeFile=test.elf \ -i tarmac.log -o hwsw.fsdb 

hwsw_debug_convert:轉(zhuǎn)換命令

cpuType=Cortex-M3:這個(gè)命令指示的是tarmac.log/cpu.log的格式,對(duì)應(yīng)的是*.pat文件,該文件解釋了log的打印格式。具體tarmac.log格式由vendor決定。*.pat位置在$VERDI_HOME/share/hwsw_debug/patterns。如果是定制化的格式,那么可以自己寫一個(gè)mycpu.pat放入這個(gè)目錄下,然后將轉(zhuǎn)換命令換成:

hwsw_debug_convert cpuType=mycpu exeFile=test.elf \ -i tarmac.log -o hwsw.fsdb 

-i tarmac.log:該命令指示的是輸入的log文件,該log文件記錄了仿真時(shí)的各種狀態(tài),例如:

//   Cycle : #inst  hart   pc    opcode    reg=value   ; mnemonic //---------------------------------------------------------------  24 : #1 0 00000000 595552b7  t0=59555000 ; lui     t0,0x59555000  25 : #2 0 00000004 55528293  t0=59555555 ; addi    t0,t0,1365  26 : #3 0 00000008 7c029073              ; csrrw   zero,csr_7c0,t0  32 : #4 0 0000000c f0044117  sp=f004400c ; auipc   sp,0xf0044000  34 : #5 0 00000010 e4410113  sp=f0043e50 ; addi    sp,sp,-444  34 : #6 0 00000014 00002805  ra=00000016 ; c.jal   0x44  56 : #7 0 00000044 00007155  sp=f0043d80 ; c.addi16sp -208  57 : #8 0 00000046 0000c786              ; c.swsp  ra,0xcc [f0043e4c]  58 : #9 0 00000048 0000c5a2              ; c.swsp  s0,0xc8 [f0043e48]  58 : #10 0 0000004a 00000980  s0=f0043e50 ; c.addi4spn s0,0xd0  59 : #11 0 0000004c f00437b7  a5=f0043000 ; lui     a5,0xf0043000  62 : #12 0 00000050 f6440713  a4=f0043db4 ; addi    a4,s0,-156  62 : #13 0 00000054 e0e7ae23              ; sw      a4,-484(a5) [f0042e1c]  63 : #14 0 00000058 f00437b7  a5=f0043000 ; lui     a5,0xf0043000  63 : #15 0 0000005c f3440713  a4=f0043d84 ; addi    a4,s0,-204  64 : #16 0 00000060 e0e7ac23              ; sw      a4,-488(a5) [f0042e18]  64 : #17 0 00000064 f00437b7  a5=f0043000 ; lui     a5,0xf0043000  65 : #18 0 00000068 e187a783  a5=f0043d84 ; lw      a5,-488(a5) [f0042e18]  65 : #19 0 0000006c f0043737  a4=f0043000 ; lui     a4,0xf0043000  66 : #20 0 00000070 e1c72703  a4=f0043db4 ; lw      a4,-484(a4) [f0042e1c]  67 : #21 0 00000074 0000c398              ; c.sw    a4,0(a5) [f0043d84]  67 : #22 0 00000076 f00437b7  a5=f0043000 ; lui     a5,0xf0043000  68 : #23 0 0000007a e187a783  a5=f0043d84 ; lw      a5,-488(a5) [f0042e18]  72 : #24 0 0000007e 0007a223              ; sw      zero,4(a5) [f0043d88]  72 : #25 0 00000082 f00437b7  a5=f0043000 ; lui     a5,0xf0043000  73 : #26 0 00000086 e187a783  a5=f0043d84 ; lw      a5,-488(a5) [f0042e18] 

對(duì)上面log格式解釋的*.pat的文件如下:

#PARAMETERS: configName=RISC-V32I riscvFixes  # Instructions:  %CYCLE% :( \#%DEC%)? 0( %PC%)?( %OPCODE%)?( %REGNAME%=%REGDATA%)? ; %DISASM%  # ignore //.* 

*.pat支持的表述:

-o hwsw.fsdb:這個(gè)命令指示的是輸出的文件。

轉(zhuǎn)換完成后使用:verdi -dbdir sim.daidir -ssf hwsw.vf打開verdi,并打開HW/SW即可實(shí)現(xiàn)硬件軟件同步的仿真。

hwsw.vf是對(duì)兩個(gè)fsdb文件的合并,即design.fsdb和log轉(zhuǎn)換來的hwsw.fsdb

在nwave里面點(diǎn)擊File/Edit Virtual File合并兩個(gè)文件,即可生成上述的hwsw.vf。如下:

3## DEMO

有些細(xì)節(jié)可能沒有講清楚,這里的關(guān)鍵個(gè)人覺得是生成tarmac.log其他基本沒有技術(shù)含量,手冊里面描述的非常清晰,亦安只是把一些宏觀流程展現(xiàn)給大家,如果還有問題,請參閱Verdi手冊。

官方給了個(gè)RV32的Demo,在$VERDI_HOME/demo/hwsw_debug/veer_riscv這個(gè)demo可以直接跑,感興趣的朋友可以體驗(yàn)一下流程。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉