[axi_sram] capability tags are dropped on bursts longer than two beats

オープン
#780 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
55/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
領域
backend

調査の方向性

Read doc/ref/arch.md requirements kn6exz, 8rlwol, and 35vdeg, then inspect is_r_cap_sized and is_w_cap_sized in axi_to_detailed_mem.sv. Run the two provided dvsim reproductions to confirm the read and write failures. Done means longer bursts preserve the expected per-region tags on reads and writes, with the existing specification behavior clarified if needed.

索引モデルが issue の本文から書いたものです。

説明

The SRAM only handles capability tags on 2-beat transfers. Bursts that cover several 128-bit regions lose the tags on both reads and writes.

Reads: doc/ref/arch.md's kn6exz requires a burst read to return "the appropriate CHERI tags set for each address" and allows "a mixture of capability and non-capability data" in a burst. A 4-beat read over a tagged region followed by an untagged one should return tags 1, 1, 0, 0. The RTL returns 0, 0, 0, 0, because it only reports a tag on 2-beat reads (is_r_cap_sized in axi_to_detailed_mem.sv).

Writes: 8rlwol and 35vdeg allow a tag to be set by writing a full 128-bit aligned region as part of a single burst. A longer burst that fully writes several regions with the tag bit set should therefore tag each of them. The RTL sets no tags, because it only accepts 2-beat writes as capability writes (is_w_cap_sized).

To reproduce the read case:

dvsim hw/top_chip/dv/axi_sram/block_tb/axi_sram_block_sim_cfg.hjson -i axi_sram_burst_read_mixed_tags

To reproduce the write case:

dvsim hw/top_chip/dv/axi_sram/block_tb/axi_sram_block_sim_cfg.hjson -i axi_sram_burst_write_tags

If the intent is that only 2-beat transfers carry tags, we should update the spec to state this.

主要言語
SystemVerilog
スター
45
フォーク
22
平均マージ
2日 4時間
マージ済み PR(30日)
9

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

lowRISC/mocha のほかの issue

lowRISC/mocha の issue をすべて見る

似ている issue

Backend & API Design の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。