mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-08 22:28:01 -05:00
feat(hpu): Soft Reset Support and fix some runtime registers
This commit is contained in:
committed by
Pierre Gardrat
parent
3b48ef301e
commit
a83c92f28f
@@ -49,3 +49,15 @@ offset= 0x10
|
||||
read_access="Read"
|
||||
write_access="Write"
|
||||
duplicate=["_pc0_lsb", "_pc0_msb", "_pc1_lsb", "_pc1_msb", "_pc2_lsb", "_pc2_msb", "_pc3_lsb", "_pc3_msb", "_pc4_lsb", "_pc4_msb", "_pc5_lsb", "_pc5_msb", "_pc6_lsb", "_pc6_msb", "_pc7_lsb", "_pc7_msb", "_pc8_lsb", "_pc8_msb", "_pc9_lsb", "_pc9_msb", "_pc10_lsb", "_pc10_msb", "_pc11_lsb", "_pc11_msb", "_pc12_lsb", "_pc12_msb", "_pc13_lsb", "_pc13_msb", "_pc14_lsb", "_pc14_msb", "_pc15_lsb", "_pc15_msb"]
|
||||
|
||||
[section.hpu_reset]
|
||||
description="Used to control the HPU soft reset"
|
||||
offset= 0x100
|
||||
|
||||
[section.hpu_reset.register.trigger]
|
||||
description="A soft reset for the whole HPU reconfigurable logic"
|
||||
owner="Kernel"
|
||||
read_access="Read"
|
||||
write_access="WriteNotify"
|
||||
field.request = { size_b=1, offset_b=0 , default={Cst=0}, description="request"}
|
||||
field.done = { size_b=1, offset_b=31 , default={Cst=0}, description="done"}
|
||||
|
||||
@@ -354,7 +354,7 @@ impl InfoPePbs {
|
||||
}
|
||||
|
||||
pub fn update_load_bsk_rcp_dur(&mut self, ffi_hw: &mut ffi::HpuHw, regmap: &FlatRegmap) {
|
||||
(1..16).for_each(|i| {
|
||||
(0..16).for_each(|i| {
|
||||
let reg_name = format!("runtime_3in3::pep_load_bsk_rcp_dur_pc{i}");
|
||||
let reg = regmap
|
||||
.register()
|
||||
@@ -364,7 +364,7 @@ impl InfoPePbs {
|
||||
});
|
||||
}
|
||||
pub fn update_load_ksk_rcp_dur(&mut self, ffi_hw: &mut ffi::HpuHw, regmap: &FlatRegmap) {
|
||||
(1..16).for_each(|i| {
|
||||
(0..16).for_each(|i| {
|
||||
let reg_name = format!("runtime_1in3::pep_load_ksk_rcp_dur_pc{i}");
|
||||
let reg = regmap
|
||||
.register()
|
||||
|
||||
@@ -79,6 +79,9 @@ pub enum Command {
|
||||
#[arg(short, long, default_value_t = String::from("trace.json"))]
|
||||
file: String,
|
||||
},
|
||||
|
||||
#[clap(about = "Resets all HPU processing logic")]
|
||||
SoftReset {},
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, ValueEnum)]
|
||||
@@ -286,5 +289,26 @@ fn main() {
|
||||
serde_json::to_writer_pretty(file.make_writer(), &parsed)
|
||||
.expect("Could not write trace dump");
|
||||
}
|
||||
Command::SoftReset {} => {
|
||||
let soft_reset = regmap
|
||||
.register()
|
||||
.get("hpu_reset::trigger")
|
||||
.expect("The current HPU does not support soft reset.");
|
||||
let soft_reset_addr = *soft_reset.offset() as u64;
|
||||
|
||||
for reset in [true, false].into_iter() {
|
||||
hpu_hw.write_reg(soft_reset_addr, reset as u32);
|
||||
loop {
|
||||
let done = {
|
||||
let val = hpu_hw.read_reg(soft_reset_addr);
|
||||
let fields = soft_reset.as_field(val);
|
||||
*fields.get("done").expect("Unknown field") != 0
|
||||
};
|
||||
if done == reset {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user