Dr.

# Error messages and solution with Cadence tools

Some errors I encountered during the development with Cadence tools. Will be updated if I encounter new problems.

#### NCLaunch doens’t find the Verilog descriptions of standard cells (AND2, INVERT, XOR2, …) after synthesis

After running the synthesis the logic description is translated into the available standard cells provided by the manufacturer. If the NCLaunch compilation of the Verilog output fails, claiming it coudn’t find the modules for standard cells (like AND2, DFFR, OAI21 and so on), it is probably because NClaunch doens’t know where the descriptions for these cells are. The solution is to include them into the cds.lib file1, in my case it is:

DEFINE cmos8rf_lib /usr/ibm_lib/cmos8_relDM/ibm_cmos8rf/std_cell/relDM/verilog/cmos8rf_lib

After that it should work fine.

#### Timescale derective missing

When you get the error Timescale directive missing on one or more modules when running the elaborator to start a simulation, well, you have to give it some timescale. You can give this option in NCLaunch by selecting »Tools« → »Elaborator« and in the new window add at »Other options« the following:

-timescale 1ns/1ns -override_timescale

If you need other timescale values, feel free to adjust.

#### How to include the timing information in a SDF file into VHDL testbench?

I have a project in Verilog as an output of the place and route process. My testbench on the other hand is written in VHDL, so how do I include the timing information, which is another output of the place and route, into my testbench?

First, compile the SDF file, using ncsdfc. I’m doing that from the NCLaunch window by double-clicking on it2. After that I have a project.sdf and project.sdf.X file, the latter being the compiled version.

To include this into your simulation, you need to annotate it. For Verilog you would use a command3, for VHDL you need a command file. An example would be this:

// SDF command file sdf_file
COMPILED_SDF_FILE = "project.sdf.X",
SCOPE = :inst_TOP,
MTM_CONTROL = "TYPICAL",
SCALE_FACTORS = "1.0:1.0:1.0",
SCALE_TYPE = "FROM_MTM";

By annotating the SDF with the command file to the elaborator project you are able to simulate with timing information.

The scope you have to give is the instance, the SDF is generated for, starting at the top level instance of your code. In my case my top level is instantiated with »inst_TOP« in the testbench.

You can load this configuration file in the advanced settings of the elaborator (Menu → Tools → Advanced Options → Elaborator … → Annotation) and then run the elaborator on your testbench.

