本文整理汇总了C++中Wire::add_output_port方法的典型用法代码示例。如果您正苦于以下问题:C++ Wire::add_output_port方法的具体用法?C++ Wire::add_output_port怎么用?C++ Wire::add_output_port使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Wire
的用法示例。
在下文中一共展示了Wire::add_output_port方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parse_blif
// Parse the blif file and build the circuit
void Circuit::parse_blif(string filename)
{
string latch_str= "1 1\n";
ifile.open(filename.c_str());
if (!ifile) {
throw Error("Cannot open file");
}
while (true) {
int type;
string token;
type= get_blif_token(token);
if (type == 2) {
break;
} else if (type == 4) {
if (token == ".inputs" || token == ".outputs") {
int type= 0;
if (token == ".outputs") {
type= 1;
}
while (get_blif_token(token) != 1) {
// create wire
Wire* nwire= new Wire(token);
++num_wires;
sym_table[token]= nwire;
// create instance
string instname = token;
instname += type == 0 ? "_input" : "_output";
Inst* ninst= new Inst(instname, true);
++num_insts;
sym_table[instname]= ninst;
// create port
Port* nport= new Port(token);
++num_ports;
nport->set_inst(ninst);
nport->set_wire(nwire);
if (type == 0) {
// input, connect port as output
ninst->add_output(nport);
nwire->set_driver(nport);
input_wires.push_back(nwire);
} else {
ninst->add_input(nport);
nwire->add_output_port(nport);
output_wires.push_back(nwire);
}
}
} else if (token == ".latch") {
// .latch input output [<type> <control>] [<init-val>]
// only need input and output
string input, output;
get_blif_token(input);
get_blif_token(output);
// Exhaust other token until end-of-line
while (get_blif_token(token) != 1);
// create instance
string inst_name = input + "_" + output + "_latch";
Inst* ninst= new Inst(inst_name, false, true);
++num_insts;
sym_table[inst_name]= ninst;
// handle input port
Port* nport= new Port(input);
++num_ports;
nport->set_inst(ninst);
// create/find wire
Wire* nwire= find_wire_insert(input);
nwire->add_output_port(nport);
output_wires.push_back(nwire);
ninst->add_input(nport);
// handle output port
nport= new Port(output);
++num_ports;
nport->set_inst(ninst);
// create/find wire
nwire = find_wire_insert(output);
if (nwire->get_driver() != 0) {
cout << "Warning, wire " << output
<< " has multipler drivers."<<endl;
}
input_wires.push_back(nwire);
nwire->set_driver(nport);
ninst->add_output(nport);
// latch always has only one input
lib_cell* cell = library->create_libcell(latch_str, 1);
ninst->add_lib_cell(cell);
} else if (token == ".names") {
// .names <in-1> <in-2> ... <in-n> <output>
vector<string> strvec;
//.........这里部分代码省略.........