Get email delivery of the Cadence blog featured here
Hi Everyone!Welcome to my first blog post! My plan for this space is to share with you various tips and tricks in SoC-Encounter as well as new things I learn along the way. I use Encounter every day as part of my job in Cadence Design Services. Knowledge is a two-way street, so I'm hoping that we'll have some good comments revealing how you, the customers, are using Encounter as well. Now, on to business!My team had a situation this week where the followpins (the metal1 std cell rails) did not extend all the way to the edge of a hierarchical block. Depending on your design methodology, this may or may not be a real problem, but for us it was. Of course, we could regenerate the power grid from scratch, but that solution did not appeal to us. It's fairly easy to grab all the metal1 rails and just drag the ends to the edge of the block, so we did that. However, not all of the metal1 rails were showing up in the LEF. Here is the lefOut command we use, so that all power stripes appear as pins: lefOut block.lef -noCutObs -stripePin -pgPinLayers 1 2 3 4 5 6 7 8 9For some reason, only one of our VDD nets (we have two) was being recognized as a power net, so we had VSS pins and VDD pins, but no A_VDD pins. I remembered a script I wrote long ago to read in the power stripes and create square pins on each end of the stripe. I was not relishing having to dig that out and hack it to work for this project. Luckily, createPGPin came to the rescue! At first I thought it would be as tedious as hacking my old script, having to give coordinates for each pin. But a physical pin shape on each power stripe was not necessary. All that was needed was a logical pin in the database, so that lefOut would recognize the stripes as pgPins and create them in the LEF: createPGPin -net A_VDD A_VDD
After doing this, our LEF contained all the pins we wanted and we were back on track. The createPGPin command added a line to the PGPin section of the block.fp file declaring a pin called A_VDD connected to the power net A_VDD. I suppose you could add this line by hand, but using createPGPin is easier, especially if you are scripting up a bunch of changes like this.
If you have some creative uses for createPGpin, let's hear about it in the comments. Is it part of your normal flow? Is it a new command to you, but you can think of ways to use it in your designs? Or maybe you have a different solution to the same kind of problem we had. I look forward to some discussion!
Hi Vimal, I'm not sure if you're talking about signal pins or pwr/gnd pins... could you please post your question with more details to the Digital Implementation Forum? Thanks!
Thanks for the reply Kari. Looks like my metal7 pins were not visible. Rookie mistake! :)
Hi Jason (I recognize you from your interview with BobD), I just tried this in one of my designs and it works. I see the pin right at the coords I gave and on the layer I specified. I can select it and it's called a Physical Pin. This is in 7.1 USR3. Make sure Special Nets are turned on as well as layer 7, and that VDD is in fact the name of your power net. (I know these are obvious things you've probably already checked, but I can't think of any other reasons why it's not working for you.) Let me know if you get it working!
I'm trying to use createPGPin to create a new power pin at a specified location on the specified layer. For example:
createPGPin -geom 7 1700.15 10427.48 1700.25 10428.0 -net VDD VDD
However, nothing seems to be happening. No pin is created. No warnings, errors or informationals are printed to the screen either. Any ideas what I might be doing wrong? Should I be able to see these pins in my floorplan?
Hi Valerie, thanks for commenting! I couldn't find an easy way to remove physical ports. What I would do is edit the DEF, but I know not everyone likes to do that. I'd like to suggest you post the question on the forum - maybe someone else will have an idea.
Hi Kari. Thanks for the entry! We're currently debugging some issues with Encounter dropping connections to the global power net (even though they're initially defined with globalNetConnect). I'll give this a try and see if it makes a difference. Speaking of 'createPGPin', I have a somewhat related question for you. This command works great for adding extra physical ports for a given logical power net. We also need an option to remove these ports. Unfortunately, I haven't been able to locate such a command. Do you know of a way to do this?