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.

[SOLVED] Creating Milkyway library with macro .lef file

Status
Not open for further replies.

dw_man

Junior Member level 3
Joined
Aug 7, 2013
Messages
26
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
188
I am trying to create a Milkyway library which includes the physical library for a RAM macro. I have the .lef file from the RAM. Can I do this from the Design Vision tool using the create_mw_lib command or will I have to do it from the Milkyway Environment.

I am currently creating the Milkyway library using the create_mw_lib command in the Design Vision tool (using topographical mode) to create the Milkyway library using my reference library.

Thanks
 

You have to create such MW reference libs (FRAM views) either within MilkyWay or within ICC.
SolvNet will show articles if you search for "create FRAM", and there is also a LIBPREP RM-script package available for download as well.
You can also read though the MW docs but it is much easier to copy/paste from a SolvNet article example.
 
  • Like
Reactions: dw_man

    dw_man

    Points: 2
    Helpful Answer Positive Rating
LEF generally read by cadence tools.
FRAM is the LEF equivalent in Synopsys tools.
 

Thanks,

Yes, I managed to create another MilkyWay reference library using the FRAM view of the .lef file and now the check_library command passes with the logic library being consistent with the physical library.

I have included the .db file in the link library. How do I instantiate this RAM macro in my VHDL? I have tried:

mem1 : cell_name port map (....);

but it is telling me that cell_name is unknown when I try to compile the top level VHDL. Is there something else I need to include in the VHDL such as dont_touch?

Thanks.
 

Do you have a "component cell_name is port (...); end component" declaration anywhere for the macro? (e.g. at the top of your architecture body)
Is an error occurring during elaboration and link, or not until the actual compile command is issued? (are you suppressing any link messages?)
Also double-check that the actual cell name in the LEF and DB is consistent with your VHDL cell_name - perhaps you are instead using the library/file name which might be slightly different (e.g. with a suffix for the characterized P/V/T-corner).
 
  • Like
Reactions: dw_man

    dw_man

    Points: 2
    Helpful Answer Positive Rating
I see, it was at the analyze command that I was having trouble with. But, as you say, I didn't realize I still had to declare the component which seems to have fixed the problem.

My cell_name is the same as in my LEF file and in the LIB file. I converted this LIB file to DB myself. The LIB/DB filenames do have a suffix. I assume this is fine as it is the cell names inside these files which are important?
 

I'm not a fan of VHDL due to heavily-typed requirements like that - Verilog does not have a similar requirement.
But I suspect that VHDL-93 and newer versions might only require this for black-boxes (which is what your RAM macro is, since it is not described in RTL anywhere as an entity/architecture).
But don't quote me on that - I'm that much of a VHDL expert.

Yes, the cell name is what matters inside the RTL code.
Typically there will be at least three libraries for min/typ/max characterized speed corners, with different suffixes to names for the library & filename.
But the cell name obviously must not differ across the multiple libs.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top