mirror of
https://github.com/YosysHQ/yosys
synced 2025-08-09 12:50:33 +00:00
Added RTLIL::Cell::has(portname)
This commit is contained in:
parent
a84cb04935
commit
97a59851a6
12 changed files with 33 additions and 27 deletions
|
@ -87,21 +87,21 @@ struct ConstEval
|
|||
{
|
||||
RTLIL::SigSpec sig_a, sig_b, sig_s, sig_y;
|
||||
|
||||
assert(cell->connections().count("\\Y") > 0);
|
||||
assert(cell->has("\\Y"));
|
||||
sig_y = values_map(assign_map(cell->get("\\Y")));
|
||||
if (sig_y.is_fully_const())
|
||||
return true;
|
||||
|
||||
if (cell->connections().count("\\S") > 0) {
|
||||
if (cell->has("\\S")) {
|
||||
sig_s = cell->get("\\S");
|
||||
if (!eval(sig_s, undef, cell))
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cell->connections().count("\\A") > 0)
|
||||
if (cell->has("\\A"))
|
||||
sig_a = cell->get("\\A");
|
||||
|
||||
if (cell->connections().count("\\B") > 0)
|
||||
if (cell->has("\\B"))
|
||||
sig_b = cell->get("\\B");
|
||||
|
||||
if (cell->type == "$mux" || cell->type == "$pmux" || cell->type == "$safe_pmux" || cell->type == "$_MUX_")
|
||||
|
|
|
@ -348,9 +348,9 @@ namespace {
|
|||
|
||||
void port(const char *name, int width)
|
||||
{
|
||||
if (cell->connections().count(name) == 0)
|
||||
if (!cell->has(name))
|
||||
error(__LINE__);
|
||||
if (cell->connections().at(name).size() != width)
|
||||
if (cell->get(name).size() != width)
|
||||
error(__LINE__);
|
||||
expected_ports.insert(name);
|
||||
}
|
||||
|
@ -379,9 +379,9 @@ namespace {
|
|||
|
||||
for (const char *p = ports; *p; p++) {
|
||||
char portname[3] = { '\\', *p, 0 };
|
||||
if (cell->connections().count(portname) == 0)
|
||||
if (!cell->has(portname))
|
||||
error(__LINE__);
|
||||
if (cell->connections().at(portname).size() != 1)
|
||||
if (cell->get(portname).size() != 1)
|
||||
error(__LINE__);
|
||||
}
|
||||
|
||||
|
@ -1340,6 +1340,11 @@ RTLIL::Memory::Memory()
|
|||
size = 0;
|
||||
}
|
||||
|
||||
bool RTLIL::Cell::has(RTLIL::IdString portname)
|
||||
{
|
||||
return connections_.count(portname) != 0;
|
||||
}
|
||||
|
||||
void RTLIL::Cell::unset(RTLIL::IdString portname)
|
||||
{
|
||||
connections_.erase(portname);
|
||||
|
|
|
@ -488,6 +488,7 @@ public:
|
|||
RTLIL_ATTRIBUTE_MEMBERS
|
||||
|
||||
// access cell ports
|
||||
bool has(RTLIL::IdString portname);
|
||||
void unset(RTLIL::IdString portname);
|
||||
void set(RTLIL::IdString portname, RTLIL::SigSpec signal);
|
||||
const RTLIL::SigSpec &get(RTLIL::IdString portname) const;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue