Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Keysight Momentum LTD file issues

Status
Not open for further replies.

Puppet123

Full Member level 6
Joined
Apr 26, 2017
Messages
356
Helped
22
Reputation
44
Reaction score
21
Trophy points
18
Activity points
3,059
Hello,

I have a substrate file (.ltd) for a new (year old) PDK and try using it in an old Keysight ADS (2011).

This version of ADS (2011) will load other substrate files from other PDKs fine, just not this one for some reason.

It does not recognize it and it keeps crashing the Momentum Simulator.

I am using it with Goldengate/Dynamic Link with Cadence.

Has anyone ever seen this type of issue ?

Thanks.
 

Keysight keep adding new EM features and some are referenced in the *.ltd file, for example derived layers.
*.ltd structure is quite simple - You can open the file in a text editor and compare the entries to an older format that loads properly.
 

Hello Volker@muehlhaus,

Thank you.

Yes, the only difference is the derived mask entries and I think thats making ADS2011 not work.

What are the derived mask entries and can I get rid of them ? Just zap it out of the ltd file ?

Where is the format, code of the ltd file explained (dervied mask etc) ? In the ADS help ?

I also used the subtrate editor to convert it to an .slm file - it still didnt work.

Thanks.
 
Last edited:

I don't know an official document of the Momentum file formats.

Derived layer operations can be used to create an extra simulation layer from layout layers, e.g. by using AND/OR/XOR or merge or oversize commands. From what I remember, this was a new feature in ADS 2012, and ADS 2011 does not support derived layer operations.

Some EM layers will reference the derived layers (missing if deleted), I don't know how import handles that. It might work, or throw an error, I never tried that.
 

Hello,

Thank you for your response.

If there is no document, then where are derived layers described ?

If I am going to modify the ltd file then I need to know the "code" of this ltd file.

The import didnt work - I converted it to slm and it didnt work.

So again, where are derived layers or any part of the ltd file code stored ? Is this just in the regular ADS help ?

I looked up derived layers and found nothing.

Thanks.
 

If there is no document, then where are derived layers described ?

Derived layer are described in ADS help - but not in your version 2011 because that feature was introduced in ADS 2012.
edit: Looking at my own appnote on using derived layers, I see that derived layers was extended in ADS2012, and there had been limited functionality in ADS 2011 already.

I learned about the Momentum file formats by staring at the files until everything made sense. It's not that complicated, just start from a simple example.

Below is an example from an *.ltd using derived layers. You can see that two derived layers (Via1_Merged and Via2_Merged) are created using an operation "growEnvelope" from layers Via1 and Via, and located on layers 1200 and 1201. You can then see where they are located in the stackup and used instead of the original Via1 and Via. This is the part that you would need to clean up.

Or just use a newer version of ADS to read the *.ltd into the ADS substrate editor and convert to *.matl. Then you can resolve/remove the derived layer stuff, and export to *.ltd again.


(...)

BEGIN_DERIVEDMASK
DERIVEDMASK DerivedMask_Via1_Merged OPERATOR="growEnvelope" MASK={Via1} DERIVEDMASK_PROPERTIES = { "distance=2e-07" }
DERIVEDMASK DerivedMask_Via2_Merged OPERATOR="growEnvelope" MASK={Via2} DERIVEDMASK_PROPERTIES = { "distance=2e-07" }
END_DERIVEDMASK

(...)

BEGIN_MASK
MASK 8 Name=Metal1 PRECEDENCE=0 COLOR="39bfff" MATERIAL=Metal1_SG13 OPERATION=OperationThickness_Metal1
MASK 10 Name=Metal2 PRECEDENCE=0 COLOR="ccccd9" MATERIAL=Metal2_SG13 OPERATION=OperationThickness_Metal2
MASK 19 Name=Via1 COLOR="ccccff"
MASK 29 Name=Via2 COLOR="ff3736"
MASK 1200 Name=Via1_Merged PRECEDENCE=0 COLOR="00008b" DERIVEDMASK=DerivedMask_Via1_Merged MATERIAL=Via1 OPERATION=OperationDRILL
MASK 1201 Name=Via2_Merged PRECEDENCE=0 COLOR="006400" DERIVEDMASK=DerivedMask_Via2_Merged MATERIAL=Via2 OPERATION=OperationDRILL
END_MASK

(...)

BEGIN_STACK
TOP OPEN MATERIAL=AIR
INTERFACE Name=__Interface12
LAYER Name=__SubstrateLayer12 HEIGHT=4e-07 MATERIAL=Passive_SG13
(...)
INTERFACE Name=__Interface5 MASK={Metal3}
LAYER Name=__SubstrateLayer5 MASK={Via2_Merged} HEIGHT=1.03e-06 MATERIAL=SiO2
INTERFACE Name=__Interface4 MASK={Metal2}
LAYER Name=__SubstrateLayer4 MASK={Via1_Merged} HEIGHT=9.6e-07 MATERIAL=SiO2
INTERFACE Name=__Interface3 MASK={Metal1}
(...)
INTERFACE Name=__Interface1
LAYER Name=__SubstrateLayer1 HEIGHT=0.0002 MATERIAL=AIR
BOTTOM COVERED MATERIAL=PERFECT_CONDUCTOR
END_STACK
 
