Genus Notes
Genus Notes
csh
source /home/install/cshrc
help TUI-202
vls -a TUI-202
report_messages – This command gives the detailed information for each message issued in your
current Genus run including the number of times a particular errors or warning has been appeared as
below. By default this command displays only the messages which were not reported till last report. Use -all
option to display all the messages
We can also use man command as below. It displays in detail as well as in new window
==> The help command displays in the script itself whereas man takes exclusive window to display it
==>Specify a section number with man command to look for the command or attribute information in the
specific section of the on-line manual.
Commands are in section 1, attributes are in section 2, and messages are in section 3 of the on-line
manual. In the absence of section number, man will search through sections 1, 2, 3 (in this sequence) and
display the first matching manual page.
This is useful in cases where both commands and attributes exist with the same name.
CADENCE DOCUMENTATION CONVENTION
==> The .log file contains the normal logging output, the .cmd file contains the TCL commands that were
executed.
– If you specify two arguments, such as -log "a b", Genus uses these names as the file names without
adding any extension. If you specify -log "mylog mycmd", Genus creates the mylog and mycmd files.
– If you specify one argument, Genus uses it as the prefix for the log and command files. If you specify -
log test, Genus creates the test.log and test.cmd files.
– If the prefix has a period in it, the last extension is stripped off for the .cmd usage. For example, -log
out.log will result in out.log and out.cmd, and -log out.a.log will result
in out.a.log and out.a.cmd.
If you do not specify the -log option, Genus creates the genus.log and genus.cmd files by default.
The count will be incrementing for each session like log1 , log2 , cmd1 , cmd2
You can prevent creation of a file by using /dev/null. For example, -log "my.log
/dev/null" only creates my.log.
Customize the log file within a Genus session through the stdout_log attribute:
If a log file already exists, the new log file will have either the number “ 1” appended to it, or the number will
be incremented with “1”.
•To customize the command file name, use the command_log attribute within a Genus session. The
following example changes the default name of genus.cmd to genus_command_list.txt:
If a command file already exists, the new command file will have the number “ 1” appended to it, or the
number will be incremented with “1”.
==> To control the amount of information written in the output logfiles, use the following command:
The value can be range between 0 and 9. For debugging the value should be 9 and the
recommended value in general is 6
All commands in the Genus shell output their data to the standard output device ( stdout). To save a
record of the data produced, you can redirect the command’s output to a file. This redirection has
the same form as the standard UNIX redirection:
•One greater-than sign (>) writes output to the specified file, overwriting any existing file.
•Two greater-than signs (>>) appends output to an existing file, or creates a new file if none exists.
The following example redirects the output from a timing report into a file:
genus:root: 20> report_timing > timing.rpt
This example appends the timing report to an existing file:
genus:root: 21> report_area >> design.rpt
SPECIFYING LIBRARIES
If your design requires multiple libraries, you must load them simultaneously. Genus uses the operating and
nominal conditions, thresholds, and units from the first library specified. If you specify libraries sequentially,
Genus uses only the last one loaded.
In the following example Genus uses only lib_name2.lib as the target library:
set_db library lib_name.lib
set_db library lib_name2.lib
To specify multiple libraries using the library variable:
lib_name2.lib}
When listing files, use the Tcl list syntax: {entry1 entry2 ...}.
You can specify individual library cells that you want to be excluded during synthesis with
the avoid attribute:
set_db cell_name(s) .avoid {true | false}
•The following example prevents the use of cells whose names begin with snl_mux21_prx and all cells
whose names end with nsdel:
set_db { lib_cell:nlc18_custom/snl_mux21_prx* } .avoid true
set_db { lib_cell:nlc18/*nsdel } .avoid true
•The following example prevents the use of the arithmetic shift right ChipWare component
(CW_ashiftr):
set_db hdl_component:CW/CW_ashiftr .avoid true
You can instruct Genus to use a specific library cell even if the library’s vendor has explicitly marked the cell
as “don’t use” or “don’t touch”. The following sequential steps illustrate how to force this behavior:
1.Set the preserve attribute to false on the particular library cell:
set_db libcell_name .preserve false
genus is a Tcl-based tool and therefore you can create scripts to execute a series of commands instead of
typing each command individually. The entire interface is accessible through Tcl and true Tcl syntax and
semantics are supported. You can create the script(s) in a text editor and then run them in one of two ways:
•From the UNIX command line, use the -f option with the genus command to start Genus and run your
scripts immediately:
unix> genus -f script_file1 -f script_file2 ...
– Include -f switch as many number of times for the scrip files to run
•You can simultaneously invoke Genus as a background process and execute a script by typing the
following command from the UNIX command line:
unix> genus < script_file_name &
•If Genus is already running, use the include or source command followed by the names of the
scripts:
genus:root: 1> include script_file1 script_file2 ...
or:
genus:root: 2> source script_file1 script_file2 ...
Use the -mixvlog option to ask Genus to automatically read Verilog source file in Verilog1995,
Verilog2001, or SystemVerilog standard languages, according to the file extension. It will also consider any
other extension as specified by the hdl_set_vlog_file_extension command.
The default file extensions for Verilog standards are as follows: Verilog 1995: .v95, .v95p Verilog
2001: .v, .v2k, .vp System Verilog: .sv, .svp
Examples:
The above command will automatically parse bot.v in v2001 format and test.sv in System Verilog
format.
read_hdl -mixvlog -f optionfile
The above command will automatically parse bot.v1 in v2001 language and test.v2 in System
Verilog.
•Specify the default language version to read HDL designs using the following attribute:
set_db hdl_language {v2001 | v1995 | sv | vhdl}
Default: v2001
This attribute ensures that only HDL files that conform to the appropriate version are parsed
successfully.
Using the -language option with the
By default, Genus reads Verilog, not VHDL. When reading in Verilog, by default Genus reads Verilog-2001
not Verilog-1995. When reading VHDL, by default Genus reads VHDL-1993, not VHDL-1987.
n Genus, a clock waveform is a periodic signal with one rising edge and one falling edge per period. Clock
waveforms may be applied to design objects such as input ports, clock pins of sequential cells, external
clocks (also known as virtual clocks), mapped cells, or hierarchical boundary pins.
You can group clocks that are synchronous to each other, allowing timing analysis to be performed between
these clocks. This group of clocks is called a clock domain. If a clock domain is not specified, Genus will
assume all the clocks are in the same domain.
By default, Genus assigns clocks to domain_1, but you can create your own domain name with the -
domain argument to create_clock.
The following example demonstrates how to create two different clocks and assign them to two separate
clock domains:
create_clock -domain domain1 -name clk1 -period 720 [get_db ports *SYSCLK]
create_clock -domain domain2 -name clk2 -period 720 [get_db ports *CLK]
To remove clocks, use the delete_obj command. If you have defined a clock and saved the object variable,
for example as clock1, you can remove the clock object as shown in the following example:
delete_obj $clock1
The following example shows how to remove the clock if you have not saved the clock object as a variable:
delete_obj [get_db clocks clock_name]
When a clock object is removed, external delays that reference it are removed, and timing exceptions
referring to the clock are removed if they cannot be satisfied without the clock.