06-20-2011 09:47 PM
I've got multiple subcircuits that have to connect to the same bus. I am using bus sc/hb connectors.
I have my bus at the top level. I can connect it fine to the first subcircuit. (subcircuits are identical, copied and pasted)
When I try to connect the bus to the second subcircuit, it refuses to allow it and forces the bus name to change in the subcircuit and top level so they don't match within all teh circuits and I cannot connect up the proper signals.
I need to have all the signals in this bus connected at the top level and also within each of multiple identical subcircuits.
What am I missing? Why doesn't this work?
Thanks,
David B
Solved! Go to Solution.
06-20-2011 10:05 PM
I was trying to add this but the edit time expired on me:
When I try to connect the bus to the second subcircuit, it refuses to allow it and forces the bus name to change in the subcircuit so they don't match within all the circuits and I cannot connect up the proper signals. I see the splitter names on the new subcircuit renamed bus are correct, but the net names don't match the top level, and I am unable to change the subcircuit bus name to match the top level or the bus in the original subcircuit.
06-21-2011 09:37 AM
Hi David,
Although it's hard to tell without seeing the circuit, it almost sounds like the bus inside the subcircuit isn't actually attached to the connector. If you already have signals defined in the top level bus, and signals defined in the bus inside the subcircuit, then joining the two together should ask you how you want to connect them (to make it possible to join or separate signals as required when reusing subcircuits for example). If either the top level or subcircuit bus has no signals, then it should just connect them without asking for any additional information (unless you explicitly named both buses, then it will ask which name you wanted), and the signals already defined will carry through the whole bus.
If I understand your setup right, then if you're not seeing any of that, and you can't get the buses to be the same, then it means there is probably a connection that isn't being made. I'd suggest first trying to move the bus connector and see if it really is attached to the bus - that feels like the most likely culprit right now.
06-21-2011 02:48 PM
I think the first problem here is that I cannot edit the subcircuit internal bus connections if there is more than one instance of the subcircuit in my design. If I do it won't allow the connection.
If I delete all the instances except one, then edit it, then copy and paste it, it works and the buses in all the sc's rename properly and the splitters connect up properly.
I have a second problem with is getting a bus to hook up with a range of splitters connected in each sc. i.e. if I have a 16 bit data bus, and I want the HOB to connect in the first sc and the LOB to connect in the second sc to the same corresping set of pins I cannot get that to work. Is there anyway to do this?
Thanks.
06-21-2011 04:53 PM
I'm not sure I quite follow what you describe as the first problem. What connection isn't being allowed? Is there a particular connection I should try to make in the sample you provided that will display this?
As for the second problem - picking different parts of buses in different blocks, there are a couple of ways you should be able to do that. When you connect the bus to the subcircuit, it should ask you how you want to handle the connections (assuming you have signals defined on both the internal and the external buses). If you know at that time which top-level signal should connect with which signal line, you can select "Manually rename bus lines for merging" and rename the lines internal to the block to match the bus lines you want to use.
If you don't remember right then which line should be which, or if you add bus lines later, you can also do it after. Connect the bus - the safest options being "Rename bus lines to keep all existing bus lines and nets separate" or "Rename bus lines only to prevent merging nets" in this case, then edit the subcircuit. Double-click on one of the bus entries, and you have the option to select a different line for that entry. Pick the one you want, and tell it that you want to change all of the matching bus entries in that subcircuit. This will select a different bus line for that subcircuit to use in place of the one it was using.
The important part here is that the different instances of the blocks will need to stay consistent with each other (so if, for example, one block uses 8 distinct signals from the bus, then all other instances must also use 8 distinct signals in the same way). If you try to make a change that would make the blocks inconsistent, Multisim will give you the choice of canceling the change, or making the same change to the other blocks (which, come to think of it, might be related to your first problem, but I don't see how yet).
06-22-2011 04:29 PM - edited 06-22-2011 04:31 PM
The A_VTBdbgBus signal are an example where all signal in the base connect the same to both sc's. That works if I first have them all connected when only one sc is in the design, and the copy and paste the second sc.
The A_LVDS_RTbus is an example where half the signals connect in the first sc and half in the next. I am trying to get the R/T 0..3 signals to connect in one, and the R/T 4..7 signals to connect in the other.
I think I may have found my problem. I was not getting the little angled splitter selected when I tried to change the bus line. I was getting the wire selected which does not allow to do that, so I was inserting the but entries new, and finding it changed the bus entry in the other sc as I did so. Making sure I select the actual splitter allows me to change the bus entry without the other sc connection changing.
I understand the need for each sc to be consistent.
Thanks.