@@ -762,3 +762,78 @@ def stackup_limits(self, only_metals=False):
762
762
)
763
763
h_stackup = abs (float (topz ) - float (bottomz ))
764
764
return topl .GetName (), topz , bottoml .GetName (), bottomz
765
+
766
+ def create_symmetric_stackup (
767
+ self ,
768
+ layer_count ,
769
+ inner_layer_thickness = "17um" ,
770
+ outer_layer_thickness = "50um" ,
771
+ dielectric_thickness = "100um" ,
772
+ dielectric_material = "FR4_epoxy" ,
773
+ soldermask = True ,
774
+ soldermask_thickness = "20um" ,
775
+ ):
776
+ """Create a symmetric stackup.
777
+
778
+ Parameters
779
+ ----------
780
+ layer_count : int
781
+ Number of layer count.
782
+ inner_layer_thickness : str, float, optional
783
+ Thickness of inner conductor layer.
784
+ outer_layer_thickness : str, float, optional
785
+ Thickness of outer conductor layer.
786
+ dielectric_thickness : str, float, optional
787
+ Thickness of dielectric layer.
788
+ dielectric_material : str, optional
789
+ Material of dielectric layer.
790
+ soldermask : bool, optional
791
+ Whether to create soldermask layers. The default is``True``.
792
+ soldermask_thickness : str, optional
793
+ Thickness of soldermask layer.
794
+ Returns
795
+ -------
796
+ bool
797
+ """
798
+ if not layer_count % 2 == 0 :
799
+ return False
800
+
801
+ if soldermask :
802
+ self .stackup_layers .add_layer ("SMB" , None , "SolderMask" , thickness = soldermask_thickness , layerType = 1 )
803
+ layer_name = "BOTTOM"
804
+ self .stackup_layers .add_layer (layer_name , "SMB" , fillMaterial = "SolderMask" , thickness = outer_layer_thickness )
805
+ else :
806
+ layer_name = "BOTTOM"
807
+ self .stackup_layers .add_layer (layer_name , fillMaterial = "Air" , thickness = outer_layer_thickness )
808
+
809
+ for layer in range (layer_count - 1 , 1 , - 1 ):
810
+ new_layer_name = "D" + str (layer - 1 )
811
+ self .stackup_layers .add_layer (
812
+ new_layer_name , layer_name , dielectric_material , thickness = dielectric_thickness , layerType = 1
813
+ )
814
+ layer_name = new_layer_name
815
+ new_layer_name = "L" + str (layer - 1 )
816
+ self .stackup_layers .add_layer (
817
+ new_layer_name , layer_name , "copper" , dielectric_material , inner_layer_thickness
818
+ )
819
+ layer_name = new_layer_name
820
+
821
+ new_layer_name = "D1"
822
+ self .stackup_layers .add_layer (
823
+ new_layer_name , layer_name , dielectric_material , thickness = dielectric_thickness , layerType = 1
824
+ )
825
+ layer_name = new_layer_name
826
+
827
+ if soldermask :
828
+ new_layer_name = "TOP"
829
+ self .stackup_layers .add_layer (
830
+ new_layer_name , layer_name , fillMaterial = "SolderMask" , thickness = outer_layer_thickness
831
+ )
832
+ layer_name = new_layer_name
833
+ self .stackup_layers .add_layer ("SMT" , layer_name , "SolderMask" , thickness = soldermask_thickness , layerType = 1 )
834
+ else :
835
+ new_layer_name = "TOP"
836
+ self .stackup_layers .add_layer (
837
+ new_layer_name , layer_name , fillMaterial = "Air" , thickness = outer_layer_thickness
838
+ )
839
+ return True
0 commit comments