JAJAA48 October   2025 TDA4VM

 

  1.   1
  2.   概要
  3.   商標
  4. 1はじめに
  5. 2命令
    1. 2.1 範囲
    2. 2.2 HWA 命令定義
    3. 2.3 故障注入手順
      1. 2.3.1 ブロック図
      2. 2.3.2 故障注入:ステップ
        1. 2.3.2.1 アンダーフロー エラー
        2. 2.3.2.2 オーバーフロー エラー
        3. 2.3.2.3 オフセット パリティ エラー
        4. 2.3.2.4 設定パリティ エラー
          1. 2.3.2.4.1 FSM 構成パリティ エラー
          2. 2.3.2.4.2 B FSM 構成パリティ エラー
          3. 2.3.2.4.3 C FSM 構成パリティ エラー
          4. 2.3.2.4.4 X FSM 構成パリティエラー
        5. 2.3.2.5 C 読み取りエラー
        6. 2.3.2.6 C 書き込みエラー
  6. 3フロー図
    1. 3.1 コード変更
      1. 3.1.1 リターン フックの定義
      2. 3.1.2 MMA クリア関数
      3. 3.1.3 シーケンス テスト
  7. 4まとめ
  8. 5参考資料

オフセット パリティ エラー

オフセット パリティ エラーは、HWA_OFFSET レジスタでパリティの不一致が検出されたときに発生します。HWA_OFFSET パリティ エラーを注入するには、次の手順を実行します。

  1. HWAOPEN 命令を使用して、パリティ計算をイネーブルにし、パリティ チェックをイネーブルにした状態 (PARITYCTRL = NORMAL) に HWA_CONFIG と HWA_OFFSET を書き込みます。
  2. ベクトル レジスタの値は、テスト対象のフィールドのソフトウェアによって破損します。
  3. HWAOPEN 命令は再び使用され、パリティ計算を無効にし、パリティ チェックを有効 (PARITYCTRL = PNCMCK) に設定した状態で、その C7x ベクタ レジスタの破損データを使用して HWA_CONFIG および HWA_OFFSET に書き込みを行います。このモードでは、最初に計算された保存されたパリティ値が、影響を受けるレジスタで使用されて計算されたパリティと比較してチェックされます。
  4. HWAXFER を実行して、HWA_CONFIG/HWA_OFFSET などのコンテンツを転送し、バッファを転送します。
  5. HWARCV 命令が実行され、エラーが観測されます。

 __HWA_OFFSET_REG get_corrupted_offset(void)
{
__HWA_OFFSET_REG mma_offset_reg = __gen_HWA_OFFSET_REG();
mma_offset_reg.A_LUT_VAL_1 = 0x01;
return mma_offset_reg; //return the corrupted offset
}
#pragma FUNC_CANNOT_INLINE(offset_parity_test)
#pragma FUNCTION_OPTIONS(offset_parity_test,"--opt_level=0")
void offset_parity_test(void)
{

__HWA_CONFIG_REG_v1 mma_config_reg;
mma_config_reg = __gen_HWA_CONFIG_REG_v1();
mma_config_reg.A_ALUTEN = __MMA_A_CONFIG_LUT2;
mma_config_reg.PARITYCTRL = __MMA_NORMAL;
__HWA_OFFSET_REG offset_reg;
offset_reg = __gen_HWA_OFFSET_REG();
__HWAOPEN(mma_config_reg,offset_reg,__MMA_OPEN_FSM_RESET);
__HWAADV();
__HWAADV();
__HWAADV();
__HWAADV();
__HWA_CONFIG_REG_v1 mma_config_1;
mma_config_1 = __gen_HWA_CONFIG_REG_v1();
mma_config_1.A_ALUTEN = __MMA_A_CONFIG_LUT2;
//Parity computation disabled and parity checking enabled.
mma_config_1.PARITYCTRL = __MMA_PNCM_CK;
__HWA_OFFSET_REG offset_reg2 = get_corrupted_offset(); //This gets the corrupted offset
__HWAADV();
__HWAADV();
__HWAADV();
__HWAADV();
__HWAOPEN(mma_config_1,offset_reg2,__MMA_OPEN_FSM_RESET);
__HWAADV();
__HWAADV();
__HWAADV();
__HWAADV();
__HWAXFER(__MMA_XFER_SRC_HWA_OFFSET);
__HWAADV();
__HWAADV();
__HWAADV();
__HWARCV(0);
__asm(" NOP");
__asm(" NOP");


}