Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Certain terminals for ports/channels/nodes cause source/sink error (probably an autoplacement issue) #10

Open
watturkara opened this issue Apr 23, 2021 · 2 comments

Comments

@watturkara
Copy link

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
@watturkara watturkara changed the title Certain terminals for ports/channels/nodes cause source/sink error Certain terminals for ports/channels/nodes cause source/sink error (probably an autoplacement issue) Apr 23, 2021
@watturkara
Copy link
Author

watturkara commented Apr 23, 2021

As an update to this, I learned that autoplacement isn't the direct cause of this issue, as it worked fine with other designs. It does seem, however, that terminals 3 and 4 on nodes and ports are unavailable. Because of this, my design was able to compile, but only about 1/3 of the channels could actually be routed by the tool.

Here is the full file I used to come to this conclusion:

DEVICE covid_test_circuit

LAYER FLOW


# pm  -> preamplification master mix (input)
# op  -> oligo P solution (input)
# dw -> ultrapure DEPC water (input)
# dm  -> detection master mix (input)
# od  -> oligo D solution (input)
# ps  -> pretreated sample (input)
# wp  -> waste product post melting analysis (output)

PORT pm, op, dw, dm, od, ps, wp portRadius=700;

# Connects different channels together
NODE n1_reagmix, n2_sampmix, n3_reagmix, n4_sampmix, n5_dwsplit, n6_diluter;

# Pumps to control flow rate of DEPC water to 2nd set of reagents and diluter
PUMP pu1_dw_dil, pu2_dw_reag, pu3_pcr1, pu4_pcr2 length=300 width=600 flowChannelWidth=800;

V MIXER preamp_reagmixer;
H MIXER diluter;
V MIXER nested_reagmixer;

# Length/bends assume flow rate of ~ 8.042 uL/min for PCR

V CURVED MIXER pcr1_revt bendLength=8000 numberOfBends=5;
V CURVED MIXER pcr1_stpdn bendLength=8000 numberOfBends=5;
V CURVED MIXER pcr1_denat bendLength=10000 numberOfBends=6;
V CURVED MIXER pcr1_cyc1 bendLength=4500 numberOfBends=20;
V CURVED MIXER pcr1_cyc2 bendLength=30000 numberOfBends=11;
V CURVED MIXER pcr1_finext bendLength=5000 numberOfBends= 4;
V CURVED MIXER pcr2_denat bendLength=10000 numberOfBends=6;
V CURVED MIXER pcr2_cyc1 bendLength=12500 numberOfBends=18;

# Should be incubator/chamber, but could not get this component to work, so
# a curved mixer was used instead
H CURVED MIXER melt_analysis bendLength=1000 numberOfBends=10;

### PREAMPLIFICATION STEP

## REAGENT PREP

# Split Ultrapure DEPC water via a node
# for use in different parts of the circuit
CHANNEL c0_dw from dw to n5_dwsplit channelWidth=800;

# Join reagents via a node
CHANNEL c1_pm from pm  to n1_reagmix  channelWidth=800;
CHANNEL c2_op from op  to n1_reagmix  channelWidth=800;
CHANNEL c3_dw from n5_dwsplit  to n1_reagmix  channelWidth=800;
# Connect sample to separate node
CHANNEL c4_ps from ps  to n2_sampmix  channelWidth=800;
# Connect reagents node with sample node
CHANNEL c5_combine from n1_reagmix  to n2_sampmix  channelWidth=800;
# Send combined products to mixer 
CHANNEL c6_mix from n2_sampmix  to  preamp_reagmixer  channelWidth=800;

# Pump combined products to target flow rate of 8.042 uL/min
CHANNEL c7_pump from preamp_reagmixer 2 to pu3_pcr1 1 channelWidth=800;