Last edited:

Derived layer help chapter (not sure about ADS 2011): Home > Design Tools > Schematic Capture and Layout > Technologies > Layer Definitions
qthelp://ads.2016.01/doc/usrguide/Adding_Derived_Layers.html
 

Hello,

Thank you for writing.

When you say clean up:

1) Do you mean - get rid of the entire DerivedMask section of the ltd file
2) And then getting rid of any Derived Mask Layers anywhere else - is it that simple ?

See below, I literally just took out the dervied mask section and took away the derived mask sections - anything you highlighted.

--
Hello,

Thank you for writing.

When you say clean up:

1) Do you mean - get rid of the entire DerivedMask section of the ltd file
2) And then getting rid of any Derived Mask Layers anywhere else - is it that simple ?

See below, I literally just took out the dervied mask section and took away the derived mask sections - anything you highlighted.

--


(...)

BEGIN_MASK
MASK 8 Name=Metal1 PRECEDENCE=0 COLOR="39bfff" MATERIAL=Metal1_SG13 OPERATION=OperationThickness_Metal1
MASK 10 Name=Metal2 PRECEDENCE=0 COLOR="ccccd9" MATERIAL=Metal2_SG13 OPERATION=OperationThickness_Metal2
MASK 19 Name=Via1 COLOR="ccccff"
MASK 29 Name=Via2 COLOR="ff3736"
END_MASK

(...)

BEGIN_STACK
TOP OPEN MATERIAL=AIR
INTERFACE Name=__Interface12
LAYER Name=__SubstrateLayer12 HEIGHT=4e-07 MATERIAL=Passive_SG13
(...)
INTERFACE Name=__Interface5 MASK={Metal3}
INTERFACE Name=__Interface4 MASK={Metal2}

INTERFACE Name=__Interface3 MASK={Metal1}
(...)
INTERFACE Name=__Interface1
LAYER Name=__SubstrateLayer1 HEIGHT=0.0002 MATERIAL=AIR
BOTTOM COVERED MATERIAL=PERFECT_CONDUCTOR
END_STACK

--

This seems like it is too easy.

Also did you mean converting ltd to slm ? I dont think substrate editor will convert ltd to matl unless I am mistaken.
 
Last edited:

Also did you mean converting ltd to slm ? I dont think substrate editor will convert ltd to matl unless I am mistaken.

Sorry, too later yesterday, I meant the new ADS format *.subst and materials.matdb which are used in the ADS user interface
*.slm was the old format before ADS2011

See below, I literally just took out the dervied mask section and took away the derived mask sections - anything you highlighted.
This seems like it is too easy.

And it worked?

Of course, the derived layers are there for a reason, so just deleting them isn't the final solution. Deleting the layers was just a first step, so that you have an incomplete raw stackup that loads into your substrate editor. The derived layers are referenced in the stackup, so you will need to figure out from the names & operation what that was, and get it back in by other means.
 

Hello,

Thank you for your message.

I think I am starting to understand.

The derived layers perform via simplification and the user sets the merging parameters.

Using your code provided in previous message:

BEGIN_DERIVEDMASK
DERIVEDMASK DerivedMask_Via1_Merged OPERATOR="growEnvelope" MASK={Via1} DERIVEDMASK_PROPERTIES = { "distance=2e-07" }
DERIVEDMASK DerivedMask_Via2_Merged OPERATOR="growEnvelope" MASK={Via2} DERIVEDMASK_PROPERTIES = { "distance=2e-07" }
END_DERIVEDMASK

These vias will be merged at a distance of 0.2um - is that correct ?

Again, using your code provided in previous message:

BEGIN_STACK
TOP OPEN MATERIAL=AIR
INTERFACE Name=__Interface12
LAYER Name=__SubstrateLayer12 HEIGHT=4e-07 MATERIAL=Passive_SG13
(...)
INTERFACE Name=__Interface5 MASK={Metal3}
LAYER Name=__SubstrateLayer5 MASK={Via2_Merged} HEIGHT=1.03e-06 MATERIAL=SiO2
INTERFACE Name=__Interface4 MASK={Metal2}
LAYER Name=__SubstrateLayer4 MASK={Via1_Merged} HEIGHT=9.6e-07 MATERIAL=SiO2
INTERFACE Name=__Interface3 MASK={Metal1}
(...)
INTERFACE Name=__Interface1
LAYER Name=__SubstrateLayer1 HEIGHT=0.0002 MATERIAL=AIR
BOTTOM COVERED MATERIAL=PERFECT_CONDUCTOR
END_STACK

