diff --git a/Makefile b/Makefile
index 9f5676b..31718b4 100644
--- a/Makefile
+++ b/Makefile
@@ -49,7 +49,7 @@ check_dut:
$(MAKE) dut DUTS="$$DUT_NAME"; \
fi; \
else \
- echo "No DUT mapping found for target: $$t, skipping..." >&2; \
+ echo "No mapping found for target: $$t in dir_map.f, skipping check" >&2; \
fi; \
done; \
fi
@@ -61,7 +61,7 @@ dut: rtl
for d in $(PROCESSED_DUTS); do \
dir=$$(awk -F' --> ' -v dut="$$d" '$$1 == dut {print $$2; exit}' dir_map.f); \
if [ -z "$$dir" ]; then \
- echo "No mapping found for '$$d' in dir_map.f, skipping deletion" >&2; \
+ echo "No mapping found for DUT: $$d in dir_map.f, skipping deletion" >&2; \
continue; \
fi; \
echo "Cleaning dut/$$dir"; \
diff --git a/dir_map.f b/dir_map.f
index 0a99ac0..ad851e2 100644
--- a/dir_map.f
+++ b/dir_map.f
@@ -6,7 +6,7 @@ frontend_ifu_frontend_trigger --> FrontendTrigger --> ut_frontend/ifu/frontend_t
frontend_ifu_pred_checker --> PredChecker --> ut_frontend/ifu/pred_checker
frontend_ifu_predecode --> PreDecode --> ut_frontend/ifu/predecode
frontend_ifu_rvc_expander --> RVCExpander --> ut_frontend/ifu/rvc_expander
-frontend_ifu_top --> NewIFU -->
+frontend_ifu_top --> NewIFU --> ut_frontend/ifu/ifu_top
frontend_itlb --> TLB --> ut_frontend/itlb/classical_version
frontend_itlb --> TLB --> ut_frontend/itlb/toffee_version
frontend_tlb_fa --> TLBFA --> ut_frontend/itlb/submodules/TLBFA
diff --git a/documents/content/zh-cn/docs/01_verfiy_env.md b/documents/content/zh-cn/docs/01_verfiy_env.md
index f817f92..42331a1 100644
--- a/documents/content/zh-cn/docs/01_verfiy_env.md
+++ b/documents/content/zh-cn/docs/01_verfiy_env.md
@@ -12,7 +12,6 @@ weight: 13
1. Linux操作系统。建议WSL2下安装Ubuntu22.04。
1. Python。建议Python3.11。
1. picker。按照[快速开始](https://open-verify.cc/mlvp/docs/quick-start/installer/)中的提示安装最新版本。
-1. toffee。将在后面自动安装。也可按照[快速开始](https://open-verify.cc/mlvp/docs/mlvp/quick-start/)中的提示手动安装最新版本。
1. lcov。用于后续test阶段报告生成。使用包管理器即可下载:`sudo apt install lcov`
**环境配置完成**后,clone仓库:
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/01_ifu/03_ifu_rvc_exp.md b/documents/content/zh-cn/docs/98_ut/01_frontend/01_ifu/03_ifu_rvc_exp.md
index 9aed3a9..0332414 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/01_ifu/03_ifu_rvc_exp.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/01_ifu/03_ifu_rvc_exp.md
@@ -26,6 +26,13 @@ RVI指令永远判断为合法。
对于RVC指令的判定,详细内容参阅20240411的RISCV手册的26\.8节表格列出的指令条件。
+## 常量说明
+
+| 常量名 | 常量值 | 解释 |
+| ---- | ---- | ---- |
+| XLEN | 64 | 通用寄存器位宽,决定指令扩展时使用rv32还是rv64还是rv128 |
+| fLen | 64 | 香山支持d扩展,故为64 |
+
## RVCExpander接口说明
### 输入接口
@@ -292,6 +299,8 @@ addi的格式形如:\| imm\[11\:0\] \| rs1 \| 000 \| rd \| 0010011 \|
lui指令的格式形如: \| imm[31:12] \| rd \| 0110111 \|
+当立即数为0时,这一字段reserved
+
当rd为0时,为hint,也可当作cli进行译码。
当rd为2时,为addi16sp指令:
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/01_ifu/_index.md b/documents/content/zh-cn/docs/98_ut/01_frontend/01_ifu/_index.md
index 4d2416f..fcc8cb8 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/01_ifu/_index.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/01_ifu/_index.md
@@ -4,7 +4,7 @@ linkTitle: IFU
weight: 12
---
-**本文档参考[香山IFU设计文档](https://github.com/OpenXiangShan/XiangShan-Design-Doc/blob/master/docs/frontend/IFU/IFU.md)写成**
+**本文档参考[香山IFU设计文档](https://github.com/OpenXiangShan/XiangShan-Design-Doc/blob/master/docs/frontend/IFU/index.md)写成**
本文档撰写的内容截至[c670557]
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/02_itlb/01_env.md b/documents/content/zh-cn/docs/98_ut/01_frontend/02_itlb/01_env.md
index 79ea053..f536661 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/02_itlb/01_env.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/02_itlb/01_env.md
@@ -4,11 +4,11 @@ linkTitle: 环境配置
weight: 12
---
-## 推荐使用WSL2+Ubuntu22.04+GTKWave
+## WSL2+Ubuntu22.04+GTKWave(Windows用户推荐使用)
-我们推荐Windows10/11用户通过WSL2进行开发,在此给出通过此方法进行环境配置的教程集锦,仅供参考。如环境安装过程中出现任何问题,欢迎在QQ群(群号:976081653)中提出,我们将尽力帮助解决。此页面将收集大家提出的所有环境配置相关问题并提供解决方案,欢迎随时向我们提问!
+我们推荐 Windows10/11 用户通过 WSL2 进行开发,在此给出通过此方法进行环境配置的教程集锦,仅供参考。如环境安装过程中出现任何问题,欢迎在QQ群(群号:976081653)中提出,我们将尽力帮助解决。此页面将收集大家提出的所有环境配置相关问题并提供解决方案,欢迎随时向我们提问!
-## 1、在Windows下安装WSL2(Ubuntu22.04)
+### 1、在 Windows 下安装 WSL2(Ubuntu22.04)
参考资源:
@@ -16,25 +16,83 @@ weight: 12
--- 其它资源:[安装WSL2和Ubuntu22.04版本](https://blog.csdn.net/HHHBan/article/details/126843786)
-## 2、打开WSL,换源
+### 2、打开 WSL,换源
推荐使用清华源:[清华大学开源软件镜像站-Ubuntu软件仓库](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/)
-## 3、配置验证环境
+### 3、配置验证环境
-请参照[开放验证平台学习资源-快速开始-搭建验证环境](https://open-verify.cc/mlvp/docs/quick-start/installer/)配置picker环境。
-
-## 4、使用 GTKWave
-
-使用[重庆大学硬件综合设计实验文档-Windows原生GTKWave](https://co.ccslab.cn/tips/win-gtkwave/)给出的方法,可以通过在WSL中输入 `gtkwave.exe wave.fst` 打开在Windows下安装的GTKWave。请注意,gtkwave在使用中需要进入fst文件所在文件夹,否则会出现无法
-initialize的情况。
+请参照[开放验证平台学习资源-快速开始-搭建验证环境](https://open-verify.cc/mlvp/docs/quick-start/installer/)配置环境。
+以下是示例方法:
```bash
-cd out
-gtkwave.exe {test_name}.fst
-cd ..
+# 基本工具包
+cd ~ && sudo apt-get update
+sudo apt-get install -y build-essential cmake git wget curl lcov autoconf flex bison libgoogle-perftools-dev gcc python3.11 python3.11-dev python3.11-distutils python3-pip python-is-python3
+rm -rf /var/lib/apt/lists/*
+sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
+curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
+# verilator
+git clone https://github.com/verilator/verilator.git
+cd verilator
+git checkout v4.218 # 4.218为最低需求版本,可自行查看并选择新版本
+autoconf && ./configure && make -j$(nproc) && make install
+cd .. && rm -rf verilator
+# verible
+curl -sS https://github.com/chipsalliance/verible/releases/download/v0.0-3946-g851d3ff4/verible-v0.0-3946-g851d3ff4-linux-static-x86_64.tar.gz -o /tmp/
+tar -zxvf /tmp/verible-v0.0-3946-g851d3ff4-linux-static-x86_64.tar.gz -C /tmp/
+copy /tmp/verible-v0.0-3946-g851d3ff4/bin/verible-* /usr/local/bin/
+sudo chmod +x /usr/local/bin/verible-*
+rm /tmp/verible-*
+# pcre2
+curl -sS https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.gz -o /tmp/
+tar -zxvf /tmp/pcre2-10.45.tar.gz -C /tmp/
+cd /tmp/pcre2-10.45
+./configure --prefix=/usr/local && make -j$(nproc) && make install
+rm -rf /tmp/pcre2* && cd ~
+# swig
+# 注意不要使用 apt install swig,将会下载不符合最低要求的版本 4.0.2
+curl -sS http://prdownloads.sourceforge.net/swig/swig-4.3.0.tar.gz -o /tmp/
+tar -zxvf /tmp/swig-4.3.0.tar.gz -C /tmp/
+cd /tmp/swig-4.3.0
+./configure --prefix=/usr/local && make -j$(nproc) && make install
+rm -rf /tmp/swig* && cd ~
+# 更新本地包
+apt-get update && apt-get -y upgrade
+# picker
+git clone https://github.com/XS-MLVP/picker.git --depth=1
+cd picker
+make init && make && make install
+cd .. && rm -rf picker
+# UnityChipForXiangShan
+git clone https://github.com/XS-MLVP/UnityChipForXiangShan.git
+cd UnityChipForXiangShan
+pip3 install --no-cache-dir -r requirements.txt
```
-## 5、使用VSCode插件Live Server查看验证报告
+### 4、使用 GTKWave 查看波形文件
+
+使用[重庆大学硬件综合设计实验文档-Windows原生GTKWave](https://co.ccslab.cn/tips/win-gtkwave/)给出的方法,可以通过在WSL中输入 `gtkwave.exe wave.fst` 打开在 Windows 下安装的 GTKWave。请注意,gtkwave在使用中需要进入 fst 文件所在文件夹,否则会出现无法
+initialize 的情况。
+
+```bash
+gtkwave.exe /out/{test_name}.fst
+```
+
+### 5、使用 VSCode 插件 Live Server 查看验证报告
成功安装插件Live Server后,打开文件列表,定位到 `/out/report/2025*-itlb-doc-*/index.html` 右键并选择 `Open With Live Server`,之后在浏览器中打开提示的端口(默认为`//localhost:5500`)即可。
+
+## docker一键部署方案(MAC用户可用)
+
+我们提供了 MAC 可用的 docker 环境,已在 Docker Hub 发布,名称为 `unitychip-env`。安装 Docker Desktop 后在命令行使用以下命令即可获取并打开开发环境。需下载约 500MB 的镜像,展开后约占用 1GB 空间。
+
+```bash
+docker search unitychip-env
+docker pull dingjunbi/unitychip-env && docker run unitychip-env
+cd UnityChipForXiangShan && git pull
+```
+
+[Docker Hub使用文档](https://docs.docker.com/docker-hub/)
+
+[Docker:docker 拉取镜像及查看pull下来的image在哪里](https://blog.csdn.net/sj349781478/article/details/105267887/)
\ No newline at end of file
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/02_itlb/_index.md b/documents/content/zh-cn/docs/98_ut/01_frontend/02_itlb/_index.md
index bb5a32e..bc38f06 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/02_itlb/_index.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/02_itlb/_index.md
@@ -58,8 +58,8 @@ TLB 应当正常接收来自 IFU 与 ICache 的取指令请求,查找自身页
| No. | 名称 | 说明 |
|--------|-------------------|------------------------|
-| 1.1 | 接收来自 IFU 请求(requestor0、1) | ITLB 根据请求查找自身缓存 TLBuffer,返回 hit/miss 结果 |
-| 1.2 | 接收来自 ICache 请求(requestor2) | 注意此处为阻塞式访问,每次访问后若 miss 应当 reset 后再次访问 |
+| 1.1 | 接收来自 ICache 请求(requestor0、1) | ITLB 根据请求查找自身缓存 TLBuffer,返回 hit/miss 结果 |
+| 1.2 | 接收来自 IFU 请求(requestor2) | 注意此处为阻塞式访问,每次访问后若 miss 应当 reset 后再次访问 |
| 1.3 | 接收条件判断(requestor0、1) | valid 信号 |
| 1.4 | 接受条件判断(requestor2) | valid-ready 信号 |
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/01_TopIO.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/01_TopIO.md
index 0f29394..599dd9f 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/01_TopIO.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/01_TopIO.md
@@ -1,6 +1,6 @@
---
title: FTQ顶层
-linkTitle: FTQ顶层
+linkTitle: 01_FTQ顶层
weight: 12
---
@@ -14,7 +14,7 @@ weight: 12
- **fromBackend:接受后端执行结果和commit信号的接口(CtrlToFtqIO)**
- **toBpu:向BPU发送训练信息和重定向信息的接口(FtqToBpuIO)**
- **toIfu:向IFU发送取值目标和重定向信息的接口(FtqToIfuIO)**
-- toICache:向ICache发送取值目标的接口(FtqToICacheIO)
+- toICache:向ICache发送取值目标的接口(FtqToICacheIO)
- **toBackend:向后端发送取值目标的接口(FtqToCtrlIO)**
- toPrefetch:向Prefetch发送取值目标的接口(FtqToPrefetchIO)
- mmio
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/02_SubQueue.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/02_SubQueue.md
index bacce10..f54bd41 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/02_SubQueue.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/02_SubQueue.md
@@ -1,12 +1,12 @@
---
title: FTQ子队列
-linkTitle: FTQ子队列
+linkTitle: 02_FTQ子队列
weight: 12
---
-
-# FTQ子队列
## 文档概述
+***请注意:从本篇开始,就涉及待验证的功能点和测试点了***
+
在之前的介绍中,我们采用FTQ项这个术语描述描述FTQ队列中的每一个元素,实际上,这只是一种便于抽象的说法。
实际上的FTQ队列,是由好多个子队列共同构成的,一些子队列维护一类信息,另一些子队列维护另一类信息,相同ftqIdx索引的子队列信息共同构成一个完整的FTQ项。
@@ -16,9 +16,10 @@ weight: 12
下面来介绍一些FTQ的主要子队列,以及它们内部存储的数据结构。此外,FTQ还有一些存储中间状态的更小的队列
## 术语说明
-| 名称 | 定义 |
-| --- | --- |
-| 暂无 | 暂无 |
+| 名称 | 定义 |
+| -------------------------------------------------------- | ------------------------------------------------------ |
+| [FTB项](https://open-verify.cc/xs-bpu/docs/ports/00_ftb/) | 分支预测结果的基本组成项,包含对预测块中分支指令和跳转指令的预测 |
+| 取指目标 | 一个预测块内包含的所有指令PC,当然,它不是直接发送所有PC,而是发送部分信号,接收方可由该信号推出所有PC |
## 子模块列表
@@ -255,7 +256,7 @@ ftq_redirect_mem存储的表项。继承自SpeculativeInfo,存储RAS预测器
| 5\.2 | FTQ_META_1R_SRAM | READ | 向多端口中输入ren,raddr决定是否读以及读取地址,从rdata读取 |
## 附录
-***虽然列在附录,但实际上这段内容依然十分重要,请一定要查看。***
+***虽然列在附录,但实际上这段内容依然十分重要,当你需要的时候请一定要查看。***
### 其余状态子队列
上述存储结构是FTQ中比较核心的存储结构,实际上,还有一些子队列用来存储一些状态信息,也同样都是存储ftqsize个(64)元素。主要有以下:
@@ -265,6 +266,8 @@ update_target:记录每个FTQ项的跳转目标,跳转目标有两种,一
写入时机:上一个周期的bpu_in_fire有效的时候,或者说相对于bpu_in_fire有效时延迟一个周期写入。
+newest_entry_ptr,newest_entry_target:这几个内部信号,表明我们当前最新的有效FTQ项。BPU新的写入,重定向等等都会对最新FTQ项进行新的安排,在相应的文档中,对其生成方式做具体的描述。
+
cfiIndex_vec:记录每个FTQ项的发生跳转的指令cfi(control flow instruction)指令在其分支预测块中的位置
写入时机:相对于bpu_in_fire有效时延迟一个周期写入。
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/03_EnqFromBPU.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/03_EnqFromBPU.md
index 0bcb53a..2244741 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/03_EnqFromBPU.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/03_EnqFromBPU.md
@@ -1,11 +1,9 @@
---
title: FTQ接收BPU分支预测结果
-linkTitle: FTQ接收BPU分支预测结果
+linkTitle: 03_FTQ接收BPU分支预测结果
weight: 12
---
-# FTQ接收BPU分支预测结果
-
## 文档概述
BPU会将分支预测结果和meta数据发给FTQ。
@@ -22,7 +20,7 @@ BPU会将分支预测结果和meta数据发给FTQ。
| RAS (Return Address Stack) | 返回地址堆 |
| FTQ Entry | FTQ队列中的单个表项 |
-## 模块功能说明 。
+## 模块功能说明
### 1. 新的预测块进队条件
#### **1.1 成功接收数据**
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/04_ToIFU.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/04_ToIFU.md
index fb843bb..7228c16 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/04_ToIFU.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/04_ToIFU.md
@@ -1,12 +1,9 @@
---
title: FTQ向IFU发送取指目标
-linkTitle: FTQ向IFU发送取指目标
+linkTitle: 04_FTQ向IFU发送取指目标
weight: 12
---
-
-# FTQ向IFU发送取指目标
-
## 文档概述
IFU需要取FTQ中的项进行取指令操作,同时也会简单地对指令进行解析,并写回错误的指令
FTQ发送给IFU的信号同时也需发送给ICache一份,ICache是指令缓存,帮助快速读取指令。
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/05_WbFromIFU.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/05_WbFromIFU.md
index 1365d41..7f0c403 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/05_WbFromIFU.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/05_WbFromIFU.md
@@ -1,12 +1,9 @@
---
title: IFU向FTQ写回预译码信息
-linkTitle: IFU向FTQ写回预译码信息
+linkTitle: 05_IFU向FTQ写回预译码信息
weight: 12
---
-
-# IFU向FTQ写回预译码信息
-
## 文档概述
IFU获取来自BPU的预测信息之后,会执行预译码,并将FTQ项写回FTQ中去。我们会比对FTQ中原BPU预测项和预译码的结果,判断是否有预测错误
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/06_ RedirectFromBackend.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/06_ RedirectFromBackend.md
index 438a656..80c12f8 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/06_ RedirectFromBackend.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/06_ RedirectFromBackend.md
@@ -1,11 +1,9 @@
---
title: FTQ接收后端重定向
-linkTitle: FTQ接收后端重定向
+linkTitle: 06_FTQ接收后端重定向
weight: 12
---
-# FTQ接收后端重定向
-
## 文档概述
FTQ重定向信息有两个来源,分别是IFU 和 后端。两者的 重定向接口大致相似,但重定向的过程有一定区别。
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/07_RedirectFromIFU.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/07_RedirectFromIFU.md
index 5cb0645..422a6bf 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/07_RedirectFromIFU.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/07_RedirectFromIFU.md
@@ -1,12 +1,9 @@
---
title: FTQ接收IFU重定向
-linkTitle: FTQ接收IFU重定向
+linkTitle: 07_FTQ接收IFU重定向
weight: 12
---
-
-# FTQ接收IFU重定向
-
## 文档概述
除了后端,IFU也会发送重定向相关消息,和后端不同,IFU的重定向信息来自于预译码写回信息。相同的是,它们都是通过BranchPredictionRedirect的接口传递重定向信息。
## 术语说明
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/08_ToBackend.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/08_ToBackend.md
index dc753ee..f088e9f 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/08_ToBackend.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/08_ToBackend.md
@@ -1,12 +1,9 @@
---
title: FTQ向后端发送取指目标
-linkTitle: FTQ向后端发送取指目标
+linkTitle: 08_FTQ向后端发送取指目标
weight: 12
---
-
-# FTQ向后端发送取指目标
-
## 文档概述
pc取值目标会发给后端pc mem让他自己进行存储,之后从自己的pc mem取指,此外,最新的FTQ项和对应的跳转目标也会发给后端。
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/09_WbFromExu.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/09_WbFromExu.md
index 276a618..c470475 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/09_WbFromExu.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/09_WbFromExu.md
@@ -1,11 +1,9 @@
---
title: 执行单元修改FTQ状态队列
-linkTitle: 执行单元修改FTQ状态队列
+linkTitle: 09_执行单元修改FTQ状态队列
weight: 12
---
-# 执行单元修改FTQ状态队列
-
## 文档概述
后端的写回信息,包括重定向信息和更新信息,实际上都是执行之后,由实际执行单元根据结果发回的
## 术语说明
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/10_FlushPtrAndStateQueue.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/10_FlushPtrAndStateQueue.md
index 99dcc29..643dfc5 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/10_FlushPtrAndStateQueue.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/10_FlushPtrAndStateQueue.md
@@ -1,12 +1,9 @@
---
title: 冲刷指针和状态队列
-linkTitle: 冲刷指针和状态队列
+linkTitle: 10_冲刷指针和状态队列
weight: 12
---
-
-# 冲刷FTQ指针和状态队列
-
## 文档概述
之前讲了,后端和IFU重定向写回会修改一些状态队列。此外,FtqPtr也是一种比较重要的维护信息。由后端或者IFU引起的重定向,需要恢复各种类型用来索引FTQ项的FtqPtr。而当重定向是由后端发起的时候,还要修改提交状态队列,说明指令已经被执行。
## 术语说明
@@ -70,7 +67,7 @@ rob_commits的valid字段有效,可以根据其中信息对指令进行提交
| fromIfu | 接收IFU重定向 |
| icacheFlush | 将flush信号转发到icache |
| toIFU | 将后端重定向转发到IFU |
-所有顶层信号均在FTQ顶层IO一文中详述。
+
## 测试点总表
| 序号 | 功能名称 | 测试点名称 | 描述 |
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/11_ToBPU.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/11_ToBPU.md
index 2cc9afe..ad3f49d 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/11_ToBPU.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/11_ToBPU.md
@@ -1,12 +1,9 @@
---
title: FTQ向BPU发送更新与重定向信息
-linkTitle: FTQ向BPU发送更新与重定向信息
+linkTitle: 11_FTQ向BPU发送更新与重定向信息
weight: 12
---
-
-# FTQ向BPU发送更新与重定向信息
-
## 文档概述
FTQ将已提交指令的更新信息发往BPU进行训练,同时转发重定向信息。
diff --git a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/_index.md b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/_index.md
index caa0e46..8bfd251 100644
--- a/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/_index.md
+++ b/documents/content/zh-cn/docs/98_ut/01_frontend/03_ftq/_index.md
@@ -1,10 +1,10 @@
---
title: FTQ概述
-linkTitle: FTQ概述
+linkTitle: FTQ
weight: 12
---
-*下文(包括所有的FTQ文档)中会提到一些关于BPU和IFU的相关知识,详情需要去查看对应的文档: *
+下文(包括所有的FTQ文档)中会提到一些关于BPU和IFU的相关知识,详情需要去查看对应的文档:
- [BPU文档链接](https://open-verify.cc/xs-bpu/docs/)
- [IFU文档链接](https://open-verify.cc/UnityChipForXiangShan/docs/98_ut/01_frontend/01_ifu/)
@@ -67,7 +67,4 @@ FTQ的全名叫取值目标队列,队列中的一个项叫做FTQ项,BPU写
## 循环队列
FTQ队列实际上是一个循环队列,所有类型的FTQ指针都是同一类型,ftqPtr的value字段用来表示索引,flag字段则用来表示循环轮数,flag只有一位,进入新的循环时flag位翻转。
-这样,我们就可以在一个有限的队列空间内不断更新新的项,以及正确进行比较,判断哪个项在队列中更靠前。
-*在香山的代码中,设计了isAfter和isBefore的函数来比较指针大小,字面上的意思是指针在队列靠后还是在队列靠前的位置,但从取指令块来说*
-### 最新项
-有几个内部信号我想在这里提一下,newest_entry_ptr,newest_entry_target这几个内部信号,表明我们当前最新的有效FTQ项。BPU新的写入,重定向等等都会对最新FTQ项进行新的安排,在相应的文档中,对其生成方式做具体的描述。
\ No newline at end of file
+这样,我们就可以在一个有限的队列空间内不断更新新的项,以及正确进行比较,判断哪个项在队列中更靠前或者更靠后。
diff --git a/ut_frontend/itlb/classical_version/test_tlb_receive_request.py b/ut_frontend/itlb/classical_version/test_tlb_receive_request.py
index bee536b..bff4326 100644
--- a/ut_frontend/itlb/classical_version/test_tlb_receive_request.py
+++ b/ut_frontend/itlb/classical_version/test_tlb_receive_request.py
@@ -21,12 +21,12 @@ import inspect
# request to TLB. TLB is expected to return a miss in the next cycle and initiate
# a request to the PTW. At this point, you can simultaneously verify whether the
# vpn in the PTW request is correct.
-def test_req_from_icache_rand_vaddr_rand_valid_single_port(tlb_fixture):
+def test_req_from_ifu_and_icache_rand_vaddr_rand_valid_single_port(tlb_fixture):
"""
- Compare the PTW request with the reference:
- rand vaddr
- rand valid
- single port 0 / 1
+ Func: Compare the PTW request with the reference:
+ subfunc1: rand vaddr
+ subfunc2: rand valid
+ subfunc3: single port 0 / 1 / 2
"""
# connect to fixture
tlb = tlb_fixture
@@ -90,6 +90,7 @@ def test_req_from_icache_rand_vaddr_rand_valid_single_port(tlb_fixture):
######################################################################################
### CASE EXAMPLE
+# Running the following test case will show a pass:
def test_req_from_icache_rand_vaddr_rand_valid_muti_port(tlb_fixture):
"""
Func: compare the PTW request with the reference: