Skip to content

Commit

Permalink
Merged PR 117214: Datavault/FLOW_STATUS register updates, JTAG access…
Browse files Browse the repository at this point in the history
… fix

Includes:

Data vault register reset and naming updates
idevid_csr_ready bit in FLOW_STATUS reg
Clock gating fix for JTAG accesses

Related work items: #514552, #516969, #517437
  • Loading branch information
upadhyayulakiran authored and Anjana Parthasarathy committed Jul 26, 2023
1 parent aa1ad6e commit 737b798
Show file tree
Hide file tree
Showing 24 changed files with 985 additions and 895 deletions.
12 changes: 6 additions & 6 deletions src/datavault/rtl/dv.sv
Original file line number Diff line number Diff line change
Expand Up @@ -104,17 +104,17 @@ always_comb begin: datavault
end

//Non-Sticky Data Vault Regs & Controls
for (int entry = 0; entry < NONSTICKY_DV_NUM_ENTRIES; entry++) begin
dv_reg_hwif_in.NonStickyDataVaultCtrl[entry].lock_entry.swwel = dv_reg_hwif_out.NonStickyDataVaultCtrl[entry].lock_entry.value;
for (int entry = 0; entry < DV_NUM_ENTRIES; entry++) begin
dv_reg_hwif_in.DataVaultCtrl[entry].lock_entry.swwel = dv_reg_hwif_out.DataVaultCtrl[entry].lock_entry.value;
for (int dword = 0; dword < DV_NUM_DWORDS; dword++) begin
dv_reg_hwif_in.NONSTICKY_DATA_VAULT_ENTRY[entry][dword].data.swwel = dv_reg_hwif_out.NonStickyDataVaultCtrl[entry].lock_entry.value;
dv_reg_hwif_in.DATA_VAULT_ENTRY[entry][dword].data.swwel = dv_reg_hwif_out.DataVaultCtrl[entry].lock_entry.value;
end
end

//Non-Sticky Generic Lockable Registers in the Data Vault
for (int entry = 0; entry < NONSTICKY_LOCK_SCRATCH_NUM_ENTRIES; entry++) begin
dv_reg_hwif_in.NonStickyLockableScratchRegCtrl[entry].lock_entry.swwel = dv_reg_hwif_out.NonStickyLockableScratchRegCtrl[entry].lock_entry.value;
dv_reg_hwif_in.NonStickyLockableScratchReg[entry].data.swwel = dv_reg_hwif_out.NonStickyLockableScratchRegCtrl[entry].lock_entry.value;
for (int entry = 0; entry < LOCK_SCRATCH_NUM_ENTRIES; entry++) begin
dv_reg_hwif_in.LockableScratchRegCtrl[entry].lock_entry.swwel = dv_reg_hwif_out.LockableScratchRegCtrl[entry].lock_entry.value;
dv_reg_hwif_in.LockableScratchReg[entry].data.swwel = dv_reg_hwif_out.LockableScratchRegCtrl[entry].lock_entry.value;
end

//Sticky Generic Lockable Registers in the Data Vault
Expand Down
4 changes: 2 additions & 2 deletions src/datavault/rtl/dv_defines_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ package dv_defines_pkg;
parameter DV_DATA_W = 32;

parameter STICKY_DV_NUM_ENTRIES = 10;
parameter NONSTICKY_DV_NUM_ENTRIES = 10;
parameter NONSTICKY_LOCK_SCRATCH_NUM_ENTRIES = 10;
parameter DV_NUM_ENTRIES = 10;
parameter LOCK_SCRATCH_NUM_ENTRIES = 10;
parameter STICKY_LOCK_SCRATCH_NUM_ENTRIES = 8;
parameter NONSTICKY_SCRATCH_NUM_ENTRIES = 8;
parameter DV_NUM_DWORDS = 12;
Expand Down
36 changes: 19 additions & 17 deletions src/datavault/rtl/dv_reg.rdl
Original file line number Diff line number Diff line change
Expand Up @@ -19,51 +19,53 @@ addrmap dv_reg {
signal {activelow; async;} hard_reset_b;

// Sticky DataVault registers
field StickyDataVaultEntry {desc="DataVault Entry"; sw=rw; hw=na; swwel=true; resetsignal = hard_reset_b;};
field StickyDataVaultEntry {desc="DataVault Entry (cleared on hard reset)"; sw=rw; hw=na; swwel=true; resetsignal = hard_reset_b;};
reg StickyDataVaultReg {StickyDataVaultEntry data[32]=0;}; //generic reg for DataVault

// NonSticky DataVault registers (reset on warm reset)
field NonStickyDataVaultEntry {desc="DataVault Entry"; sw=rw; hw=na; swwel=true; resetsignal = reset_b;};
reg NonStickyDataVaultReg {NonStickyDataVaultEntry data[32]=0;}; //generic reg for DataVault
// Sticky DataVault registers (reset on hard reset)
field DataVaultEntry {desc="DataVault Entry (cleared on hard reset)"; sw=rw; hw=na; swwel=true; resetsignal = hard_reset_b;};
reg DataVaultReg {DataVaultEntry data[32]=0;}; //generic reg for DataVault

// ============== Data Vault Registers ===========================
reg {
desc="Controls for the Sticky Data Vault Entries";
desc="Controls for the Sticky Data Vault Entries (cleared on hard reset)";
field {desc="Lock writes to this entry. Writes will be suppressed when locked.";
sw=rw; swwel=true; hw=r; resetsignal=hard_reset_b;} lock_entry=0; //Shoud reflect NONSTICKY_DV_NUM_ENTRIES from kv_defines_pkg.sv
sw=rw; swwel=true; hw=r; resetsignal=hard_reset_b;} lock_entry=0; //Shoud reflect STICKY_DV_NUM_ENTRIES from dv_defines_pkg.sv
} StickyDataVaultCtrl[10];

