Description
When trying to compile my design, I noticed that outputting from terminals 3 and 4 for any node/port resulted in a source/sink error during routing. I created a small example to test this, and it seems that most source/sink pairs will fail except when connecting from terminal 1 on one component to terminal 1 on the other component (again, only with nodes/ports).
This seems to be because the automatic placement of parts defaults to the same position for each component, causing the routing algorithm to not be able to find a path from input to output. However, as none of the examples show a position for any part and the documentation, itself, states that setting a position is optional, this seems to be an issue with the algorithm to determine component placement.
Here is the test code I made:
DEVICE mint_test
LAYER FLOW
PORT p1,p2,p3,p4,p5,p6,p7 portRadius=700;
NODE n1;
CHANNEL c1 from p1 3 to n1 1 channelWidth=800;
CHANNEL c2 from p2 2 to n1 4 channelWidth=800;
CHANNEL c3 from n1 2 to p3 1 channelWidth=800;
CHANNEL c4 from p4 1 to p5 1 channelWidth=800;
CHANNEL c5 from p6 2 to p7 2 channelWidth=800;
END LAYER
And here is the output:
output dir: /var/www/fluigicad.org/jobs/tmp__6082f44bc4667500180b75c9/output
Running File: /var/www/fluigicad.org/jobs/tmp__6082f44bc4667500180b75c9/MINT_example.uf
Creating the output directory:
Computing Constraints
Pulling Default Values of Components
Pulling Dimensions of Components
Pulling Terminals of Components
Setting Default MAX Dimensions to the device: (76200, 76200)
Starting terminal/port assignment ...
output: /var/www/fluigicad.org/jobs/tmp__6082f44bc4667500180b75c9/output/mint_test.dot
Parsing Layers...
Layer 0:
Name - "FLOW_0"
ID - "0"
Type - "FLOW"
Group - "0"
Component - p1
xpos - 0
ypos - 0
x-span - 1400
y-span - 1400
spacing - 1000
Port - 1
Port.x - 700
Port.y - 700
Adding to FLOW ...
Component - p2
xpos - 0
ypos - 0
x-span - 1400
y-span - 1400
spacing - 1000
Port - 1
Port.x - 700
Port.y - 700
Adding to FLOW ...
Component - p3
xpos - 0
ypos - 0
x-span - 1400
y-span - 1400
spacing - 1000
Port - 1
Port.x - 700
Port.y - 700
Adding to FLOW ...
Component - p4
xpos - 0
ypos - 0
x-span - 1400
y-span - 1400
spacing - 1000
Port - 1
Port.x - 700
Port.y - 700
Adding to FLOW ...
Component - p5
xpos - 0
ypos - 0
x-span - 1400
y-span - 1400
spacing - 1000
Port - 1
Port.x - 700
Port.y - 700
Adding to FLOW ...
Component - p6
xpos - 0
ypos - 0
x-span - 1400
y-span - 1400
spacing - 1000
Port - 1
Port.x - 700
Port.y - 700
Adding to FLOW ...
Component - p7
xpos - 0
ypos - 0
x-span - 1400
y-span - 1400
spacing - 1000
Port - 1
Port.x - 700
Port.y - 700
Adding to FLOW ...
Component - n1
xpos - 0
ypos - 0
x-span - 800
y-span - 800
spacing - 1000
Port - 1
Port.x - 0
Port.y - 0
Adding to FLOW ...
Connection - c1
Source - p1
Source Terminal - ERROR!!!!!!
Sink - n1
Sink Terminal - 1
channelWidth - 800
channelSpacing - 1600
Adding to FLOW layer ...
Connection - c2
Source - p2
Source Terminal - ERROR!!!!!!
Sink - n1
Sink Terminal - ERROR!!!!!!
channelWidth - 800
channelSpacing - 1600
Adding to FLOW layer ...
Connection - c3
Source - n1
Source Terminal - ERROR!!!!!!
Sink - p3
Sink Terminal - 1
channelWidth - 800
channelSpacing - 1600
Adding to FLOW layer ...
Connection - c4
Source - p4
Source Terminal - 1
Sink - p5
Sink Terminal - 1
channelWidth - 800
channelSpacing - 1600
Adding to FLOW layer ...
Connection - c5
Source - p6
Source Terminal - ERROR!!!!!!
Sink - p7
Sink Terminal - ERROR!!!!!!
channelWidth - 800
channelSpacing - 1600
Adding to FLOW layer ...
Firing Constructor for Placer
---------------Initial Placement Work-----------------
PAR Return code:-11
Rendering 8 components and 5 connections
Place and Route completed with errors, please check the terminal output for information