mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 09:05:32 +00:00
Add support for memory writes in processes.
This commit is contained in:
parent
c00a29296c
commit
4e03865d5b
16 changed files with 246 additions and 44 deletions
|
@ -4538,6 +4538,7 @@ RTLIL::SyncRule *RTLIL::SyncRule::clone() const
|
|||
new_syncrule->type = type;
|
||||
new_syncrule->signal = signal;
|
||||
new_syncrule->actions = actions;
|
||||
new_syncrule->mem_write_actions = mem_write_actions;
|
||||
return new_syncrule;
|
||||
}
|
||||
|
||||
|
|
|
@ -69,6 +69,7 @@ namespace RTLIL
|
|||
struct SigSpec;
|
||||
struct CaseRule;
|
||||
struct SwitchRule;
|
||||
struct MemWriteAction;
|
||||
struct SyncRule;
|
||||
struct Process;
|
||||
|
||||
|
@ -1541,11 +1542,21 @@ struct RTLIL::SwitchRule : public RTLIL::AttrObject
|
|||
RTLIL::SwitchRule *clone() const;
|
||||
};
|
||||
|
||||
struct RTLIL::MemWriteAction : RTLIL::AttrObject
|
||||
{
|
||||
RTLIL::IdString memid;
|
||||
RTLIL::SigSpec address;
|
||||
RTLIL::SigSpec data;
|
||||
RTLIL::SigSpec enable;
|
||||
RTLIL::Const priority_mask;
|
||||
};
|
||||
|
||||
struct RTLIL::SyncRule
|
||||
{
|
||||
RTLIL::SyncType type;
|
||||
RTLIL::SigSpec signal;
|
||||
std::vector<RTLIL::SigSig> actions;
|
||||
std::vector<RTLIL::MemWriteAction> mem_write_actions;
|
||||
|
||||
template<typename T> void rewrite_sigspecs(T &functor);
|
||||
template<typename T> void rewrite_sigspecs2(T &functor);
|
||||
|
@ -1693,6 +1704,11 @@ void RTLIL::SyncRule::rewrite_sigspecs(T &functor)
|
|||
functor(it.first);
|
||||
functor(it.second);
|
||||
}
|
||||
for (auto &it : mem_write_actions) {
|
||||
functor(it.address);
|
||||
functor(it.data);
|
||||
functor(it.enable);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
@ -1702,6 +1718,11 @@ void RTLIL::SyncRule::rewrite_sigspecs2(T &functor)
|
|||
for (auto &it : actions) {
|
||||
functor(it.first, it.second);
|
||||
}
|
||||
for (auto &it : mem_write_actions) {
|
||||
functor(it.address);
|
||||
functor(it.data);
|
||||
functor(it.enable);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue