I am trying to report the buses in the schematic. When i am reporting them i want to be able to uniquify the buses. For example.
If i have TRIM<7:0> Bus split into TRIM<4:0> , TRIM<7:5> i want to report only one bus TRIM<7:0>
vectorNets = setof(x cvId~>nets x~>numBits > 1) ;
The command is what i am using to get the BUSES in the design but would like to get help to report only one unique bus.
Here is something to get you started. As it is, it assumes that the bus is consecutive. It uses the minimum and maximum bits to define the range and then always reports them low to high. You will need to adjust it to get what you want, but it gives you one way to look at the problem using the expanded buses as found in the signals list.
procedure(fullBuses(@optional (cv geGetEditCellView())) let((busList) busTable = makeTable("busTable" nil) foreach(sig cv~>signals bus = parseString(sig~>name "<>") when(length(bus) > 1 busTable[car(bus)] = cons(evalstring(cadr(bus)) busTable[car(bus)]) ) ) foreach(busName busTable bits = busTable[busName] if(length(bits) > 1 busList = cons(sprintf(nil "%s<%d:%d>" busName apply('min bits) apply('max bits)) busList) busList = cons(sprintf(nil "%s<%d>" busName car(bits)) busList) ) ) busList ) ;let) ;proc