Temporary fix rust validator

This commit is contained in:
ilgeco
2026-02-26 18:43:48 +01:00
parent 8bb5385961
commit 7b2baeacd3
3 changed files with 16 additions and 10 deletions

View File

@@ -46,7 +46,10 @@ fn main() -> Result<()> {
let mut executor = json_to_executor::json_to_executor(config_json, core_jsons.iter()); let mut executor = json_to_executor::json_to_executor(config_json, core_jsons.iter());
populate_crossbar(&args, &mut executor); populate_crossbar(&args, &mut executor);
set_memory(&mut executor, memory); set_memory(&mut executor, memory);
TRACER.lock().unwrap().init(executor.cpu().num_core(), args.output.clone()); TRACER
.lock()
.unwrap()
.init(executor.cpu().num_core(), args.output.clone());
executor.execute(); executor.execute();
dump_memory(executor, &args)?; dump_memory(executor, &args)?;
Ok(()) Ok(())
@@ -55,13 +58,13 @@ fn main() -> Result<()> {
fn populate_crossbar(args: &Args, executor: &mut pimcore::Executable) { fn populate_crossbar(args: &Args, executor: &mut pimcore::Executable) {
let num_cores = executor.cpu_mut().num_core(); let num_cores = executor.cpu_mut().num_core();
if let Some(folder) = args.folder.as_ref() { if let Some(folder) = args.folder.as_ref() {
for core_idx in 0..num_cores { for core_idx in 0..num_cores {
let core_folder = folder.join(format!("core_{}", core_idx)); let core_folder = folder.join(format!("core_{}", core_idx));
if !core_folder.is_dir() { if !core_folder.is_dir() {
continue; continue;
} }
let mut bin_files: Vec<(u32, std::path::PathBuf)> = std::fs::read_dir(&core_folder) let mut bin_files: Vec<(u32, std::path::PathBuf)> = std::fs::read_dir(&core_folder)
@@ -80,13 +83,16 @@ fn populate_crossbar(args: &Args, executor: &mut pimcore::Executable) {
}) })
.collect(); .collect();
bin_files.sort_by_key(|&(num, _)| num); bin_files.sort_by_key(|&(num, _)| num);
let core = executor.cpu_mut().core(core_idx+1); let core = executor.cpu_mut().core(core_idx);
let (_memory, crossbars) = core.get_memory_crossbar(); let (_memory, crossbars) = core.get_memory_crossbar();
for (i, path) in bin_files { for (i, path) in bin_files {
let bytes = std::fs::read(path).expect("Failed to read binary file"); let bytes = std::fs::read(path).expect("Failed to read binary file");
crossbars.get_mut(i as usize) crossbars
.unwrap().execute_store(&bytes).unwrap(); .get_mut(i as usize)
.unwrap()
.execute_store(&bytes)
.unwrap();
} }
} }

View File

@@ -487,7 +487,7 @@ fn json_to_send(
let json = json.as_object().expect("Not an object"); let json = json.as_object().expect("Not an object");
assert_eq!("send", json_str!(json, "op")); assert_eq!("send", json_str!(json, "op"));
let rd = json_i64!(json, "rd") as i32; let rd = json_i64!(json, "rd") as i32;
let core = json_i64!(json, "core") as i32 + 1; let core = json_i64!(json, "core") as i32;
let size = json_i64!(json, "size") as i32; let size = json_i64!(json, "size") as i32;
let (offset_select, offset_value) = json_to_offset(json.get("offset").unwrap()); let (offset_select, offset_value) = json_to_offset(json.get("offset").unwrap());
inst_data_builder inst_data_builder
@@ -508,7 +508,7 @@ fn json_to_recv(
let json = json.as_object().expect("Not an object"); let json = json.as_object().expect("Not an object");
assert_eq!("recv", json_str!(json, "op")); assert_eq!("recv", json_str!(json, "op"));
let rd = json_i64!(json, "rd") as i32; let rd = json_i64!(json, "rd") as i32;
let core = json_i64!(json, "core") as i32 + 1; let core = json_i64!(json, "core") as i32;
let size = json_i64!(json, "size") as i32; let size = json_i64!(json, "size") as i32;
let (offset_select, offset_value) = json_to_offset(json.get("offset").unwrap()); let (offset_select, offset_value) = json_to_offset(json.get("offset").unwrap());
inst_data_builder inst_data_builder

View File

@@ -23,17 +23,17 @@ pub fn json_to_executor<'a>(
let xbar_size = config.get("xbar_size").unwrap().as_array().unwrap(); let xbar_size = config.get("xbar_size").unwrap().as_array().unwrap();
let rows_crossbar = xbar_size[0].as_i64().unwrap() as i32; let rows_crossbar = xbar_size[0].as_i64().unwrap() as i32;
let column_corssbar = xbar_size[1].as_i64().unwrap() as i32; let column_corssbar = xbar_size[1].as_i64().unwrap() as i32;
let array_group_map = config.get("array_group_map");
let mut cpu = CPU::new(core_cnt); let mut cpu = CPU::new(core_cnt);
cpu.reserve_crossbar(xbar_count, column_corssbar * 4, rows_crossbar); cpu.reserve_crossbar(xbar_count, column_corssbar * 4, rows_crossbar);
let mut core_insts_builder = CoreInstructionsBuilder::new(core_cnt as usize); let mut core_insts_builder = CoreInstructionsBuilder::new(core_cnt as usize);
cores.next();
for core_indx in 1..=core_cnt { for core_indx in 1..=core_cnt {
let mut insts_builder = InstructionsBuilder::new(); let mut insts_builder = InstructionsBuilder::new();
let mut inst_data_builder = InstructionDataBuilder::new(); let mut inst_data_builder = InstructionDataBuilder::new();
inst_data_builder.set_core_indx(core_indx).fix_core_indx(); inst_data_builder.set_core_indx(core_indx).fix_core_indx();
let json_core = cores let json_core = cores
.next() .next()
.unwrap_or_else(|| panic!("cores files less than {}", core_indx - 1)); .unwrap_or_else(|| panic!("cores files less than {}", core_indx ));
let json_core_insts = json_core let json_core_insts = json_core
.as_array() .as_array()
.unwrap_or_else(|| panic!("core{} has not a list of instruction", core_indx)); .unwrap_or_else(|| panic!("core{} has not a list of instruction", core_indx));