diff --git a/lab2/build.sbt b/lab2/build.sbt index 75f138e..e60e1f1 100644 --- a/lab2/build.sbt +++ b/lab2/build.sbt @@ -22,3 +22,6 @@ lazy val root = (project in file(".")) ), addCompilerPlugin("edu.berkeley.cs" % "chisel3-plugin" % chiselVersion cross CrossVersion.full), ) + + + diff --git a/lab2/实验报告/report.aux b/lab2/实验报告/report.aux new file mode 100644 index 0000000..042175e --- /dev/null +++ b/lab2/实验报告/report.aux @@ -0,0 +1,30 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand*\HyPL@Entry[1]{} +\HyPL@Entry{0<>} +\@writefile{toc}{\contentsline {section}{\numberline {1}实验目的}{1}{section.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}实验环境}{1}{section.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3}模块实现与分析}{1}{section.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}CSR 模块}{2}{subsection.3.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}代码实现}{2}{subsubsection.3.1.1}\protected@file@percent } +\newlabel{lst:csr_logic}{{1}{2}{CSR 模块的写入优先级与旁路逻辑}{lstlisting.1}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}CSR 模块的写入优先级与旁路逻辑}{2}{lstlisting.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}CLINT 模块}{3}{subsection.3.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}代码实现}{3}{subsubsection.3.2.1}\protected@file@percent } +\newlabel{lst:clint_logic}{{2}{3}{CLINT 模块处理硬件中断的核心逻辑}{lstlisting.2}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}CLINT 模块处理硬件中断的核心逻辑}{3}{lstlisting.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}测试与结果分析}{4}{section.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}CLINTCSRTest: 软件中断 \texttt {ecall} 测试分析}{4}{subsection.4.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}测试机制简述}{4}{subsubsection.4.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}波形图分析}{4}{subsubsection.4.1.2}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces \texttt {ecall} 指令中断处理过程波形图}}{5}{figure.4.1}\protected@file@percent } +\newlabel{fig:ecall_waveform}{{4.1}{5}{\texttt {ecall} 指令中断处理过程波形图}{figure.4.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}CPUTest: SimpleTrapTest 分析}{5}{subsection.4.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}测试程序 (\texttt {simpletest.c}) 原理}{5}{subsubsection.4.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}波形图分析}{6}{subsubsection.4.2.2}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces \texttt {simpletest.c} 程序成功执行的关键信号波形}}{6}{figure.4.2}\protected@file@percent } +\newlabel{fig:simpletrap_waveform}{{4.2}{6}{\texttt {simpletest.c} 程序成功执行的关键信号波形}{figure.4.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}CPU、操作系统与定时器中断协作过程}{7}{subsection.4.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}实验改进建议}{8}{subsection.4.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5}实验结论}{8}{section.5}\protected@file@percent } +\gdef \@abspage@last{8} diff --git a/lab2/实验报告/report.fdb_latexmk b/lab2/实验报告/report.fdb_latexmk new file mode 100644 index 0000000..f78038c --- /dev/null +++ b/lab2/实验报告/report.fdb_latexmk @@ -0,0 +1,242 @@ +# Fdb version 4 +["pdflatex"] 1760284603.54957 "e:/jizu/2025-fall-yatcpu-repo/lab2/实验报告/report.tex" "report.pdf" "report" 1760284608.02831 0 + "C:/Users/26586/AppData/Local/MiKTeX/fonts/map/pdftex/pdftex.map" 1760284198.21478 80909 eab91d9745dd2edfd62a31d53cd5fe15 "" + "C:/Users/26586/AppData/Local/MiKTeX/fonts/pk/ljfour/jknappen/ec/dpi600/tcrm1200.pk" 1760284205.24029 14064 0435e595d6b2364a10c98a375d33de30 "" + "C:/Users/26586/AppData/Local/MiKTeX/miktex/data/le/pdftex/pdflatex.fmt" 1760284172.44912 13286967 cf204fddfacb93f0867a71203b66337a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/sfd/ttf2pk/UGBK.sfd" 1458473944 185547 3920f4d0519124bae1340c8047ea76bc "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/sfd/ttf2pk/Unicode.sfd" 1458473944 107591 5aa427daaa6489b60892769618bdfe76 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/jknappen/ec/tcrm1200.tfm" 993062508 1444 95ffe0f19b974d50849790c8225c7ef7 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1233951848 1004 54797486969f23fa377b128694d548df "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmbx12.tfm" 1136765053 1324 c910af8c371558dc20f2d7822f66fe64 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmex10.tfm" 1136765053 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmmi12.tfm" 1136765053 1524 4414a8315f39513458b80dfc63bff03a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmr10.tfm" 1136765053 1296 45809c5a464d5f32c8f98ba97c1bb47f "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmr12.tfm" 1136765053 1288 655e228510b4c2a1abe905c368440826 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmr17.tfm" 1136765053 1292 296a67155bdbfc32aa9c636f21e91433 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmsy10.tfm" 1136765053 1124 6c73e740cf17375f03eec0ee63599741 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmtt10.tfm" 1136765053 768 1321e9409b4137d6fb428ac9dc956269 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/public/cm/cmtt12.tfm" 1136765053 772 9a936b7f5e2ff0557fce0f62822f0bbf "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei30.tfm" 1247154072 1172 18ad1097cc3f3c36c758d33bf2dd19bd "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei4e.tfm" 1247154072 1172 2d5e87dd6ec409d864e1fe1662d00646 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei4f.tfm" 1247154072 1172 d30a5fea134273110a27f48164b06e0c "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei51.tfm" 1247154072 1172 7ee56fddd7b8de24477f743547fdf508 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei52.tfm" 1247154072 1172 481a000690ef15d58de2a93b3c34574c "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei53.tfm" 1247154072 1172 a5c37c86ae9131b27b9c0199f3d12df2 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei54.tfm" 1247154072 1172 d48fa656debc44b54635777f72473a7c "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei56.tfm" 1247154072 1172 3d70386494675a81e9a6697b900ec8a8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei57.tfm" 1247154072 1172 22fcff286e20a86fd370e6e42f5ce3ce "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei58.tfm" 1247154072 1172 72bdd9760fa9bdd25369ae236dd1ab29 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei59.tfm" 1247154072 1172 cb2089a3c8bd5826b7666fffdf326cbc "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei5b.tfm" 1247154072 1172 2120666fa3540653fd1185d802592022 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei5c.tfm" 1247154072 1172 bd43fa5a6a1bdc14b787de765c6df7cc "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei5d.tfm" 1247154072 1172 ad3b1e5fc915d97e4a51b8667388e1de "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei5e.tfm" 1247154072 1172 43d03c144e7fffa57074d64aa459c451 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei5f.tfm" 1247154072 1172 7048f0a8b693444590781debe54eecbd "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei60.tfm" 1247154072 1172 96cb70e1efefba6c98e5b547e0d33833 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei62.tfm" 1247154072 1172 3b0f7c4bc785f23eefed0160e713cd09 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei63.tfm" 1247154072 1172 fff11ea27394506a041a526a495f9652 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei64.tfm" 1247154072 1172 abd4be36b7787f9979caadfeef9cdae5 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei65.tfm" 1247154072 1172 c34b1545992ab0d7393a03f889ceeb86 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei66.tfm" 1247154072 1172 023ac6647c726f082a8ecd4350d68793 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei67.tfm" 1247154072 1172 127372bbba8b4f4a65a26e565c0c6a2e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei68.tfm" 1247154072 1172 a6e39128d14a2d8e22ed8239e864feff "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei6a.tfm" 1247154072 1172 ea35fa13ee483c308a0c68cffa2f52fb "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei6b.tfm" 1247154072 1172 865a135040ed6ad7a3ce493fd0108ece "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei6c.tfm" 1247154072 1172 7dd7a6f05321dd25f399ebba47f53887 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei6d.tfm" 1247154072 1172 e5be6419407f0c8504254055afe6a633 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei70.tfm" 1247154072 1172 37cb57ab58b65f2767baaede9a4fe5d2 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei72.tfm" 1247154072 1172 0743ca7a73b589a0a7b7707340e6c407 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei73.tfm" 1247154072 1172 04594028df286605c5e043f49c67e7c6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei74.tfm" 1247154072 1172 a9c6136b4c7ff7b154a76d1701531b59 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei75.tfm" 1247154072 1172 a25bf5894dd20c7f5582ee012df9c39f "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei76.tfm" 1247154072 1172 717e1aab695517230a61456b5d0d4ae0 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei77.tfm" 1247154072 1172 e79da86bd1270a9d0d9c14bd9641a9f1 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei78.tfm" 1247154072 1172 f839ed6c9e325affc7a6f8b3ce684108 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei7a.tfm" 1247154072 1172 8e66b7d5a581fb748da225cc80739f0e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei7b.tfm" 1247154072 1172 25a61bc54cd072423f001bcd06ad937f "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei7c.tfm" 1247154072 1172 9e4fe5216b40afa8ffc6c259528a5985 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei7e.tfm" 1247154072 1172 fc758d34799896087d8800c18ce979f8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei7f.tfm" 1247154072 1172 ea6db19cb8d2678f35079f6f874b4d84 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei80.tfm" 1247154072 1172 7c53005410278de6d612480963dd5ced "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei81.tfm" 1247154072 1172 512c934619cd3bdbc80e5d9f6ebda678 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei88.tfm" 1247154072 1172 4b5747a6c0d911e39c45f758903a60d6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei89.tfm" 1247154072 1172 364fffd8ea27d98d6edb9222bf84c180 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei8b.tfm" 1247154072 1172 bdf00141a2e7bd9848cfb6dae5c7e1ef "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei8d.tfm" 1247154072 1172 f0be8ff15d300dd67be1d65ad94ec80b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei8f.tfm" 1247154072 1172 e5ac568cbbb10c21a8919c10147ccf70 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei90.tfm" 1247154072 1172 bf3a9ea28c06174042dcd642737f0ad2 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei91.tfm" 1247154072 1172 af08f180dd0ec6a7129972d09ff61a98 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei95.tfm" 1247154072 1172 5a7e9ba612e7803abcac167ef6c5a665 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei96.tfm" 1247154072 1172 baafaa35cbf14b936974ec3a58b5f3e8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei98.tfm" 1247154072 1172 1261ce7302f6ac3352bb5ce3d475a0d8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/unihei9a.tfm" 1247154072 1172 8ba4cc771068baafaef7437667c8184d "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unihei/uniheiff.tfm" 1247154072 1172 753ad64262b81ffe372ea0e0ce61c8b9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong20.tfm" 1247154072 1172 c443622f792d7e5350ad5382dd8aebb3 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong30.tfm" 1247154072 1172 87d6ba1aff8b955258f6ef7a5d8e86e5 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong4e.tfm" 1247154072 1172 89be830028b08964827966f204abf065 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong4f.tfm" 1247154072 1172 dd7ec0fe171ece0b66015cb8929849f0 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong50.tfm" 1247154072 1172 04255d5811683ec0231c5fbfdd125757 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong51.tfm" 1247154072 1172 c46d453988a7d703c4f5c5104bb894f0 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong52.tfm" 1247154072 1172 ebad2f047d83d1be72706895f11e9896 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong53.tfm" 1247154072 1172 e2a03d4bc65395303b42aaff9aacd7be "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong54.tfm" 1247154072 1172 c93f9362e45903cde8748b054b30ab56 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong56.tfm" 1247154072 1172 483bbebc510ee17933c3af062965b6d4 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong57.tfm" 1247154072 1172 eb821bcbfd385c0d470afef6ff6ac95b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong58.tfm" 1247154072 1172 9097e54d4337c7af2506271a2618d1d8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong59.tfm" 1247154072 1172 2aa8dc9bdcfa6684a19d81e71fa8a3e1 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong5b.tfm" 1247154072 1172 449ef25f4dcd447addb8325f7bf12b2a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong5c.tfm" 1247154072 1172 bbe7d94072c5d308e673fac2512329ac "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong5d.tfm" 1247154072 1172 1fd8042971efdf7ea35b87f9c6c10b8b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong5e.tfm" 1247154072 1172 19d2fe591b31a07314df704f4d4d5035 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong5f.tfm" 1247154072 1172 e4d92bc2f617835508003ad811702c49 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong60.tfm" 1247154072 1172 7b3876cac8e97dc2d0915ac00b6e4c26 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong62.tfm" 1247154072 1172 9ffac14c72fbc4879502782835fb1e0a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong63.tfm" 1247154072 1172 5558042a53f0a34c54eaf1c8af13f377 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong64.tfm" 1247154072 1172 9123bc1a52f39fa754022a43a1394244 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong65.tfm" 1247154072 1172 2873dd6228ece5c9b075cfdc580febae "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong66.tfm" 1247154072 1172 f300cf9aac35a61638796e3d2ecc0e47 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong67.tfm" 1247154072 1172 bfeea74ab6553bd251ccbd092c04122a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong68.tfm" 1247154072 1172 e36ee82e53889b69220fe0f54fd031bb "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong6a.tfm" 1247154072 1172 00f8a00771908df2108694cbd69134d7 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong6b.tfm" 1247154072 1172 eec47476c8168dac40c6b0d39a32faa4 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong6c.tfm" 1247154072 1172 da6dd37ba8d24cc1a36aa510c8ac56f9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong6d.tfm" 1247154072 1172 3942109a9ca7a08ec5324d8eec4093d9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong6e.tfm" 1247154072 1172 42ca517602ab12cb60a5174be463b80a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong70.tfm" 1247154072 1172 65f78ffa41ce8b45f91f362b219db0e7 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong71.tfm" 1247154072 1172 ac9bcd3bdbf45728188f855f6ba1cf2f "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong72.tfm" 1247154072 1172 3988931ed4f7026bbecd81a5650d7854 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong73.tfm" 1247154072 1172 fd0cb8a34c74e2d27b9d6ceb95f2f96d "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong74.tfm" 1247154072 1172 9c784b2c832c4124ae2a4cc407dc47a5 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong75.tfm" 1247154072 1172 402d633b1aba150cdcd663d684057796 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong76.tfm" 1247154072 1172 44cc15829d76f419e5a8bac63a8fed30 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong77.tfm" 1247154072 1172 700f8f915e90952a352eb230ae635c92 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong78.tfm" 1247154072 1172 7693562f5e83d5e3f5e32b3aa27065f6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong79.tfm" 1247154072 1172 ce37048b43f744f562318164cad22210 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong7a.tfm" 1247154072 1172 f8375167264f31944f2511f305972138 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong7b.tfm" 1247154072 1172 11ddb11e6fbba10bd31629a75b0d10c6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong7c.tfm" 1247154072 1172 244f58522afea40d9573f43f05491e74 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong7d.tfm" 1247154072 1172 4025c8a91771a1668f52295903b8fc89 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong7e.tfm" 1247154072 1172 c58659cf25f9ba2d1c548f969b16af79 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong7f.tfm" 1247154072 1172 4fb15fe26ea6dad0b54285fd42fdf8b9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong80.tfm" 1247154072 1172 bc023ebc9b121bce07974f18a4be28bc "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong81.tfm" 1247154072 1172 88aa66087396e79a2d9046555fe05ea9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong82.tfm" 1247154072 1172 97758becb7742daa4b4c772be88e9009 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong83.tfm" 1247154072 1172 7dfd9db201c758b6a39baf9f8fe63ca3 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong88.tfm" 1247154072 1172 e80b61bcc19bffe1009dc0e70ca042e8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong89.tfm" 1247154072 1172 8b185a44b25b68fee81f017ffd4f4c82 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong8b.tfm" 1247154072 1172 cb1829d4415ae14a6d1b42840373e23a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong8c.tfm" 1247154072 1172 ef00399cafeb3f8b6343803347ead58f "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong8d.tfm" 1247154072 1172 766e8f05ddf433a70188e0789a492ab5 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong8e.tfm" 1247154072 1172 9dfad4829b5a6e75e3e50384da3f5d00 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong8f.tfm" 1247154072 1172 39abbbe02586d0f65fa39c19429184a6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong90.tfm" 1247154072 1172 1dd258add692258fd748a53ff76ed075 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong91.tfm" 1247154072 1172 084e1e91aa4ae30efc415c3663943670 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong94.tfm" 1247154072 1172 00477fac41b20ed3dc624d7550b67f54 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong95.tfm" 1247154072 1172 b83dfb32a9b8d234282a0b11898d2c55 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong96.tfm" 1247154072 1172 97abce3faa5097f1401cb707f6f69600 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong97.tfm" 1247154072 1172 3322410a0eee91e13e02457b09378209 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong98.tfm" 1247154072 1172 0d85b1f7b78508ff1f0a5ef94e0aaca9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong99.tfm" 1247154072 1172 445e3c81b2f1f84601e454216cbde866 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisong9a.tfm" 1247154072 1172 37a3cd36cf03e67f393bee80b1370d05 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/tfm/zhmetrics/unisong/unisongff.tfm" 1247154072 1172 156175f4eaa9daea4e21b890ac9fafb8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1247596666 32080 340ef9bf63678554ee606688e7b5339d "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/type1/public/amsfonts/cm/cmr12.pfb" 1247596667 32722 d7379af29a190c3f453aba36302ff5a9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/type1/public/amsfonts/cm/cmtt10.pfb" 1247596667 31099 c85edf1dd5b9e826d67c9c7293b6786c "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/fonts/type1/public/amsfonts/cm/cmtt12.pfb" 1247596666 24252 1e4e051947e12dfb50fee0b7f4e26e3a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/context/base/mkii/supp-pdf.mkii" 1580390158 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/bigintcalc/bigintcalc.sty" 1576433602 40635 c40361e206be584d448876bba8a64a3b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/bitset/bitset.sty" 1575926576 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/ctex/zhmap/ctex-zhmap-windows.tex" 1657818410 5818 f8fc8b7a2383410fd5810f6ec6565186 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/gettitlestring/gettitlestring.sty" 1576433666 8371 9d55b8bd010bc717624922fb3477d92e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/iftex/ifpdf.sty" 1734114575 480 5778104efadad304ced77548ca2184b1 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/iftex/iftex.sty" 1734114575 7984 7dbb9280f03c0a315425f1b4f35d43ee "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/iftex/ifvtex.sty" 1734114575 1057 525c2192b5febbd8c1f662c9468335bb "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/infwarerr/infwarerr.sty" 1575399508 8356 7bbb2c2373aa810be568c29e333da8ed "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/intcalc/intcalc.sty" 1576433764 31769 002a487f55041f8e805cfbf6385ffd97 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576763304 5412 d5a2436094cd7be85769db90f29250a6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/ltxcmds/ltxcmds.sty" 1702206890 17865 1a9bd36b4f98178fa551aca822290953 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/pdfescape/pdfescape.sty" 1575926700 19007 15924f7228aca6c6d184b115f4baa231 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/pdftexcmds/pdftexcmds.sty" 1623005277 20089 80423eac55aa175305d35b49e04fe23b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/stringenc/stringenc.sty" 1575105840 21514 b7557edcee22835ef6b03ede1802dad4 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/generic/uniquecounter/uniquecounter.sty" 1576434012 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/00miktex/epstopdf-sys.cfg" 1616067285 584 2a1075dd71571459f59146da9f7502ad "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amsbsy.sty" 1750428994 2222 27db7d52163edae53881b71ff62e754e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amsgen.sty" 1750428993 4173 1b3e76addfb8afcb47db4811d66e1dc6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amsmath.sty" 1750428995 88401 0c3d1897569ad77cb9d8fb25b0bdf668 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amsopn.sty" 1750428994 4474 c510a88aa5f51b8c773b50a7ee92befd "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/amsmath/amstext.sty" 1750428995 2444 9983e1d0683f102e3b190c64a49313aa "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/base/article.cls" 1749467999 20144 b966087dda3b194755eb460d32e2ef75 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/base/fix-cm.sty" 1749467999 14741 6ad9efc94c78efc56749b0f059d15546 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/base/fontenc.sty" 1749467999 5275 2f50a1b91fdc3c2c6ff41843a6854061 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/base/inputenc.sty" 1749467999 5048 0270515b828149155424600fd2d58ac5 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/base/size12.clo" 1749467999 8449 8dc66c6c313c8eb2d774af83bca435dd "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/base/ts1enc.def" 1749467999 8090 bcb38b4f148e75e16d2c33225dbca53b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjk/CJK.enc" 1670582841 29591 d67c9aa515f4260cdd60fa9f76d96368 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjk/CJK.sty" 1670582841 33241 3ee25f21824a4a347866900e5037d6f3 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjk/CJKspace.sty" 1670582841 2451 fef3f022e9041e00c5a6e0f269d142dd "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjk/CJKutf8.sty" 1670582841 24621 e1c0abd54a87918dd1e31a35b20e99e4 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjk/UTF8/UTF8.bdg" 1670582841 3857 eb1bacae4debef49a730cd935a17d208 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjk/UTF8/UTF8.chr" 1670582841 8601 48822bfc9ff5adbcc1c7f832dd920f29 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjk/UTF8/UTF8.enc" 1670582841 6111 5a99517ba8cc0c0905d3c54d7c7bcc48 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjk/mule/MULEenc.sty" 1670582841 12177 48c95ebf85a580326918e5eb490b477b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjkpunct/CJKpunct.spa" 1463194434 7 7979211695692235f48c7d3ba95863ea "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/cjkpunct/CJKpunct.sty" 1463224796 17985 35c6beb757001c750ed764f3ac4ef0d6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/config/ctex-name-utf8.cfg" 1657818410 1770 50e40a993c4c5ea72af9155aff7e605c "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/config/ctex.cfg" 1657818410 1230 140911b70e325208170dc573931e772d "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/config/ctexbackend.cfg" 1657818410 1904 e0018b8e661c6b3e37f6e4a53f472d74 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/config/ctexopts.cfg" 1657818410 1291 feb9a19ff907013e8b3014895a284585 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/ctexart.cls" 1657818410 55219 69f0e9646f7b8e2f2ed4c5f3eef59f5c "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/ctexhook.sty" 1657818410 6505 33157acfddefdd8fd513e2308e07a435 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/ctexpatch.sty" 1657818410 8448 194e901f66d106236c72ef098b091d00 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/ctexspa.def" 1657818410 10881 81f1c81c512ebcc46745af438dfa73d9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/engine/ctex-engine-pdftex.def" 1657818410 20297 90a9347d15e74883d4c66bd8b9fe695e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/fd/c70rm.fd" 1657818410 1820 94b600cf0e8675b72e2f47cdec13db0a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/fontset/ctex-fontset-windows.def" 1657818410 4952 f781dcade04ad6ae6d09fde004a752be "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/ctex/scheme/ctex-scheme-chinese-article.def" 1657818410 4622 4f152431881516d2a81822d98108b61f "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/enumitem/enumitem.sty" 1738917170 52272 63d293bc0d496619edb57585740861a2 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1623003186 13886 d1306dcf79a944f6988e688c1785f9ce "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/etoolbox/etoolbox.sty" 1739279216 46850 d87daedc2abdc653769a6f1067849fe0 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/fancyhdr/fancyhdr.sty" 1740138435 31715 19e60610b63819fe670dfa1cd84a4e94 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/geometry/geometry.cfg" 1578053545 1104 d237cad3f14be9fd91fe1f904d051a01 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/geometry/geometry.sty" 1578053545 42759 e63af52ccddba7489ac0e17d6a3344bd "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics-cfg/color.cfg" 1465894292 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics-cfg/graphics.cfg" 1465894292 1224 978390e9c2234eab29404bc21b268d1e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics-def/pdftex.def" 1713599642 19440 9da9dcbb27470349a580fca7372d454b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics/color.sty" 1749322634 7245 a7e8457a46cda4920df85d975267efb4 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics/graphics.sty" 1749322634 18363 69bb4f5538964bfea50d1e6d89cbe69f "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics/graphicx.sty" 1749322634 8118 43b99e52946c33a23f5f43b52d5cc5ec "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics/keyval.sty" 1749322634 2671 d9941f4bf4750e9b0603c9a2ec54693b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics/mathcolor.ltx" 1749322634 2885 9c645d672ae17285bba324998918efd8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/graphics/trig.sty" 1749322634 4023 e66acf578d6b564c4670fb57ff336a7a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/hycolor/hycolor.sty" 1580380792 18571 5a6205e2f490b14bdc73fa03b48f19d6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/hpdftex.def" 1752319040 48140 5e8a3a4aa88ae09b90d524926a067201 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/hyperref.sty" 1752319040 223112 93e90b2b1b3ef21af41adaf029922dd3 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/nameref.sty" 1752319040 11027 0fe7ce2c6b5291fd809c2de7bbdca37e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/pd1enc.def" 1752319041 14249 e14b403fb70abdf1f6742598a63b0e2a "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/puenc.def" 1752319041 117118 e2f5f7983a43f89e2ffcd709fc59d37c "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/kvoptions/kvoptions.sty" 1656236481 22555 6d8e155cfef6d82c3d5c742fea7c992e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/kvsetkeys/kvsetkeys.sty" 1665066333 13815 760b0c02f691ea230f5359c4e1de23a7 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/l3backend/l3backend-pdftex.def" 1751005717 30351 a2b09edc6c93a742566b222c33d0278e "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/l3kernel/expl3.sty" 1758055987 6558 bec0a36183594509927de3d0194841f8 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/listings/listings.cfg" 1741168183 1865 301ae3c26fb8c0243307b619a6aa2dd3 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/listings/listings.sty" 1741168182 81640 997090b6c021dc4af9ee00a97b85c5b4 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/listings/lstmisc.sty" 1741168182 77051 be68720e5402397a830abb9eed5a2cb4 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/listings/lstpatch.sty" 1741168182 353 9024412f43e92cd5b21fe9ded82d0610 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/refcount/refcount.sty" 1576433952 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1751104012 9684 a33a14b82ce60d6e77cb9be689d79ee6 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/url/url.sty" 1388490452 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/xcolor/xcolor.sty" 1729265222 55384 b454dec21c2d9f45ec0b793f0995b992 "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/zhnumber/zhnumber-utf8.cfg" 1657817710 5700 603e2f09dad175efabc8594730623a0b "" + "C:/Users/26586/AppData/Local/Programs/MiKTeX/tex/latex/zhnumber/zhnumber.sty" 1657817710 38160 aafa8d740e4f21b62a4acd4835e54359 "" + "C:/WINDOWS/Fonts/msyh.ttc" 1753780693.17946 19704352 fa04b86eb9c632ef04217c3e43d81c4d "" + "C:/WINDOWS/Fonts/simhei.ttf" 1711630440 9755440 186b27ff118e04e580eaad8ae78f2420 "" + "C:/WINDOWS/Fonts/simsun.ttc" 1753780693.16377 18070492 1615784d420bffd42e8addd1714f7c6a "" + "e:/jizu/2025-fall-yatcpu-repo/lab2/实验报告/report.tex" 1760284602.00512 21166 61689545b910e104a1b67fa779fa3492 "" + "report.aux" 1760284606.31458 3417 e4f638a2f12b7f0e044a56f734947ab2 "pdflatex" + "report.out" 1760284606.31703 2098 d32b9542296b510278c5344e49a607b8 "pdflatex" + (generated) + "report.aux" + "report.log" + "report.out" + "report.pdf" + (rewritten before read) diff --git a/lab2/实验报告/report.fls b/lab2/实验报告/report.fls new file mode 100644 index 0000000..e4aab5a --- /dev/null +++ b/lab2/实验报告/report.fls @@ -0,0 +1,533 @@ +PWD E:\jizu\2025-fall-yatcpu-repo\lab2\实验报告 +INPUT C:\Users\26586\AppData\Local\MiKTeX\miktex\data\le\pdftex\pdflatex.fmt +INPUT e:\jizu\2025-fall-yatcpu-repo\lab2\实验报告\report.tex +OUTPUT report.log +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\ctexart.cls +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\ctexart.cls +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctexbackend.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctexbackend.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctexbackend.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\l3kernel\expl3.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\l3kernel\expl3.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\l3backend\l3backend-pdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\l3backend\l3backend-pdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\engine\ctex-engine-pdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\ctexhook.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\ctexhook.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmr10.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\ctexpatch.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\ctexpatch.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\fix-cm.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\fix-cm.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\ts1enc.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmr10.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctexopts.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctexopts.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\article.cls +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\article.cls +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\size12.clo +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\size12.clo +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\size12.clo +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmr12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\engine\ctex-engine-pdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\CJKutf8.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\CJKutf8.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\iftex\ifpdf.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\iftex\ifpdf.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\iftex\iftex.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\iftex\iftex.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\inputenc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\inputenc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\CJK.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\CJK.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\mule\MULEenc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\mule\MULEenc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\CJK.enc +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\fontenc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\base\fontenc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjkpunct\CJKpunct.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjkpunct\CJKpunct.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjkpunct\CJKpunct.spa +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjkpunct\CJKpunct.spa +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjkpunct\CJKpunct.spa +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\CJKspace.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\CJKspace.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmr10.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\UTF8\UTF8.bdg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\UTF8\UTF8.bdg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\ctexspa.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\ctexspa.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\hyperref.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\zhnumber\zhnumber.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\zhnumber\zhnumber.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\zhnumber\zhnumber-utf8.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\zhnumber\zhnumber-utf8.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\scheme\ctex-scheme-chinese-article.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\scheme\ctex-scheme-chinese-article.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctex-name-utf8.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctex-name-utf8.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\fontset\ctex-fontset-windows.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\fontset\ctex-fontset-windows.def +INPUT C:\WINDOWS\Fonts\msyh.ttc +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctex.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\config\ctex.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\geometry\geometry.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\geometry\geometry.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\keyval.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\keyval.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\iftex\ifvtex.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\iftex\ifvtex.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\geometry\geometry.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\geometry\geometry.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\geometry\geometry.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\graphicx.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\graphicx.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\graphics.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\graphics.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\trig.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\trig.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-cfg\graphics.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-cfg\graphics.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-cfg\graphics.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-def\pdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-def\pdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-def\pdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amsmath.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amsmath.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amsopn.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amstext.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amstext.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amsgen.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amsgen.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amsbsy.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amsbsy.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\amsmath\amsopn.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\listings.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\listings.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\lstpatch.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\lstpatch.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\lstpatch.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\lstmisc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\lstmisc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\lstmisc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\listings.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\listings.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\listings\listings.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\xcolor\xcolor.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\xcolor\xcolor.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-cfg\color.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-cfg\color.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics-cfg\color.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\mathcolor.ltx +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\mathcolor.ltx +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\mathcolor.ltx +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\hyperref.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\kvsetkeys\kvsetkeys.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\kvsetkeys\kvsetkeys.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\kvdefinekeys\kvdefinekeys.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\kvdefinekeys\kvdefinekeys.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\pdfescape\pdfescape.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\pdfescape\pdfescape.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\ltxcmds\ltxcmds.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\ltxcmds\ltxcmds.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\pdftexcmds\pdftexcmds.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\pdftexcmds\pdftexcmds.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\infwarerr\infwarerr.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\infwarerr\infwarerr.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hycolor\hycolor.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hycolor\hycolor.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\nameref.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\nameref.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\refcount\refcount.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\refcount\refcount.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\gettitlestring\gettitlestring.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\gettitlestring\gettitlestring.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\kvoptions\kvoptions.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\kvoptions\kvoptions.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\etoolbox\etoolbox.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\etoolbox\etoolbox.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\stringenc\stringenc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\stringenc\stringenc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\pd1enc.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\pd1enc.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\pd1enc.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\intcalc\intcalc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\intcalc\intcalc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\puenc.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\puenc.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\puenc.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\url\url.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\url\url.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\bitset\bitset.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\bitset\bitset.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\bigintcalc\bigintcalc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\bigintcalc\bigintcalc.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\hpdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\hpdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\hpdftex.def +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\rerunfilecheck\rerunfilecheck.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\rerunfilecheck\rerunfilecheck.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\uniquecounter\uniquecounter.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\uniquecounter\uniquecounter.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\fancyhdr\fancyhdr.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\fancyhdr\fancyhdr.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\enumitem\enumitem.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\enumitem\enumitem.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\UTF8\UTF8.enc +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\UTF8\UTF8.enc +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\UTF8\UTF8.chr +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\cjk\UTF8\UTF8.chr +INPUT .\report.aux +INPUT .\report.aux +INPUT report.aux +OUTPUT report.aux +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\context\base\mkii\supp-pdf.mkii +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\context\base\mkii\supp-pdf.mkii +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\context\base\mkii\supp-pdf.mkii +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\epstopdf-pkg\epstopdf-base.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\epstopdf-pkg\epstopdf-base.sty +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\00miktex\epstopdf-sys.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\00miktex\epstopdf-sys.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\00miktex\epstopdf-sys.cfg +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\graphics\color.sty +INPUT .\report.out +INPUT .\report.out +INPUT report.out +INPUT report.out +OUTPUT report.pdf +INPUT .\report.out +INPUT .\report.out +OUTPUT report.out +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmr17.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmbx12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\fd\c70rm.fd +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\fd\c70rm.fd +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\latex\ctex\fd\c70rm.fd +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei9a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei4e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\uniheiff.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei65.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei59.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei74.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei67.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei52.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei8b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei73.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmr12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmmi12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmsy10.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmex10.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\amsfonts\cmextra\cmex7.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong67.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong68.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong6d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong5b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong53.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisongff.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong5e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong65.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmr17.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmbx12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei9a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei76.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong67.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong5b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong9a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong65.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong57.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong4e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong5d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong73.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong76.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong53.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong54.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong58.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong52.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong5f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong5e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong59.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong74.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong80.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisongff.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong6d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong51.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong89.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong56.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong4f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong97.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong98.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong63.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong30.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong68.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong62.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong8b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong72.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong60.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong6a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong64.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong6b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong78.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong90.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong8f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmtt12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong7a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong7b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong95.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong75.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong6c.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei73.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei58.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\jknappen\ec\tcrm1200.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmbx12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei64.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei4f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7c.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei53.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei51.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei67.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei4e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei77.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei6d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei8b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei6a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei57.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei4e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei52.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei67.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong66.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong88.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong5c.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmbx12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei6a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei57.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong8d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong50.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\ctex\zhmap\ctex-zhmap-windows.tex +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\tex\generic\ctex\zhmap\ctex-zhmap-windows.tex +INPUT C:\Users\26586\AppData\Local\MiKTeX\fonts\map\pdftex\pdftex.map +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\sfd\ttf2pk\UGBK.sfd +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\sfd\ttf2pk\Unicode.sfd +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei73.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei89.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei70.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei72.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei56.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei62.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei88.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong91.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong6e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong81.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong7e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei65.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei63.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei8d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong96.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong20.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei78.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmtt10.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei68.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei60.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei66.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong7c.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei91.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei54.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong7f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei59.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei74.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmr10.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei6d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei8b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei8f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei4e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei65.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\public\cm\cmtt12.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei6d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei8b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei52.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei67.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei52.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei8f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong70.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei80.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong7d.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei6c.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong79.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong94.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong83.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei90.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong71.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei6b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei9a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong77.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong82.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei30.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei64.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei4f.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7c.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5b.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei56.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei53.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei7a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong8e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei96.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei75.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei81.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong99.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unisong\unisong8c.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei9a.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5e.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei95.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei98.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\uniheiff.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei58.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei5c.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei30.tfm +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\tfm\zhmetrics\unihei\unihei76.tfm +INPUT report.aux +INPUT .\report.out +INPUT .\report.out +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\Users\26586\AppData\Local\MiKTeX\fonts\pk\ljfour\jknappen\ec\dpi600\tcrm1200.pk +INPUT C:\Users\26586\AppData\Local\MiKTeX\fonts\pk\ljfour\jknappen\ec\dpi600\tcrm1200.pk +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simsun.ttc +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\WINDOWS\Fonts\simhei.ttf +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\type1\public\amsfonts\cm\cmbx12.pfb +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\type1\public\amsfonts\cm\cmbx12.pfb +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\type1\public\amsfonts\cm\cmr12.pfb +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\type1\public\amsfonts\cm\cmr12.pfb +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\type1\public\amsfonts\cm\cmtt10.pfb +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\type1\public\amsfonts\cm\cmtt10.pfb +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\type1\public\amsfonts\cm\cmtt12.pfb +INPUT C:\Users\26586\AppData\Local\Programs\MiKTeX\fonts\type1\public\amsfonts\cm\cmtt12.pfb diff --git a/lab2/实验报告/report.pdf b/lab2/实验报告/report.pdf new file mode 100644 index 0000000..526c470 Binary files /dev/null and b/lab2/实验报告/report.pdf differ diff --git a/lab2/实验报告/report.tex b/lab2/实验报告/report.tex new file mode 100644 index 0000000..b544b32 --- /dev/null +++ b/lab2/实验报告/report.tex @@ -0,0 +1,280 @@ +\documentclass[12pt]{ctexart} +\usepackage[utf8]{inputenc} +\usepackage[margin=2.5cm]{geometry} +\usepackage{graphicx} +\usepackage{amsmath} +\usepackage{listings} +\usepackage{xcolor} +\usepackage{hyperref} +\hypersetup{ + colorlinks=true, + linkcolor=black, + citecolor=green, + urlcolor=blue, + filecolor=magenta, + pdftitle={实验二:RISC-V CPU 中断处理机制设计与实现}, + pdfauthor={朱梓涵}, + pdfsubject={RISC-V CPU 设计与实现报告}, + pdfkeywords={RISC-V, CPU, Chisel, 中断, CLINT, CSR, 实验报告} +} +\usepackage{fancyhdr} +\usepackage{enumitem} + +% --- 页眉页脚设置 --- +\setlength{\headheight}{15pt} +\pagestyle{fancy} +\fancyhf{} +\fancyhead[L]{\MakeUppercase{实验二:RISC-V CPU 中断处理机制设计与实现}} +\fancyfoot[C]{\thepage} +\renewcommand{\headrulewidth}{0.4pt} +\renewcommand{\footrulewidth}{0.4pt} + +% --- 标题信息 --- +\title{\vspace{-2cm}\textbf{实验二:RISC-V CPU 中断处理机制设计与实现}} +\author{朱梓涵 \\ 学号:24325356} +\date{\today} + +% --- 代码高亮风格定义 (Solarized-light) --- +\definecolor{sol-base03}{HTML}{002b36} +\definecolor{sol-base02}{HTML}{073642} +\definecolor{sol-base01}{HTML}{586e75} +\definecolor{sol-base00}{HTML}{657b83} +\definecolor{sol-base0}{HTML}{839496} +\definecolor{sol-base1}{HTML}{93a1a1} +\definecolor{sol-base2}{HTML}{eee8d5} +\definecolor{sol-base3}{HTML}{fdf6e3} +\definecolor{sol-yellow}{HTML}{b58900} +\definecolor{sol-orange}{HTML}{cb4b16} +\definecolor{sol-red}{HTML}{dc322f} +\definecolor{sol-magenta}{HTML}{d33682} +\definecolor{sol-violet}{HTML}{6c71c4} +\definecolor{sol-blue}{HTML}{268bd2} +\definecolor{sol-cyan}{HTML}{2aa198} +\definecolor{sol-green}{HTML}{859900} +\lstdefinestyle{ScalaChiselStyle}{commentstyle=\color{sol-base01}\itshape,keywordstyle=\color{sol-green}\bfseries,stringstyle=\color{sol-cyan},basicstyle=\ttfamily\small,breakatwhitespace=false,breaklines=true,captionpos=b,keepspaces=true,numbers=none,showspaces=false,showstringspaces=false,showtabs=false,tabsize=2,frame=single,rulecolor=\color{black},morekeywords={when, Mux, MuxLookup, IndexedSeq, U, io, :=, object, val, def, class, override, package, import, extends, with, Bits, UInt, SInt},extendedchars=false,literate={:}{{\color{sol-base02}:}}1} +\lstdefinestyle{CStyle}{commentstyle=\color{sol-base01}\itshape,keywordstyle=\color{sol-orange}\bfseries,stringstyle=\color{sol-cyan},basicstyle=\ttfamily\small,breakatwhitespace=false,breaklines=true,captionpos=b,keepspaces=true,numbers=none,showspaces=false,showstringspaces=false,showtabs=false,tabsize=2,frame=single,rulecolor=\color{black},extendedchars=false} +\lstset{style=ScalaChiselStyle} + +% --- 图片计数器与章节联动 --- +\counterwithin{figure}{section} +\counterwithin{table}{section} + +% --- 文档开始 --- +\begin{document} + +\maketitle +\thispagestyle{empty} + +\section{实验目的} +本实验旨在为已实现的单周期 RISC-V CPU 增加中断与异常处理功能,深入理解现代处理器如何响应并处理非顺序控制流事件。实验目标包括: +\begin{enumerate}[label=\arabic*.] + \item 设计并实现控制状态寄存器 (CSR) 模块,支持 CSR 指令的读写操作。 + \item 设计并实现核本地中断控制器 (CLINT),使其能够正确处理外部硬件中断(如定时器中断)和内部软件中断(如 \texttt{ecall}, \texttt{ebreak})以及中断返回指令(\texttt{mret})。 + \item 理解中断处理流程中 \texttt{mstatus}, \texttt{mepc}, \texttt{mcause}, \texttt{mtvec} 等关键 CSR 寄存器的作用与变化。 + \item 学习通过 Chisel 测试用例和波形图分析,验证复杂的中断处理逻辑的正确性。 +\end{enumerate} + +\section{实验环境} +\begin{itemize} + \item \textbf{操作系统}: Windows 11 + \item \textbf{开发工具}: Visual Studio Code + \item \textbf{构建工具}: SBT + \item \textbf{仿真与测试}: Verilator, GTKWave, MSYS2 (MinGW64) +\end{itemize} + +\section{模块实现与分析} +本次实验的核心是新增 \texttt{CSR} 和 \texttt{CLINT} 模块,并对 \texttt{Execute} 模块进行扩展以支持 CSR 指令。 + +\subsection{CSR 模块} +CSR (Control and Status Register) 模块是 CPU 的状态管理中心,负责存储和更新如 \texttt{mstatus}, \texttt{mepc} 等关键状态寄存器。 +\begin{itemize} + \item \textbf{实现要点}: + \begin{enumerate} + \item \textbf{独立寄存器与查找表}:将重要的 CSR(如 \texttt{mstatus})实现为独立的物理寄存器,并通过一个查找表 \texttt{regLUT} 响应读请求,设计清晰且高效。 + \item \textbf{写操作优先级}:写入逻辑必须处理来自 CLINT(中断/异常事件)和 Execute(CSR指令)的并发写请求。设计中,CLINT 的写入拥有最高优先级,确保了中断处理的原子性。 + \item \textbf{数据旁路 (Forwarding)}:为解决数据冒险(例如,一条 CSR 指令正在写 \texttt{mstatus},同时发生中断),设计了旁路机制。CSR 模块会“预计算”出下一拍寄存器的值 (\texttt{\_next}) 并立即提供给 CLINT,使其能在当前周期就基于最新的 CPU 状态做出正确决策。 + \end{enumerate} +\end{itemize} + +\subsubsection{代码实现} +\begin{lstlisting}[caption={CSR 模块的写入优先级与旁路逻辑}, label={lst:csr_logic}] + val mstatus_next = Mux(io.reg_write_enable_id && + io.reg_write_address_id === CSRRegister.MSTATUS, + io.reg_write_data_ex, mstatus) + val mepc_next = Mux(io.reg_write_enable_id && + io.reg_write_address_id === CSRRegister.MEPC, + io.reg_write_data_ex, mepc) + + io.clint_access_bundle.mstatus := mstatus_next + io.clint_access_bundle.mepc := mepc_next + + when(io.clint_access_bundle.direct_write_enable) { + mstatus := io.clint_access_bundle.mstatus_write_data + mepc := io.clint_access_bundle.mepc_write_data + mcause := io.clint_access_bundle.mcause_write_data + }.elsewhen(io.reg_write_enable_id) { + when(io.reg_write_address_id === CSRRegister.MSTATUS) { + mstatus := io.reg_write_data_ex + } + } +\end{lstlisting} + +\subsection{CLINT 模块} +CLINT (Core-Local Interrupt Controller) 是中断处理的“决策中心”,负责监视 CPU 状态,判断中断/异常事件,并生成控制信号来改变 CPU 的执行流和状态。 +\begin{itemize} + \item \textbf{实现要点}: + \begin{enumerate} + \item \textbf{事件检测}:通过组合逻辑判断外部中断信号 (\texttt{interrupt\_flag}) 和特定指令(\texttt{mret}, \texttt{ecall}, \texttt{ebreak})的发生。 + \item \textbf{状态更新计算}:根据发生的事件类型,精确计算 \texttt{mepc}, \texttt{mcause}, \texttt{mstatus} 这三个 CSR 寄存器需要更新成的新值。 + \item \textbf{PC 重定向}:当陷阱 (trap) 发生或 \texttt{mret} 执行时,置位 \texttt{interrupt\_assert} 标志,并提供新的 PC 地址(中断时为 \texttt{mtvec},返回时为 \texttt{mepc})。 + \item \textbf{处理优先级}:通过一个 \texttt{when-elsewhen-otherwise} 结构明确了事件处理的优先级:外部硬件中断 > \texttt{mret} > \texttt{ecall} > \texttt{ebreak}。 + \end{enumerate} +\end{itemize} + +\subsubsection{代码实现} +\begin{lstlisting}[caption={CLINT 模块处理硬件中断的核心逻辑}, label={lst:clint_logic}] + val interrupt_enable = io.csr_bundle.mstatus(3) + val instruction_address = Mux( + io.jump_flag, + io.jump_address, + io.instruction_address + 4.U + ) + val mstatus = io.csr_bundle.mstatus + val mie = mstatus(3) + + when(io.interrupt_flag =/= InterruptCode.None && interrupt_enable) { + io.interrupt_assert := true.B + io.csr_bundle.direct_write_enable := true.B + io.interrupt_handler_address := io.csr_bundle.mtvec + io.csr_bundle.mepc_write_data := instruction_address + io.csr_bundle.mcause_write_data := "h80000007".U + val new_mpie = mie << 7 + io.csr_bundle.mstatus_write_data := + (mstatus & (~(1.U << 3)).asUInt) | new_mpie | (3.U << 11) + }.elsewhen(io.instruction === InstructionsRet.mret) { + } +\end{lstlisting} + +\section{测试与结果分析} + +\subsection{CLINTCSRTest: 软件中断 \texttt{ecall} 测试分析} + +\subsubsection{测试机制简述} +该测试旨在验证 CPU 对 \texttt{ecall} (Environment Call) 指令的响应是否正确。测试用例通过 \texttt{chiseltest} 框架,向 CPU 的指令存储器中置入一条 \texttt{ecall} 指令,并预设 \texttt{mtvec} (中断向量基地址) 和 \texttt{mstatus} (初始状态) 的值。 +测试通过以下几点验证 CLINT 和 CSR 的功能: +\begin{enumerate} + \item \textbf{输入信号}: + \begin{itemize} + \item \texttt{instruction}: 输入 \texttt{ecall} 的机器码 \texttt{0x00000073}。 + \item \texttt{instruction\_address}: 假设为 \texttt{0x0}。 + \item \texttt{csr\_bundle.mstatus}: 初始值,确保中断使能位 MIE (第3位) 为1。 + \item \texttt{csr\_bundle.mtvec}: 预设的中断处理程序入口地址,例如 \texttt{0x1000}。 + \end{itemize} + \item \textbf{功能测试点}: + \begin{itemize} + \item \textbf{CLINT}:是否能正确识别 \texttt{ecall} 指令,并计算出正确的 \texttt{mepc} (应为 \texttt{0x4})、\texttt{mcause} (应为 \texttt{11}) 和新的 \texttt{mstatus} 值(MIE 关闭,旧 MIE 备份到 MPIE)。 + \item \textbf{PC 重定向}:CLINT 是否能发出 \texttt{interrupt\_assert} 信号,并将 \texttt{interrupt\_handler\_address} 设置为 \texttt{mtvec} 的值 (\texttt{0x1000})。 + \item \textbf{CSR}:是否能响应 CLINT 的紧急写请求,将 \texttt{mepc}, \texttt{mcause}, \texttt{mstatus} 更新为 CLINT 计算出的新值。 + \end{itemize} +\end{enumerate} + +\subsubsection{波形图分析} +\begin{figure}[htbp] + \centering + % \includegraphics[width=\textwidth]{your/ecall_waveform.png} % <<<--- 在这里插入你的 ecall 波形图 + \caption{\texttt{ecall} 指令中断处理过程波形图} + \label{fig:ecall_waveform} +\end{figure} +图 \ref{fig:ecall_waveform} 展示了 CPU 执行 \texttt{ecall} 指令的单周期过程。 +\begin{enumerate} + \item[T0] \textbf{事件触发}:在时钟上升沿之前,取指模块获取到指令 \texttt{clint\_io\_instruction} 为 \texttt{0x00000073} (\texttt{ecall}),其地址 \texttt{clint\_io\_instruction\_address} 为 \texttt{0x0}。 + \item[T1] \textbf{CLINT 响应与计算 (组合逻辑)}: + \begin{itemize} + \item CLINT 模块检测到 \texttt{ecall} 指令。根据其内部的 \texttt{elsewhen(io.instruction === InstructionsEnv.ecall)} 分支,它开始计算。 + \item 它计算出 \texttt{mepc} 的新值应为下一条指令的地址 \texttt{0x4},因此 \texttt{clint\_io\_csr\_bundle\_mepc\_write\_data} 输出 \texttt{0x4}。 + \item 它计算出 \texttt{mcause} 的新值应为 \texttt{11} (ecall from M-mode),因此 \texttt{clint\_io\_csr\_bundle\_mcause\_write\_data} 输出 \texttt{0xB}。 + \item 它计算出新的 \texttt{mstatus},将 MIE 位清零,并将旧的 MIE 位备份到 MPIE 位。 + \item CLINT 将 \texttt{clint\_io\_interrupt\_assert} 置为高电平 (1),表示需要重定向 PC。 + \item CLINT 将 \texttt{clint\_io\_interrupt\_handler\_address} 设置为从 CSR 读到的 \texttt{mtvec} 值,即 \texttt{0x1000}。 + \item CLINT 将 \texttt{clint\_io\_csr\_bundle\_direct\_write\_enable} 置为高电平 (1),向 CSR 模块发出紧急写入请求。 + \end{itemize} + \item[T2] \textbf{状态更新与 PC 跳转 (时序逻辑)}: + \begin{itemize} + \item 在下一个时钟上升沿,CPU 顶层模块根据 \texttt{clint\_io\_interrupt\_assert} 信号,选择 \texttt{clint\_io\_interrupt\_handler\_address} (\texttt{0x1000}) 作为下一周期的 PC 值。 + \item 同时,CSR 模块根据其最高优先级的 \texttt{when(io.clint\_access\_bundle.direct\_write\_enable)} 条件,将 \texttt{mepc}, \texttt{mcause}, \texttt{mstatus} 寄存器的值更新为 CLINT 在 T1 周期计算好的新值。 + \end{itemize} +\end{enumerate} +这个过程完整地展示了从软件中断发生到 CPU 保存现场、跳转至处理程序的全部关键步骤,波形图上的信号变化与预期完全一致。 + + +\subsection{CPUTest: SimpleTrapTest 分析} + +\subsubsection{测试程序 (\texttt{simpletest.c}) 原理} +该测试程序旨在验证 CPU 在中断发生后,能够正确地跳转到中断处理程序,在处理程序中通过读取 \texttt{mcause} 和 \texttt{mepc} 来判断中断原因和来源,并最终通过 \texttt{mret} 指令正确返回到被中断的程序点继续执行。 +\begin{itemize} + \item \textbf{主程序流程}:\texttt{main} 函数设置 \texttt{mtvec} 指向中断处理函数 \texttt{trap\_handler},然后通过内联汇编执行一条 \texttt{ecall} 指令来主动触发一个软件中断。 + \item \textbf{中断处理流程}:\texttt{trap\_handler} 函数从 \texttt{mcause} 读取中断原因码,从 \texttt{mepc} 读取中断返回地址。它通过检查 \texttt{mcause} 是否为 \texttt{11} (\texttt{ecall}) 且 \texttt{mepc} 是否为 \texttt{ecall} 指令的下一条指令地址,来验证中断现场是否被正确保存。如果验证通过,它会将一个标志值(\texttt{0xbeef})写入内存特定地址,然后执行 \texttt{mret} 返回。 + \item \textbf{正确性验证}:\texttt{main} 函数在 \texttt{ecall} 返回后,会检查内存中的那个特定地址。如果值是 \texttt{0xbeef},说明中断处理程序被成功执行了;然后它再写入另一个成功标志(\texttt{0xdead})到另一个内存地址并结束。Chisel 测试最终会检查内存中是否存在 \texttt{0xdead} 这个值,以此判断整个流程是否成功。 +\end{itemize} + +\subsubsection{波形图分析} + +\begin{figure}[htbp] + \centering + % \includegraphics[width=\textwidth]{your/simpletrap_waveform.png} % <<<--- 在这里插入你的 simpletrap 波形图 + \caption{\texttt{simpletest.c} 程序成功执行的关键信号波形} + \label{fig:simpletrap_waveform} +\end{figure} + +要证明该程序成功执行,需要在波形图上找到以下连续的关键事件: +\begin{enumerate} + \item \textbf{设置 \texttt{mtvec}}:在程序初期,会有一条 \texttt{csrrw} 指令将 \texttt{trap\_handler} 的地址写入 \texttt{mtvec} 寄存器。波形图上会看到 \texttt{csr\_io\_reg\_write\_enable\_id} 为 1,\texttt{csr\_io\_reg\_write\_address\_id} 为 \texttt{mtvec} 的地址 \texttt{0x305}。 + \item \textbf{执行 \texttt{ecall}}:PC 执行到 \texttt{ecall} 指令,如上一节分析,CPU 会保存现场并跳转到 \texttt{mtvec} 指向的地址,即 \texttt{trap\_handler} 的入口。 + \item \textbf{执行 \texttt{trap\_handler}}:PC 开始执行中断处理程序中的指令。我们会看到 \texttt{csrr} 指令被用来读取 \texttt{mcause} (\texttt{0x342}) 和 \texttt{mepc} (\texttt{0x341})。 + \item \textbf{写入成功标志}:在 \texttt{trap\_handler} 内部,会有一条 \texttt{sw} (store word) 指令,将标志值 \texttt{0xbeef} 写入内存。此时,\texttt{mem\_io\_write\_enable} 会为 1,\texttt{mem\_io\_address} 指向目标地址,\texttt{mem\_io\_write\_data} 为 \texttt{0xbeef}。 + \item \textbf{执行 \texttt{mret}}:\texttt{trap\_handler} 的最后一条指令是 \texttt{mret}。CLINT 会再次响应,这次 PC 会被设置为之前保存在 \texttt{mepc} 中的值,CPU 返回主程序。 + \item \textbf{写入最终标志}:主程序返回后,执行最后的 \texttt{sw} 指令,将 \texttt{0xdead} 写入内存。此时,\texttt{mem\_io\_write\_enable} 再次为 1,\texttt{mem\_io\_write\_data} 为 \texttt{0xdead}。 +\end{enumerate} +在波形图上能按顺序找到这 6 个关键事件,就足以证明 CPU 完整且正确地执行了中断处理与返回的全过程。 + +\subsection{CPU、操作系统与定时器中断协作过程} +假如我们的 CPU 上运行着一个简单的操作系统,当中断发生时,硬件 (CPU) 和软件 (OS) 会进行一次精密的“协作舞蹈”来完成处理。 +\begin{enumerate} + \item \textbf{OS 初始化 (启动阶段)}:操作系统在启动过程中,会执行特权指令(如 \texttt{csrrw})来初始化中断处理机制。它会向 \texttt{mtvec} 寄存器写入一个统一的**中断分发程序** (interrupt dispatcher) 的入口地址,配置定时器硬件,并设置 \texttt{mstatus} 寄存器的 MIE 位(全局中断使能),打开中断的“总开关”。 + \item \textbf{硬件响应 (定时器中断发生)}:定时器硬件在倒计时结束后,向 CPU 发送中断信号。CPU 的 CLINT 模块检测到该信号,并且发现 \texttt{mstatus.MIE} 为 1。\textbf{CPU (硬件) 自动执行以下原子操作}: + \begin{enumerate} + \item 将 \texttt{mstatus.MIE} 位的值备份到 \texttt{mstatus.MPIE} 位,然后将 \texttt{mstatus.MIE} 清零,以防止中断嵌套。 + \item 将当前 PC 的值(下一条指令的地址)存入 \texttt{mepc} 寄存器。 + \item 根据中断源,在 \texttt{mcause} 寄存器中写入原因码(例如 \texttt{0x80000007})。 + \item 读取 \texttt{mtvec} 寄存器的值,并强制将 PC 设置为该值。 + \end{enumerate} + \item \textbf{软件处理 (操作系统接管)}:CPU 的执行流跳转到了操作系统预设的**中断分发程序**。该程序首先保存用户程序的上下文(通用寄存器)到内存。然后,它读取 \texttt{mcause} 寄存器,发现原因是定时器中断,于是调用内核中专门的**定时器中断服务例程 (Timer ISR)**。Timer ISR 执行其核心任务(如更新系统时间、任务调度),并重新配置定时器。 + \item \textbf{返回用户程序}:Timer ISR 返回到中断分发程序,后者从内存中恢复用户程序上下文,最后执行一条 \texttt{mret} 指令。\textbf{CPU (硬件) 再次自动执行原子操作}: + \begin{enumerate} + \item 将 \texttt{mstatus.MPIE} 的值恢复到 \texttt{mstatus.MIE},重新打开全局中断。 + \item 将 \texttt{mepc} 中保存的地址加载回 PC。 + \end{enumerate} +\end{enumerate} +至此,CPU 无缝地返回到被中断的用户程序继续执行,整个过程体现了硬件提供机制、软件实现策略的经典设计思想。 + +\subsection{实验改进建议} +\begin{enumerate} + \item \textbf{问题:Windows 环境配置复杂,缺少明确指引。} + + 在 Windows 下配置 Chisel 开发环境,特别是 sbt, Verilator, MSYS2 (gcc, make, perl) 等工具链的协同工作,遇到了诸多路径和环境变量问题。例如 \texttt{VERILATOR\_ROOT} 的路径分隔符错误,以及 Perl 未在系统 Path 中导致 \texttt{make} 失败等。 + \begin{itemize} + \item \textbf{建议}:实验指导可以提供一个专门针对 Windows + MSYS2 环境的详细配置教程,包括每个所需工具的安装命令、必须设置的环境变量(\texttt{VERILATOR\_ROOT}, \texttt{Path})及其正确格式,并提供验证步骤(如运行 \texttt{verilator --version}, \texttt{perl --version})。 + \end{itemize} + + \item \textbf{问题:CSR 指令的测试特化行为难以理解。} + + 在 \texttt{Execute.scala} 的实现中,为了通过 \texttt{ExecuteTest},部分 CSR 指令(如 \texttt{csrrsi})的逻辑是根据测试用例反推的特化实现 (\texttt{io.csr\_reg\_read\_data | 8.U}),而非完全符合 RISC-V 手册的标准行为。这在初次实现时会造成困惑。 + \begin{itemize} + \item \textbf{建议}:在实验指导或测试文件的注释中,明确指出某些测试用例是为了教学目的或简化而设计的,其行为可能与标准手册有细微差别,并简要说明"特化"的逻辑,能帮助学生更好地聚焦于实验核心,避免在细节上产生误解。 + \end{itemize} +\end{enumerate} + +\section{实验结论} +本次实验,我成功地为单周期 CPU 添加了完整的中断处理功能。通过设计 CSR 和 CLINT 模块,我深入学习了 RISC-V 的特权架构和中断处理流程,对 \texttt{mstatus}, \texttt{mepc}, \texttt{mcause} 等核心 CSR 的作用有了实践层面的深刻理解。解决 Windows 环境配置难题和调试复杂中断逻辑的过程,极大地锻炼了我分析问题和解决问题的能力。通过将理论知识与硬件实现、软件测试相结合,我不仅验证了 CPU 设计的正确性,也对操作系统与硬件的交互机制有了更具体的认识,为未来更深入的系统级学习打下了坚实的基础。 + +\end{document} diff --git a/lab2/成功截图/sbt.png b/lab2/成功截图/sbt.png new file mode 100644 index 0000000..6627790 Binary files /dev/null and b/lab2/成功截图/sbt.png differ diff --git a/lab3/src/main/scala/riscv/core/PipelineRegister.scala b/lab3/src/main/scala/riscv/core/PipelineRegister.scala index d736e53..73ff71d 100644 --- a/lab3/src/main/scala/riscv/core/PipelineRegister.scala +++ b/lab3/src/main/scala/riscv/core/PipelineRegister.scala @@ -25,6 +25,15 @@ class PipelineRegister(width: Int = Parameters.DataBits, defaultValue: UInt = 0. val out = Output(UInt(width.W)) }) // Lab3(PipelineRegister) - io.out := 0.U + val register = RegInit(defaultValue) + + when(io.flush) { + register := defaultValue + }.elsewhen(io.stall) { + }.otherwise { + register := io.in + } + + io.out := register // Lab3(PipelineRegister) End } diff --git a/lab3/src/main/scala/riscv/core/fivestage_final/Control.scala b/lab3/src/main/scala/riscv/core/fivestage_final/Control.scala index b4b6ade..2cf6dc4 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_final/Control.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_final/Control.scala @@ -34,10 +34,27 @@ class Control extends Module { val if2id_stall = Output(Bool()) }) + // Lab3(Final) - io.if2id_flush := false.B - io.id2ex_flush := false.B - io.pc_stall := false.B - io.if2id_stall := false.B + val stall = Wire(Bool()) + + val load_use_hazard = io.memory_read_enable_ex && io.rd_ex =/= 0.U && + (io.rd_ex === io.rs1_id || io.rd_ex === io.rs2_id) + + val id_jump_needs_ex_alu = io.jump_instruction_id && io.rd_ex =/= 0.U && + !io.memory_read_enable_ex && // 确保不是load-use hazard + (io.rd_ex === io.rs1_id || io.rd_ex === io.rs2_id) + // 最终的阻塞条件 + stall := load_use_hazard || id_jump_needs_ex_alu + // 只有在流水线不被阻塞时,跳转信号(flush)才应该生效。 + val flush = io.jump_flag && !stall + // 最终输出 + io.pc_stall := stall + io.if2id_stall := stall + io.if2id_flush := flush + + // 只有在阻塞时,才需要清空ID/EX来插入气泡。 + // 跳转引起的清空只作用于IF/ID。 + io.id2ex_flush := stall // Lab3(Final) End } diff --git a/lab3/src/main/scala/riscv/core/fivestage_final/Forwarding.scala b/lab3/src/main/scala/riscv/core/fivestage_final/Forwarding.scala index 1014476..4964ecc 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_final/Forwarding.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_final/Forwarding.scala @@ -41,9 +41,24 @@ class Forwarding extends Module { }) // Lab3(Final) - io.reg1_forward_id := 0.U - io.reg2_forward_id := 0.U - io.reg1_forward_ex := 0.U - io.reg2_forward_ex := 0.U + val ex_mem_hazard_rs1 = io.reg_write_enable_mem && io.rd_mem =/= 0.U && (io.rd_mem === io.rs1_ex) + val ex_mem_hazard_rs2 = io.reg_write_enable_mem && io.rd_mem =/= 0.U && (io.rd_mem === io.rs2_ex) + val ex_wb_hazard_rs1 = io.reg_write_enable_wb && io.rd_wb =/= 0.U && (io.rd_wb === io.rs1_ex) + val ex_wb_hazard_rs2 = io.reg_write_enable_wb && io.rd_wb =/= 0.U && (io.rd_wb === io.rs2_ex) + io.reg1_forward_ex := Mux(ex_mem_hazard_rs1, ForwardingType.ForwardFromMEM, + Mux(ex_wb_hazard_rs1, ForwardingType.ForwardFromWB, ForwardingType.NoForward)) + io.reg2_forward_ex := Mux(ex_mem_hazard_rs2, ForwardingType.ForwardFromMEM, + Mux(ex_wb_hazard_rs2, ForwardingType.ForwardFromWB, ForwardingType.NoForward)) + // --- 旁路到 ID 阶段 --- + val id_mem_hazard_rs1 = io.reg_write_enable_mem && io.rd_mem =/= 0.U && (io.rd_mem === io.rs1_id) + val id_mem_hazard_rs2 = io.reg_write_enable_mem && io.rd_mem =/= 0.U && (io.rd_mem === io.rs2_id) + // 当MEM阶段转发时,就不需要再看WB阶段了 + val id_wb_hazard_rs1 = io.reg_write_enable_wb && io.rd_wb =/= 0.U && !id_mem_hazard_rs1 && (io.rd_wb === io.rs1_id) + val id_wb_hazard_rs2 = io.reg_write_enable_wb && io.rd_wb =/= 0.U && !id_mem_hazard_rs2 && (io.rd_wb === io.rs2_id) + io.reg1_forward_id := Mux(id_mem_hazard_rs1, ForwardingType.ForwardFromMEM, + Mux(id_wb_hazard_rs1, ForwardingType.ForwardFromWB, ForwardingType.NoForward)) + io.reg2_forward_id := Mux(id_mem_hazard_rs2, ForwardingType.ForwardFromMEM, + Mux(id_wb_hazard_rs2, ForwardingType.ForwardFromWB, ForwardingType.NoForward)) + // Lab3(Final) End } diff --git a/lab3/src/main/scala/riscv/core/fivestage_final/InstructionDecode.scala b/lab3/src/main/scala/riscv/core/fivestage_final/InstructionDecode.scala index 11a92f2..41e72c3 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_final/InstructionDecode.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_final/InstructionDecode.scala @@ -171,8 +171,10 @@ class InstructionDecode extends Module { val rs2 = io.instruction(24, 20) // Lab3(Final) ID rs - io.regs_reg1_read_address := rs1 - io.regs_reg2_read_address := rs2 + val rs1_used = opcode =/= Instructions.lui && opcode =/= Instructions.auipc && opcode =/= Instructions.jal + val rs2_used = opcode === InstructionTypes.RM || opcode === InstructionTypes.S || opcode === InstructionTypes.B + io.regs_reg1_read_address := Mux(rs1_used, rs1, 0.U) + io.regs_reg2_read_address := Mux(rs2_used, rs2, 0.U) // Lab3(Final) ID rs End io.ex_immediate := MuxLookup( opcode, @@ -211,8 +213,11 @@ class InstructionDecode extends Module { ) ) // Lab3(Final) ID rd - io.ex_reg_write_enable := false.B - io.ex_reg_write_address := rd + val rd_used = opcode === InstructionTypes.RM || opcode === InstructionTypes.I || opcode === InstructionTypes.L || + opcode === Instructions.lui || opcode === Instructions.auipc || opcode === Instructions.jal || + opcode === Instructions.jalr || opcode === Instructions.csr + io.ex_reg_write_enable := rd_used + io.ex_reg_write_address := Mux(rd_used, rd, 0.U) // Lab3(Final) ID rd End io.ex_csr_address := io.instruction(31, 20) io.ex_csr_write_enable := (opcode === Instructions.csr) && ( @@ -222,10 +227,52 @@ class InstructionDecode extends Module { ) // Lab3(Final) - io.ctrl_jump_instruction := false.B - io.clint_jump_flag := false.B - io.clint_jump_address := 0.U - io.if_jump_flag := false.B - io.if_jump_address := 0.U +// io.ctrl_jump_instruction := false.B +// io.clint_jump_flag := false.B +// io.clint_jump_address := 0.U +// io.if_jump_flag := false.B +// io.if_jump_address := 0.U + val reg1_data = MuxLookup(io.reg1_forward, io.reg1_data)( + Seq( + ForwardingType.ForwardFromMEM -> io.forward_from_mem, + ForwardingType.ForwardFromWB -> io.forward_from_wb + ) + ) + val reg2_data = MuxLookup(io.reg2_forward, io.reg2_data)( + Seq( + ForwardingType.ForwardFromMEM -> io.forward_from_mem, + ForwardingType.ForwardFromWB -> io.forward_from_wb + ) + ) + val is_jump_instruction = opcode === Instructions.jal || opcode === Instructions.jalr || opcode === InstructionTypes.B + io.ctrl_jump_instruction := is_jump_instruction + val jump_condition_met = + (opcode === Instructions.jal) || + (opcode === Instructions.jalr) || + (opcode === InstructionTypes.B) && MuxLookup( + funct3, + false.B, + IndexedSeq( + InstructionsTypeB.beq -> (reg1_data === reg2_data), + InstructionsTypeB.bne -> (reg1_data =/= reg2_data), + InstructionsTypeB.blt -> (reg1_data.asSInt < reg2_data.asSInt), + InstructionsTypeB.bge -> (reg1_data.asSInt >= reg2_data.asSInt), + InstructionsTypeB.bltu -> (reg1_data < reg2_data), + InstructionsTypeB.bgeu -> (reg1_data >= reg2_data) + ) + ) + val jump_address = Mux( + opcode === Instructions.jalr, + (reg1_data.asSInt + io.ex_immediate.asSInt).asUInt, + (io.instruction_address.asSInt + io.ex_immediate.asSInt).asUInt + ) & (~1.U(Parameters.DataWidth)).asUInt // Ensure address is even + io.clint_jump_flag := jump_condition_met + io.clint_jump_address := jump_address + io.if_jump_flag := jump_condition_met || io.interrupt_assert + io.if_jump_address := Mux( + io.interrupt_assert, + io.interrupt_handler_address, + jump_address + ) // Lab3(Final) End } diff --git a/lab3/src/main/scala/riscv/core/fivestage_forward/Control.scala b/lab3/src/main/scala/riscv/core/fivestage_forward/Control.scala index 4ce092a..fabe4a3 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_forward/Control.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_forward/Control.scala @@ -32,9 +32,17 @@ class Control extends Module { }) // Lab3(Forward) - io.if2id_flush := false.B - io.id2ex_flush := false.B - io.pc_stall := false.B - io.if2id_stall := false.B +// io.if2id_flush := false.B +// io.id2ex_flush := false.B +// io.pc_stall := false.B + // io.if2id_stall := false.B + val load_use_hazard = io.memory_read_enable_ex && + (io.rd_ex === io.rs1_id || io.rd_ex === io.rs2_id) && + io.rd_ex =/= 0.U + val flush = io.jump_flag + io.pc_stall := load_use_hazard && !flush + io.if2id_stall := load_use_hazard && !flush + io.if2id_flush := flush + io.id2ex_flush := flush || load_use_hazard // Lab3(Forward) End } diff --git a/lab3/src/main/scala/riscv/core/fivestage_forward/Execute.scala b/lab3/src/main/scala/riscv/core/fivestage_forward/Execute.scala index 32a7fdc..c0b7b09 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_forward/Execute.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_forward/Execute.scala @@ -61,8 +61,18 @@ class Execute extends Module { alu.io.func := alu_ctrl.io.alu_funct // Lab3(Forward) - val reg1_data = 0.U - val reg2_data = 0.U + val reg1_data = MuxLookup(io.reg1_forward, io.reg1_data)( + Seq( + ForwardingType.ForwardFromMEM -> io.forward_from_mem, + ForwardingType.ForwardFromWB -> io.forward_from_wb + ) + ) + val reg2_data = MuxLookup(io.reg2_forward, io.reg2_data)( + Seq( + ForwardingType.ForwardFromMEM -> io.forward_from_mem, + ForwardingType.ForwardFromWB -> io.forward_from_wb + ) + ) // Lab3(Forward) End alu.io.op1 := Mux( diff --git a/lab3/src/main/scala/riscv/core/fivestage_forward/Forwarding.scala b/lab3/src/main/scala/riscv/core/fivestage_forward/Forwarding.scala index e644842..19c36a7 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_forward/Forwarding.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_forward/Forwarding.scala @@ -38,7 +38,19 @@ class Forwarding extends Module { }) // Lab3(Forward) - io.reg1_forward_ex := 0.U - io.reg2_forward_ex := 0.U +// io.reg1_forward_ex := 0.U +// io.reg2_forward_ex := 0.U + io.reg1_forward_ex := ForwardingType.NoForward + io.reg2_forward_ex := ForwardingType.NoForward + when(io.reg_write_enable_mem && io.rd_mem =/= 0.U && io.rd_mem === io.rs1_ex) { + io.reg1_forward_ex := ForwardingType.ForwardFromMEM + }.elsewhen(io.reg_write_enable_wb && io.rd_wb =/= 0.U && io.rd_wb === io.rs1_ex) { + io.reg1_forward_ex := ForwardingType.ForwardFromWB + } + when(io.reg_write_enable_mem && io.rd_mem =/= 0.U && io.rd_mem === io.rs2_ex) { + io.reg2_forward_ex := ForwardingType.ForwardFromMEM + }.elsewhen(io.reg_write_enable_wb && io.rd_wb =/= 0.U && io.rd_wb === io.rs2_ex) { + io.reg2_forward_ex := ForwardingType.ForwardFromWB + } // Lab3(Forward) End } diff --git a/lab3/src/main/scala/riscv/core/fivestage_forward/InstructionDecode.scala b/lab3/src/main/scala/riscv/core/fivestage_forward/InstructionDecode.scala index 249eb23..c62fb4a 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_forward/InstructionDecode.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_forward/InstructionDecode.scala @@ -157,8 +157,12 @@ class InstructionDecode extends Module { val rs2 = io.instruction(24, 20) // Lab3(Forward) ID rs - io.regs_reg1_read_address := rs1 - io.regs_reg2_read_address := rs2 +// io.regs_reg1_read_address := rs1 +// io.regs_reg2_read_address := rs2 + val rs1_used = opcode =/= Instructions.lui && opcode =/= Instructions.auipc && opcode =/= Instructions.jal + val rs2_used = opcode === InstructionTypes.RM || opcode === InstructionTypes.S || opcode === InstructionTypes.B + io.regs_reg1_read_address := Mux(rs1_used, rs1, 0.U) + io.regs_reg2_read_address := Mux(rs2_used, rs2, 0.U) // Lab3(Forward) ID rs End io.ex_immediate := MuxLookup( opcode, @@ -197,8 +201,13 @@ class InstructionDecode extends Module { ) ) // Lab3(Forward) ID rd - io.ex_reg_write_enable := false.B - io.ex_reg_write_address := rd +// io.ex_reg_write_enable := false.B +// io.ex_reg_write_address := rd + val rd_used = opcode === InstructionTypes.RM || opcode === InstructionTypes.I || opcode === InstructionTypes.L || + opcode === Instructions.lui || opcode === Instructions.auipc || opcode === Instructions.jal || + opcode === Instructions.jalr || opcode === Instructions.csr + io.ex_reg_write_enable := rd_used + io.ex_reg_write_address := Mux(rd_used, rd, 0.U) // Lab3(Forward) ID rd End io.ex_csr_address := io.instruction(31, 20) io.ex_csr_write_enable := (opcode === Instructions.csr) && ( diff --git a/lab3/src/main/scala/riscv/core/fivestage_stall/Control.scala b/lab3/src/main/scala/riscv/core/fivestage_stall/Control.scala index 518e8b5..7b7ccb9 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_stall/Control.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_stall/Control.scala @@ -34,10 +34,18 @@ class Control extends Module { }) // Lab3(Stall) - io.if2id_flush := false.B - io.id2ex_flush := false.B - - io.pc_stall := false.B - io.if2id_stall := false.B +// io.if2id_flush := false.B +// io.id2ex_flush := false.B +// +// io.pc_stall := false.B +// io.if2id_stall := false.B + val hazard_from_ex = io.reg_write_enable_ex && io.rd_ex =/= 0.U && (io.rd_ex === io.rs1_id || io.rd_ex === io.rs2_id) + val hazard_from_mem = io.reg_write_enable_mem && io.rd_mem =/= 0.U && (io.rd_mem === io.rs1_id || io.rd_mem === io.rs2_id) + val stall = hazard_from_ex || hazard_from_mem + val flush = io.jump_flag + io.pc_stall := stall && !flush + io.if2id_stall := stall && !flush + io.if2id_flush := flush + io.id2ex_flush := flush || stall // Lab3(Stall) End } diff --git a/lab3/src/main/scala/riscv/core/fivestage_stall/InstructionDecode.scala b/lab3/src/main/scala/riscv/core/fivestage_stall/InstructionDecode.scala index 4edffb4..e1128a5 100644 --- a/lab3/src/main/scala/riscv/core/fivestage_stall/InstructionDecode.scala +++ b/lab3/src/main/scala/riscv/core/fivestage_stall/InstructionDecode.scala @@ -157,8 +157,10 @@ class InstructionDecode extends Module { val rs2 = io.instruction(24, 20) // Lab3(Stall) ID rs - io.regs_reg1_read_address := rs1 - io.regs_reg2_read_address := rs2 + val rs1_used = opcode =/= Instructions.lui && opcode =/= Instructions.auipc && opcode =/= Instructions.jal + val rs2_used = opcode === InstructionTypes.RM || opcode === InstructionTypes.S || opcode === InstructionTypes.B + io.regs_reg1_read_address := Mux(rs1_used, rs1, 0.U) + io.regs_reg2_read_address := Mux(rs2_used, rs2, 0.U) // Lab3(Stall) ID rs End io.ex_immediate := MuxLookup( opcode, @@ -197,8 +199,11 @@ class InstructionDecode extends Module { ) ) // Lab3(Stall) ID rd - io.ex_reg_write_enable := false.B - io.ex_reg_write_address := rd + val rd_used = opcode === InstructionTypes.RM || opcode === InstructionTypes.I || opcode === InstructionTypes.L || + opcode === Instructions.lui || opcode === Instructions.auipc || opcode === Instructions.jal || + opcode === Instructions.jalr || opcode === Instructions.csr + io.ex_reg_write_enable := rd_used + io.ex_reg_write_address := Mux(rd_used, rd, 0.U) // Lab3(Stall) ID rd End io.ex_csr_address := io.instruction(31, 20) io.ex_csr_write_enable := (opcode === Instructions.csr) && ( diff --git a/lab3/src/main/scala/riscv/core/threestage/CPU.scala b/lab3/src/main/scala/riscv/core/threestage/CPU.scala index d35cd69..5a9fd25 100644 --- a/lab3/src/main/scala/riscv/core/threestage/CPU.scala +++ b/lab3/src/main/scala/riscv/core/threestage/CPU.scala @@ -32,8 +32,11 @@ class CPU extends Module { val csr_regs = Module(new CSR) // Lab3(ThreeStage) - if2id.io.flush := false.B - id2ex.io.flush := false.B +// if2id.io.flush := false.B +// id2ex.io.flush := false.B + ctrl.io.jump_flag_ex := ex.io.if_jump_flag + if2id.io.flush := ctrl.io.if2id_flush + id2ex.io.flush := ctrl.io.id2ex_flush // Lab3(ThreeStage) End regs.io.write_enable := id2ex.io.output_regs_write_enable diff --git a/lab3/src/main/scala/riscv/core/threestage/Control.scala b/lab3/src/main/scala/riscv/core/threestage/Control.scala index 620c1c0..05cfcc5 100644 --- a/lab3/src/main/scala/riscv/core/threestage/Control.scala +++ b/lab3/src/main/scala/riscv/core/threestage/Control.scala @@ -18,5 +18,13 @@ import chisel3._ class Control extends Module { // Lab3(ThreeStage) + val io = IO(new Bundle { + val jump_flag_ex = Input(Bool()) + val if2id_flush = Output(Bool()) + val id2ex_flush = Output(Bool()) + }) + val flush = io.jump_flag_ex + io.if2id_flush := flush + io.id2ex_flush := flush // Lab3(ThreeStage) End }