Files
MiPi_Investigation/analysis/__pycache__/report.cpython-312.pyc

61 lines
9.2 KiB
Plaintext
Raw Normal View History

2026-05-06 15:57:48 +01:00
<EFBFBD>
<00>P<EFBFBD>i<EFBFBD><00><01><><00>dZddlmZddlZddlZddlZddlmZddlmZddl m
Z
ddl Z ddl mZdZgd <09>Zedfdd
<EFBFBD>Zdd <0B>Zdd <0C>Zdd <0A>Z dd<0E>Zdd<0F>Zdd<10>Z d dd<11>Z d dd<12>Zy)zAPer-run artefact writers and the master flicker_log.csv appender.<2E>)<01> annotationsN)<01>datetime)<01>Path)<01>Optional)<01> CAPTURE_ROOTzflicker_log.csv)<11>run_id<69> timestamp<6D>flicker_detected<65>sot_err<72> synch_err<72>
pll_locked<EFBFBD>t_lpx_ns<6E>t_hs_prepare_ns<6E>t_hs_prepare_pass<73>t_clk_prepare_ns<6E> t_clk_zero_ns<6E>t_clk_prep_plus_zero_ns<6E>t_clk_prep_zero_pass<73>phy_timing_raw<61>phy_timing1_raw<61>phy_timing2_raw<61>notesc<01><><00>t|<00>}|jdd<01><02>|<01> t|<02>}tj<00>j d<03>}d|d<05>d|<03><00>}||z }|jdd<07><02>|S)NT)<02>parents<74>exist_okz %Y%m%d_%H%M%S<>run_<6E>03d<33>_F)r<00>mkdir<69>_next_run_indexr<00>now<6F>strftime)<06>root<6F>run_idx<64>base<73>stampr<00>paths <20>analysis/report.py<70> make_run_dirr)'sr<00><00> <0F><04>:<3A>D<EFBFBD><08>J<EFBFBD>J<EFBFBD>t<EFBFBD>d<EFBFBD>J<EFBFBD>+<2B><0E><EFBFBD>!<21>$<24>'<27><07> <14>L<EFBFBD>L<EFBFBD>N<EFBFBD> #<23> #<23>O<EFBFBD> 4<>E<EFBFBD><13>G<EFBFBD>C<EFBFBD>=<3D><01>%<25><17> )<29>F<EFBFBD> <0F>&<26>=<3D>D<EFBFBD><08>J<EFBFBD>J<EFBFBD>t<EFBFBD>e<EFBFBD>J<EFBFBD>,<2C> <0F>K<EFBFBD>c<01>t<00>|j<00>D<00>cgc];}|j<00>s<01>|jjd<01>s<01>0|j<00><02>=}}|syg}|D]/} |j t |j d<03>d<00><00><00>1|rt|<03>dzSdScc}w#ttf$rY<00>ZwxYw)Nr<00>r)
<EFBFBD>iterdir<69>is_dir<69>name<6D>
startswith<EFBFBD>append<6E>int<6E>split<69>
IndexError<EFBFBD>
ValueError<EFBFBD>max)r%<00>p<>existing<6E>nums<6D>ns r(r r 3s<><00><00> $<24> <0C> <0C><0E>[<5B>1<EFBFBD>!<21>(<28>(<28>*<2A><11><16><16>AR<41>AR<41>SY<53>AZ<41><01><06><06>[<5B>H<EFBFBD>[<5B> <13><10><18>D<EFBFBD> <15><15><01> <15> <10>K<EFBFBD>K<EFBFBD><03>A<EFBFBD>G<EFBFBD>G<EFBFBD>C<EFBFBD>L<EFBFBD><11>O<EFBFBD>,<2C> -<2D><15>
#<23>C<EFBFBD><04>I<EFBFBD><01>M<EFBFBD>)<29><01>)<29><>\<01><><1B>J<EFBFBD>'<27> <15> <14> <15>s"<00>B <04>B <04>B <04> ,B%<02>%B7<05>6B7c<01><><00>ddddd<05>}|j<00>D]3\}}|j|<03>}|<05><01>|j|d|<05>d<08>z d <09>
<EFBFBD><00>5y) u5Save each channel as waveform_chN.csv per spec §8.3.r,<00><00><00>)<04>CLK_P<5F>CLK_N<5F>DAT0_P<5F>DAT0_NN<4E> waveform_chz.csvF)<01>index)<03>items<6D>get<65>to_csv)<06>run_dir<69> waveforms<6D> label_to_ch<63>label<65>df<64>chs r(<00>save_waveformsrN@s`<00><00><1D><01>Q<EFBFBD>!<21>D<>K<EFBFBD><1E>_<EFBFBD>_<EFBFBD>&<26>A<01> <09><05>r<EFBFBD> <18>_<EFBFBD>_<EFBFBD>U<EFBFBD> #<23><02> <0A>:<3A> <14>
<EFBFBD> <09> <09>'<27>k<EFBFBD>"<22><14>T<EFBFBD>2<>2<>%<25> <09>@<40> Ar*c<01>b<00>|||d<01>}|dz jtj|d<03><04><00>y)N)<03>dsim<69>sn65<36>settlingzregisters.jsonr<<00><01>indent<6E><03>
write_text<EFBFBD>json<6F>dumps)rHrPrQrR<00>payloads r(<00>save_registersrZJs-<00><00><1B>T<EFBFBD>x<EFBFBD>@<40>G<EFBFBD> <0C><1F><1F>+<2B>+<2B>D<EFBFBD>J<EFBFBD>J<EFBFBD>w<EFBFBD>q<EFBFBD>,I<>Jr*c<01>d<00>||||d<01>}|dz jtj|d<03><04><00>y)N)<04>measurements_ns<6E>spec_compliance<63>packet_fault_a<5F> lane_stall_bztiming_analysis.jsonr<rSrU)rH<00> measurements<74> spec_pass<73> packet_fault<6C>
lane_stallrYs r(<00>save_timing_analysisrdOs8<00><00>(<28>$<24>&<26>"<22> <06>G<EFBFBD>  <0A>%<25>%<25>1<>1<>$<24>*<2A>*<2A>W<EFBFBD>Q<EFBFBD>2O<32>Pr*c<01>,<00>|dz j|<01>y)Nz summary.txt)rV)rH<00> summary_texts r(<00> save_summaryrgZs<00><00> <0C>}<7D><1C>(<28>(<28><1C>6r*c<01><00>t|<00>tz }|j<00> }|jdd<02><03>5}t j
|t d<04><05>}|r|j<00>|j|<01>ddd<00>y#1swYyxYw)N<>a<>)<01>newline<6E>ignore)<02>
fieldnames<EFBFBD> extrasaction) r<00>FLICKER_LOG_NAME<4D>exists<74>open<65>csv<73>
DictWriter<EFBFBD>FLICKER_LOG_COLUMNS<4E> writeheader<65>writerow)r#<00>row<6F>log_path<74>is_new<65>f<>writers r(<00>append_flicker_logr|^sv<00><00><13>D<EFBFBD>z<EFBFBD>,<2C>,<2C>H<EFBFBD><19><1F><1F>"<22> "<22>F<EFBFBD> <11><1D><1D>s<EFBFBD>B<EFBFBD><1D> '<27><1D>1<EFBFBD><14><1E><1E><01>.A<>PX<50>Y<><06> <11> <12> <1E> <1E> <20><0E><0F><0F><03><1C> <1D><1D><1D>s <00>AB<03>B c<01><><00>d|<00><00>dtj<00>jd<03><04><00><00>ddd|jd<08><00><00>d |jd
<EFBFBD><00><00>d |jd <0C><00><00>d |jd<0E><00><00>d|jd<10><00><00>d|jd<12><00><00>d|jd<14><00><00>ddg }|j <00>D]<5D>\} }
|j| i<00>} | jd<16>rdnd} | jd<19>} | <0A>d| d<1B><04>nd}|
<EFBFBD> |
|
k(r|
d<1D>nd}|j d| d <20>d!|d"<22>d#| <0C>d$| jd%<25><00>d&|<0E>d'<27> <0B><00><>|dd(d)|jd*<2A><00><00>d+|jd,<2C><00><00>d-|jd.<2E><00>d/|jd0<64><00><00>dd1d2|jd3<64><00><00>d4|jd5<64><00><00>dd6d7|jd8<64><00><00>d9|jd:<3A><00><00>d;|jd<<3C><00><00>gz }|r
|dd=|<07><00>gz }t jj|<08>t jzS)>NzRun: z Timestamp: <20>seconds<64><01>timespecrjz [ SN65DSI83 ]z PLL locked: r z Clock detect: <20> clk_detectedz IRQ_STAT: <20> irq_stat_rawz SOT_ERR: r z SYNCH_ERR: r z UNC_ECC_ERR: <20> unc_ecc_errz FLICKER: r
z[ D-PHY timings (ns) ]<5D>pass<73>OK<4F> VIOLATION<4F> margin_nszmargin=z+.2fz
margin=n/az.2f<EFBFBD>nanz <20>30s<30> z>8sz [z] (min=<3D>min_nsz, <20>)z[ Packet decode (Lane 0) ]z$ Fault A (zero-payload pixel pkt): <20>fault_a_detectedz$ First payload bytes: <20>first_pixel_payload_hexz$ Pixel packets / total: <20>n_pixel_packetsz / <20>n_total_packetsz[ Lane stall ]z Fault B (LP-11 stall): <20>fault_b_detectedz Longest LP-11 (ms): <20>longest_lp11_msz[ DSIM raw / decoded ]z PHY_TIMING: <20>PHY_TIMING_rawz PHY_TIMING1: <20>PHY_TIMING1_rawz PHY_TIMING2: <20>PHY_TIMING2_rawzNote: ) rr!<00> isoformatrFrEr1<00>os<6F>linesep<65>join)r<00> sn65_parsedr`rarbrc<00> dsim_parsed<65>note<74>lines<65>k<>v<>sp<73>marker<65>margin<69>
margin_str<EFBFBD>v_strs r(<00> build_summaryr<79>hs<><00><00> <10><06>x<EFBFBD><18>
<15>h<EFBFBD>l<EFBFBD>l<EFBFBD>n<EFBFBD>.<2E>.<2E> <09>.<2E>B<>C<>D<>
<EFBFBD><17>
<1B>K<EFBFBD>O<EFBFBD>O<EFBFBD>L<EFBFBD>9<>:<3A>;<3B>
<1B>K<EFBFBD>O<EFBFBD>O<EFBFBD>N<EFBFBD>;<3B><<3C>=<3D>
<1B>K<EFBFBD>O<EFBFBD>O<EFBFBD>N<EFBFBD>;<3B><<3C>=<3D>
<1B>K<EFBFBD>O<EFBFBD>O<EFBFBD>I<EFBFBD>6<>7<>8<>
<1B>K<EFBFBD>O<EFBFBD>O<EFBFBD>K<EFBFBD>8<>9<>:<3A>
<1B>K<EFBFBD>O<EFBFBD>O<EFBFBD>M<EFBFBD>:<3A>;<3B><<3C>
<1B>K<EFBFBD>O<EFBFBD>O<EFBFBD>,><3E>?<3F>@<40>A<>
<EFBFBD> <20> <06>E<EFBFBD><1D>"<22>"<22>$<24>c<01><04><01>1<EFBFBD> <16>]<5D>]<5D>1<EFBFBD>b<EFBFBD> !<21><02><1B><16><16><06><1E><14>[<5B><06><13><16><16> <0B>$<24><06>06<30>0B<30>w<EFBFBD>v<EFBFBD>d<EFBFBD>m<EFBFBD>,<2C> <0C>
<EFBFBD><1F>m<EFBFBD><01>Q<EFBFBD><06>1<EFBFBD>S<EFBFBD>'<27>E<EFBFBD><05> <0A> <0C> <0C>r<EFBFBD>!<21>C<EFBFBD><17><01>%<25><03><1B>D<EFBFBD><16><08><07><02><06><06>x<EFBFBD>@P<>?Q<>QS<51>T^<5E>S_<53>_`<60>a<>b<> c<01>
<EFBFBD>
<EFBFBD>$<24>
.<2E>|<7C>/?<3F>/?<3F>@R<>/S<>.T<>U<>
.<2E>|<7C>/?<3F>/?<3F>@Y<>/Z<>.[<5B>\<5C>
.<2E> <17> <1B> <1B>-<2D> .<2E>
/<2F>s<EFBFBD><<3C>3C<33>3C<33>DU<44>3V<33>2W<32> Y<01>
<EFBFBD><18>
$<24>Z<EFBFBD>^<5E>^<5E>4F<34>%G<>$H<>I<>
$<24>Z<EFBFBD>^<5E>^<5E>4E<34>%F<>$G<>H<>
<EFBFBD> <20>
<19>+<2B>/<2F>/<2F>*:<3A>;<3B><<3C>=<3D>
<19>+<2B>/<2F>/<2F>*;<3B><<3C>=<3D>><3E>
<19>+<2B>/<2F>/<2F>*;<3B><<3C>=<3D>><3E><06><06>E<EFBFBD>" <0C> <0A>"<22><06>t<EFBFBD>f<EFBFBD>o<EFBFBD>&<26>&<26><05> <0A>:<3A>:<3A>?<3F>?<3F>5<EFBFBD> !<21>B<EFBFBD>J<EFBFBD>J<EFBFBD> .<2E>.r*c<01><><00>id|<00>dtj<00>jd<03><04><00>d|jd<05><00>d|jd<06><00>d|jd<07><00>d|jd<08><00>d |jd
<EFBFBD><00>d |jd <0C><00>d |jd i<00>jd<0E><00>d|jd<10><00>d|jd<12><00>d|jd<14><00>d|jdi<00>jd<0E><00>d|jd<17><00>d|jd<19><00>d|jd<1B><00>d|<05>S)Nrr r~rr
r r r r<00>t_lpxr<00> t_hs_preparerr<>r<00> t_clk_preparer<00>
t_clk_zeror<00>t_clk_prepare_plus_zerorrr<>rr<>rr<>r)rr!r<>rF)rr<>r`rar<>r<>s r(<00> build_log_rowr<77><00>s<><00><00> <06><10>&<26> <06><13>X<EFBFBD>\<5C>\<5C>^<5E>-<2D>-<2D>y<EFBFBD>-<2D>A<> <06> <1B>K<EFBFBD>O<EFBFBD>O<EFBFBD>,><3E>?<3F> <06> <12>;<3B>?<3F>?<3F>9<EFBFBD>-<2D>  <06>
<14>[<5B>_<EFBFBD>_<EFBFBD>[<5B>1<>  <06> <15>k<EFBFBD>o<EFBFBD>o<EFBFBD>l<EFBFBD>3<>  <06> <13>L<EFBFBD>$<24>$<24>W<EFBFBD>-<2D> <06> <1A><<3C>+<2B>+<2B>N<EFBFBD>;<3B> <06> <1C>Y<EFBFBD>]<5D>]<5D>><3E>2<EFBFBD>><3E>B<>B<>6<EFBFBD>J<> <06> <1B>L<EFBFBD>,<2C>,<2C>_<EFBFBD>=<3D> <06> <18><1C>)<29>)<29>,<2C>7<> <06> "<22><<3C>#3<>#3<>4M<34>#N<> <06> <1F> <09> <0A> <0A>.G<><12> L<> P<> P<>QW<51> X<> <06> <19>+<2B>/<2F>/<2F>*:<3A>;<3B> <06> <1A>;<3B>?<3F>?<3F>+<<3C>=<3D> <06> <1A>;<3B>?<3F>?<3F>+<<3C>=<3D>! <06>" <10><14># <06>r*)r#<00>strr$z Optional[int]<5D>returnr)r%rr<>r2)rHrrIzdict[str, pd.DataFrame]r<><00>None)
rHrrP<00>dictrQr<>rRz dict | listr<74>r<>) rHrr`r<>rar<>rbr<>rcr<>r<>r<>)rHrrfr<>r<>r<>)r#r<>rwr<>r<>r<>)rj)rr<>r<>r<>r`r<>rar<>rbr<>rcr<>r<>r<>r<>r<>r<>r<>)rr<>r<>r<>r`r<>rar<>r<>r<>r<>r<>r<>r<>)<1A>__doc__<5F>
__future__rrrrWr<>r<00>pathlibr<00>typingr<00>pandas<61>pd<70>configrrortr)r rNrZrdrgr|r<>r<><00>r*r(<00><module>r<>s<><00><01>G<>"<22>
<EFBFBD> <0B> <09><1D><18><1B><13><1F>%<25><10><02><13>**<2A>D<EFBFBD> <10>
*<2A>A<01>K<01>
Q<01>'+<2B>Q<01>9=<3D>Q<01>BF<42>Q<01>7<><1D>24<32>-/<2F>!<21>-/<2F>15<31>-/<2F>CG<43>-/<2F>#<23>-/<2F>+.<2E>-/<2F>8;<3B>-/<2F>bCE<01><06>!<21><06>04<30><06><?<3F><06>IM<49>r*