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 F*F 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 command specifies that for the port minicoat[1], the output register is combined into the port, but it is not combined into the input register or the enable register:
set_ioff -port_name {minicoat[1]} –IN_REG 0 –OUT_REG 1 –EN_REG 0
The following command specifies that for the port my_in_out[19], the enable register is combined into the port, but it is not combined into the input register or the output register:
set_ioff {my_in_out[19]} –IN_REG 0 –OUT_REG 0 – EN_REG 1
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”