Académique Documents
Professionnel Documents
Culture Documents
RTL Synthesis
Magma RTL synthesis includes:
Talus 1.0
RTL Synthesis
Introduction to Magma RTL Synthesis
Import RTL.
Optimize area.
Selecting a scan style, checking DFT rules, and inserting scan are described in the Design for Test
Technology Guide.
Talus 1.0
RTL Synthesis
Importing a Library Volcano
Importing RTL
The import rtl command performs both analysis and elaboration of HDL files.
When you import RTL, Talus Design reads and checks the Verilog and VHDL files for correct syntax.
During elaboration, the tool resolves all unresolved references and instantiates parameterized
modules and entities.
Talus Design RTL synthesis is completely compatible with industry-standard coding styles. Talus
Design supports the Synopsys coding style, commonly used pragmas, and instantiated DesignWare
components. For more information, see Using Pragmas on page 5 and Using DesignWare
Components on page 6.
The VHDL elaboration engine provides correct-by-construction implementation. Correct-byconstruction means that by using simultaneous type and data inference, there should be no formal
mismatches with the IEEE VHDL Language Reference Manual (LRM).
During elaboration, dont-care conditions are detected and automatically optimized without any
additional steps on your part.
After you use the import rtl command, a Talus library called /work is created. After elaboration, the
Talus /work library contains the design data. You can view the design using the Talus GUI or export it
as a Volcano.
Talus 1.0
RTL Synthesis
Importing RTL
Note: Do not export your elaborated design Volcano. Run fix rtl first, and then use the export
volcano command if you need to export a design Volcano.
Table 1:
To Import
Note
VHDL-93
VHDL-87
Verilog
Talus 1.0
RTL Synthesis
Importing RTL
-analyze -vhdl \
reg_file.vhd \
alu.vhd \
cntr.vhd
import rtl
-analyze -verilog \
chip.v \
pads.v \
interface.v \
state.v \
core.v
run rtl elaborate -verilog -case preserve chip
Note: When elaborating a design with mixed-language RTL, use the switch (-vhdl or -verilog) that
matches the language of the top-level design. Then, elaborate the design from the top level.
Using Pragmas
Pragmas are directives that cause the compiler to perform specialized tasks during synthesis. Talus
Design supports several pragmas used by legacy synthesis tools. These directives appear as
comments in Verilog source files; therefore, they are ignored by simulation tools.
Table 2 shows the supported pragmas and how they are used. Although Table 2 uses the
// synthesis and // synopsys syntax of Verilog designs, Talus Design also supports the --synthesis
and --synopsys syntax used in VHDL.
Talus 1.0
RTL Synthesis
Importing RTL
Table 2:
Pragma Directives
Pragma
Function
// synopsys translate_on
// synthesis translate_on
// synopsys translate_off
// synthesis translate_off
// synopsys parallel_case
// synthesis parallel_case
// synopsys full_case
// synthesis full_case
// synopsys map_to_module
// synthesis map_to_module
// synopsys return_port_name
// synthesis return_port_name
// synopsys sync_set_reset
// synthesis sync_set_reset
// synopsys async_set_reset_local
// synthesis async_set_reset_local
Talus 1.0
RTL Synthesis
Flattening Hierarchy During RTL Optimization
Talus 1.0
RTL Synthesis
Flattening Hierarchy During RTL Optimization
Set the minimum size of any user model to remain after flattening.
config rtl autoflatten -min integer
After flattening, models of this size or less remain untouched by flattening.
Set an upper size limit for the combined parent and child user model after flattening.
config rtl autoflatten -max integer
When flattened into the parent cell, if the combination is greater than this maximum size,
flattening does not take place on the child cell.
Flatten only the user models that are purely combinational and that meet the limits you
specify with -min and -max. By default, this option is turned off.
config rtl autoflatten -comb
As noted previously, the exact size of a user model is unknown during high-level optimization (fix rtl),
Talus Design estimates size based on the RTL operation types and bit widths of signals.
Talus 1.0
RTL Synthesis
Flattening Hierarchy During RTL Optimization
To perform autoflattening, integrate the following steps into your synthesis flow:
1. Configure autoflattening options. Use the following syntax:
config rtl autoflatten
[-min integer]
[-max integer]
[-comb]
[-bitwidth_threshold integer]
[-rtl]
Set options according to your design and compute resource requirements. By default, the min, -max, and -comb options apply only to gate-level user models. Use the -rtl switch to
apply the settings to RTL user models.
2. After importing the design, generate initial autoflatten reports.
report rtl autoflatten $m -max_depth int -file output_file
The report rtl autoflatten command uses your autoflattening settings to predict the results of
autoflattening before you run fix rtl. After you run fix rtl, you can use the report rtl
autoflatten command to report the actual results. By default, the report is not hierarchical.
Here, the -max_depth option directs Talus Design to report down int levels of hierarchy from
$m and send the report to output_file. The default for -max_depth is 3.
3. Import your constraint file in SDC format.
import sdc $m -lib $l file.sdc -translation file1.tcl -rtl
The import sdc -rtl command does not annotate timing constraints on the design for timingdriven optimization. Instead, this step identifies all objects in the design that will later be
constrained and preserves those objects during autoflattening. Because timing constraints
are not annotated when you use the -rtl switch, before timing-driven optimization (fix time)
you must import the SDC timing constraints again using import sdc without the -rtl switch.
During the importing of the SDC file, Talus Design translates the constraints into Magma Tcl
commands and creates an M-Tcl file. The M-Tcl file also contains information messages and
warnings. To specify a name for the translation file, use the -translation file_name option.
4. Perform high-level optimization.
fix rtl $m
The fix rtl command performs autoflattening according to the options set in step 1. For more
information about high-level optimization, see Performing High-Level Optimization on
page 10.
Talus 1.0
RTL Synthesis
Performing High-Level Optimization
The fix rtl command uses the settings you specify in the following config... and force... commands:
At the Global Level
Description
10
Talus 1.0
RTL Synthesis
Performing High-Level Optimization
See the fix rtl online man page for information about switching certain optimizations on and off.
binary Talus Design infers a binary encoding style FSM in all instances in the current
model.
one_hot Talus Design infers a one-hot encoding style FSM in all instances in the current
model.
gray Talus Design infers Gray code encoding style FSM in all instances in the current
model.
auto (default) Talus Design infers the most efficient FSM style based on the RTL coding
style.
Talus 1.0
11
RTL Synthesis
Performing High-Level Optimization
Constant propagation
The run rtl optimize command optimizes all models that must proceed through the rest of the Talus
Design flow. When you set the required model argument to the top model of the design, the
command hierarchically works down from the given model.
Set the minimum number of bits for gating (the default is 4).
Choose whether test control points are inserted, and determine their location in relation to the
gating latch.
By default, no test point is inserted; however, when you insert a test point, the default location
is before the latch. Test point insertion applies only to a latch-based clockgating style.
12
Perform hierarchical clockgating with the -share option. By default the global clock is routed
to all registers. Hierarchical clockgating moves the gating point as far up the hierarchy of the
clock tree as possible. This reduces the overall number of gating points.
Talus 1.0
RTL Synthesis
Performing High-Level Optimization
Perform advanced register clockgating with the -effort option. This restructures the enable
logic and the hold MUX to reduce the overall enable logic.
Talus Design supports both rising- and falling-edge sequential elements during clockgate insertion as
well as positive edge-triggered or negative edge-triggered elements.
Table 3 lists clockgating options. For complete syntax and details, see the online man pages.
Table 3:
To Do This
Talus 1.0
Note
13
RTL Synthesis
Performing High-Level Optimization
Table 3:
To Do This
Note
Figure 2 shows a simple circuit that can benefit from clockgate insertion. In this example, the
enabled flip-flops clock in new values when the signal on the enable (E) input is high.
14
Talus 1.0
RTL Synthesis
Performing High-Level Optimization
reg [3:0] q;
always @ (posedge
clk)
begin
if (E)
q <= d;
end
3
q [3:0]
2
1
1
0
Y
D
4
clk
2
1
d
0
D
e
Y
cg_latch
clk
cg
Gating logic
The enabled flip-flops are replaced by D-type flip-flops and an AND gate is inserted in the clock path
(cg in Figure 3). The AND gate gates the clock. By using the latch (cg_latch in Figure 3), the timing
requirements on the gating signal (not E) are relaxed. Figure 3 shows a discrete clockgating solution.
If you use an ICG, the gating logic is contained within a single library cell.
For more information, see the Clock Implementation Technology Guide.
Talus 1.0
15
RTL Synthesis
Performing High-Level Optimization
Expression Merging
Expression merging combines multiple operators into a single expression for synthesis. Synthesizing
larger expressions as a whole can improve both area and delay. If arithmetic functions are not
merged, they are synthesized on an operation-by-operation basis.
Expression merging is enabled by default. To disable or re-enable it, use the config rtl merging
command.
Figure 4 illustrates tree-wise connected operations that are merged into expressions:
Figure 4: Expression Merging of Tree-Wise Connected Operations
assign y = a + b + c * d + e + f;
C4
c
in0
in1
out
C7
in0
star_2_2_2
f
in1
C6
in0
out
out
plus_2_2_2
in1
e
C5
C3
out
plus_2_2_2
out
in0
in1
in1
plus_2_2_2
plus_2_2_2
in0
Talus Design usually introduces operation cells when arithmetic operators are used in the RTL
description. During expression merging, all operation cells in the given model are found
hierarchically. Those that are connected in a tree-wise manner (as in Figure 4) are grouped into
expression models with an additional level of hierarchytool-induced hierarchy. The functionality of
the expression model is conveyed in an expression and implemented by the module generator.
16
Talus 1.0
RTL Synthesis
Performing High-Level Optimization
Resource Sharing
Resource sharing saves area, when possible, by sharing resources such as adders and subtractors,
thus reducing the amount of circuitry needed. This optimization runs on arithmetic operations and
expressions.
Resource sharing occurs both before and after expression merging when you run the run rtl
expression command. Set the scope of resource sharing with the config rtl sharing and force rtl
sharing commands.
Resource sharing can result in a delay penalty. By default, run rtl expression applies maximum
sharing to save area. In rare cases, when sharing limits the performance later in the flow, you can
use the force rtl sharing command to locally prevent sharing.
There are two types of resource sharing:
Single-operation sharing
Sharing on an operation-by-operation basis. Single-operation sharing shares identical
operations over the entire design before expression grouping occurs.
Expression sharing
Sharing parts of arithmetic expressions after expression grouping occurs. Expression sharing
can share operations that are not single operations in the RTL or can map slightly different
operations, such as plus and minus, on shared circuitry.
Figure 5 shows expression sharing of operations that are not single operations in the RTL.
Talus 1.0
17
RTL Synthesis
Performing High-Level Optimization
in0
C18
a
in0
in1
out
in1
plus_7_7_8
plus_7_7_8
C23
out
in0
The operation
a + c is not a
single operation
in the RTL.
+
in1
plus_8_7_9
After Expression Sharing
exp_0
b
z_RS
exp_0
exp_2
a
exp_1
z
z_RS
c
c
exp_2
exp_1
Figure 6 illustrates mapping of slightly different operations on shared circuitry. This sharing can be
applied only after verification of the mutual exclusivity of the results.
18
Talus 1.0
RTL Synthesis
Performing High-Level Optimization
in0
in1
out
C4
out
in0
merge_4
plus_8_8_8
in1
minus_8_8_8
C17
out
in0
in1
out
in0
c
mux_2_8
in1
plus_8_8_8
s
After Expression Sharing
exp_0
a
exp_0
You can enable or disable both kinds of resource sharing with the config rtl sharing command
(global) and the force rtl sharing command (for specific design modules).
Talus 1.0
19
RTL Synthesis
Performing High-Level Optimization
RTL Implementation
RTL implementation maps all RTL constructs and expressions to Magma primitives.
The fix rtl command completes its functions by running the module generator for arithmetic
constructs and expressions.
Talus Design has an extensive RTL library of data-path elements, each with a range of architectures
(area versus speed). For example, arithmetic modules can be implemented using different
architectures such as carry ripple, carry lookahead, carry select, and carry save. These optimized
modules can be automatically inferred from the RTL description or manually instantiated.
The module generator synthesizes these modules and implements expressions found during the
fix rtl command. Use the config rtl datapath command to determine which architectures the
module generator uses.
The best architecture for implementing a module depends on the modules context (for example,
timing). Because the amount of information about context is limited at this point in the flow, these
operators are marked as data-path elements and an initial, smallest-area implementation is
generated. When more physical and timing information becomes available later in the design flow,
Talus Design changes the initial implementation of data-path elements to the best architecture for
that context.
Function
auto
Automatically infers the fastest Default. This option provides the most
or smallest architecture, as
flexibility. During elaboration, Talus Design
appropriate
implements the smallest architecture.
However, during later synthesis this option
allows Talus Design to swap architecture to
the smallest or fastest, as appropriate.
small
fast
20
Note
Talus 1.0
RTL Synthesis
Performing Power Gating by Mapping to Retention Flip-Flops
Inserting testability and uses the test_ena pin to control the testability logic.
Setting all adders to fast carry-lookahead architecture (this overrides the automatic
architecture selection capability).
Talus 1.0
21
RTL Synthesis
Performing Power Gating by Mapping to Retention Flip-Flops
Cell-based method
For this method, no RTL tags are required. Talus Design implements power gating from celllevel specifications you make on the command line or in a script. You can use the cell-based
method to override RTL tags in a block. You can also choose to implement power gating in a
portion of the design using the tag method and in another portion of the design using the cellbased method.
power_gating_cell
power_gating_pin
map_to_logic
power_gating_cell Attribute
This required cell-level .lib attribute specifies that the cell is a retention sequential cell. The attribute
specifies which class of power gating cells the retention cell belongs to. All retention cells must
belong to a group of sequential cells.
After library preparation, all the cells in the library with identical functionality, pinout, and
power_gating_cell attributes are grouped together into a single entity for HyperCell preparation.
The power_gating_cell attribute is stored on the cell's entity and cell model.
The value of the power_gating_cell attribute is accessible using the data get command.
Syntax:
power_gating_cell: "STRING";
.lib example:
power_gating_cell: "CLK_LOW";
22
Talus 1.0
RTL Synthesis
Performing Power Gating by Mapping to Retention Flip-Flops
Example
power_gating_cell: "CTRL_LOW"
talus> data get /mylib/RETDFF
talus> data get /mylib/RETDFF power_gating_cell
CTRL_LOW
power_gating_pin Attribute
This optional pin-level .lib attribute has two components:
power_gating_pin_string
This user-defined string is a label that specifies the power gating pin to which the retention
control signal should be stitched. Within a level of hierarchy, all cells connected to the same
retention control pin must share the same power_gating_pin_string value. The converse
of this statement is also true: Any components that should not be connected to each other
should not share a common power_gating_pin_string value.
power_gating_pin_value
This user-defined value specifies whether the retention control pin should be tied high (1) or
low (0) before the retention pin is stitched to the control signal. The maximum number of
retention control pins for a design is dictated by the number of unique power_gating_pin
classes in the library.
When you specify this attribute, the map_to_logic attribute is not necessary.
Syntax
power_gating_pin : (power_gating_pin_string, power_gating_pin_value)
Where power_gating_pin_string is a string and power_gating_pin_value is either 0 or 1.
The following .lib example specifies that the retention control signal be stitched to all the
power_pin_1 pins and that the pins are tied low before they are connect to the control signal.
Example
power_gating_pin (power_pin_1, "0");
Example
talus> data get /mylib/RETDFF/RETDFF/mpin:RET_CTRL type name gate_area
{{power_gating_pin_val}} connection_class {{power_gating_pin_str}}
capacitance fanout_load max_fanout_force mpin_typ_cap
mpin_typ_cap_parallel model_pin_type access_layer direction flow
Talus 1.0
23
RTL Synthesis
Performing Power Gating by Mapping to Retention Flip-Flops
map_to_logic Attribute
This optional pin-level .lib attribute is placed upon retention control pins of a retention cell. The
attribute specifies whether the retention control pin should be tied high or low before retention pin
stitching.
This attribute is not needed when the power_gating_pin is specified.
Syntax:
map_to_logic: (0 | 1);
.lib example
map_to_logic : "0";
After library preparation, this .lib attribute is stored as an attribute on the pin of the library model that
is accessible using the data get command.
Example
talus> data get /mylib/RETDFF/RETDFF/mpin:RET_CTRL
map_to_logic
0
24
Talus 1.0
RTL Synthesis
Performing Power Gating by Mapping to Retention Flip-Flops
The methods for implementing power gating are described in more detail in Reporting RTL Tagged
Blocks in the Design on page 26.
If you specify the tag as an empty string (tag ""), then untagged RTL blocks are mapped as
specified. If you specify the sequential cell type as an empty string (type ""), Talus Design maps the
RTL blocks to standard sequential cells rather than retention sequential cells.
Talus 1.0
25
RTL Synthesis
Performing Power Gating by Mapping to Retention Flip-Flops
In the following example, the top block $m and all its subblocks will have all sequential cells without
RTL tags mapped to sequential cells to CLK_LOW registers. Any RTL blocks with
ret_clk_low_des3_key_b_r0 or ret_clk_free_des3_key_c_r0 tagging are mapped to CLK_LOW
registers.
Example
force model power_gating $m -tag "" -type CLK_LOW -hier
force model power_gating $m -tag ret_clk_low_des3_key_b_r0 -type CLK_LOW -hier
force model power_gating $m -tag ret_clk_free_des3_key_c_r0 -type CLK_LOW -hier
In the following example, a subblock of the top block, U1, will have its untagged RTL blocks mapped
to CLK_FREE registers. Tagged blocks ret_clk_low_des_key_r and ret_clk_free_desIn_r will also be
mapped to CLK_FREE. And finally, U2 (a subblock of U1) will have all of its blocks tagged
ret_clk_low_key_sel_K_ri mapped to standard cells. Untagged blocks are mapped to CLK_FREE
cells, inherited from the empty string passed to -tag at the $sub1 block.
Example
set sub1 [data list cell_model $m/U1]
set sub2 [data list cell_model $m/U1/U2]
force model power_gating $sub1 -tag "" -type CLK_FREE -hier
force model power_gating $sub1 -tag ret_clk_low_des_key_r -type CLK_FREE -hier
force model power_gating $sub1 -tag ret_clk_free_desIn_r -type CLK_FREE -hier
force model power_gating $sub2 -tag ret_clk_low_key_sel_K_ri -type "" -hier
This example creates a report for subblock U1 and puts the report in a file called
power_gating_sub.rpt.
During fix netlist, the delay primitives are replaced with retention flip-flops or latches. The retention
control pins are tied either high or low, depending upon the values of the map_to_logic or
power_gating_pin attributes.
If scan-equivalent cells exist for the retention registers, DFT scan replacement can replace retention
flip-flops with their scan equivalents. No additional steps to the normal DFT flow are required; the
DFT flow treats retention flip-flops in the same manner as normal flip-flops.
26
Talus 1.0
RTL Synthesis
Performing Power Gating by Mapping to Retention Flip-Flops
Talus 1.0
27
RTL Synthesis
Performing Area-Based Optimization
Unmaps any cells that have been mapped to the technology library by exchanging them for
Magma primitive cells
Removes unreachable and floating cells from a mapped or unmapped model, and removes
single-input and constant cells from an unmapped model
A model cannot have floating logic when it is bound to the physical library. The sweep does
not traverse through latches and, by default, sweeps only the top-level model.
Searches for patterns in the logic and collapses primitive logic nodes into a large logic node
to represent each pattern
Collapsing the patterns prevents logic restructuring from destroying regular patterns.
28
Removes redundancies in the circuits of the model, using constant propagation and single
stuck-at fault testing (SAT) that uses SAT-based automatic test-pattern generation (ATPG)
Talus 1.0
RTL Synthesis
Performing Area-Based Optimization
Flags flip-flop models for replacement with their equivalent scan flip-flops
This step is invoked by fix netlist -scan and is for third-party DFT flows only; it is not
compatible with the Magma DFT flow.
Area-based optimization performs Boolean optimization on the design and maps it to the technology
library. Because no timing constraints are set yet, a smallest-area mapping is done. The result of
area-based optimization is a hierarchical design that is represented as instances of HyperCell
models.
During fix netlist, dont-care conditions for data-path elements are detected and automatically
optimized. The effort level for fix netlist must be set to high. No further action is required on your
part.
Talus 1.0
29
RTL Synthesis
Performing Area-Based Optimization
30
Talus 1.0
RTL Synthesis
Performing Area-Based Optimization
Setting the logic partition size with the force gate independent command. For more
information, see the next section, Setting the Partition Size for Boolean Optimization.
Choosing between two optimization modes set by the force gate opt_mode command. For
more information, see Controlling Boolean Optimization in Timing-Critical Blocks on
page 32.
Talus 1.0
31
RTL Synthesis
Performing Area-Based Optimization
Area mode
In area mode, Boolean optimizations only goal is area reduction. It does not consider delay.
Use the force gate opt_mode area command to explicitly turn on the area mode of run gate
independent. Area mode is the default mode for the fix netlist command.
Delay mode
In delay mode, Boolean optimization considers impact on delay; however, the primary goal is
still area reduction. Use the force gate opt_mode delay command to turn on the delay mode
of run gate independent.
If a block is timing critical, you can use force gate opt_mode delay to turn on the delay mode of
Boolean optimization. However, delay mode can result in larger area than using area mode. If you
need to, you can completely turn off Boolean optimization as described in Setting the Partition Size
for Boolean Optimization on page 31.
To query or clear the mode setting on a block, use query gate opt_mode or clear gate opt_mode.
Exporting a Netlist
At any point in the flow, you can export a Verilog netlist using the export verilog netlist command.
Use the -minsize option to cause all the gates in the generated netlist to be implemented using
minimum drive gates from the technology library. Without this option, the netlist contains cell
instances of HyperCell models. A netlist with instances of HyperCell models cannot be simulated or
used for formal verification.
32
Exports a netlist
Talus 1.0
RTL Synthesis
Applying Timing Constraints
Your constraints should use units that are consistent with the library. You can configure the constraint
reader to use different units using the config sdc unit... commands. These are the alternatives:
config sdc unit time {n p f}
config sdc unit capacitance {n p f}
config sdc unit resistance {k 1 m}
Talus 1.0
33
RTL Synthesis
Applying Timing Constraints
In these commands, the factor represents the multiplier used to describe the SDC constraint units,
as follows:
Factor Multiplier
Factor
Multiplier
nano
kilo
pico
femto
milli
For detailed information about specifying timing constraints, see the fix time information in the
Timing Constraints and Analysis Technology Guide.
34
Talus 1.0
RTL Synthesis
Flattening or Maintaining Hierarchy
Maintaining hierarchy performs no action, other than marking levels of hierarchy that must be
preserved during the exporting of netlists and other data formats. Typical applications are to
preserve subdesigns in the netlist for functional and timing (SDF back-annotation) simulation,
formal verification, third-party ATPG manipulation, and visual inspection.
Flatten all design hierarchy, subject to runtime and capacity limits, as early as possible in the
flow.
Maintain only those parts of the design hierarchy required by your flow.
Note: If you want to turn on register retiming, you must do so before flattening your design. For
more information on register retiming during timing-driving optimization, see Enabling
Register Retiming on page 39.
DFT strategy
Will you do flat or hierarchical insertion with Talus Design? Does your scan flow interface with
third-party DFT tools?
Back-end strategy
For a Talus Design flat flow, the design should be fully flattened (for optimal results) before
placement by the fix cell command.
Talus 1.0
35
RTL Synthesis
Performing Constraint-Based Optimization
For a prototyping flow, the design hierarchy can be partitioned into GlassBox abstractions for
physical implementation.
Typically, the full flattening step is performed at the earliest possible of the following points:
36
Talus 1.0
RTL Synthesis
Performing Constraint-Based Optimization
Maps primitive logic that has been unmapped by the run gate unmap command to
technology-specific instances of HyperCell models based on the specified technology library.
Improves the timing of critical paths by moving late-arriving negative-slack signals to the top
of the logic cones involved in the critical path. Also propagates constants, removes dead
logic, and attempts to limit cell count increase.
Logic restructuring occurs on each path within a slack range in order of path criticality.
Restructures logic on critical paths and performs architecture swapping to reduce delay.
After constraint-based optimization, do floorplanning and physical synthesis. For more information
on floorplanning, see the Floorplanning Technology Guide. For more information on physical
synthesis, see the Physical Synthesis chapter in the Design Optimization Technology Guide.
Talus 1.0
37
RTL Synthesis
Performing Constraint-Based Optimization
For details, syntax, and examples of path group commands, see the online man pages for the
following commands:
report pathgroup
Defining a path group for each different clock domain results in better optimization, and though
optimization can occur for paths that have different clock domains, currently such paths cannot be in
the same group.
Example
force gate pathgroup $m group_name tcl_list_endpoints
clear gate pathgroup [$m | -group A | -point pin_name]
where
$m -point pinname Removes pin pinname from its path group if the pin is a member of a
group.
If you clear a pin that is the last member a group, the group is also cleared.
To query the path group for an element, run:
query gate pathgroup
38
Talus 1.0
RTL Synthesis
Performing Constraint-Based Optimization
Example
query gate pathgroup $m end_point
report pathgroup $m [-group group | -short
where
No grouping is needed and no special constraints for retiming are required. Follow these steps to
enable register retiming:
1. Set force gate retime on all blocks to be retimed.
2. Run retiming on the top-level model (run gate retime).
The register retiming commands are as follows:
Talus 1.0
39
RTL Synthesis
Performing Constraint-Based Optimization
See the online man pages for detailed examples and syntax.
Retiming can change the timing and flip-flop count in the circuit and has an indirect impact on the
combinational area. For best results, follow these guidelines and techniques during retiming:
Where possible, flatten hierarchy inside blocks that will be retimed. This gives the retiming
engine more flexibility when moving flip-flops.
If there are synchronous controls in the logic, decompose complex flip-flops by setting config
gate retime -decomp on.
If only a few blocks need to be retimed, use config gate retime -mode flop_slack to
improve results by increasing the scope of retiming.
Use a MUXed flip-flop style and retime register before scan insertion. You can use force dft
scan style $m muxed_flip_flop to set the MUXed scan style. Register retiming does not
retime flip-flops on scan chains.
Important: Retiming changes the timing nodes in a design; therefore, be aware that register
retiming has implications for formal verification. Register retiming is not supported for
designs that are placed.
40
Talus 1.0
RTL Synthesis
Example Script for RTL Synthesis
# IMPORT RTL
import rtl -analyze -verilog \
-include ./include_dir \
./rtl/chip.v ./rtl/cntr.v \
./rtl/interface.v
# HIGH-LEVEL OPTIMIZATION
config rtl clockgate on \
-style latched -min_bits 10
config scan clockgate test_mode test_ena
fix rtl $m
# AREA-BASED OPTIMIZATION
force dft scan style $m muxed_flip_flop
fix netlist $m $l
# Export a netlist
Talus 1.0
41
RTL Synthesis
Example Script for RTL Synthesis
timing
timing
timing
timing
timing
timing
timing
timing
{-rise
3n -fall 6n}
{-rise
3n -fall 6n}
# FLATTEN
data flatten $m
# TEST CONSTRAINTS
force dft scan include $m
force dft scan disable $m
force dft scan chain $m 0
force dft scan chain $m 1
force dft scan control $m
42
Talus 1.0
RTL Synthesis
Example Script for RTL Synthesis
# INSERT SCAN
run dft scan insert $m $l
# CONSTRAINT-BASED OPTIMIZATION
fix time $m $l -libonly
# Run constraint-based
# optimization
# Export a netlist
{NODE_NAME
Talus 1.0
ENDPOINT_GAIN}
# Configure the
# endpoint strength report
# Report the endpoint strength
43
RTL Synthesis
Example Script for RTL Synthesis
Registered Trademarks
Magma, the Magma logo, Magma Design Automation, Blast Chip, Blast Fusion, Blast Gates, Blast Noise, Blast RTL, Blast
Speed, Blast Wrap, FixedTiming, MegaLab, Melting Logical & Physical Design, MOLTEN, QuickCap, SiliconSmart, Talus,
and YieldManager are registered trademarks of Magma Design Automation Inc.
Trademarks
ArchEvaluator, Automated Chip Creation, Blast Create, Blast DFT, Blast FPGA, Blast Logic, Blast Plan, Blast Power, Blast
Prototype, Blast Rail, Blast SA, Blast View, Blast Yield, Camelot, Characterization-to-Silicon, Design Ahead of the Curve,
Diamond SI, Fastest Path from RTL to Silicon, FineSim, FineWave, GlassBox, Hydra, HyperCell, MagmaCast, Merlin,
Native Parallel Technology, PALACE, Physical Netlist, Quartz, QuickInd, QuickRules, Relative Floorplanning Constraints,
Relative Placement Constraint, RioMagic, Sign-off in the Loop, Silicon Integrity, SiliconSmart CR, SiliconSmart I/O,
SiliconSmart MR, SiliconSmart SI, Smart Sampling, SuperSite, Titan, and Volcano are trademarks of Magma Design
Automation Inc.
Sun, Sun Microsystems, and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the United
States and in other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks
of SPARC International, Inc. in the United States and in other countries. UNIX is a registered trademark of The Open
Group.
All other trademarks are the property of their respective owners.
Notice to U.S. government end users. The software and documentation are "commercial items," as that term is defined at
48 C.F.R. 2.101, consisting of "commercial computer software" and "commercial computer software documentation," as
such terms are used in 48 C.F.R. 12.212 or 48 C.F.R. 227.7202, as applicable. Consistent with 48 C.F.R. 12.212 or 48
C.F.R. 227.7202-1 through 227.7202-4, as applicable, the commercial computer software and commercial computer
software documentation are being licensed to U.S. government end users (A) only as commercial items and (B) with only
those rights as are granted to all other end users pursuant to the terms and conditions set forth in the Magma standard
commercial agreement for this software. Unpublished rights reserved under the copyright laws of the United States.
Magma trademarks, taglines, symbols, and logo are registered trademarks or trademarks of Magma Design Automation
Inc., in the United States and/or other countries. This trademark list is provided for informational purposes only; Magma
Design Automation Inc. does not provide any express or implicit warranties or guarantees with respect to the information
provided in this document.
44
Talus 1.0