UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Participant grey@warden
Participant
232 次查看
注册日期: ‎04-18-2017

Xilinx 软错误缓解 SEM IP内部工作机理

XIlinx 的工程师们你们好,我是以一名学生,关于sem ip 我也有一些问题想要向您咨询一下,主要是sem ip的工作机理问题。写的比较长,不好意思哈

我根据pg036文档定制了一个sem ip,并生成了一个example design,并成功的运行了。我查看example design的代码,sem_0_sem_cfg下有两个原语,分别是ICAPE2和FRAME_ECCE2。sem_0_sem_cfg模块如下:


`timescale 1 ps / 1 ps

/////////////////////////////////////////////////////////////////////////////
// Module
/////////////////////////////////////////////////////////////////////////////

module sem_0_sem_cfg (
input wire icap_clk,
output wire [31:0] icap_o,
input wire icap_csib,
input wire icap_rdwrb,
input wire [31:0] icap_i,
output wire fecc_crcerr,
output wire fecc_eccerr,
output wire fecc_eccerrsingle,
output wire fecc_syndromevalid,
output wire [12:0] fecc_syndrome,
output wire [25:0] fecc_far,
output wire [4:0] fecc_synbit,
output wire [6:0] fecc_synword
);

///////////////////////////////////////////////////////////////////////////
// Define local constants.
///////////////////////////////////////////////////////////////////////////

localparam TCQ = 1;

///////////////////////////////////////////////////////////////////////////
// Declare signals.
///////////////////////////////////////////////////////////////////////////

// None

///////////////////////////////////////////////////////////////////////////
// Instantiate the FRAME_ECC primitive.
///////////////////////////////////////////////////////////////////////////

FRAME_ECCE2 #(
.FRAME_RBT_IN_FILENAME("NONE"),
.FARSRC("EFAR")
)
example_frame_ecc (
.CRCERROR(fecc_crcerr),
.ECCERROR(fecc_eccerr),
.ECCERRORSINGLE(fecc_eccerrsingle),
.FAR(fecc_far),
.SYNBIT(fecc_synbit),
.SYNDROME(fecc_syndrome),
.SYNDROMEVALID(fecc_syndromevalid),
.SYNWORD(fecc_synword)
);

///////////////////////////////////////////////////////////////////////////
// Instantiate the ICAP primitive.
///////////////////////////////////////////////////////////////////////////

ICAPE2 #(
.DEVICE_ID(32'hFFFFFFFF),
.SIM_CFG_FILE_NAME("NONE"),
.ICAP_WIDTH("X32")
)
example_icap (
.O(icap_o),
.CLK(icap_clk),
.CSIB(icap_csib),
.I(icap_i),
.RDWRB(icap_rdwrb)
);

///////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////

endmodule

 

关于ICAPE2我知道这是一个内部配置访问接口,可以用来实现部分重配置和读取配置寄存器内部状态。而FRAME_ECCE2我了解到的是这是一个用来检测和纠错的原语。

下面是我的一些问题:

1、sem ip是如何实现故障注入的呢?我的理解是这样的,首先通过串口输入一个故障注入指令,如 :N C000000000,sem 控制器接收到这个指令后对这个指令进行解码,将线性帧地址转换成物理帧地址,并计算出需要注入的字的位置和位的位置。然后通过ICAP接口读回相应的配置帧数据,缓存起来,然后再根据字位置和位位置改写相应的bit位。最后再通过ICAP接口将修改后的配置帧数据写到配置寄存器中。

2、FRAME_ECCE2这个原语所有的端口都是输出的,它是如何检测和纠错的呢?我的理解是这样的,首先通过ICAP接口读出一帧配置数据,然后输入到FRAME_ECCE2原语中进行检测,如果检测到错误的话先进行故障修复,再通过ICAP接口把修复后的配置帧数据写回配置寄存器。

 

 

为了验证我的猜想,我用ila抓取了example design 设计的ICAP信号和FRAME_ECCE2信号。

首先我先发送故障指令:N C00000000A,通过ila抓取了ICAP信号。

faaf5cd2cd7a2ffa203c8810a60ec52.png

 

可以看到icap_csib片选信号只拉低了5个周期然后就拉高了,并且在icap_csib拉低期间icap_rdwrb都是位0,说明

在此期间都是向ICAP接口写数据,之后icap_csib就一直拉高了。并且我产看了往icap_i写的指令,并不是读FDRO和写FDRI寄存器的指令。说明实际上sem ip 故障注入并不是一个读-》修改-》写 的过程。我的理解应该是错的。

 

 

然后我也抓了FRAME_ECCE2的信号,对FRAME_ECCE2的信号我没有太多的关心。

 

期待您的回复!

祝您身体健康,工作顺利!

8dacd84455c783ba6315f2eced31b49.png

0 项奖励
5 条回复5
Xilinx Employee
Xilinx Employee
185 次查看
注册日期: ‎08-10-2008

回复: Xilinx 软错误缓解 SEM IP内部工作机理

1. 正确。

2. 错误检测不是通过icap进行的,后台操作,所以你抓不到相关信号。但是你对插错过程理解正确。

------------------------------------------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
---------------------------------------------------------------------------------------------------------
0 项奖励
Community Manager
Community Manager
182 次查看
注册日期: ‎08-30-2011

回复: Xilinx 软错误缓解 SEM IP内部工作机理

Hi

我觉得你的理解应该是正确的,不过我也没有具体看过icap的操作内容。

你看到inject error命令发出以后,icap上的写操作具体是写了什么内容么?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Participant grey@warden
Participant
136 次查看
注册日期: ‎04-18-2017

回复: Xilinx 软错误缓解 SEM IP内部工作机理

哇,发现你们好热情啊。之前在英文版的论坛里面发帖过来了好久个月才有人回复我,相比之下感觉你们好热情啊。谢谢你们!

 

1、针对SEM IP的插错,我昨天用ila抓取了相关信号,就像您说的一样,我的猜想是正确的。但是sem ip的回读命令序列和ug470中给出的不太一样,并且回读命令不是连续给的,这点我有点疑惑。

2、针对sem ip的故障修复功能,我看了Xilinx给出的关于FREAME_ECC的AR后,我大概明白了是如何检错和纠错的了。也像您说的一样,检错是由FRAME_ECC来检测错误的。而故障修复还是通过将修正以后的帧数据写回配置存储器。

 

但是好奇心挡不住啊,我对线性帧地址和物理帧地址的之间的关系如何转换很感兴趣!虽然我可以用暴力的方法得到线性帧地址和物理帧地址之间一一对应的关系。但是如果没有一个数学转换关系的话,难道是将对应的物理帧地址存在一个RAM中,然后用线性帧地址作为地址来实现他们之间的对应关系吗?

 

还有我发现了Vivado可以生成一个.ll文件,这个文件好像和线性帧地址有点关系,但是我目前还没能找到是什么关系,请问您对此次有什么了解吗?

 

最后祝您工作顺利,身体健康!

0 项奖励
Participant grey@warden
Participant
133 次查看
注册日期: ‎04-18-2017

回复: Xilinx 软错误缓解 SEM IP内部工作机理

谢谢您的回答!

嗯,昨天仔细核对了,就是配置回读和重写的指令。

0 项奖励
Participant grey@warden
Participant
111 次查看
注册日期: ‎04-18-2017

回复: Xilinx 软错误缓解 SEM IP内部工作机理

我可能需要推翻我上一条说法了。我injector error之后,查看了在icap_csib和ic_rdwrb同时为0时,icap_i上的命令,该命令序列如下:

1.png2.png3.png4.png5.png8.png9.png

我把局部放大对应的icap_i上的数据位取反后列在下面:

局部放大1:

20000000

AA995566

20000000

20000000

 

局部放大2:

20000000

30008001

00000000

20000000

20000000

 

局部放大3:

20000000

3000C001

00000001

20000000

20000000

 

局部放大4:

20000000

3000A001

00000001

20000000

20000000

 

局部放大5:

20000000

30008001

0000000D

20000000

20000000

 

之后icap_csib和icap_rdwrb就是一直拉高了,在这期间icap_csib拉低不过24个周期,根本就不可能把一整帧回读回来再改写,然后再写回去。这就让我很疑惑了,既然不是再用回读-》修改-》重写的方式进行故障注入还能用什么方式呢?

 

但是,我在输入指令“O”时进行故障注修复时,可以看到抓到信号,看到确实是先回读-》修在-》重写的过程。那故障注入的机制是什么呢?

0 项奖励