[core] fixed the bug on matching global net from pcf
This commit is contained in:
parent
34fb003911
commit
5fa674be24
|
@ -24,6 +24,7 @@ static int build_clock_tree_net_map(
|
||||||
const ClusteredNetlist& cluster_nlist, const PinConstraints& pin_constraints,
|
const ClusteredNetlist& cluster_nlist, const PinConstraints& pin_constraints,
|
||||||
const std::vector<ClusterNetId>& gnets, const ClockNetwork& clk_ntwk,
|
const std::vector<ClusterNetId>& gnets, const ClockNetwork& clk_ntwk,
|
||||||
const ClockTreeId clk_tree, const bool& verbose) {
|
const ClockTreeId clk_tree, const bool& verbose) {
|
||||||
|
BasicPort tree_gport = clk_ntwk.tree_global_port(clk_tree);
|
||||||
/* Find the pin id for each clock name, error out if there is any mismatch */
|
/* Find the pin id for each clock name, error out if there is any mismatch */
|
||||||
if (clk_ntwk.num_trees() == 1 && gnets.size() == 1 && clk_ntwk.tree_width(clk_tree) == 1) {
|
if (clk_ntwk.num_trees() == 1 && gnets.size() == 1 && clk_ntwk.tree_width(clk_tree) == 1) {
|
||||||
/* Find cluster net id */
|
/* Find cluster net id */
|
||||||
|
@ -37,6 +38,7 @@ static int build_clock_tree_net_map(
|
||||||
for (ClusterNetId gnet : gnets) {
|
for (ClusterNetId gnet : gnets) {
|
||||||
/* Find the pin information that the net should be mapped to */
|
/* Find the pin information that the net should be mapped to */
|
||||||
std::string gnet_name = cluster_nlist.net_name(gnet);
|
std::string gnet_name = cluster_nlist.net_name(gnet);
|
||||||
|
/* The pin should match be global port name of the tree */
|
||||||
BasicPort tree_pin = pin_constraints.net_pin(gnet_name);
|
BasicPort tree_pin = pin_constraints.net_pin(gnet_name);
|
||||||
if (!tree_pin.is_valid()) {
|
if (!tree_pin.is_valid()) {
|
||||||
VTR_LOG_ERROR(
|
VTR_LOG_ERROR(
|
||||||
|
@ -52,11 +54,15 @@ static int build_clock_tree_net_map(
|
||||||
gnet_name.c_str());
|
gnet_name.c_str());
|
||||||
return CMD_EXEC_FATAL_ERROR;
|
return CMD_EXEC_FATAL_ERROR;
|
||||||
}
|
}
|
||||||
if (tree_pin.get_lsb() >= clk_ntwk.tree_width(clk_tree)) {
|
if (tree_gport.get_name() != tree_pin.get_name()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!tree_gport.contained(tree_pin)) {
|
||||||
VTR_LOG_ERROR(
|
VTR_LOG_ERROR(
|
||||||
"Invalid tree pin %s[%lu] is out of range of clock tree size '%lu'\n",
|
"Invalid pin constraint port '%s' which is out of range of the global port '%s' of clock tree '%s'\n",
|
||||||
tree_pin.get_name().c_str(), tree_pin.get_lsb(),
|
tree_pin.to_verilog_string().c_str(),
|
||||||
clk_ntwk.tree_width(clk_tree));
|
tree_gport.to_verilog_string().c_str(),
|
||||||
|
clk_ntwk.tree_name(clk_tree).c_str());
|
||||||
return CMD_EXEC_FATAL_ERROR;
|
return CMD_EXEC_FATAL_ERROR;
|
||||||
}
|
}
|
||||||
/* TODO: Check the tree_pin.get_name(), see if matches the tree from ports */
|
/* TODO: Check the tree_pin.get_name(), see if matches the tree from ports */
|
||||||
|
|
Loading…
Reference in New Issue