limit the table css to ifu verify documents only

This commit is contained in:
cjh 2024-12-20 14:07:14 +08:00
parent 187577e01d
commit ea10ef89e5
6 changed files with 46 additions and 11 deletions

View File

@ -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; /* 加粗表头文本 */
}

View File

@ -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>

View File

@ -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和5rs为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>

View File

@ -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>

View File

@ -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>

View File

@ -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>