Cadence® system design and verification solutions, integrated under our System Development Suite, provide the simulation, acceleration, emulation, and management capabilities.
System Development Suite Related Products A-Z
Cadence® digital design and signoff solutions provide a fast path to design closure and better predictability, helping you meet your power, performance, and area (PPA) targets.
Full-Flow Digital Solution Related Products A-Z
Cadence® custom, analog, and RF design solutions can help you save time by automating many routine tasks, from block-level and mixed-signal simulation to routing and library characterization.
Overview Related Products A-Z
Driving efficiency and accuracy in advanced packaging, system planning, and multi-fabric interoperability, Cadence® package implementation products deliver the automation and accuracy.
Cadence® PCB design solutions enable shorter, more predictable design cycles with greater integration of component design and system-level simulation for a constraint-driven flow.
An open IP platform for you to customize your app-driven SoC design.
Comprehensive solutions and methodologies.
Helping you meet your broader business goals.
A global customer support infrastructure with around-the-clock help.
24/7 Support - Cadence Online Support
Locate the latest software updates, service request, technical documentation, solutions and more in your personalized environment.
Cadence offers various software services for download. This page describes our offerings, including the Allegro FREE Physical Viewer.
The Cadence Academic Network helps build strong relationships between academia and industry, and promotes the proliferation of leading-edge technologies and methodologies at universities renowned for their engineering and design excellence.
Participate in CDNLive
A huge knowledge exchange platform for academia to network with industry. We are looking for academic speakers to talk about their research to the industry attendees at the Academic Track at CDNLive EMEA and Silicon Valley.
Come & Meet Us @ Events
A huge knowledge exchange platform for academia. We are looking for academic speakers to talk about their research to industry attendees.
Americas University Software Program
Join the 250+ qualified Americas member universities who have already incorporated Cadence EDA software into their classrooms and academic research projects.
EMEA University Software Program
In EMEA, Cadence works with EUROPRACTICE to ensure cost-effective availability of our extensive electronic design automation (EDA) tools for non-commercial activities.
Apply Now For Jobs
If you are a recent college graduate or a student looking for internship. Visit our exclusive job search page for interns and recent college graduate jobs.
Cadence is a Great Place to do great work
Learn more about our internship program and visit our careers page to do meaningful work and make a great impact.
Get the most out of your investment in Cadence technologies through a wide range of training offerings.
Overview All Courses Asia Pacific EMEANorth America
Instructor-led training [ILT] are live classes that are offered in our state-of-the-art classrooms at our worldwide training centers, at your site, or as a Virtual classroom.
Online Training is delivered over the web to let you proceed at your own pace, anytime and anywhere.
Exchange ideas, news, technical information, and best practices.
The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information.
It's not all about the technlogy. Here we exchange ideas on the Cadence Academic Network and other subjects of general interest.
Cadence is a leading provider of system design tools, software, IP, and services.
I am trying to modify the ns_gerber.il to add some extra layers to the conductor films. My if-then statements seem to work ok for the TOP and BOTTOM layers but I cannot get the inner layers to work. If you look at the commented out lines in the code below you can see my various attempts using else, != and using layer names directly. Any help telling me where I am going wrong greatly appreciated.Jim O'Mahony
; get conductor layersmy_layers = axlGetParam("paramLayerGroup:etch")etchcount = 0i = 0foreach(layer my_layers->groupMemberslayerparams = axlLayerGet(strcat("ETCH/" layer))if(layerparams->type=="PLANE" && layerparams->drcPhotoType=="negative" thenpm = 0 ; plot mode negativeelsepm = 1 ; plot mode positive)
if(layer=="TOP" then tex = strcat("Texttop")
else tex=strcat("Text" layer))
;if(layer=="L1" then tex = strcat("Text" layer));if(layer=="L2" then tex = strcat("Text" layer));if(layer!="TOP" then tex = strcat("Text" layer)if(layer=="BOTTOM" then tex = strcat("Textbot"))
sprintf(film_name "%d_%s" ++i layer)ld1 = strcat("VIA CLASS/" layer)ld2 = strcat("PIN/" layer)ld3 = strcat("ETCH/" layer)
tc = strcat("BOARD GEOMETRY/TOOLING_CORNERS")texlayer = strcat("BOARD GEOMETRY/" tex)
data_list = (list ld1 ld2 ld3 tc texlayer)param_list = (list 0 0 0 ulw sbb pm 0 0 0 0 0 1 1)(axlfcreate film_name param_list data_list)++etchcount)
Jim O'MahonyStudiel Toulouse
The code works fine for me. For each layer I get the correct "tex" strings. What is exactly failing for you?
I originally created ns_gerber as one of my first skill programs, so depending on how early the code is, please check the mask layers carefully since there was a subclass issue in the very early versions.
also, please tell me what you're trying to acomplish and I may be able to guide you in the correct direction.
In reply to Ejlersen:
Thanks guys, I realised my initial mistake after driving home for an hour ! I think I get no response for the inner layers because they do not exist in the design. To explain, I have existing inner layers called textc2(first inner), textc3(second inner) etc. depending on the number of layers in the design. I see from the exising code that Cadence uses L1 for the first inner layer and L2 for the next etc. Having thought about it, I would rather adapt the code to match my existing library layer names than change the library. Therefore gives me the problem of how to parse the layer name in order to strip the "L" and leave the layer number (as integer value) and then add one to it (to say variable foo) before using a stringcat("textc" foo) to finish.Many years ago I used grep and/or awk to do substitutions but I have no idea how to do that in Skill code.
You already have i as an integer that increases everytime a layer is passed in the code.
so you could do something like this to run through the if then loop if thats where the trouble is
strcat("textc" sprintf(nil "%d" i))
if i=3 this would give you textc3 - is that what you're looking for?
The originally idea behind the code was that I've seen a lot of boards fail because somewhere in the process 2 layers was mixed up and the PCB produced did not have the correct layer order. So the code generates a film for each layer in the board but adds an integer number in front to show the correct order as part of the artwork film naming. The code does not really care what naming convention you use for the board, if it is a 6 layer board there will be 6 artwork films for the conductor/plane layers named 1_TOP, 2_yourname of first inner layer, 3_ your name for third inner layert ...... 6_bottom..
The code should be easy to tweak to suit your needs, but I'm not sure that I understand exactly what it is you want, so if the above does not answer your question, please let me know.
Thanks Ole, that is exactly what I need.When we add a layer box to the board it has its own set of subclass layers BOARD GEOMETRY/Texttop etcwhich I need to add to the artwork stack for each of the etch layers.My problem is that my main job is the creation of pcbs, while looking for I ways to improve / customise the cadsystem in downtime between projects. That means I need to learn more about Skill functions and variables likesprintf, %d, %s etc. when I have the time. Definitely quicker to ask a question on the forum though.