1. It is located in the directory you started NCLaunch. []
2. Make sure you have „*.sdf“ in your filter list, otherwise you will not see the SDF file. []
3. $sdf_annotate("project.sdf",TESTBENCH.INSTANCE,,,"TYPICAL"); [] Dr. # Wifi and Email at INFN Torino This post was laying around a while because I was in the process of moving from posterous to this own WordPress installation. So the introduction is not really accurate, the rest should remain applicable. So I started my time in Torino and wanted to continue using my Macbook, same as I did in Jülich. I had an account at the INFN, the national research facility for physics, and with that account comes also a email address and wifi connection. #### Email setup To include the email account into your favorite email program, you have to create a new IMAP account with the following settings: • Type: IMAP • Server: imap.to.infn.it • Email: <lastname>@to.infn.it1 • Username: <lastname> • Password: same as cluster password • Port: default (993) • Use SSL: yes And for the outgoing SMTP server: • Type: SMTP • Server: smtp.to.infn.it • Authentification: none • Port: default (587) • Use SSL: yes There is also a webpage describing the setup of the INFN email account in Thunderbird, but it is only in Italian. Nevertheless, it includes some screenshots and therefore it might be helpful. #### Wifi setup In Torino you see three different wireless networks, when you are at the physics institute: eduroam, INFN-Web, and INFN-dot1x. I already had eduroam access from my Jülich account, which is in principle a really nice feature. Unfortunately, several services in Torino are not available with eduroam, such as custom ports for webpages and ssh connections. A real bummer is, that I cannot use VPN from the wireless networks here, but as it turns out, none of them works. Still, I wanted to use something else than eduroam. As mentioned before, together with the INFN IT account (Mail, Cluster, etc.) also comes the Wifi access. After connecting to INFN-Web a popup occurs asking for account data, which in my case is <lastname>@to.infn.it together with the password set on the Cluster2. This is without further setup, but you have to enter these details for every connect. Much more convenient is the INFN-dot1x network — after you have put some work into the first configuration. Well, only three easy steps are necessary: 1. Download and install the INFN-dot1x-forLion.mobileconfig3 the profile for OSX. 2. Connect to INFN-dot1x, but enter firstname.lastname@to.infn.it as the username. 3. Have fun!4 Some screenshots on the how-to page of the IT department might be helpful, but same as for the email setup: it is only in Italian. 1. As the local part it got my lastname, maybe you have to adopt this to your situation. [] 2. Wich is reachable from the outside with ssh to zoroastro.to.infn.it. [] 3. Local backup: INFN-dot1x-forLion.mobileconfig.zip [] 4. Of courese without VPN. That would be too insecure or whatever. [] Dr. # Make Sublime Text 2 automatically compile glossaries Note: The LaTeXTools Plugin got an update, which made these changes useless because the build wouldn’t work anymore. You can now choose the build system by a tag in the beginning of the file, but the glossaries are not compiled automatically. While trying to include the glossaries LaTeX package into my project, I figured that Sublime Text 2 doesn’t automatically compile the glossary list. Unfortunately it takes some work, so I will show you how. First take this simple LaTeX file: \documentclass{article} % Load hyperref before glossaries \usepackage[colorlinks]{hyperref} \usepackage[acronym]{glossaries} % Define the acronyms \newacronym{led}{LED}{light-emitting diode} \newacronym{eeprom}{EEPROM}{electrically erasable programmable read-only memory} \makeglossaries \begin{document} \tableofcontents \section{Student Memoirs} When I was a student I often left bits of electronic circuitry in my pockets, such as \glspl{led} and \glspl{eeprom}, which often ended up in the washing machine. The \glspl{led} didn't fair too badly, but the \glspl{eeprom} frequently broke. \printglossaries \end{document} So far so good. We include the glossaries package with the predefined acronym set (line 5), created some acronyms (line 8-11), included them in the text and printed the list of Acronyms (line 23). If you compile this, you will notice that the list is not printed. The reason for this is, like for bibliography, a list has to be compiled first, but of course it is not by default. You could do it by manually running the makeglossaries command, but I’m using Sublime Text to reducing the steps to reach the final product1. So an automatism is needed. Since Sublime Text is using latexmk for creating the PDF, we need a modified runscript for this. Save the following code somewhere on your Computer, where you find it most suitable. I’ve put it into the Sublime-Package-Users directory (~/Library/Application Support/Sublime Text 2/Packages/User). # The main command for pdflatex$pdflatex = 'pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %O %S';

# Always create PDFs
$pdf_mode = 1; # Use Skim.app to preview generated PDFs$pdf_previewer = 'open -a Skim.app %S';

# Use continous mode by default
#$preview_continuous_mode = 1; # output to the directory called output in the current directory #$out_dir = './output';

# file extensions to remove when cleaning
$clean_ext = 'acn acr alg aux bbl bcf blg brf fdb_latexmk glg glo gls idx ilg ind ist lof log lot out run.xml toc dvi'; # make latexmk run makeglossaries automatically add_cus_dep('glo', 'gls', 0, 'makeglossaries'); add_cus_dep('acn', 'acr', 0, 'makeglossaries'); sub makeglossaries { system "makeglossaries$_[0]";
if ( -z "$_[0].glo" ) { open GLS, ">$_[0].gls";
close GLS;
}
return 0;
}

Now we need to tell Sublime Text to use this file. The compilation is managed by the LaTeX.sublime-build file in the plugin’s directory. Because an update will overwrite this file, you should make a copy to the Users directory:

cp ~/Library/Application Support/Sublime Text 2/Packages/LaTeXTools/LaTeX.sublime-build ~/Library/Application Support/Sublime Text 2/Packages/User

Now you open this file in a texteditor and edit the following

		"cmd": ["latexmk", "-cd",
"-e", "\\\$pdflatex = 'pdflatex %O -interaction=nonstopmode -synctex=1 %S'",
//"-silent",
"-f", "-pdf"],


to this:

		"cmd": ["latexmk", "-r",
"/Users/USERNAME/Library/Application Support/Sublime Text 2/Packages/User/LaTeX.latexmk"],

Make sure to include your user on the place of USERNAME, otherwise this won’t work.

After this, everything should work and you have now a glossary at the end of your LaTeX generated PDF. More documentation about the »glossaries« package: latex-community.org, manual (PDF).

Have fun!

Based on this forum post and this blog entry.

1. the PDF in this case []