Files
TBgen_App/utils/__pycache__/verilator_call.cpython-312.pyc

79 lines
10 KiB
Plaintext
Raw Normal View History

2026-03-30 16:46:48 +08:00
<EFBFBD>
(j<>i<EFBFBD>:<00><00><00>dZddlZddlZddlZddlZej
j ej
je<08><00>Z ej
jej
je d<03><00>re Z dZ nej
j e <09>Z dZ e ej
vrej
jde <0C>e r*e ej
vr ej
je <09>ddlmZddlmZddlmZd Zd
Zd <0B>Zdd <0C>Zd <0A>Zedk(r<> ddlmZddlm Z ej
je d<11>Z!ej
je!<21>r ee!<21>ne<1F>e <20>e$ejJ<00>dkr e&d<14>yejJdZ'ejJdZ(ejJdZ)ee'e(e)<29>\Z*Z+Ze&de*<2A>de+d<18>de<05><00><06>yy#e$rY<00><>wxYw#e"$rejFd<12>Y<00><>wxYw)zp
Description : Verilator wrapper for CGA - AUTO TOP-MODULE DETECTION
Author : CorrectBench Integration
<EFBFBD>Nzloader_saver.pyFT)<01>
run_in_dir)<01> subproc_call)<01>
autologger<EFBFBD> verilator<6F>verilator_coveragec<00>8<00>tjj|<00>sy t|d<02>5}|j <00>}ddd<01>t j dt
j<00>}|r|jd<04>S y#1swY<00>CxYw#t$rYywxYw)u1
从 Verilog 文件中解析 module name
N<>rz^\s*module\s+(\w+)<29>)
<EFBFBD>os<6F>path<74>exists<74>open<65>read<61>re<72>search<63> MULTILINE<4E>group<75> Exception)<04> file_path<74>f<>content<6E>matchs <20>:/home/zhang/CorrectBench/TBgen_App/utils/verilator_call.py<70>get_module_namer<00>s<><00><00> <0E>7<EFBFBD>7<EFBFBD>><3E>><3E>)<29> $<24><13>  <0A> <11>)<29>S<EFBFBD> !<21> <1F>Q<EFBFBD><17>f<EFBFBD>f<EFBFBD>h<EFBFBD>G<EFBFBD> <1F><13> <09> <09>/<2F><17>"<22>,<2C>,<2C>G<><05> <10><18>;<3B>;<3B>q<EFBFBD>><3E> !<21> <11> <10> <1F> <1F><> <15> <0A> <0C> <0F> <0A>s'<00> B <00>B<03>?B <00>B
<07>B <00> B<03>Bc <00><00>tjj|<00>}tjjtjj||<01><00>}tjjtjj||<02><00>}tjj|d<01>}tjj|dd<03>} t |<07>}
|
r2t dtjj |<02><00>d|
<EFBFBD>d<06><05>|
} nt d|<03>d<06><03>|} tjj|<08>rtj|<08>t<00>d|<08>d |<06>d |<07>d
| <0B><00> } |<08>d | <0B><00>} t<00>d | <09>d <0A>}t|<05>5tjjd<0E>rtjd<0E>t| |<04>}tjj|<08>d | <0B><00><03>s5tj d<0F>|drt d|d<00><00><02> ddd<00>yt| |<04>}t d| <0B>d<14><03>|drt |d<00>tjjd<0E>stj d<16> ddd<00>ytjj| <09>stj"| <09>t||<04>}d}tjj| <09>rtj$| <09>ng}|r<>|D]<5D>}tjj |<01>|vxs
||vxsd|v}d|vxsCd|j'<00>vxr/dtjj |<01>j'<00>v}| |vrd}|s<01><>|r<01><>tjj| |<12>}n|s"tj d|<11><00><02> ddd<00>yt)|<10>}d||fcddd<00>S#1swYyxYw)N<>obj_dir<69>logs<67> annotatedz&[DEBUG] Auto-detected top module from z: '<27>'z5[DEBUG] Could not detect top module, using default: 'zT --binary -j 0 --coverage --timing -Wno-TIMESCALEMOD -Wno-fatal -Wno-STMTDLY --Mdir <20> z --top-module z/Vz --annotate z coverage.datz coverage.datzVerilator Compile Failed.<2E>errz[COMPILE STDERR]:
)F<>Nz--- Simulation Output (z) ---<2D>outzcoverage.dat not created.<2E>DUT<55>driver<65>tbTz%Could not find annotated DUT file in )r r <00>abspath<74>joinr<00>print<6E>basenamer <00>shutil<69>rmtree<65> VERILATOR_BIN<49> COVERAGE_BINr<00>remover<00>logger<65>error<6F>makedirs<72>listdir<69>lower<65>_quick_calc_score)<16>run_dir<69>dut_file<6C>tb_file<6C>
top_module<EFBFBD>timeout<75> abs_run_dir<69>abs_dut<75>abs_tb<74> abs_obj_dir<69> abs_annotated<65> detected_top<6F>real_top_module<6C> cmd_compile<6C>cmd_run<75> cmd_annotate<74>res<65> target_file<6C>generated_filesr<00>is_dut<75>is_tb<74>scores r<00>verilator_run_coveragerK<00>s<><00><00><14>'<27>'<27>/<2F>/<2F>'<27>*<2A>K<EFBFBD><10>g<EFBFBD>g<EFBFBD>o<EFBFBD>o<EFBFBD>b<EFBFBD>g<EFBFBD>g<EFBFBD>l<EFBFBD>l<EFBFBD>7<EFBFBD>H<EFBFBD>=<3D>><3E>G<EFBFBD> <0F>W<EFBFBD>W<EFBFBD>_<EFBFBD>_<EFBFBD>R<EFBFBD>W<EFBFBD>W<EFBFBD>\<5C>\<5C>'<27>7<EFBFBD>;<3B> <<3C>F<EFBFBD><14>'<27>'<27>,<2C>,<2C>{<7B>I<EFBFBD>6<>K<EFBFBD><16>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><1B>f<EFBFBD>k<EFBFBD>B<>M<EFBFBD>
#<23>6<EFBFBD>*<2A>L<EFBFBD><13> <0A>6<>r<EFBFBD>w<EFBFBD>w<EFBFBD>7G<37>7G<37><07>7P<37>6Q<36>QT<51>Ua<55>Tb<54>bc<62>d<>e<>&<26><0F> <0A>E<>j<EFBFBD>\<5C>QR<51>S<>T<>$<24><0F>
<EFBFBD>w<EFBFBD>w<EFBFBD>~<7E>~<7E>k<EFBFBD>"<22><0E> <0A> <0A>k<EFBFBD>"<22>
<19>/<2F><12><1D><1D>a<EFBFBD> <12>)<29>1<EFBFBD>V<EFBFBD>H<EFBFBD>N<EFBFBD>?<3F>*;<3B> =<3D><10><1D> <0A>R<EFBFBD><0F>0<>1<>G<EFBFBD>"<22>^<5E><<3C> <0A><EFBFBD>m<EFBFBD>L<>L<EFBFBD> <13>K<EFBFBD> <20>:(<28> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>.<2E> )<29>2<EFBFBD>9<EFBFBD>9<EFBFBD>^<5E>+D<><1B>;<3B><07>0<><03><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E><1B> <0A>R<EFBFBD><0F>/@<40>A<>B<> <12>L<EFBFBD>L<EFBFBD>4<> 6<><12>5<EFBFBD>z<EFBFBD>5<EFBFBD>#6<>s<EFBFBD>5<EFBFBD>z<EFBFBD>l<EFBFBD>!C<>D<>#<23>:(<28>:(<28><1B>7<EFBFBD>G<EFBFBD>,<2C><03> <0E>'<27><0F>'8<><05>><3E>?<3F> <0E>u<EFBFBD>:<3A>u<EFBFBD>S<EFBFBD><15>Z<EFBFBD>(<28><12>w<EFBFBD>w<EFBFBD>~<7E>~<7E>n<EFBFBD>-<2D> <12>L<EFBFBD>L<EFBFBD>4<> 5<>#<23>/:(<28>:(<28>4<12>w<EFBFBD>w<EFBFBD>~<7E>~<7E>m<EFBFBD>,<2C> <0E>K<EFBFBD>K<EFBFBD> <0A> &<26><1A><<3C><17>1<><03><1B> <0B>79<37>w<EFBFBD>w<EFBFBD>~<7E>~<7E>m<EFBFBD>7T<37>"<22>*<2A>*<2A>]<5D>3<>Z\<5C><0F> <1A>$<24> <1A><01><1D>'<27>'<27>*<2A>*<2A>8<EFBFBD>4<><01>9<>&<26>$<24><01>/<2F>&<26><1F>1<EFBFBD>*<2A><17>"<22>Q<EFBFBD><1D>_<01><1D><11><17><17><19>*<2A>]<5D>t<EFBFBD>2<EFBFBD>7<EFBFBD>7<EFBFBD>;K<>;K<>H<EFBFBD>;U<>;[<5B>;[<5B>;]<5D>/]<5D><16>#<23>a<EFBFBD>'<27> <20>E<EFBFBD><19>%<25>"$<24>'<27>'<27>,<2C>,<2C>}<7D>a<EFBFBD>"@<40>K<EFBFBD><19> <1A>"<1B> <12>L<EFBFBD>L<EFBFBD>@<40><1F>@Q<>R<> S<>#<23>o:(<28>:(<28>r"<22>+<2B>.<2E><05><13>U<EFBFBD>K<EFBFBD>'<27>u:(<28>:(<28>:(<28>s-<00>BO8<03>+A#O8<03>C=O8<03>O8<03>>O8<03>O8<03>8Pc<00>J<00>ddl} t|ddd<05><06>5}|j<00>}ddd<02>|jd<07>}|jd<08>}|jd <09>}|jd
<EFBFBD>}|jd <0B>}d} d}
D<00>]<5D>} | j <00>} | s<01>d } d }|j | <0C>}|j | <0C>}|j | <0C>}|j | <0C>}|r`t |jd<0E><00>} t| <0C>dkDr| ddj <00>nd}|j |<13>r<01><>| dz } | dkDs<01><>|
dz }
<EFBFBD><EFBFBD>|rct |jd<0E><00>} t| <0C>dkDr| ddj <00>nd}|j |<13>r<02><01>| dz } | dkDs<02><01>|
dz }
<EFBFBD><01>&|r=t| <0C>dkDr| ddj <00>nd}|j |<13>r<02><01>^| dz } <09><01>e|s<02><01>it |jd<0E><00>} |jd<0E>}| t|<14>dj <00>}|j |<13>r<02><01><>| dz } | dkDs<02><01><>|
dz }
<EFBFBD><01><>| dkDr|
| z dzSdS#1swY<00><02>PxYw#t$r}td|<15><00><02>Yd}~yd}~wwxYw)u"
计算 Verilator 覆盖率文件的覆盖率分数
支持的格式:
- %NNNNNN: 行覆盖计数(%000000 表示未执行)
- ~NNNNNN: 分支/条件覆盖计数
- NNNNNN: 空格开头+数字(某些 Verilator 版本)
- ^NNNNNN: 未覆盖分支标记
rNr zutf-8<>ignore)<02>encoding<6E>errorsz
^%(\d+)\s+z
^~(\d+)\s+z ^\^(\d+)\s+z ^\s*(\d+)\s+zE^\s*(input|output|inout|wire|reg|logic|parameter|localparam|assign)\b<><62><EFBFBD><EFBFBD><EFBFBD>Fr
<00><00>gY@r"z![DEBUG] _quick_calc_score error: ) rr<00> readlines<65>compile<6C>stripr<00>intr<00>lenrr))<16>filepathrr<00>lines<65> pct_pattern<72> tilde_pattern<72> caret_pattern<72> plain_pattern<72> decl_pattern<72>total<61>covered<65>line<6E> line_stripped<65>count<6E>
is_covered<EFBFBD> match_pct<63> match_tilde<64> match_caret<65> match_plain<69> code_part<72>num_str<74>es rr5r56s<><00><00><0E>@<13> <11>(<28>C<EFBFBD>'<27>(<28> C<> "<22>q<EFBFBD><15>K<EFBFBD>K<EFBFBD>M<EFBFBD>E<EFBFBD> "<22>!<21>b<EFBFBD>j<EFBFBD>j<EFBFBD><1D>/<2F> <0B>"<22><02>
<EFBFBD>
<EFBFBD>=<3D>1<> <0A>"<22><02>
<EFBFBD>
<EFBFBD>><3E>2<> <0A>"<22><02>
<EFBFBD>
<EFBFBD>?<3F>3<> <0A>"<22>r<EFBFBD>z<EFBFBD>z<EFBFBD>"j<>k<> <0C><11><05><13><07><19>+ %<25>D<EFBFBD> <20>J<EFBFBD>J<EFBFBD>L<EFBFBD>M<EFBFBD> <20><18><16>E<EFBFBD><1E>J<EFBFBD>$<24>)<29>)<29>-<2D>8<>I<EFBFBD>'<27>-<2D>-<2D>m<EFBFBD><<3C>K<EFBFBD>'<27>-<2D>-<2D>m<EFBFBD><<3C>K<EFBFBD>'<27>-<2D>-<2D>m<EFBFBD><<3C>K<EFBFBD><18><1B>I<EFBFBD>O<EFBFBD>O<EFBFBD>A<EFBFBD>.<2E>/<2F><05>9<<3C>]<5D>9K<39>a<EFBFBD>9O<39>M<EFBFBD>!<21>"<22>-<2D>3<>3<>5<>UW<55> <09>#<23>)<29>)<29>)<29>4<><19>Q<EFBFBD>J<EFBFBD>E<EFBFBD><1C>q<EFBFBD>y<EFBFBD><1F>1<EFBFBD> <0C><07><1C><1B>K<EFBFBD>-<2D>-<2D>a<EFBFBD>0<>1<><05>9<<3C>]<5D>9K<39>a<EFBFBD>9O<39>M<EFBFBD>!<21>"<22>-<2D>3<>3<>5<>UW<55> <09>#<23>)<29>)<29>)<29>4<><19>Q<EFBFBD>J<EFBFBD>E<EFBFBD><1C>q<EFBFBD>y<EFBFBD><1F>1<EFBFBD> <0C><07><1C>9<<3C>]<5D>9K<39>a<EFBFBD>9O<39>M<EFBFBD>!<21>"<22>-<2D>3<>3<>5<>UW<55> <09>#<23>)<29>)<29>)<29>4<><19>Q<EFBFBD>J<EFBFBD>E<EFBFBD><1C><1B>K<EFBFBD>-<2D>-<2D>a<EFBFBD>0<>1<><05>%<25>+<2B>+<2B>A<EFBFBD>.<2E><07>)<29>#<23>g<EFBFBD>,<2C>-<2D>8<>><3E>><3E>@<40> <09>#<23>)<29>)<29>)<29>4<><19>Q<EFBFBD>J<EFBFBD>E<EFBFBD><1C>q<EFBFBD>y<EFBFBD><1F>1<EFBFBD> <0C><07>W+ %<25>Z-2<>A<EFBFBD>I<EFBFBD><07>%<25><0F>%<25>'<27>><3E>3<EFBFBD>><3E>y "<22> "<22><>z <15><13> <0A>1<>!<21><13>5<>6<><12><><13>sf<00>J<00>I4<03>DJ<00>>
J<00> AJ<00>!
J<00>-=J<00>, J<00>7AJ<00>
J<00>J<00>2J<00>4I><07>9J<00> J"<03>
J<03>J"<03>__main__)<01>Config)<01>
AutoLoggerzconfig/custom.yamlr
<00>z?Usage: python3 verilator_call.py <run_dir> <dut_file> <tb_file><3E>z
[Test Result]
Success: z
Score: z.2fz%
Annotated File: )zDUT.vzdriver.vr9<00>x),<2C>__doc__r <00>sysr+rr <00>dirnamer'<00>__file__<5F>
script_dirr r(<00> project_root<6F>in_utils_folder<65>insertr/<00>
ValueError<EFBFBD> utils.utilsr<00> utils.subprocr<00> loader_saverrr0r-r.rrKr5<00>__name__<5F>configrmrn<00>custom_cfg_pathr<00>exitrW<00>argvr)r6<00>dutr&<00>successrJ<00><00>r<00><module>r<>s<><00><01>d<04>
<EFBFBD>
<EFBFBD> <0A> <09><10>W<EFBFBD>W<EFBFBD>_<EFBFBD>_<EFBFBD>R<EFBFBD>W<EFBFBD>W<EFBFBD>_<EFBFBD>_<EFBFBD>X<EFBFBD>6<> 7<>
<EFBFBD><05>7<EFBFBD>7<EFBFBD>><3E>><3E>"<22>'<27>'<27>,<2C>,<2C>z<EFBFBD>+<<3C>=<3D>><3E><1D>L<EFBFBD><1B>O<EFBFBD><15>7<EFBFBD>7<EFBFBD>?<3F>?<3F>:<3A>.<2E>L<EFBFBD><1A>O<EFBFBD><0F>s<EFBFBD>x<EFBFBD>x<EFBFBD><1F><07>H<EFBFBD>H<EFBFBD>O<EFBFBD>O<EFBFBD>A<EFBFBD>|<7C>$<24><12>z<EFBFBD>S<EFBFBD>X<EFBFBD>X<EFBFBD>-<2D> <0A> <0B><08><08><0F><0F>
<EFBFBD>#<23>
#<23>&<26>-<2D><1B> <0A>#<23> <0C><10>$](<28>^L<13>^ <0C>z<EFBFBD><19>"<22>!<21>+<2B><1C>'<27>'<27>,<2C>,<2C>|<7C>5I<35>J<><0F> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>/<2F> *<2A>F<EFBFBD>?<3F>,C<><14>h<EFBFBD><12> <0C> <0B>3<EFBFBD>8<EFBFBD>8<EFBFBD>}<7D>q<EFBFBD><18> <0A>O<>P<><15>(<28>(<28>1<EFBFBD>+<2B><07><11>h<EFBFBD>h<EFBFBD>q<EFBFBD>k<EFBFBD><03> <10>X<EFBFBD>X<EFBFBD>a<EFBFBD>[<5B><02>5<>g<EFBFBD>s<EFBFBD>B<EFBFBD>G<><1C><07><15><04> <0A>*<2A>7<EFBFBD>)<29>9<EFBFBD>U<EFBFBD>3<EFBFBD>K<EFBFBD>GZ<47>[_<>Z`<60>a<>b<>#<1A><>w <16> <0A> <0C> <0A><>F <15>!<21>h<EFBFBD>c<EFBFBD>h<EFBFBD>h<EFBFBD>q<EFBFBD>k<EFBFBD>!<21>s%<00>G!<00>AG,<00>!G)<03>(G)<03>,H<03>H