## PERFORM ROUND 1 PCR
# Reverse transcription step
CHANNEL c8_revt from pu3_pcr1 2 to pcr1_revt 2 channelWidth=800;
# Temperature step down step
CHANNEL c9_stpdn from pcr1_revt to pcr1_stpdn  channelWidth=800;
# Initial denaturation step
CHANNEL c10_denat from pcr1_stpdn  to pcr1_denat  channelWidth=800;
# 1st temperature cycle (6 cycles)
CHANNEL c11_cyc1 from pcr1_denat  to pcr1_cyc1 channelWidth=800;
# 2nd temperature cycle (22 cycles)
CHANNEL c12_cyc2 from pcr1_cyc1 to pcr1_cyc2 channelWidth=800;
# Final extension
CHANNEL c13_fin from pcr1_cyc2 to pcr1_finext channelWidth=800;


### NESTED AMPLIFICATION STEP

## REAGENT PREP

# Amplified sample dilution
CHANNEL c14_dil from pcr1_finext to n6_diluter channelWidth=800;
# Pump water from DEPC connect to ensure proper flowrate for dilution
CHANNEL c15_pump from n5_dwsplit to pu1_dw_dil 1 channelWidth=800;
CHANNEL c16_dw from pu1_dw_dil 2 to n6_diluter 1 channelWidth=800;
CHANNEL c17_mix from n6_diluter to diluter channelWidth=800;

# Join reagents via node
CHANNEL c18_dm from dm to n3_reagmix channelWidth=800;
CHANNEL c19_od from od to n3_reagmix channelWidth=800;
# Pump DEPC water to control flowrate for proper mixing ratios
CHANNEL c20_pump from n5_dwsplit 1 to pu2_dw_reag 1 channelWidth=800;
CHANNEL c21_dw from pu2_dw_reag 2 to n3_reagmix 1 channelWidth=800;
# Connect diluted preamp sample to different node
CHANNEL c22_dsamp from diluter to n4_sampmix channelWidth=800;
# Connect reagents node to sample node
CHANNEL c23_combine from n3_reagmix to n4_sampmix channelWidth=800;
# Send combined products to mixer
CHANNEL c24_mix from n4_sampmix to nested_reagmixer channelWidth=800;

# Pump combined products to target flow rate of 8.042 uL/min
CHANNEL c25_pump from nested_reagmixer 2 to pu4_pcr2 1 channelWidth=800;

## PERFORM ROUND 2 PCR
# Inital denaturation step
CHANNEL c26_denat from pu4_pcr2 2 to pcr2_denat 2 channelWidth=800;
# Temperature cycling (45 cycles)
CHANNEL c27_cyc1 from pcr2_denat to pcr2_cyc1 channelWidth=800;

### PERFORM MELTING ANALYSIS
# Move fully amplified sample to melting analysis chamber
CHANNEL c28_analyte from pcr2_cyc1 to melt_analysis channelWidth=800;
# Move analyzed sample to waste product port
CHANNEL c29_done from melt_analysis to wp channelWidth=800;
END LAYER


# LAYER CONTROL
# # Control port for valve
# PORT melt_valve_port portRadius=700;
# # Valves to control fluide flow in/out of melting analysis chamber 
# VALVE melt_valve1 on c28_analyte;
# VALVE melt_valve2 on c29_done;
# # Net to connect valve input to open/close both simultaneously
# NET valve_net from melt_valve_port 1 to melt_valve1 4, melt_valve2 4 channelWidth=50;


# END LAYER

And here is the log output:

 _____ _       _       _ 
