[core] code format
This commit is contained in:
parent
1673d9b919
commit
f6b645fd25
|
@ -1530,8 +1530,8 @@ void CircuitLibrary::set_model_pass_gate_logic(const CircuitModelId& model_id,
|
|||
}
|
||||
|
||||
/* Set pass-gate logic information of a circuit model */
|
||||
void CircuitLibrary::set_model_last_stage_pass_gate_logic(const CircuitModelId& model_id,
|
||||
const std::string& model_name) {
|
||||
void CircuitLibrary::set_model_last_stage_pass_gate_logic(
|
||||
const CircuitModelId& model_id, const std::string& model_name) {
|
||||
/* validate the model_id */
|
||||
VTR_ASSERT(valid_model_id(model_id));
|
||||
last_stage_pass_gate_logic_model_names_[model_id] = model_name;
|
||||
|
|
|
@ -272,9 +272,11 @@ class CircuitLibrary {
|
|||
const CircuitModelId& model_id) const;
|
||||
/* Pass-gate-logic information */
|
||||
CircuitModelId pass_gate_logic_model(const CircuitModelId& model_id) const;
|
||||
CircuitModelId last_stage_pass_gate_logic_model(const CircuitModelId& model_id) const;
|
||||
CircuitModelId last_stage_pass_gate_logic_model(
|
||||
const CircuitModelId& model_id) const;
|
||||
std::string pass_gate_logic_model_name(const CircuitModelId& model_id) const;
|
||||
std::string last_stage_pass_gate_logic_model_name(const CircuitModelId& model_id) const;
|
||||
std::string last_stage_pass_gate_logic_model_name(
|
||||
const CircuitModelId& model_id) const;
|
||||
enum e_circuit_model_pass_gate_logic_type pass_gate_logic_type(
|
||||
const CircuitModelId& model_id) const;
|
||||
float pass_gate_logic_pmos_size(const CircuitModelId& model_id) const;
|
||||
|
@ -451,7 +453,7 @@ class CircuitLibrary {
|
|||
void set_model_pass_gate_logic(const CircuitModelId& model_id,
|
||||
const std::string& model_name);
|
||||
void set_model_last_stage_pass_gate_logic(const CircuitModelId& model_id,
|
||||
const std::string& model_name);
|
||||
const std::string& model_name);
|
||||
/* Port information */
|
||||
CircuitPortId add_model_port(const CircuitModelId& model_id,
|
||||
const enum e_circuit_model_port_type& port_type);
|
||||
|
@ -668,8 +670,10 @@ class CircuitLibrary {
|
|||
/* Pass-gate-related parameters */
|
||||
vtr::vector<CircuitModelId, std::string> pass_gate_logic_model_names_;
|
||||
vtr::vector<CircuitModelId, CircuitModelId> pass_gate_logic_model_ids_;
|
||||
vtr::vector<CircuitModelId, std::string> last_stage_pass_gate_logic_model_names_;
|
||||
vtr::vector<CircuitModelId, CircuitModelId> last_stage_pass_gate_logic_model_ids_;
|
||||
vtr::vector<CircuitModelId, std::string>
|
||||
last_stage_pass_gate_logic_model_names_;
|
||||
vtr::vector<CircuitModelId, CircuitModelId>
|
||||
last_stage_pass_gate_logic_model_ids_;
|
||||
|
||||
/* Port information */
|
||||
vtr::vector<CircuitPortId, CircuitPortId> port_ids_;
|
||||
|
|
|
@ -833,18 +833,23 @@ static void read_xml_circuit_model(pugi::xml_node& xml_model,
|
|||
model, get_attribute(xml_pass_gate_logic, "circuit_model_name", loc_data)
|
||||
.as_string());
|
||||
/* Last stage pass gate is optional */
|
||||
size_t num_last_stage_pgl = count_children(xml_model, "last_stage_pass_gate_logic", loc_data, pugiutil::ReqOpt::OPTIONAL);
|
||||
size_t num_last_stage_pgl =
|
||||
count_children(xml_model, "last_stage_pass_gate_logic", loc_data,
|
||||
pugiutil::ReqOpt::OPTIONAL);
|
||||
if (0 < num_last_stage_pgl) {
|
||||
auto xml_last_stage_pass_gate_logic =
|
||||
get_single_child(xml_model, "last_stage_pass_gate_logic", loc_data);
|
||||
circuit_lib.set_model_last_stage_pass_gate_logic(
|
||||
model, get_attribute(xml_last_stage_pass_gate_logic, "circuit_model_name", loc_data)
|
||||
model, get_attribute(xml_last_stage_pass_gate_logic,
|
||||
"circuit_model_name", loc_data)
|
||||
.as_string());
|
||||
} else {
|
||||
/* By default, assume the last stage circuit model is the same as others */
|
||||
/* By default, assume the last stage circuit model is the same as others
|
||||
*/
|
||||
circuit_lib.set_model_last_stage_pass_gate_logic(
|
||||
model, get_attribute(xml_pass_gate_logic, "circuit_model_name", loc_data)
|
||||
.as_string());
|
||||
model,
|
||||
get_attribute(xml_pass_gate_logic, "circuit_model_name", loc_data)
|
||||
.as_string());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -597,7 +597,9 @@ static void write_xml_circuit_model(std::fstream& fp, const char* fname,
|
|||
<< "<last_stage_pass_gate_logic";
|
||||
write_xml_attribute(
|
||||
fp, "circuit_model_name",
|
||||
circuit_lib.model_name(circuit_lib.last_stage_pass_gate_logic_model(model)).c_str());
|
||||
circuit_lib
|
||||
.model_name(circuit_lib.last_stage_pass_gate_logic_model(model))
|
||||
.c_str());
|
||||
fp << "/>"
|
||||
<< "\n";
|
||||
}
|
||||
|
|
|
@ -461,7 +461,6 @@ static void build_cmos_mux_module_mux2_multiplexing_structure(
|
|||
/* We must have one */
|
||||
VTR_ASSERT(ModuleId::INVALID() != std_cell_module_id);
|
||||
|
||||
|
||||
/* Find the module ports of the standard cell MUX2 module */
|
||||
std::vector<ModulePortId> std_cell_module_inputs;
|
||||
std::vector<BasicPort> std_cell_module_input_ports;
|
||||
|
@ -498,8 +497,10 @@ static void build_cmos_mux_module_mux2_multiplexing_structure(
|
|||
VTR_ASSERT(1 == std_cell_module_output_port.get_width());
|
||||
|
||||
/* Find module information of the standard cell MUX2 */
|
||||
CircuitModelId last_stage_std_cell_model = circuit_lib.last_stage_pass_gate_logic_model(mux_model);
|
||||
std::string last_stage_std_cell_module_name = circuit_lib.model_name(last_stage_std_cell_model);
|
||||
CircuitModelId last_stage_std_cell_model =
|
||||
circuit_lib.last_stage_pass_gate_logic_model(mux_model);
|
||||
std::string last_stage_std_cell_module_name =
|
||||
circuit_lib.model_name(last_stage_std_cell_model);
|
||||
/* Get the moduleId for the submodule */
|
||||
ModuleId last_stage_std_cell_module_id =
|
||||
module_manager.find_module(last_stage_std_cell_module_name);
|
||||
|
@ -508,11 +509,11 @@ static void build_cmos_mux_module_mux2_multiplexing_structure(
|
|||
|
||||
/* Find the input ports and output ports of the standard cell */
|
||||
std::vector<CircuitPortId> last_stage_std_cell_input_ports =
|
||||
circuit_lib.model_ports_by_type(last_stage_std_cell_model, CIRCUIT_MODEL_PORT_INPUT,
|
||||
true);
|
||||
circuit_lib.model_ports_by_type(last_stage_std_cell_model,
|
||||
CIRCUIT_MODEL_PORT_INPUT, true);
|
||||
std::vector<CircuitPortId> last_stage_std_cell_output_ports =
|
||||
circuit_lib.model_ports_by_type(last_stage_std_cell_model, CIRCUIT_MODEL_PORT_OUTPUT,
|
||||
true);
|
||||
circuit_lib.model_ports_by_type(last_stage_std_cell_model,
|
||||
CIRCUIT_MODEL_PORT_OUTPUT, true);
|
||||
/* Quick check the requirements on port map */
|
||||
VTR_ASSERT(3 == last_stage_std_cell_input_ports.size());
|
||||
VTR_ASSERT(1 == last_stage_std_cell_output_ports.size());
|
||||
|
@ -527,29 +528,37 @@ static void build_cmos_mux_module_mux2_multiplexing_structure(
|
|||
last_stage_std_cell_module_id,
|
||||
circuit_lib.port_prefix(last_stage_std_cell_input_ports[port_id])));
|
||||
VTR_ASSERT(true == module_manager.valid_module_port_id(
|
||||
last_stage_std_cell_module_id, last_stage_std_cell_module_inputs[port_id]));
|
||||
last_stage_std_cell_module_input_ports.push_back(module_manager.module_port(
|
||||
last_stage_std_cell_module_id, last_stage_std_cell_module_inputs[port_id]));
|
||||
VTR_ASSERT(1 == last_stage_std_cell_module_input_ports[port_id].get_width());
|
||||
last_stage_std_cell_module_id,
|
||||
last_stage_std_cell_module_inputs[port_id]));
|
||||
last_stage_std_cell_module_input_ports.push_back(
|
||||
module_manager.module_port(last_stage_std_cell_module_id,
|
||||
last_stage_std_cell_module_inputs[port_id]));
|
||||
VTR_ASSERT(1 ==
|
||||
last_stage_std_cell_module_input_ports[port_id].get_width());
|
||||
}
|
||||
|
||||
/* Mem port is the memory of the standard cell MUX2, whose size must be 1 ! */
|
||||
ModulePortId last_stage_std_cell_module_mem = module_manager.find_module_port(
|
||||
last_stage_std_cell_module_id, circuit_lib.port_prefix(last_stage_std_cell_input_ports[2]));
|
||||
VTR_ASSERT(true == module_manager.valid_module_port_id(last_stage_std_cell_module_id,
|
||||
last_stage_std_cell_module_mem));
|
||||
BasicPort last_stage_std_cell_module_mem_port =
|
||||
module_manager.module_port(last_stage_std_cell_module_id, last_stage_std_cell_module_mem);
|
||||
last_stage_std_cell_module_id,
|
||||
circuit_lib.port_prefix(last_stage_std_cell_input_ports[2]));
|
||||
VTR_ASSERT(true ==
|
||||
module_manager.valid_module_port_id(
|
||||
last_stage_std_cell_module_id, last_stage_std_cell_module_mem));
|
||||
BasicPort last_stage_std_cell_module_mem_port = module_manager.module_port(
|
||||
last_stage_std_cell_module_id, last_stage_std_cell_module_mem);
|
||||
VTR_ASSERT(1 == last_stage_std_cell_module_mem_port.get_width());
|
||||
|
||||
/* Output port is the data path output of the standard cell MUX2, whose size
|
||||
* must be 1 ! */
|
||||
ModulePortId last_stage_std_cell_module_output = module_manager.find_module_port(
|
||||
last_stage_std_cell_module_id, circuit_lib.port_prefix(last_stage_std_cell_output_ports[0]));
|
||||
ModulePortId last_stage_std_cell_module_output =
|
||||
module_manager.find_module_port(
|
||||
last_stage_std_cell_module_id,
|
||||
circuit_lib.port_prefix(last_stage_std_cell_output_ports[0]));
|
||||
VTR_ASSERT(true == module_manager.valid_module_port_id(
|
||||
last_stage_std_cell_module_id, last_stage_std_cell_module_output));
|
||||
BasicPort last_stage_std_cell_module_output_port =
|
||||
module_manager.module_port(last_stage_std_cell_module_id, last_stage_std_cell_module_output);
|
||||
last_stage_std_cell_module_id,
|
||||
last_stage_std_cell_module_output));
|
||||
BasicPort last_stage_std_cell_module_output_port = module_manager.module_port(
|
||||
last_stage_std_cell_module_id, last_stage_std_cell_module_output);
|
||||
VTR_ASSERT(1 == last_stage_std_cell_module_output_port.get_width());
|
||||
|
||||
/* Cache Net ids for each level of the multiplexer */
|
||||
|
@ -574,7 +583,6 @@ static void build_cmos_mux_module_mux2_multiplexing_structure(
|
|||
/* To match the standard cell MUX2: We should have only 2 input_nodes */
|
||||
VTR_ASSERT(2 == branch_size);
|
||||
|
||||
|
||||
/* Last stage MUX model may have a different name */
|
||||
ModuleId curr_stage_std_cell_module_id = std_cell_module_id;
|
||||
if (true == mux_graph.is_node_output(node)) {
|
||||
|
@ -592,9 +600,9 @@ static void build_cmos_mux_module_mux2_multiplexing_structure(
|
|||
/* Set a name for the instance */
|
||||
std::string std_cell_instance_name = generate_mux_branch_instance_name(
|
||||
output_node_level, output_node_index_at_level, false);
|
||||
module_manager.set_child_instance_name(mux_module, curr_stage_std_cell_module_id,
|
||||
std_cell_instance_id,
|
||||
std_cell_instance_name);
|
||||
module_manager.set_child_instance_name(
|
||||
mux_module, curr_stage_std_cell_module_id, std_cell_instance_id,
|
||||
std_cell_instance_name);
|
||||
|
||||
/* Add module nets to wire to next stage modules */
|
||||
ModuleNetId branch_net;
|
||||
|
@ -603,14 +611,16 @@ static void build_cmos_mux_module_mux2_multiplexing_structure(
|
|||
MuxOutputId output_id = mux_graph.output_id(node);
|
||||
branch_net = mux_module_output_nets[output_id];
|
||||
module_manager.add_module_net_source(
|
||||
mux_module, branch_net, curr_stage_std_cell_module_id, std_cell_instance_id,
|
||||
last_stage_std_cell_module_output, last_stage_std_cell_module_output_port.get_lsb());
|
||||
mux_module, branch_net, curr_stage_std_cell_module_id,
|
||||
std_cell_instance_id, last_stage_std_cell_module_output,
|
||||
last_stage_std_cell_module_output_port.get_lsb());
|
||||
} else {
|
||||
VTR_ASSERT(false == mux_graph.is_node_output(node));
|
||||
branch_net = module_manager.create_module_net(mux_module);
|
||||
module_manager.add_module_net_source(
|
||||
mux_module, branch_net, curr_stage_std_cell_module_id, std_cell_instance_id,
|
||||
std_cell_module_output, std_cell_module_output_port.get_lsb());
|
||||
mux_module, branch_net, curr_stage_std_cell_module_id,
|
||||
std_cell_instance_id, std_cell_module_output,
|
||||
std_cell_module_output_port.get_lsb());
|
||||
}
|
||||
|
||||
/* Record the module net id in the cache */
|
||||
|
|
Loading…
Reference in New Issue