Electronic – Change only one side the roundness in SMD

eaglepcb-designsurface-mount

I'm doing my own component in Eagle for a PCB design. This is the footprint that the manufacturer gives:

enter image description here

But I have a problem with the SMD roundness when I try to draw the SMD footprint at the sides. I don't know if it is possible to draw with 100% roundness at only one side of SMD foot print like in the image and leave the another side with 0% roundness.

Best Answer

There are several different options to do this. Two are quite easy but don't give you exactly the right result, and the third is a bit more complex but achieves exactly what is shown. All three are shown in the image below:

Different shapes

  1. The first option, pictured in the centre above, is simply to square off the corners. Here I inserted simply a 2.5mm x 1mm SMD to get the pad with Stop disabled. Then I added a 2.8mm x 1.3mm rectangle on the TStop layer to get the recommended stop mask clearance. This is the most straight forward option and I highly doubt the lack of curved corners will cause any issue whatsoever.

  2. The second option, pictured rightmost, is to use a curved SMD pad which extends outwards from the side of the chip - basically beyond where the pad is recommended. To draw it, I added an SMD of size 3mm x 1mm to get the main pad. For this I again disabled the Stop, and this time set the roundness to 100. On the Tstop layer, I drew a 2.15mm x 1.3mm rectangle and a 0.65mm circle with zero width. This gives the required stop mask aperture. The actual aperture is exactly as required in the datasheet, so despite the extra bit of copper, the exposed region will be the same.

  3. The third option, pictured leftmost, gives exactly what you want, but is the most complicated of the three. Firstly a 2mm x 1mm SMD is inserted which gives you the main pad - again with Stop disabled. Then a polygon (must be a polygon to avoid the DRC generating clearance warnings) is drawn over the top. The polygon was drawn with a width of 0.2mm which will pass 6mil minimum clearance DRC checks (you can make it thicker if needed), and drawn so that its outer dimension (factoring in the width) is exactly the size needed. Over the top, a rectangle of size 2.15mm x 1.3mm was drawn on the TStop layer, along with a 0.65mm radius circle with a width of 0. While the most complex, this gives you the exact pad recommended in the datasheet.


For reference, the following is the library I made to produce the footprints shown. Copy it as shown into a file called whatever.lbr and open in the Eagle library editor. You can simply group the pad you want to use, and copy the group multiple times into your own footprint.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="6.6.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.05" unitdist="inch" unit="inch" style="lines" multiple="1" display="yes" altdistance="0.025" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="yes" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="yes" active="yes"/>
</layers>
<library>
<packages>
<package name="TEST">
<smd name="P$1" x="-2" y="0" dx="2" dy="1" layer="1" rot="R90" stop="no" cream="no"/>
<circle x="-2" y="1" radius="0.65" width="0" layer="29"/>
<smd name="P$2" x="0" y="0.25" dx="2.5" dy="1" layer="1" rot="R90" stop="no" cream="no"/>
<smd name="P$3" x="2" y="0" dx="3" dy="1" layer="1" roundness="100" rot="R90" stop="no" cream="no"/>
<polygon width="0.2" layer="1">
<vertex x="-2.4" y="-0.9"/>
<vertex x="-1.6" y="-0.9"/>
<vertex x="-1.6" y="1" curve="180"/>
<vertex x="-2.4" y="1"/>
</polygon>
<rectangle x1="-2.65" y1="-1.15" x2="-1.35" y2="1" layer="29"/>
<rectangle x1="-0.65" y1="-1.15" x2="0.65" y2="1.65" layer="29"/>
<rectangle x1="1.35" y1="-1.15" x2="2.65" y2="1" layer="29"/>
<circle x="2" y="1" radius="0.65" width="0" layer="29"/>
</package>
</packages>
<symbols>
</symbols>
<devicesets>
</devicesets>
</library>
</drawing>
</eagle>