add a simulator #3

Merged
programmerjake merged 58 commits from adding-simulator into master 2024-12-16 04:06:48 +00:00
Showing only changes of commit 9654167ca3 - Show all commits

View file

@ -1215,10 +1215,16 @@ struct Register {
} }
#[derive(Debug)] #[derive(Debug)]
enum MemoryPort {
ReadOnly {}, struct MemoryPort {
WriteOnly {}, clk_triggered: StatePartIndex<StatePartKindSmallSlots>,
ReadWrite {}, addr_delayed: Vec<StatePartIndex<StatePartKindSmallSlots>>,
en_delayed: Vec<StatePartIndex<StatePartKindSmallSlots>>,
data: CompiledValue<CanonicalType>,
read_data_delayed: Vec<TypeIndex>,
write_data_delayed: Vec<TypeIndex>,
write_mask_delayed: Vec<TypeIndex>,
write_mode_delayed: Vec<StatePartIndex<StatePartKindSmallSlots>>,
} }
#[derive(Debug)] #[derive(Debug)]
@ -3350,11 +3356,37 @@ impl Compiler {
}; };
self.decl_conditions.insert(target, conditions); self.decl_conditions.insert(target, conditions);
trace_decls.push(self.make_trace_decl(instantiated_module, target_base)); trace_decls.push(self.make_trace_decl(instantiated_module, target_base));
todo!("handle read/write");
match port.port_kind() { match port.port_kind() {
PortKind::ReadOnly => MemoryPort::ReadOnly {}, PortKind::ReadOnly => MemoryPort {
PortKind::WriteOnly => MemoryPort::WriteOnly {}, clk_triggered: todo!(),
PortKind::ReadWrite => MemoryPort::ReadWrite {}, addr_delayed: todo!(),
en_delayed: todo!(),
data: todo!(),
read_data_delayed: todo!(),
write_data_delayed: todo!(),
write_mask_delayed: todo!(),
write_mode_delayed: todo!(),
},
PortKind::WriteOnly => MemoryPort {
clk_triggered: todo!(),
addr_delayed: todo!(),
en_delayed: todo!(),
data: todo!(),
read_data_delayed: todo!(),
write_data_delayed: todo!(),
write_mask_delayed: todo!(),
write_mode_delayed: todo!(),
},
PortKind::ReadWrite => MemoryPort {
clk_triggered: todo!(),
addr_delayed: todo!(),
en_delayed: todo!(),
data: todo!(),
read_data_delayed: todo!(),
write_data_delayed: todo!(),
write_mask_delayed: todo!(),
write_mode_delayed: todo!(),
},
} }
}) })
.collect(); .collect();