You can easily route an internal signal to a debug port with a netlist change. The
schematic below shows the pin demuxState_reg/Q
, which you can
observe on an external port of the device.
The following Tcl script shows how to add a port to the existing design and route the internal signal to the newly created port.
create_port -direction out debug_port_out
set_property PACKAGE_PIN AB20 [get_ports {debug_port_out}]
set_property IOSTANDARD LVCMOS18 [get_ports [list debug_port_out]]
create_cell -reference [get_lib_cells [get_libs]/OBUF] ECO_OBUF1
create_net ECO_OBUF1_out
connect_net -net ECO_OBUF1_out -objects ECO_OBUF1/O
connect_net -net ECO_OBUF1_out -objects [get_ports debug_port_out]
connect_net -net [get_nets -of [get_pins demuxState_reg/Q]] -objects ECO_OBUF1/I
The example script accomplishes the following:
- Creates a debug port.
- Assigns it to package pin AB20.
- Assigns it an I/O standard of LVCMOS18.
- Creates an
OBUF
that drives the debug port through netECO_OBUF1_out
. - Creates a net to connect the output of the demuxState_reg register to the input
of the
OBUF
.
The following figure shows the schematic of the resulting logical netlist changes.
After the netlist has been successfully modified, the logical changes must be
implemented. Because the port has been assigned to a package pin, the OBUF driving
the port is automatically placed in the correct location. Therefore, the placer does
not have anything to place and therefore incremental compile is not triggered when
running place_design
followed by route_design
. To route the newly added net that
connects the internal signal to the OBUF input, use the route_design -nets
command or route the net manually to avoid a full
route_design
pass which might change the
routing for other nets. Alternatively, you can run route_design -preserve
, which preserves existing routing. See Using Other route_design Options.