10.1.4 Netlist Attributes NDC Commands

To set netlist-specific constraints, use Netlist attributes Netlist Design Constraint (NDC) commands. These commands are placed in a Compile Netlist Constraint (*.ndc) file and used by the Libero SoC Compile engine to optimize the post-synthesis netlist.

10.1.4.1 set_ioff

This command specifies whether or not a register is combined with an I/O during Synthesis. I/Os are combined with a register to achieve better clock-to-out and input-to-clock timing. This command is placed in a Compile Netlist Constraint (*.ndc) file that the Constraint Manager passes to Synthesis as a constraint in the Libero SoC Constraint Flow.

set_ioff -port_name <portname> \ [-IN_REG true/1|false/0] \
[-OUT_REG true/1|false/0] \ [-EN_REG true/1|false/0]
Note: This command is supported only as an NDC file to be read before Compile/Synthesis. At least one of the preceding options must be specified to use this command. Only one option can be enabled at a time. Microchip supports combining only one Flip-Flop with the I/O, and the fanout must be 1.

Arguments

-port_name <portname>
Specifies the name of the I/O port to be combined with a register. The port can be an input, output, or inout port. Wildcard characters are supported.
-IN_REG
Specifies whether the input register is combined into the port <portname>. Valid values are true/1 or false/0.
-OUT_REG
Specifies whether the output register is combined into the port <portname>. Valid values are true/1 or false/0.
-EN_REG
Specifies whether the enable register is combined into the port <portname>. Valid values are true/1 or false/0.

Example

The following example is applicable for the PolarFire and PolarFire SoC family of devices:

set_ioff -port_name {D} -IN_REG <value> -OUT_REG <value> -EN_REG <value>
set_ioff -port_name {Q} -IN_REG <value>-OUT_REG <value>-EN_REG <value>

<value> can be either true/false, or 1/0.

The following example is applicable for the SmartFusion® 2, IGLOO® 2, and RTG4™ family of devices:

set_ioff {D} -IN_REG <value> _ -OUT_REG_ <value> _ -EN_REG_ <value>
set_ioff {Q} -IN_REG <value> -OUT_REG <value> -EN_REG <value>

<value> can be yes/no.
The set_ioff command applies to scalar I/Os only. For an I/O bus, use the 'for' loop available in Tcl. The following command combines each scalar member of the 32-bit I/O bus DataA with input registers:
for { set i 0 } { i &lt; 32 } { incr i } { set_ioff -port_name "DataA\[$i\]" -IN_REG 1 }
Alternatively, you can use a wildcard to include all scalar signals of an I/O bus:
set_ioff -port_name {DataA[*]} -IN_REG 1

Return Value

The command returns 0 on success and 1 on failure.

Error Messages

The following error messages are related to this command:
Error: [19138170]: PDCPF-426: IN_REG: Invalid argument value: 'yes' (expecting TRUE, 1, true, FALSE, 0 or false). [set_ioff -port_name PAD -IN_REG yes][[D:/designs/ test_ioff_ioedit/constraint/test.ndc]
Error: [19137989]: PDCPF-01: Port name doesn't exist in the netlist or is not connected to an IoCell macro. [set_ioff -port_name PAD253 -IN_REG 1]
Error: [19138170]: PDCPF-426: Required parameter 'port_name' is missing. [set_ioff][[D:/ designs/test_ioff_ioedit/constraint/test.ndc]

10.1.4.2 set_preserve

This command sets a preserve property on instances before compile. Therefore, compile does preserve these instances and does not combine them.

set_preserve -inst_name <instance_name>

Arguments

-inst_name
Specifies the full hierarchical name of the macro in the netlist to preserve.

Example

set_preserve -inst_name “test1/AND2_0”