B
Troubleshooting: Bus Direction
Determining a Bus Direction
A bus direction is determined on the basis of the ranges of ascending and descending spreads of a bus. OSS compares these ranges and the spread having the widest range determines the bus direction. For example, in case of two nets, A<0:5> and A<6:0>, bus direction is descending because the A<6:0> net has the widest range. If the ranges are same, OSS checks if any net matches the spread to determine a bus direction. For example, in case of these nets, A<0:5>, A<5:0>, A<8:7>, and A<0:8>, bus direction is ascending. Although the nets, A<5:0>, and A<8:7> when combined give the <8:0> spread, the <0:8> net is the exact match.
If OSS is unable to resolve a bus direction, a conflict arises, and a warning message is displayed on the screen. A conflict arises in the following cases:
-
when both, ascending and descending spreads are same and no net matches the spread. For example, the following are the nets in a design:
In this example, the nets having the same order are combined. This meansA<0:2>andA<4:6>nets are combined to give theA<0:6>spread. Similar,A<6:3>andA<1:0>nets are combined to give theA<6:0>spread. The comparison between the spreads,A<0:6>andA<6:0>results in a conflict because both spreads have the same range and there is no matching net in a design. -
when both, ascending and descending spreads are same and two or more nets match the spread in reverse directions. For example, the following are the nets in a design:
In this example also the nets having the same order are combined similar to the previous example. This results in two spreads,A<0:6>andA<6:0>. This results in a conflict because both spreads have the same range. When matching nets are searched, two nets,A<0:6>andA<6:0>are found. This results in a conflict because these nets match the spread in reverse directions
Resolving a Conflict in Bus Direction
To resolve a conflict in bus direction, OSS allows you to specify bus direction using the hnlSetBusDirectionDescending variable. You can specify the value of the hnlSetBusDirectionDescending variable as t in the .simrc file. This indicates that the bus direction is descending. If the value of the variable is set to nil or it is not defined, the bus direction is determined as ascending, by default.
Return to top