So now the vias are put back in the stack, but instead of the normal via1 and via2 they are put in the stack as merged vias now.

So to put them back to normal via1 and via2 - would I have to just delete the DERIVEDMASK section, and then change the STACK section to put the original via1 and via2
as they were in the original stack up ? Do I have to account for what the derviedmask section did - ie. the distance it was to grow in the revised stack up.

Here is the potential file I am talking about with modifications I would make, the heights in green I am not sure about.

Also, my Keysight ADS substrate editor only converts to slm and not to subst files from ltd. I can only export to slm - will this help me?

Thank you again.

--

BEGIN_MASK
MASK 8 Name=Metal1 PRECEDENCE=0 COLOR="39bfff" MATERIAL=Metal1_SG13 OPERATION=OperationThickness_Metal1
MASK 10 Name=Metal2 PRECEDENCE=0 COLOR="ccccd9" MATERIAL=Metal2_SG13 OPERATION=OperationThickness_Metal2
MASK 19 Name=Via1 COLOR="ccccff"
MASK 29 Name=Via2 COLOR="ff3736"
END_MASK

(...)

BEGIN_STACK
TOP OPEN MATERIAL=AIR
INTERFACE Name=__Interface12
LAYER Name=__SubstrateLayer12 HEIGHT=4e-07 MATERIAL=Passive_SG13
(...)
INTERFACE Name=__Interface5 MASK={Metal3}
LAYER Name=__SubstrateLayer5 MASK={Via2} HEIGHT=1.03e-06 MATERIAL=SiO2
INTERFACE Name=__Interface4 MASK={Metal2}
LAYER Name=__SubstrateLayer4 MASK={Via1} HEIGHT=9.6e-07 MATERIAL=SiO2
INTERFACE Name=__Interface3 MASK={Metal1}
(...)
INTERFACE Name=__Interface1
LAYER Name=__SubstrateLayer1 HEIGHT=0.0002 MATERIAL=AIR
BOTTOM COVERED MATERIAL=PERFECT_CONDUCTOR
END_STACK
 

These vias will be merged at a distance of 0.2um - is that correct ?

So now the vias are put back in the stack, but instead of the normal via1 and via2 they are put in the stack as merged vias now.

Yes, both is correct for my example.

Other examples for derived layers can be boolean operatings for vias that come from the same layout layer, but have different stop position in the stackup, depending on what metal they hit first. Vias down to MIM could be created this way.

So to put them back to normal via1 and via2 - would I have to just delete the DERIVEDMASK section, and then change the STACK section to put the original via1 and via2 as they were in the original stack up ? Do I have to account for what the derviedmask section did - ie. the distance it was to grow in the revised stack up.

In my example, you would just replace the derived layer (merged vias) with the original layer. The distance value is part of via array merging, we remove all that, it is not relevant for the stackup itself.

Here is the potential file I am talking about with modifications I would make, the heights in green I am not sure about.

That is the thickness of the dielectric where the via passes through. It is unchanged when you replace the via layer.

Also, my Keysight ADS substrate editor only converts to slm and not to subst files from ltd. I can only export to slm - will this help me?

I don't see how *.slm could help, it is just for compatibility to ADS 2009 and earlier.
 

Hello,

Thank you for your message.

So basically, what I have done - is that ltd file based on your original code now "correct" and readable by the old version of ADS 2011 ?

So to summarize in editing the LTD file:

1) delete the DERIVED MASK section
2) changed the mergedvia layer name in the BEGIN STACK with the original layer name
3) make no changes in numerical values

Is this correct?

Thank you again.
 

Hello,

I have tried this and it is still not working.

Old ltd files for old ADS have this code:

BEGIN_OPERATION
OPERATION OperationThickness_M1 EXPAND=1.0e-07 DOWN

This new file seems to have
BEGIN_OPERATION
OPERATION OperationThickness_up_0p05 INTRUDE=0.01 UP

I dont think this version of ADS can understand these INTRUDE vs EXPAND commands.

What is this new INTRUDE command even operating on ? There does not seem to be any referencing to a layer like the old EXPAND command.

I am lost.

What do you think ?

Thank you.
 

I was thinking that thick metal options EXPAND and INTRUDE where introduces at the same time. Not sure, I no longer have these very old ADS versions.

There have been so many improvements in Momentum, I really recommend to update to a new version.
 

Hello,

What version should I be safe with considering these changes - ADS 2013, 2014 ? I dont want to install 2017, it it just too big.

What version would you say I would be safe with ?

Thank you.
 

There are many Momentum changes now with every release.
That said, I am still using ADS 2016 a lot.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top