mirror of https://github.com/YosysHQ/yosys.git
Added cell->known(), cell->input(portname), cell->output(portname)
This commit is contained in:
parent
d5e30978e9
commit
dce1fae777
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include "kernel/yosys.h"
|
#include "kernel/yosys.h"
|
||||||
#include "kernel/macc.h"
|
#include "kernel/macc.h"
|
||||||
|
#include "kernel/celltypes.h"
|
||||||
#include "frontends/verilog/verilog_frontend.h"
|
#include "frontends/verilog/verilog_frontend.h"
|
||||||
#include "backends/ilang/ilang_backend.h"
|
#include "backends/ilang/ilang_backend.h"
|
||||||
|
|
||||||
|
@ -1928,6 +1929,39 @@ const dict<RTLIL::IdString, RTLIL::SigSpec> &RTLIL::Cell::connections() const
|
||||||
return connections_;
|
return connections_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RTLIL::Cell::known() const
|
||||||
|
{
|
||||||
|
if (yosys_celltypes.cell_known(type))
|
||||||
|
return true;
|
||||||
|
if (module && module->design && module->design->module(type))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RTLIL::Cell::input(RTLIL::IdString portname) const
|
||||||
|
{
|
||||||
|
if (yosys_celltypes.cell_known(type))
|
||||||
|
return yosys_celltypes.cell_input(type, portname);
|
||||||
|
if (module && module->design) {
|
||||||
|
RTLIL::Module *m = module->design->module(type);
|
||||||
|
RTLIL::Wire *w = m ? m->wire(portname) : nullptr;
|
||||||
|
return w && w->port_input;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RTLIL::Cell::output(RTLIL::IdString portname) const
|
||||||
|
{
|
||||||
|
if (yosys_celltypes.cell_known(type))
|
||||||
|
return yosys_celltypes.cell_output(type, portname);
|
||||||
|
if (module && module->design) {
|
||||||
|
RTLIL::Module *m = module->design->module(type);
|
||||||
|
RTLIL::Wire *w = m ? m->wire(portname) : nullptr;
|
||||||
|
return w && w->port_output;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool RTLIL::Cell::hasParam(RTLIL::IdString paramname) const
|
bool RTLIL::Cell::hasParam(RTLIL::IdString paramname) const
|
||||||
{
|
{
|
||||||
return parameters.count(paramname) != 0;
|
return parameters.count(paramname) != 0;
|
||||||
|
|
|
@ -1140,6 +1140,11 @@ public:
|
||||||
const RTLIL::SigSpec &getPort(RTLIL::IdString portname) const;
|
const RTLIL::SigSpec &getPort(RTLIL::IdString portname) const;
|
||||||
const dict<RTLIL::IdString, RTLIL::SigSpec> &connections() const;
|
const dict<RTLIL::IdString, RTLIL::SigSpec> &connections() const;
|
||||||
|
|
||||||
|
// information about cell ports
|
||||||
|
bool known() const;
|
||||||
|
bool input(RTLIL::IdString portname) const;
|
||||||
|
bool output(RTLIL::IdString portname) const;
|
||||||
|
|
||||||
// access cell parameters
|
// access cell parameters
|
||||||
bool hasParam(RTLIL::IdString paramname) const;
|
bool hasParam(RTLIL::IdString paramname) const;
|
||||||
void unsetParam(RTLIL::IdString paramname);
|
void unsetParam(RTLIL::IdString paramname);
|
||||||
|
|
Loading…
Reference in New Issue