
4/29/2020
Loongson 3A3000 / 3B3000 Processor User Manual
49
56
The self-loop test mode can be used in test mode or normal function mode, for this reason, the memory controller
Two sets of independent control interfaces are realized respectively, one set is used for direct control by the test port in the test mode, and the other set is used for
In the normal function mode, the configuration enabling test is performed by the register configuration module.
The multiplexing of these two sets of interfaces is controlled by the port test_phy. When test_phy is valid, the controller ’s
The test_ * port is controlled, and the self-test at this time is completely controlled by the hardware; when test_phy is invalid, use software programming
The parameters of pm_ * are controlled. The specific signal meaning of using the test port can refer to the part of the same name in the register parameters.
The two sets of interfaces are basically the same in terms of control parameters, only the access points are different. Here we introduce the
制
方法。
Manufacturing methods. The specific operations are as follows:
(1)
Set all the parameters of the memory controller correctly;
(2) Set the register Lpbk_en (0x270) to 1;
(3) Set the register Init_start (0x018) to 1;
(4) The sampling register Dll_init_done (0x000), if this value is 1, it means that the DLL is locked and can
Proceed to the next operation; if this value is 0, you need to continue to wait; (when using the test port for control
When you do n’t see the output of this register, you do n’t need to sample this register, but only need to
Page 61
Godson 3A3000 / 3B3000 Processor User Manual • Volume 1
Wait here for a certain period of time to ensure that the DLL is locked, and then proceed to the next step);
(5) Set the register Lpbk_start (0x270) to 1; at this time, the self-loop test is officially started.
So far, since the loop test has started, the software needs to constantly check whether there is an error. The specific operations are as follows:
(6) Sampling register Lpbk_error (0x270), if this value is 1, it means there is an error, at this time you can pass
Observe the first error through Lpbk_ * and other observation registers (0x270, 0x278, 0x280, 0x288)
Incorrect data and correct data; if this value is 0, it means that no data error has occurred.
9.5.7
ECC function usage control
The ECC function is only available in 64-bit mode.
Ecc_enable includes the following 4 control bits:
Ecc_enable [0] controls whether the ECC function is enabled. Only when this valid bit is set, the ECC function will be enabled.
Ecc_enable [1] controls whether an error is reported through the read response path inside the processor, so that two ECC bits appear
Wrong read access can immediately lead to abnormal processor cores.
Ecc_enable [2] controls whether an error is reported through the write response path inside the processor, so that two ECC bits appear
Wrong write access (write after read) can immediately cause an exception to the processor core.
Ecc_enable [3] controls the trigger timing of recording error information in the register. These error messages are performed without software
In the case of processing, it will not be triggered continuously, and only the information of the first error will be recorded. This information includes Ecc_code,
Ecc_addr, Ecc_data. When Ecc_enable [3] is 0, as long as an ECC error occurs (including 1 bit error
And 2 bit error), this record will be triggered, when Ecc_enable [3] is 1, only ECC two bits appear
Wrong, this record will be triggered. And this "first time" refers to that the corresponding bit of the interrupt vector register is set. Just
That is, the access that caused the interruption was recorded.
In addition, ECC errors can also be notified to the processor core through interrupts. This interrupt is entered via Int_enable
行
控制。
Line control. The interrupt includes two vectors, Int_vector [0] indicates that an ECC error (including 1 bit error and 2 bit error) occurs,
Int_vecotr [1] indicates that two ECC errors have occurred. Int_vector is cleared by writing 1 to the corresponding bit.