forked from XS-MLVP/UnityChipForXiangShan
limit the table css to ifu verify documents only
This commit is contained in:
parent
187577e01d
commit
ea10ef89e5
|
|
@ -4,17 +4,19 @@ Add styles or override variables from the theme here.
|
|||
|
||||
*/
|
||||
|
||||
table {
|
||||
// these csses are for ifu verify docs
|
||||
|
||||
.ifu-ctx table {
|
||||
width: 100% !important;
|
||||
border-collapse: collapse !important; /* 合并边框,消除边框间隙 */
|
||||
// border-collapse: collapse; /* 合并边框,消除边框间隙 */
|
||||
}
|
||||
|
||||
th, td {
|
||||
.ifu-ctx th, .ifu-ctx td {
|
||||
border: 1px solid #000 !important; /* 确保所有单元格都有边框 */
|
||||
padding: 12px !important; /* 设置内边距 */
|
||||
text-align: left !important ; /* 文本左对齐,可根据需求更改 */
|
||||
// padding: 12px !important; /* 设置内边距 */
|
||||
text-align: left ; /* 文本左对齐,可根据需求更改 */
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: bold !important; /* 加粗表头文本 */
|
||||
.ifu-ctx th {
|
||||
font-weight: bold; /* 加粗表头文本 */
|
||||
}
|
||||
|
|
@ -4,6 +4,8 @@ linkTitle: PreDecode
|
|||
weight: 12
|
||||
---
|
||||
|
||||
<div class="ifu-ctx">
|
||||
|
||||
# 子模块:PreDecoder简介
|
||||
|
||||
预译码器PreDeocoder接受初始指令码并进行指令码拼接,拼接之后对每个指令码查询预译码表产生预译码信息,预译码信息包括该位置是否是有效指令开始、CFI指令类型、是否是RVC指令、是否是Call指令以及是否是Ret指令。预译码器会产生两种有效指令开始的向量,一种是默认第1个二字节必为有效指令开始,另一种是默认第2个二字节必为有效指令的开始,最终的选择在IFU端做。
|
||||
|
|
@ -59,7 +61,21 @@ instr(12) + instr(10, 9) + instr(6) + instr(7) + instr(2) + instr(11) +instr(5,3
|
|||
|
||||
## PreDecoder测试点和功能点
|
||||
|
||||
### 功能点1 生成指令码
|
||||
### 功能点1 生成指令码eDecode
|
||||
子模块:PreDecoder简介
|
||||
|
||||
预译码器PreDeocoder接受初始指令码并进行指令码拼接,拼接之后对每个指令码查询预译码表产生预译码信息,预译码信息包括该位置是否是有效指令开始、CFI指令类型、是否是RVC指令、是否是Call指令以及是否是Ret指令。预译码器会产生两种有效指令开始的向量,一种是默认第1个二字节必为有效指令开始,另一种是默认第2个二字节必为有效指令的开始,最终的选择在IFU端做。
|
||||
|
||||
所以,预译码器接收的输入是: 17 x 2B的初始指令码,这个2字节的初始指令码要么是一条RVC指令,要么是一条RVI指令的前半或后半部分。
|
||||
|
||||
预译码器的输出是:16x4B的拼接指令码;对每个4B指令码,该条指令是否为RVI或RVC指令(RVC指令只考虑该4B的低2B);对每个4B指令码,该条指令的跳转偏移;两个16位的有效指令开始向量,其中第一种向量假定当前预测块的起始2字节为一条有效指令的开始,而第二种向量假定当前预测块的起始2字节为一条有效RVI指令的结束(但是由于第二种向量的前两位必然为0和1,所以编译优化后,第二种向量实际只有14个信号,表示2-15位;同理,第1种向量的第0位因为恒为1,所以也被优化)
|
||||
功能介绍
|
||||
指令码生成
|
||||
|
||||
预译码器接受来自IFU完成指令切分的17 × 2字节的初始指令码,并以4字节为窗口,2字节为步进长度, 从第1个2字节开始,直到第16个2字节,选出总共16个4字节的指令码。
|
||||
预译码信息生成
|
||||
|
||||
预译码器根据指令码产生预译码信息,主要包括:是否是RVC指令、是否是CFI指令、 CFI指令类型(branch/jal/jalr/call/ret)、CFI指令的目标地址计算偏移。
|
||||
|
||||
预译码器从IFU接收完成指令切分的17 x 2 字节的初始指令码,以4字节为窗口,2字节为步进长度,选出16 x 4字节的指令码
|
||||
|
||||
|
|
@ -106,4 +122,6 @@ CFI类型的判定则时序优化到了F3PreDecoder中。
|
|||
| 2\.2\.1| 跳转目标计算 | RVC\.J计算 | 对传入RVC扩展的J指令,检查计算的偏移 |
|
||||
| 2\.2\.2| 跳转目标计算 | RVI\.J计算 | 对传入RVI扩展的J指令,检查计算的偏移 |
|
||||
| 2\.2\.3| 跳转目标计算 | RVC\.BR计算 | 对传入RVC扩展的BR指令,检查计算的偏移 |
|
||||
| 2\.2\.4| 跳转目标计算 | RVI\.BR计算 | 对传入RVI扩展的BR指令,检查计算的偏移 |
|
||||
| 2\.2\.4| 跳转目标计算 | RVI\.BR计算 | 对传入RVI扩展的BR指令,检查计算的偏移 |
|
||||
|
||||
</div>
|
||||
|
|
@ -4,6 +4,8 @@ linkTitle: F3PreDecoder
|
|||
weight: 12
|
||||
---
|
||||
|
||||
<div class="ifu-ctx">
|
||||
|
||||
# 子模块:F3PreDecoder模块简介
|
||||
|
||||
这个模块是从PreDecoder中时序优化出来的,负责判定CFI指令的类型
|
||||
|
|
@ -68,4 +70,6 @@ weight: 12
|
|||
| 2\.2\.2 | ret、call判定 | RVI\.JAL不判定 | 对传入的RVI\.JAL指令,无论什么情况都不能判定为call或ret |
|
||||
| 2\.3 | ret、call判定 | JALR和rd为link | 传入JALR指令,并且rd为1或5,无论其他取值,都应判定为call |
|
||||
| 2\.3 | ret、call判定 | JALR且仅rs为link | 传入JALR指令,rd不为1和5,rs为1或5,应判定为ret |
|
||||
| 2\.3 | ret、call判定 | JALR无link | 对传入的JALR指令,若rd和rs均不为link,则不应判定为ret和call |
|
||||
| 2\.3 | ret、call判定 | JALR无link | 对传入的JALR指令,若rd和rs均不为link,则不应判定为ret和call |
|
||||
|
||||
</div>
|
||||
|
|
@ -4,6 +4,8 @@ linkTitle: RVCExpander
|
|||
weight: 12
|
||||
---
|
||||
|
||||
<div class="ifu-ctx">
|
||||
|
||||
# 子模块:RVCExpander简介
|
||||
|
||||
RVCExpander是IFU的子模块,负责对传入的指令进行指令扩展,并解码计算非法信息。
|
||||
|
|
@ -584,4 +586,6 @@ RVI的SW格式形如:\| imm[11:5]\| rs2 \| rs1 \| 010 \| imm[4:0] \| 0100011 \
|
|||
|
||||
该指令最终扩展成为**sd rd, offset(x2)**
|
||||
|
||||
RVI的SD格式形如:\| imm[11:5]\| rs2 \| rs1 \| 011 \| imm[4:0] \| 0100111 \|
|
||||
RVI的SD格式形如:\| imm[11:5]\| rs2 \| rs1 \| 011 \| imm[4:0] \| 0100111 \|
|
||||
|
||||
</div>
|
||||
|
|
@ -4,6 +4,8 @@ linkTitle: PredChecker
|
|||
weight: 12
|
||||
---
|
||||
|
||||
<div class="ifu-ctx">
|
||||
|
||||
# 子模块:PredChecker简介
|
||||
|
||||
分支预测检查器PredChecker接收来自IFU的预测块信息(包括预测跳转指令在预测块的位置、预测的跳转目标、预译码得到的指令信息、指令PC以及预译码得到的跳转目标偏移等),在模块内部检查五种类型的分支预测错误。模块内部分为两个流水线stage,分别输出信息,第一个stage输出给f3阶段,用于修正预测块的指令范围和预测结果。第二个stage输出给wb阶段,用于在发现分支预测错误时产生前端重定向以及写回给FTQ正确的预测信息。
|
||||
|
|
@ -172,3 +174,4 @@ PredChecker还需要负责生成跳转和顺序目标。
|
|||
| 6\.2 | 目标地址预测错误检查 | 正确检测测试 | 构造存在有效跳转指令的预测块和预测跳转但跳转目标计算错误的预测信息作为输入,测试PredChecker能否检出目标地址预测错误 |
|
||||
| 7\.1 | 生成跳转和顺序目标 | 随机测试 | 随机提供译码信息,检测生成的跳转目标和顺序目标。 |
|
||||
|
||||
</div>
|
||||
|
|
@ -4,6 +4,8 @@ linkTitle: FrontendTrigger
|
|||
weight: 12
|
||||
---
|
||||
|
||||
<div class="ifu-ctx">
|
||||
|
||||
# FrontendTrigger子模块
|
||||
该子模块的主要作用是在前端设置硬件断点和检查。
|
||||
|
||||
|
|
@ -73,3 +75,5 @@ select位为0时,当PC和tdata2的数据的关系不满足tdata2的match位时
|
|||
| 2\.2 | 链式断点 | timing测试 | 对两个trigger,仅设置前一个trigger的chain位,且两trigger的timing位不同,随机设置PC等,测试后一个trigger是否一定不触发 |
|
||||
| 2\.3\.1 | 链式断点 | 未命中测试 | 对两个trigger,仅设置前一个trigger的chain位,且两trigger的timing位相同,设置后一个trigger命中而前一个未命中,检查后一个trigger是否一定不触发 |
|
||||
| 2\.3\.2 | 链式断点 | 命中测试 | 对两个trigger,仅设置前一个trigger的chain位,且两trigger的timing位相同且均命中,检查后一个trigger是否触发 |
|
||||
|
||||
</div>
|
||||
Loading…
Reference in New Issue