StickyDataVaultReg STICKY_DATA_VAULT_ENTRY[10][12];//Shoud reflect STICKY_DV_NUM_ENTRIES and DV_NUM_DWORDS from kv_defines_pkg.sv
StickyDataVaultReg STICKY_DATA_VAULT_ENTRY[10][12];//Shoud reflect STICKY_DV_NUM_ENTRIES and DV_NUM_DWORDS from dv_defines_pkg.sv

reg {
desc="Controls for the Non-Sticky Data Vault Entries";
desc="Controls for the Data Vault Entries (cleared on warm reset)";
field {desc="Lock writes to this entry. Writes will be suppressed when locked.";
sw=rw; swwel=true; hw=r; resetsignal=core_only_rst_b;} lock_entry=0; //Shoud reflect STICKY_DV_NUM_ENTRIES and DV_NUM_DWORDS from kv_defines_pkg.sv
} NonStickyDataVaultCtrl[10];// CAREFUL with the address extensions
sw=rw; swwel=true; hw=r; resetsignal=core_only_rst_b;} lock_entry=0; //Shoud reflect DV_NUM_ENTRIES and DV_NUM_DWORDS from dv_defines_pkg.sv
} DataVaultCtrl[10];// CAREFUL with the address extensions

NonStickyDataVaultReg NONSTICKY_DATA_VAULT_ENTRY[10][12];//Shoud reflect NONSTICKY_DV_NUM_ENTRIES and DV_NUM_DWORDS from kv_defines_pkg.sv
DataVaultReg DATA_VAULT_ENTRY[10][12];//Shoud reflect DV_NUM_ENTRIES and DV_NUM_DWORDS from dv_defines_pkg.sv

reg {
desc="Non-Sticky Scratch Register Controls";
desc="Scratch Register Controls (cleared on warm reset)";
field {desc="Lock writes to the Scratch registers. Writes will be suppressed when locked.";
sw=rw; swwel=true; hw=r; resetsignal=core_only_rst_b;} lock_entry=0;
} NonStickyLockableScratchRegCtrl[10]; //Shoud reflect NONSTICKY_SCRATCH_NUM_ENTRIES from kv_defines_pkg.sv & CAREFUL with the address extensions
} LockableScratchRegCtrl[10]; //Shoud reflect LOCK_SCRATCH_NUM_ENTRIES from dv_defines_pkg.sv & CAREFUL with the address extensions

reg {
field {sw=rw; swwel=true; hw=na; resetsignal=reset_b;} data[32]=0;
} NonStickyLockableScratchReg[10]; //Shoud reflect NONSTICKY_LOCKQ_SCRATCH_NUM_ENTRIES from kv_defines_pkg.sv
desc="Scratch Register Entrie (cleared on hard reset)";
field {sw=rw; swwel=true; hw=na; resetsignal=hard_reset_b;} data[32]=0;
} LockableScratchReg[10]; //Shoud reflect LOCK_SCRATCH_NUM_ENTRIES from dv_defines_pkg.sv

reg {
field {sw=rw; hw=na; resetsignal=reset_b;} data[32]=0;
} NonStickyGenericScratchReg[8]; //Shoud reflect NONSTICKY_SCRATCH_NUM_ENTRIES from kv_defines_pkg.sv & CAREFUL with the address extensions
} NonStickyGenericScratchReg[8]; //Shoud reflect NONSTICKY_SCRATCH_NUM_ENTRIES from dv_defines_pkg.sv & CAREFUL with the address extensions

reg {
desc="Sticky Scratch Register Controls";
desc="Sticky Scratch Register Controls (cleared on hard reset)";
field {desc="Lock writes to the Scratch registers. Writes will be suppressed when locked.";
sw=rw; swwel=true; hw=r; resetsignal=hard_reset_b;} lock_entry=0;
} StickyLockableScratchRegCtrl[8]; //should reflect STICKY_LOCKQ_SCRATCH_NUM_ENTRIES

reg {
desc="Sticky Scratch Register Entries (cleared on hard reset)";
field {sw=rw; swwel=true; hw=na; resetsignal=hard_reset_b;} data[32]=0;
} StickyLockableScratchReg[8]; //should reflect STICKY_LOCKQ_SCRATCH_NUM_ENTRIES

Expand Down
Loading

0 comments on commit 737b798

Please sign in to comment.