|  ___| |_   _(_) __ _(_)
| |_  | | | | | |/ _` | |
|  _| | | |_| | | (_| | |
|_|   |_|\__,_|_|\__, |_|
                 |___/   

output dir: /var/www/fluigicad.org/jobs/tmp__60833fe0c4667500180b7791/output
Running File: /var/www/fluigicad.org/jobs/tmp__60833fe0c4667500180b7791/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 ...
No port assigned to connection ref - c0_dw:dw:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c0_dw:n5_dwsplit:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c1_pm:pm:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c1_pm:n1_reagmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c2_op:op:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c2_op:n1_reagmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c3_dw:n5_dwsplit:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c3_dw:n1_reagmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c4_ps:ps:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c4_ps:n2_sampmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c5_combine:n1_reagmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c5_combine:n2_sampmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c6_mix:n2_sampmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c6_mix:preamp_reagmixer:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c9_stpdn:pcr1_revt:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c9_stpdn:pcr1_stpdn:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c10_denat:pcr1_stpdn:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c10_denat:pcr1_denat:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c11_cyc1:pcr1_denat:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c11_cyc1:pcr1_cyc1:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c12_cyc2:pcr1_cyc1:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c12_cyc2:pcr1_cyc2:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c13_fin:pcr1_cyc2:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c13_fin:pcr1_finext:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c14_dil:pcr1_finext:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c14_dil:n6_diluter:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c15_pump:n5_dwsplit:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c17_mix:n6_diluter:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c17_mix:diluter:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c18_dm:dm:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c18_dm:n3_reagmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c19_od:od:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c19_od:n3_reagmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c22_dsamp:diluter:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c22_dsamp:n4_sampmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c23_combine:n3_reagmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c23_combine:n4_sampmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c24_mix:n4_sampmix:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
No port assigned to connection ref - c24_mix:nested_reagmixer:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c27_cyc1:pcr2_denat:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c27_cyc1:pcr2_cyc1:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c28_analyte:pcr2_cyc1:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c28_analyte:melt_analysis:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c29_done:melt_analysis:None
Auto Port Assign Scheme - Target contains only 2 or 4 port options
Assigned port - 1
No port assigned to connection ref - c29_done:wp:None
Auto Port Assign Scheme - Target contains only 1 port option
Assigned port - 1
output: /var/www/fluigicad.org/jobs/tmp__60833fe0c4667500180b7791/output/covid_test_circuit.dot
Parsing Layers...
Layer 0:
Name - "FLOW_0"
ID - "0"
Type - "FLOW"
Group - "0"
Component - pm
  xpos - 0
  ypos - 0
  x-span - 1400
  y-span - 1400
  spacing - 1000
  Port - 1
    Port.x - 700
    Port.y - 700
Adding to FLOW ...
Component - op
  xpos - 0
  ypos - 0
  x-span - 1400
  y-span - 1400
  spacing - 1000
  Port - 1
    Port.x - 700
    Port.y - 700
Adding to FLOW ...
Component - dw
  xpos - 0
  ypos - 0
  x-span - 1400
  y-span - 1400
  spacing - 1000
  Port - 1
    Port.x - 700
    Port.y - 700
Adding to FLOW ...
Component - dm
  xpos - 0
  ypos - 0
  x-span - 1400
  y-span - 1400
  spacing - 1000
  Port - 1
    Port.x - 700
    Port.y - 700
Adding to FLOW ...
Component - od
  xpos - 0
  ypos - 0
  x-span - 1400
  y-span - 1400
  spacing - 1000
  Port - 1
    Port.x - 700
    Port.y - 700
Adding to FLOW ...
Component - ps
  xpos - 0
  ypos - 0
  x-span - 1400
  y-span - 1400
  spacing - 1000
  Port - 1
    Port.x - 700
    Port.y - 700
Adding to FLOW ...
Component - wp
  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_reagmix
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 800
  spacing - 1000
  Port - 1
    Port.x - 0
    Port.y - 0
Adding to FLOW ...
Component - n2_sampmix
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 800
  spacing - 1000
  Port - 1
    Port.x - 0
    Port.y - 0
Adding to FLOW ...
Component - n3_reagmix
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 800
  spacing - 1000
  Port - 1
    Port.x - 0
    Port.y - 0
Adding to FLOW ...
Component - n4_sampmix
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 800
  spacing - 1000
  Port - 1
    Port.x - 0
    Port.y - 0
Adding to FLOW ...
Component - n5_dwsplit
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 800
  spacing - 1000
  Port - 1
    Port.x - 0
    Port.y - 0
Adding to FLOW ...
Component - n6_diluter
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 800
  spacing - 1000
  Port - 1
    Port.x - 0
    Port.y - 0
Adding to FLOW ...
Component - pu1_dw_dil
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 2300
  spacing - 1000
  Port - 1
    Port.x - 400
    Port.y - 0
  Port - 2
    Port.x - 400
    Port.y - 2300
  Port - 3
    Port.x - 400
    Port.y - 150
  Port - 4
    Port.x - 400
    Port.y - 1150
  Port - 5
    Port.x - 400
    Port.y - 2150
Adding to FLOW ...
Component - pu2_dw_reag
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 2300
  spacing - 1000
  Port - 1
    Port.x - 400
    Port.y - 0
  Port - 2
    Port.x - 400
    Port.y - 2300
  Port - 3
    Port.x - 400
    Port.y - 150
  Port - 4
    Port.x - 400
    Port.y - 1150
  Port - 5
    Port.x - 400
    Port.y - 2150
Adding to FLOW ...
Component - pu3_pcr1
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 2300
  spacing - 1000
  Port - 1
    Port.x - 400
    Port.y - 0
  Port - 2
    Port.x - 400
    Port.y - 2300
  Port - 3
    Port.x - 400
    Port.y - 150
  Port - 4
    Port.x - 400
    Port.y - 1150
  Port - 5
    Port.x - 400
    Port.y - 2150
Adding to FLOW ...
Component - pu4_pcr2
  xpos - 0
  ypos - 0
  x-span - 800
  y-span - 2300
  spacing - 1000
  Port - 1
    Port.x - 400
    Port.y - 0
  Port - 2
    Port.x - 400
    Port.y - 2300
  Port - 3
    Port.x - 400
    Port.y - 150
  Port - 4
    Port.x - 400
    Port.y - 1150
  Port - 5
    Port.x - 400
    Port.y - 2150
Adding to FLOW ...
Component - preamp_reagmixer
  xpos - 0
  ypos - 0
  x-span - 4060
  y-span - 4860
  spacing - 1000
  Port - 1
    Port.x - 2030
    Port.y - 0
  Port - 2
    Port.x - 2030
    Port.y - 4860
Adding to FLOW ...
Component - diluter
  xpos - 0
  ypos - 0
  x-span - 4060
  y-span - 4860
  spacing - 1000
  Port - 1
    Port.x - 2030
    Port.y - 0
  Port - 2
    Port.x - 2030
    Port.y - 4860
Adding to FLOW ...
Component - nested_reagmixer
  xpos - 0
  ypos - 0
  x-span - 4060
  y-span - 4860
  spacing - 1000
  Port - 1
    Port.x - 2030
    Port.y - 0
  Port - 2
    Port.x - 2030
    Port.y - 4860
Adding to FLOW ...
Component - pcr1_revt
  xpos - 0
  ypos - 0
  x-span - 10830
  y-span - 21100
  spacing - 1000
  Port - 1
    Port.x - 5415
    Port.y - 0
  Port - 2
    Port.x - 5415
    Port.y - 21100
Adding to FLOW ...
Component - pcr1_stpdn
  xpos - 0
  ypos - 0
  x-span - 10830
  y-span - 21100
  spacing - 1000
  Port - 1
    Port.x - 5415
    Port.y - 0
  Port - 2
    Port.x - 5415
    Port.y - 21100
Adding to FLOW ...
Component - pcr1_denat
  xpos - 0
  ypos - 0
  x-span - 12830
  y-span - 25160
  spacing - 1000
  Port - 1
    Port.x - 6415
    Port.y - 0
  Port - 2
    Port.x - 6415
    Port.y - 25160
Adding to FLOW ...
Component - pcr1_cyc1
  xpos - 0
  ypos - 0
  x-span - 7330
  y-span - 82000
  spacing - 1000
  Port - 1
    Port.x - 3665
    Port.y - 0
  Port - 2
    Port.x - 3665
    Port.y - 82000
Adding to FLOW ...
Component - pcr1_cyc2
  xpos - 0
  ypos - 0
  x-span - 32830
  y-span - 45460
  spacing - 1000
  Port - 1
    Port.x - 16415
    Port.y - 0
  Port - 2
    Port.x - 16415
    Port.y - 45460
Adding to FLOW ...
Component - pcr1_finext
  xpos - 0
  ypos - 0
  x-span - 7830
  y-span - 17040
  spacing - 1000
  Port - 1
    Port.x - 3915
    Port.y - 0
  Port - 2
    Port.x - 3915
    Port.y - 17040
Adding to FLOW ...
Component - pcr2_denat
  xpos - 0
  ypos - 0
  x-span - 12830
  y-span - 25160
  spacing - 1000
  Port - 1
    Port.x - 6415
    Port.y - 0
  Port - 2
    Port.x - 6415
    Port.y - 25160
Adding to FLOW ...
Component - pcr2_cyc1
  xpos - 0
  ypos - 0
  x-span - 15330
  y-span - 73880
  spacing - 1000
  Port - 1
    Port.x - 7665
    Port.y - 0
  Port - 2
    Port.x - 7665
    Port.y - 73880
Adding to FLOW ...
Component - melt_analysis
  xpos - 0
  ypos - 0
  x-span - 3830
  y-span - 41400
  spacing - 1000
  Port - 1
    Port.x - 1915
    Port.y - 0
  Port - 2
    Port.x - 1915
    Port.y - 41400
Adding to FLOW ...
Connection - c0_dw
  Source - dw
    Source Terminal - 1
  Sink - n5_dwsplit
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c1_pm
  Source - pm
    Source Terminal - 1
  Sink - n1_reagmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c2_op
  Source - op
    Source Terminal - 1
  Sink - n1_reagmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c3_dw
  Source - n5_dwsplit
    Source Terminal - 1
  Sink - n1_reagmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c4_ps
  Source - ps
    Source Terminal - 1
  Sink - n2_sampmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c5_combine
  Source - n1_reagmix
    Source Terminal - 1
  Sink - n2_sampmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c6_mix
  Source - n2_sampmix
    Source Terminal - 1
  Sink - preamp_reagmixer
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c7_pump
  Source - preamp_reagmixer
    Source Terminal - 2
  Sink - pu3_pcr1
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c8_revt
  Source - pu3_pcr1
    Source Terminal - 2
  Sink - pcr1_revt
    Sink Terminal - 2
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c9_stpdn
  Source - pcr1_revt
    Source Terminal - 1
  Sink - pcr1_stpdn
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c10_denat
  Source - pcr1_stpdn
    Source Terminal - 1
  Sink - pcr1_denat
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c11_cyc1
  Source - pcr1_denat
    Source Terminal - 1
  Sink - pcr1_cyc1
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c12_cyc2
  Source - pcr1_cyc1
    Source Terminal - 1
  Sink - pcr1_cyc2
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c13_fin
  Source - pcr1_cyc2
    Source Terminal - 1
  Sink - pcr1_finext
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c14_dil
  Source - pcr1_finext
    Source Terminal - 1
  Sink - n6_diluter
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c15_pump
  Source - n5_dwsplit
    Source Terminal - 1
  Sink - pu1_dw_dil
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c16_dw
  Source - pu1_dw_dil
    Source Terminal - 2
  Sink - n6_diluter
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c17_mix
  Source - n6_diluter
    Source Terminal - 1
  Sink - diluter
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c18_dm
  Source - dm
    Source Terminal - 1
  Sink - n3_reagmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c19_od
  Source - od
    Source Terminal - 1
  Sink - n3_reagmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c20_pump
  Source - n5_dwsplit
    Source Terminal - 1
  Sink - pu2_dw_reag
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c21_dw
  Source - pu2_dw_reag
    Source Terminal - 2
  Sink - n3_reagmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c22_dsamp
  Source - diluter
    Source Terminal - 1
  Sink - n4_sampmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c23_combine
  Source - n3_reagmix
    Source Terminal - 1
  Sink - n4_sampmix
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c24_mix
  Source - n4_sampmix
    Source Terminal - 1
  Sink - nested_reagmixer
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c25_pump
  Source - nested_reagmixer
    Source Terminal - 2
  Sink - pu4_pcr2
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c26_denat
  Source - pu4_pcr2
    Source Terminal - 2
  Sink - pcr2_denat
    Sink Terminal - 2
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c27_cyc1
  Source - pcr2_denat
    Source Terminal - 1
  Sink - pcr2_cyc1
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c28_analyte
  Source - pcr2_cyc1
    Source Terminal - 1
  Sink - melt_analysis
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Connection - c29_done
  Source - melt_analysis
    Source Terminal - 1
  Sink - wp
    Sink Terminal - 1
  channelWidth - 800
  channelSpacing - 1600
Adding to FLOW layer ... 
Firing Constructor for Placer
---------------Initial Placement Work-----------------
after placement width: 113110 height: 246480
PlacementCell - pm| Rel Position (38030, 0)
PlacementCell - op| Rel Position (36230, 85400)
PlacementCell - dw| Rel Position (41290, 36220)
PlacementCell - dm| Rel Position (43690, 36220)
PlacementCell - od| Rel Position (0, 0)
PlacementCell - ps| Rel Position (0, 2400)
PlacementCell - wp| Rel Position (43690, 28560)
PlacementCell - n1_reagmix| Rel Position (63950, 58320)
PlacementCell - n2_sampmix| Rel Position (50120, 85400)
PlacementCell - n3_reagmix| Rel Position (41290, 34420)
PlacementCell - n4_sampmix| Rel Position (2400, 2400)
PlacementCell - n5_dwsplit| Rel Position (75780, 31860)
PlacementCell - n6_diluter| Rel Position (63950, 87800)
PlacementCell - pu1_dw_dil| Rel Position (51920, 28560)
PlacementCell - pu2_dw_reag| Rel Position (63950, 2400)
PlacementCell - pu3_pcr1| Rel Position (50120, 28560)
PlacementCell - pu4_pcr2| Rel Position (36230, 2400)
PlacementCell - preamp_reagmixer| Rel Position (36230, 87800)
PlacementCell - diluter| Rel Position (41290, 87800)
PlacementCell - nested_reagmixer| Rel Position (38630, 28560)
PlacementCell - pcr1_revt| Rel Position (36230, 119820)
PlacementCell - pcr1_stpdn| Rel Position (63950, 36220)
PlacementCell - pcr1_denat| Rel Position (50120, 93660)
PlacementCell - pcr1_cyc1| Rel Position (4200, 2400)
PlacementCell - pcr1_cyc2| Rel Position (2400, 85400)
PlacementCell - pcr1_finext| Rel Position (41290, 93660)
PlacementCell - pcr2_denat| Rel Position (38630, 2400)
PlacementCell - pcr2_cyc1| Rel Position (63950, 89600)
PlacementCell - melt_analysis| Rel Position (51920, 38620)
---------------Placement end.-----------------

Obstacles: 
  Cell{0} - (38030, 0, 1400, 1400)
  Cell{1} - (36230, 85400, 1400, 1400)
  Cell{2} - (41290, 36220, 1400, 1400)
  Cell{3} - (43690, 36220, 1400, 1400)
  Cell{4} - (0, 0, 1400, 1400)
  Cell{5} - (0, 2400, 1400, 1400)
  Cell{6} - (43690, 28560, 1400, 1400)
  Cell{7} - (63950, 58320, 800, 800)
  Cell{8} - (50120, 85400, 800, 800)
  Cell{9} - (41290, 34420, 800, 800)
  Cell{10} - (2400, 2400, 800, 800)
  Cell{11} - (75780, 31860, 800, 800)
  Cell{12} - (63950, 87800, 800, 800)
  Cell{13} - (51920, 28560, 800, 2300)
  Cell{14} - (63950, 2400, 800, 2300)
  Cell{15} - (50120, 28560, 800, 2300)
  Cell{16} - (36230, 2400, 800, 2300)
  Cell{17} - (36230, 87800, 4060, 4860)
  Cell{18} - (41290, 87800, 4060, 4860)
  Cell{19} - (38630, 28560, 4060, 4860)
  Cell{20} - (36230, 119820, 10830, 21100)
  Cell{21} - (63950, 36220, 10830, 21100)
  Cell{22} - (50120, 93660, 12830, 25160)
  Cell{23} - (4200, 2400, 7330, 82000)
  Cell{24} - (2400, 85400, 32830, 45460)
  Cell{25} - (41290, 93660, 7830, 17040)
  Cell{26} - (38630, 2400, 12830, 25160)
  Cell{27} - (63950, 89600, 15330, 73880)
  Cell{28} - (51920, 38620, 3830, 41400)
---------------Initial Routing Work-----------------
Routing Boundary - (-98490,-246000,178770,410480)
Route - c0_dw
  Source - (42690,36220)
  Target - (75780,31860)
Route - c1_pm
  Source - (39430,1400)
  Target - (63950,58320)
Route - c2_op
  Source - (37630,85400)
  Target - (63950,58320)
Route - c3_dw
  Source - (75780,31860)
  Target - (63950,58320)
Route - c4_ps
  Source - (1400,3800)
  Target - (50120,85400)
Route - c5_combine
  Source - (63950,58320)
  Target - (50120,85400)
Route - c6_mix
  Source - (50120,85400)
  Target - (38260,87800)
Route - c7_pump
  Source - (38260,92660)
  Target - (50520,28560)
Route - c8_revt
  Source - (50520,30860)
  Target - (41645,140920)
Route - c9_stpdn
  Source - (41645,119820)
  Target - (69365,36220)
Route - c10_denat
  Source - (69365,36220)
  Target - (56535,93660)
Route - c11_cyc1
  Source - (56535,93660)
  Target - (7865,2400)
Route - c12_cyc2
  Source - (7865,2400)
  Target - (18815,85400)
Route - c13_fin
  Source - (18815,85400)
  Target - (45205,93660)
Route - c14_dil
  Source - (45205,93660)
  Target - (63950,87800)
Route - c15_pump
  Source - (75780,31860)
  Target - (52320,28560)
Route - c16_dw
  Source - (52320,30860)
  Target - (63950,87800)
Route - c17_mix
  Source - (63950,87800)
  Target - (43320,87800)
Route - c18_dm
  Source - (43690,36220)
  Target - (41290,34420)
Route - c19_od
  Source - (1400,1400)
  Target - (41290,34420)
Route - c20_pump
  Source - (75780,31860)
  Target - (64350,2400)
Route - c21_dw
  Source - (64350,4700)
  Target - (41290,34420)
Route - c22_dsamp
  Source - (43320,87800)
  Target - (2400,2400)
Route - c23_combine
  Source - (41290,34420)
  Target - (2400,2400)
Route - c24_mix
  Source - (2400,2400)
  Target - (40660,28560)
Route - c25_pump
  Source - (40660,33420)
  Target - (36630,2400)
Route - c26_denat
  Source - (36630,4700)
  Target - (45045,27560)
Route - c27_cyc1
  Source - (45045,2400)
  Target - (71615,89600)
Route - c28_analyte
  Source - (71615,89600)
  Target - (53835,38620)
Route - c29_done
  Source - (53835,38620)
  Target - (45090,29960)
Ans :
  Route - c0_dw success  (41990,36920)
  Route - c1_pm success  (38730,700)-(39430,1400)-(41639,944)-(41786,470)-(41821,234)-(53863,2400)-(53823,2835)-(52612,25451)-(53743,26385)-(53772,26399)-(53801,26414)-(55098,28900)-(54705,29914)-(54888,31895)-(58056,37945)-(62984,55119)-(63950,58320)
  Route - c2_op success  (36930,86100)
  Route - c3_dw failure
  Route - c4_ps success  (700,3100)-(1400,3800)-(125,6199)-(70,6201)-(-881,1564)-(-885,166)-(-888,-832)-(-893,-2230)-(495,-2226)-(3803,0)-(13923,2183)-(13933,2400)-(13922,2622)-(13291,4034)-(13258,4068)-(13110,4209)-(37502,35541)-(40000,39647)-(40267,39794)-(40987,40003)-(41036,40009)-(49646,80799)-(49671,80866)-(50137,81632)-(50369,81855)-(50120,85400)
  Route - c5_combine failure
  Route - c6_mix success  (50120,85400)-(46620,85760)-(46606,85751)-(44931,86017)-(41105,86866)-(39280,86482)-(38505,86190)-(38040,86954)-(38260,87800)
  Route - c7_pump failure
  Route - c8_revt failure
  Route - c9_stpdn success  (41645,119820)-(45775,117789)-(47589,117476)-(49344,119073)-(49790,121200)-(48462,138968)-(62509,161556)-(62260,161771)-(62086,161963)-(61826,162354)-(62629,165487)-(64962,165659)-(80177,165708)-(79991,91895)-(79962,87296)-(77407,30403)-(77409,29604)-(75684,29630)-(75620,29656)-(74875,29633)-(73447,31282)-(73401,31519)-(73525,32690)-(69365,36220)
  Route - c10_denat failure
  Route - c11_cyc1 failure
  Route - c12_cyc2 failure
  Route - c13_fin failure
  Route - c14_dil success  (45205,93660)-(46797,93043)-(47819,91639)-(49439,91278)-(50120,91257)-(50376,91270)-(55089,91740)-(63950,87800)
  Route - c15_pump failure
  Route - c16_dw failure
  Route - c17_mix failure
  Route - c18_dm success  (44390,36920)-(43690,36220)-(41453,35480)-(41290,34420)
  Route - c19_od success  (700,700)
  Route - c20_pump failure
  Route - c21_dw failure
  Route - c22_dsamp failure
  Route - c23_combine failure
  Route - c24_mix failure
  Route - c25_pump failure
  Route - c26_denat failure
  Route - c27_cyc1 failure
  Route - c28_analyte failure
  Route - c29_done success  (53835,38620)-(52890,36421)-(52043,36220)-(51920,36217)-(51612,36236)-(51493,36255)-(51377,36279)-(48475,32612)-(45090,29960)-(44390,29260)
---------------Routing end.-----------------
PAR Return code:0
Reducing the Size of the device and adding device padding: 20000 um
Updated the device dimensions: (119280, 279640) microns
Rendering 29 components and 30 connections

@nicksacco17
Copy link

I had the same issue while using the Neptune UI:

DEVICE qrtPCR

LAYER FLOW 

# I/O PORT DECLARATION
PORT in1 portRadius=500;
PORT in2 portRadius=500;
PORT out1 portRadius=500;

# CONNECTING NODES
NODE node0;
NODE node1;
NODE node2;
NODE node3; 

# Section 1: Mixing - 95mm long, 180 um wide (3 bends)
V MIXER zone1 numberOfBends=3 bendSpacing=250 bendLength=15440 channelWidth=180;

# Section 2: Reverse Transcription - 372 mm long, 260 um wide, heated at 52 C (4 bends)
V MIXER zone2 numberOfBends=5 bendSpacing=250 bendLength=36807 channelWidth=260;

# Section 3: Activation - 354 mm long, 260 um wide, 98 C (5 bends)
V MIXER zone3 numberOfBends=5 bendSpacing=250 bendLength=36807 channelWidth=260;

# Section 4: Thermal Cycling - 1131 mm long, 260 um wide, passes 40 times through heated areas at 97 C, 62 C
H MIXER zone4 numberOfBends=40 bendSpacing=250 bendLength=27882 channelWidth=260;

# Connect the sections according to the device schematic, i.e. how it should be drawn
CHANNEL c1 from in1 2 to node0 4 channelWidth=180;
CHANNEL c2 from in2 4 to node0 2 channelWidth=180;

CHANNEL c3 from node0 3 to zone1 1 channelWidth=260;
CHANNEL c4 from zone1 2 to zone2 1 channelWidth=260;

CHANNEL c5 from zone2 2 to zone3 1 channelWidth=260;
CHANNEL c6 from zone3 2 to node1 2 channelWidth=260;
CHANNEL c7 from node1 3 to zone4 1 channelWidth=260;

CHANNEL c8 from zone4 2 to node2 3 channelWidth=260;
CHANNEL c9 from node2 4 to node3 2 channelWidth=260;
CHANNEL c10 from node3 1 to out1 3 channelWidth=260;

END LAYER

neptune_expected_output_8
neptune_expected_output_9

When trying to specify terminals on the PORT and NODES, we had compile issues. We could specify only terminal 1 on PORTS and NODES, but we could specify both terminal 1 and 2 on other components, such as MIXER.

@rkrishnasanka rkrishnasanka transferred this issue from CIDARLAB/MINT Jun 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants