XML Code Generation Bug with time_demux

JS
Josh Schindehette
Mon, Jan 14, 2019 5:51 PM

I attempted to build and run the Lab5 unit test from the "answer" training
project at https://github.com/opencpi/training/tree/master/training.  I got
the following error:

$ ocpidev run --verbose --view
make: Entering directory `./training/training/components/time_demux.test'
======== Preparing for execution on available platforms with available
built workers and assemblies for time_demux:
Probing for available local platforms:
  Local platforms are: hdl-0-xsim rcc-0-centos7
Generating execution scripts for each platform that can run.
  Generating run script for platform: centos7
======== Running and verifying test outputs on available platforms for
time_demux:
Performing test cases for ocpi.training.time_demux on platform centos7.
Functions are: run verify view
  Executing case case00.00 using worker time_demux.rcc...
OCPI_LIBRARY_PATH=../../../lib/rcc:../../../lib/ocl:../../gen/assemblies:$OCPI_CDK_DIR/$OCPI_TOOL_DIR/artifacts
$OCPI_CDK_DIR/$OCPI_TOOL_DIR/bin/ocpirun -d -v -mtime_demux=rcc
-wtime_demux=time_demux -Ptime_demux=centos7
--sim-dir=case00.00.time_demux.rcc.simulation
--dump-file=case00.00.time_demux.rcc.props
-pfile_write_from_Data_Out=fileName=case00.00.time_demux.rcc.Data_Out.out
-pfile_write_from_Time_Out=fileName=case00.00.time_demux.rcc.Time_Out.out
../../gen/applications/case00.00.xml
Simulation HDL device lsim:xsim for xsim (UUID
7f145cbc-1823-11e9-b13d-a34c4663c689, dir
case00.00.time_demux.rcc.simulation/xsim.xsim.111335.0, ticks 100000000)
Available containers are:  0: lsim:xsim [model: hdl os:  platform: xsim],
1: rcc0 [model: rcc os: linux platform: centos7]
Exiting for exception: No viable candidates found for instance
"file_write_from_Data_Out"

real    0m7.472s
user    0m6.677s
sys     0m0.804s
    Execution FAILED(1) - see log in
run/centos7/case00.00.time_demux.rcc.log
make: *** [run] Error 1
make: Leaving directory `./training/training/components/time_demux.test'

The file time_demux.test/gen/applications/case00.00.xml had the following
content:

<application done='file_write_from_Data_Out'>
  <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'>
    <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/>
    <property name='messagesInFile' value='true'/>
  </instance>
  <instance component='ocpi.core.metadata_stressor'
name='time_demux_ms_Mux_In' connect='time_demux'>
  </instance>
  <instance component='ocpi.training.time_demux' name='time_demux'/>
  <instance component='ocpi.core.backpressure' name='bp_from_Data_Out'
connect='file_write_from_Data_Out'>
    <property name='enable_select' value='true'/>
  </instance>
  <instance component='ocpi.core.file_write'
name='file_write_from_Data_Out'/>
  <connection>
    <port instance='time_demux' name='Data_Out'/>
    <port instance='file_write_from_Data_Out' name='in'/>
  </connection>
  <instance component='ocpi.core.backpressure' name='bp_from_Time_Out'
connect='file_write_from_Time_Out'>
    <property name='enable_select' value='true'/>
  </instance>
  <instance component='ocpi.core.file_write'
name='file_write_from_Time_Out'/>
  <connection>
    <port instance='time_demux' name='Time_Out'/>
    <port instance='file_write_from_Time_Out' name='in'/>
  </connection>
</application>

The connections are attempting to reference "file_write_from_Data_Out" and
"file_write_from_Time_Out" which are already connected to the
"backpressure" components. These connections should instead reference the
"backpressure" components "bp_from_Data_Out" and "bp_from_Time_Out",
respectively.

*** Side Note ***

In Lab5, an incorrect port order for:

<Port name="Data_Out" producer="true"

protocol="iqstream_protocol"></Port>
<Port name="Time_Out" producer="true" protocol="iqstream_with_sync_protocol"></Port>

Caused the unit test execution to hang. This port ordering requirement was
mentioned in the spec sheet PDF, but I missed it and spend quite a lot of
time debugging the execution hang. It would be nice to mention this port
order requirement in the lab presentation on page 6 (
https://github.com/opencpi/training/blob/master/PDFs/presentations/Lab5_TimeDemux.pdf
).

Thanks,
Josh Schindehette

I attempted to build and run the Lab5 unit test from the "answer" training project at https://github.com/opencpi/training/tree/master/training. I got the following error: ``` $ ocpidev run --verbose --view make: Entering directory `./training/training/components/time_demux.test' ======== Preparing for execution on available platforms with available built workers and assemblies for time_demux: Probing for available local platforms: Local platforms are: hdl-0-xsim rcc-0-centos7 Generating execution scripts for each platform that can run. Generating run script for platform: centos7 ======== Running and verifying test outputs on available platforms for time_demux: Performing test cases for ocpi.training.time_demux on platform centos7. Functions are: run verify view Executing case case00.00 using worker time_demux.rcc... OCPI_LIBRARY_PATH=../../../lib/rcc:../../../lib/ocl:../../gen/assemblies:$OCPI_CDK_DIR/$OCPI_TOOL_DIR/artifacts $OCPI_CDK_DIR/$OCPI_TOOL_DIR/bin/ocpirun -d -v -mtime_demux=rcc -wtime_demux=time_demux -Ptime_demux=centos7 --sim-dir=case00.00.time_demux.rcc.simulation --dump-file=case00.00.time_demux.rcc.props -pfile_write_from_Data_Out=fileName=case00.00.time_demux.rcc.Data_Out.out -pfile_write_from_Time_Out=fileName=case00.00.time_demux.rcc.Time_Out.out ../../gen/applications/case00.00.xml Simulation HDL device lsim:xsim for xsim (UUID 7f145cbc-1823-11e9-b13d-a34c4663c689, dir case00.00.time_demux.rcc.simulation/xsim.xsim.111335.0, ticks 100000000) Available containers are: 0: lsim:xsim [model: hdl os: platform: xsim], 1: rcc0 [model: rcc os: linux platform: centos7] Exiting for exception: No viable candidates found for instance "file_write_from_Data_Out" real 0m7.472s user 0m6.677s sys 0m0.804s Execution FAILED(1) - see log in run/centos7/case00.00.time_demux.rcc.log make: *** [run] Error 1 make: Leaving directory `./training/training/components/time_demux.test' ``` The file time_demux.test/gen/applications/case00.00.xml had the following content: ``` <application done='file_write_from_Data_Out'> <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'> <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/> <property name='messagesInFile' value='true'/> </instance> <instance component='ocpi.core.metadata_stressor' name='time_demux_ms_Mux_In' connect='time_demux'> </instance> <instance component='ocpi.training.time_demux' name='time_demux'/> <instance component='ocpi.core.backpressure' name='bp_from_Data_Out' connect='file_write_from_Data_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Data_Out'/> <connection> <port instance='time_demux' name='Data_Out'/> <port instance='file_write_from_Data_Out' name='in'/> </connection> <instance component='ocpi.core.backpressure' name='bp_from_Time_Out' connect='file_write_from_Time_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Time_Out'/> <connection> <port instance='time_demux' name='Time_Out'/> <port instance='file_write_from_Time_Out' name='in'/> </connection> </application> ``` The connections are attempting to reference "file_write_from_Data_Out" and "file_write_from_Time_Out" which are already connected to the "backpressure" components. These connections should instead reference the "backpressure" components "bp_from_Data_Out" and "bp_from_Time_Out", respectively. *** Side Note *** In Lab5, an incorrect port order for: <Port name="Data_Out" producer="true" protocol="iqstream_protocol"></Port> <Port name="Time_Out" producer="true" protocol="iqstream_with_sync_protocol"></Port> Caused the unit test execution to hang. This port ordering requirement was mentioned in the spec sheet PDF, but I missed it and spend quite a lot of time debugging the execution hang. It would be nice to mention this port order requirement in the lab presentation on page 6 ( https://github.com/opencpi/training/blob/master/PDFs/presentations/Lab5_TimeDemux.pdf ). Thanks, Josh Schindehette
MA
Marasco, Aaron
Mon, Jan 14, 2019 6:18 PM

Josh,

Thanks for the feedback! We are currently updating the training for 1.4, but unfortunately you are a few days ahead of us. Your fix is the correct one and the generator code was fixed back in November (pushed to GitHub in 0142c161a5cf00e9cbcc191a3bc20259010852cc as "Fixing and merging AV-4899 multiple-output-ports-broken-in-unit-test-no-backpressure"). For the archives, it is included below.

I will definitely add the warning to the slide deck; it is a bug that we just don't have the bandwidth to revisit right now.

Thanks,

Aaron

<application done='file_write_from_Data_Out'> <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'> <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/> <property name='messagesInFile' value='true'/> </instance> <instance component='ocpi.core.metadata_stressor' name='time_demux_ms_Mux_In' connect='time_demux'> </instance> <instance component='ocpi.training.time_demux' name='time_demux'/> <instance component='ocpi.core.backpressure' name='bp_time_demux_Data_Out' connect='file_write_from_Data_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Data_Out'/> <connection> <port instance='time_demux' name='Data_Out'/> <port instance='bp_time_demux_Data_Out' name='in'/> </connection> <instance component='ocpi.core.backpressure' name='bp_time_demux_Time_Out' connect='file_write_from_Time_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Time_Out'/> <connection> <port instance='time_demux' name='Time_Out'/> <port instance='bp_time_demux_Time_Out' name='in'/> </connection> </application>

From: discuss discuss-bounces@lists.opencpi.org on behalf of Josh Schindehette jschindehette@geontech.com
Sent: Monday, January 14, 2019 12:51:46 PM
To: discuss@lists.opencpi.org
Subject: [Discuss OpenCPI] XML Code Generation Bug with time_demux

I attempted to build and run the Lab5 unit test from the "answer" training
project at https://github.com/opencpi/training/tree/master/training.  I got
the following error:

$ ocpidev run --verbose --view
make: Entering directory `./training/training/components/time_demux.test'
======== Preparing for execution on available platforms with available
built workers and assemblies for time_demux:
Probing for available local platforms:
  Local platforms are: hdl-0-xsim rcc-0-centos7
Generating execution scripts for each platform that can run.
  Generating run script for platform: centos7
======== Running and verifying test outputs on available platforms for
time_demux:
Performing test cases for ocpi.training.time_demux on platform centos7.
Functions are: run verify view
  Executing case case00.00 using worker time_demux.rcc...
OCPI_LIBRARY_PATH=../../../lib/rcc:../../../lib/ocl:../../gen/assemblies:$OCPI_CDK_DIR/$OCPI_TOOL_DIR/artifacts
$OCPI_CDK_DIR/$OCPI_TOOL_DIR/bin/ocpirun -d -v -mtime_demux=rcc
-wtime_demux=time_demux -Ptime_demux=centos7
--sim-dir=case00.00.time_demux.rcc.simulation
--dump-file=case00.00.time_demux.rcc.props
-pfile_write_from_Data_Out=fileName=case00.00.time_demux.rcc.Data_Out.out
-pfile_write_from_Time_Out=fileName=case00.00.time_demux.rcc.Time_Out.out
../../gen/applications/case00.00.xml
Simulation HDL device lsim:xsim for xsim (UUID
7f145cbc-1823-11e9-b13d-a34c4663c689, dir
case00.00.time_demux.rcc.simulation/xsim.xsim.111335.0, ticks 100000000)
Available containers are:  0: lsim:xsim [model: hdl os:  platform: xsim],
1: rcc0 [model: rcc os: linux platform: centos7]
Exiting for exception: No viable candidates found for instance
"file_write_from_Data_Out"

real    0m7.472s
user    0m6.677s
sys     0m0.804s
    Execution FAILED(1) - see log in
run/centos7/case00.00.time_demux.rcc.log
make: *** [run] Error 1
make: Leaving directory `./training/training/components/time_demux.test'

The file time_demux.test/gen/applications/case00.00.xml had the following
content:

<application done='file_write_from_Data_Out'>
  <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'>
    <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/>
    <property name='messagesInFile' value='true'/>
  </instance>
  <instance component='ocpi.core.metadata_stressor'
name='time_demux_ms_Mux_In' connect='time_demux'>
  </instance>
  <instance component='ocpi.training.time_demux' name='time_demux'/>
  <instance component='ocpi.core.backpressure' name='bp_from_Data_Out'
connect='file_write_from_Data_Out'>
    <property name='enable_select' value='true'/>
  </instance>
  <instance component='ocpi.core.file_write'
name='file_write_from_Data_Out'/>
  <connection>
    <port instance='time_demux' name='Data_Out'/>
    <port instance='file_write_from_Data_Out' name='in'/>
  </connection>
  <instance component='ocpi.core.backpressure' name='bp_from_Time_Out'
connect='file_write_from_Time_Out'>
    <property name='enable_select' value='true'/>
  </instance>
  <instance component='ocpi.core.file_write'
name='file_write_from_Time_Out'/>
  <connection>
    <port instance='time_demux' name='Time_Out'/>
    <port instance='file_write_from_Time_Out' name='in'/>
  </connection>
</application>

The connections are attempting to reference "file_write_from_Data_Out" and
"file_write_from_Time_Out" which are already connected to the
"backpressure" components. These connections should instead reference the
"backpressure" components "bp_from_Data_Out" and "bp_from_Time_Out",
respectively.

*** Side Note ***

In Lab5, an incorrect port order for:

<Port name="Data_Out" producer="true"

protocol="iqstream_protocol"></Port>
<Port name="Time_Out" producer="true" protocol="iqstream_with_sync_protocol"></Port>

Caused the unit test execution to hang. This port ordering requirement was
mentioned in the spec sheet PDF, but I missed it and spend quite a lot of
time debugging the execution hang. It would be nice to mention this port
order requirement in the lab presentation on page 6 (
https://github.com/opencpi/training/blob/master/PDFs/presentations/Lab5_TimeDemux.pdf
).

Thanks,
Josh Schindehette

Josh, Thanks for the feedback! We are currently updating the training for 1.4, but unfortunately you are a few days ahead of us. Your fix is the correct one and the generator code was fixed back in November (pushed to GitHub in 0142c161a5cf00e9cbcc191a3bc20259010852cc as "Fixing and merging AV-4899 multiple-output-ports-broken-in-unit-test-no-backpressure"). For the archives, it is included below. I will definitely add the warning to the slide deck; it is a bug that we just don't have the bandwidth to revisit right now. Thanks, Aaron <application done='file_write_from_Data_Out'> <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'> <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/> <property name='messagesInFile' value='true'/> </instance> <instance component='ocpi.core.metadata_stressor' name='time_demux_ms_Mux_In' connect='time_demux'> </instance> <instance component='ocpi.training.time_demux' name='time_demux'/> <instance component='ocpi.core.backpressure' name='bp_time_demux_Data_Out' connect='file_write_from_Data_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Data_Out'/> <connection> <port instance='time_demux' name='Data_Out'/> <port instance='bp_time_demux_Data_Out' name='in'/> </connection> <instance component='ocpi.core.backpressure' name='bp_time_demux_Time_Out' connect='file_write_from_Time_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Time_Out'/> <connection> <port instance='time_demux' name='Time_Out'/> <port instance='bp_time_demux_Time_Out' name='in'/> </connection> </application> ________________________________ From: discuss <discuss-bounces@lists.opencpi.org> on behalf of Josh Schindehette <jschindehette@geontech.com> Sent: Monday, January 14, 2019 12:51:46 PM To: discuss@lists.opencpi.org Subject: [Discuss OpenCPI] XML Code Generation Bug with time_demux I attempted to build and run the Lab5 unit test from the "answer" training project at https://github.com/opencpi/training/tree/master/training. I got the following error: ``` $ ocpidev run --verbose --view make: Entering directory `./training/training/components/time_demux.test' ======== Preparing for execution on available platforms with available built workers and assemblies for time_demux: Probing for available local platforms: Local platforms are: hdl-0-xsim rcc-0-centos7 Generating execution scripts for each platform that can run. Generating run script for platform: centos7 ======== Running and verifying test outputs on available platforms for time_demux: Performing test cases for ocpi.training.time_demux on platform centos7. Functions are: run verify view Executing case case00.00 using worker time_demux.rcc... OCPI_LIBRARY_PATH=../../../lib/rcc:../../../lib/ocl:../../gen/assemblies:$OCPI_CDK_DIR/$OCPI_TOOL_DIR/artifacts $OCPI_CDK_DIR/$OCPI_TOOL_DIR/bin/ocpirun -d -v -mtime_demux=rcc -wtime_demux=time_demux -Ptime_demux=centos7 --sim-dir=case00.00.time_demux.rcc.simulation --dump-file=case00.00.time_demux.rcc.props -pfile_write_from_Data_Out=fileName=case00.00.time_demux.rcc.Data_Out.out -pfile_write_from_Time_Out=fileName=case00.00.time_demux.rcc.Time_Out.out ../../gen/applications/case00.00.xml Simulation HDL device lsim:xsim for xsim (UUID 7f145cbc-1823-11e9-b13d-a34c4663c689, dir case00.00.time_demux.rcc.simulation/xsim.xsim.111335.0, ticks 100000000) Available containers are: 0: lsim:xsim [model: hdl os: platform: xsim], 1: rcc0 [model: rcc os: linux platform: centos7] Exiting for exception: No viable candidates found for instance "file_write_from_Data_Out" real 0m7.472s user 0m6.677s sys 0m0.804s Execution FAILED(1) - see log in run/centos7/case00.00.time_demux.rcc.log make: *** [run] Error 1 make: Leaving directory `./training/training/components/time_demux.test' ``` The file time_demux.test/gen/applications/case00.00.xml had the following content: ``` <application done='file_write_from_Data_Out'> <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'> <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/> <property name='messagesInFile' value='true'/> </instance> <instance component='ocpi.core.metadata_stressor' name='time_demux_ms_Mux_In' connect='time_demux'> </instance> <instance component='ocpi.training.time_demux' name='time_demux'/> <instance component='ocpi.core.backpressure' name='bp_from_Data_Out' connect='file_write_from_Data_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Data_Out'/> <connection> <port instance='time_demux' name='Data_Out'/> <port instance='file_write_from_Data_Out' name='in'/> </connection> <instance component='ocpi.core.backpressure' name='bp_from_Time_Out' connect='file_write_from_Time_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Time_Out'/> <connection> <port instance='time_demux' name='Time_Out'/> <port instance='file_write_from_Time_Out' name='in'/> </connection> </application> ``` The connections are attempting to reference "file_write_from_Data_Out" and "file_write_from_Time_Out" which are already connected to the "backpressure" components. These connections should instead reference the "backpressure" components "bp_from_Data_Out" and "bp_from_Time_Out", respectively. *** Side Note *** In Lab5, an incorrect port order for: <Port name="Data_Out" producer="true" protocol="iqstream_protocol"></Port> <Port name="Time_Out" producer="true" protocol="iqstream_with_sync_protocol"></Port> Caused the unit test execution to hang. This port ordering requirement was mentioned in the spec sheet PDF, but I missed it and spend quite a lot of time debugging the execution hang. It would be nice to mention this port order requirement in the lab presentation on page 6 ( https://github.com/opencpi/training/blob/master/PDFs/presentations/Lab5_TimeDemux.pdf ). Thanks, Josh Schindehette
JS
Josh Schindehette
Mon, Jan 14, 2019 6:32 PM

Thanks Aaron! Good to know.

On Mon, Jan 14, 2019 at 1:18 PM Marasco, Aaron aaron.marasco@bia-boeing.com
wrote:

Josh,

Thanks for the feedback! We are currently updating the training for 1.4,
but unfortunately you are a few days ahead of us. Your fix is the correct
one and the generator code was fixed back in November (pushed to GitHub in
0142c161a5cf00e9cbcc191a3bc20259010852cc as "Fixing and merging AV-4899
multiple-output-ports-broken-in-unit-test-no-backpressure"). For the
archives, it is included below.

I will definitely add the warning to the slide deck; it is a bug that we
just don't have the bandwidth to revisit right now.

Thanks,

Aaron

<application done='file_write_from_Data_Out'> <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'> <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/> <property name='messagesInFile' value='true'/> </instance> <instance component='ocpi.core.metadata_stressor' name='time_demux_ms_Mux_In' connect='time_demux'> </instance> <instance component='ocpi.training.time_demux' name='time_demux'/> <instance component='ocpi.core.backpressure' name='bp_time_demux_Data_Out' connect='file_write_from_Data_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Data_Out'/> <connection> <port instance='time_demux' name='Data_Out'/> <port instance='bp_time_demux_Data_Out' name='in'/> </connection> <instance component='ocpi.core.backpressure' name='bp_time_demux_Time_Out' connect='file_write_from_Time_Out'> <property name='enable_select' value='true'/> </instance> <instance component='ocpi.core.file_write' name='file_write_from_Time_Out'/> <connection> <port instance='time_demux' name='Time_Out'/> <port instance='bp_time_demux_Time_Out' name='in'/> </connection> </application>

From: discuss discuss-bounces@lists.opencpi.org on behalf of Josh
Schindehette jschindehette@geontech.com
Sent: Monday, January 14, 2019 12:51:46 PM
To: discuss@lists.opencpi.org
Subject: [Discuss OpenCPI] XML Code Generation Bug with time_demux

I attempted to build and run the Lab5 unit test from the "answer" training
project at https://github.com/opencpi/training/tree/master/training.  I
got
the following error:

$ ocpidev run --verbose --view
make: Entering directory `./training/training/components/time_demux.test'
======== Preparing for execution on available platforms with available
built workers and assemblies for time_demux:
Probing for available local platforms:
  Local platforms are: hdl-0-xsim rcc-0-centos7
Generating execution scripts for each platform that can run.
  Generating run script for platform: centos7
======== Running and verifying test outputs on available platforms for
time_demux:
Performing test cases for ocpi.training.time_demux on platform centos7.
Functions are: run verify view
  Executing case case00.00 using worker time_demux.rcc...

OCPI_LIBRARY_PATH=../../../lib/rcc:../../../lib/ocl:../../gen/assemblies:$OCPI_CDK_DIR/$OCPI_TOOL_DIR/artifacts
$OCPI_CDK_DIR/$OCPI_TOOL_DIR/bin/ocpirun -d -v -mtime_demux=rcc
-wtime_demux=time_demux -Ptime_demux=centos7
--sim-dir=case00.00.time_demux.rcc.simulation
--dump-file=case00.00.time_demux.rcc.props
-pfile_write_from_Data_Out=fileName=case00.00.time_demux.rcc.Data_Out.out
-pfile_write_from_Time_Out=fileName=case00.00.time_demux.rcc.Time_Out.out
../../gen/applications/case00.00.xml
Simulation HDL device lsim:xsim for xsim (UUID
7f145cbc-1823-11e9-b13d-a34c4663c689, dir
case00.00.time_demux.rcc.simulation/xsim.xsim.111335.0, ticks 100000000)
Available containers are:  0: lsim:xsim [model: hdl os:  platform: xsim],
1: rcc0 [model: rcc os: linux platform: centos7]
Exiting for exception: No viable candidates found for instance
"file_write_from_Data_Out"

real    0m7.472s
user    0m6.677s
sys     0m0.804s
    Execution FAILED(1) - see log in
run/centos7/case00.00.time_demux.rcc.log
make: *** [run] Error 1
make: Leaving directory `./training/training/components/time_demux.test'

The file time_demux.test/gen/applications/case00.00.xml had the following
content:

<application done='file_write_from_Data_Out'>
  <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'>
    <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/>
    <property name='messagesInFile' value='true'/>
  </instance>
  <instance component='ocpi.core.metadata_stressor'
name='time_demux_ms_Mux_In' connect='time_demux'>
  </instance>
  <instance component='ocpi.training.time_demux' name='time_demux'/>
  <instance component='ocpi.core.backpressure' name='bp_from_Data_Out'
connect='file_write_from_Data_Out'>
    <property name='enable_select' value='true'/>
  </instance>
  <instance component='ocpi.core.file_write'
name='file_write_from_Data_Out'/>
  <connection>
    <port instance='time_demux' name='Data_Out'/>
    <port instance='file_write_from_Data_Out' name='in'/>
  </connection>
  <instance component='ocpi.core.backpressure' name='bp_from_Time_Out'
connect='file_write_from_Time_Out'>
    <property name='enable_select' value='true'/>
  </instance>
  <instance component='ocpi.core.file_write'
name='file_write_from_Time_Out'/>
  <connection>
    <port instance='time_demux' name='Time_Out'/>
    <port instance='file_write_from_Time_Out' name='in'/>
  </connection>
</application>

The connections are attempting to reference "file_write_from_Data_Out" and
"file_write_from_Time_Out" which are already connected to the
"backpressure" components. These connections should instead reference the
"backpressure" components "bp_from_Data_Out" and "bp_from_Time_Out",
respectively.

*** Side Note ***

In Lab5, an incorrect port order for:

 <Port name="Data_Out" producer="true"

protocol="iqstream_protocol"></Port>
<Port name="Time_Out" producer="true" protocol="iqstream_with_sync_protocol"></Port>

Caused the unit test execution to hang. This port ordering requirement was
mentioned in the spec sheet PDF, but I missed it and spend quite a lot of
time debugging the execution hang. It would be nice to mention this port
order requirement in the lab presentation on page 6 (

https://github.com/opencpi/training/blob/master/PDFs/presentations/Lab5_TimeDemux.pdf
).

Thanks,
Josh Schindehette

Thanks Aaron! Good to know. On Mon, Jan 14, 2019 at 1:18 PM Marasco, Aaron <aaron.marasco@bia-boeing.com> wrote: > Josh, > > > Thanks for the feedback! We are currently updating the training for 1.4, > but unfortunately you are a few days ahead of us. Your fix is the correct > one and the generator code was fixed back in November (pushed to GitHub in > 0142c161a5cf00e9cbcc191a3bc20259010852cc as "Fixing and merging AV-4899 > multiple-output-ports-broken-in-unit-test-no-backpressure"). For the > archives, it is included below. > > > I will definitely add the warning to the slide deck; it is a bug that we > just don't have the bandwidth to revisit right now. > > > Thanks, > > > Aaron > > > <application done='file_write_from_Data_Out'> > <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'> > <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/> > <property name='messagesInFile' value='true'/> > </instance> > <instance component='ocpi.core.metadata_stressor' > name='time_demux_ms_Mux_In' connect='time_demux'> > </instance> > <instance component='ocpi.training.time_demux' name='time_demux'/> > <instance component='ocpi.core.backpressure' > name='bp_time_demux_Data_Out' connect='file_write_from_Data_Out'> > <property name='enable_select' value='true'/> > </instance> > <instance component='ocpi.core.file_write' > name='file_write_from_Data_Out'/> > <connection> > <port instance='time_demux' name='Data_Out'/> > <port instance='bp_time_demux_Data_Out' name='in'/> > </connection> > <instance component='ocpi.core.backpressure' > name='bp_time_demux_Time_Out' connect='file_write_from_Time_Out'> > <property name='enable_select' value='true'/> > </instance> > <instance component='ocpi.core.file_write' > name='file_write_from_Time_Out'/> > <connection> > <port instance='time_demux' name='Time_Out'/> > <port instance='bp_time_demux_Time_Out' name='in'/> > </connection> > </application> > > > ------------------------------ > *From:* discuss <discuss-bounces@lists.opencpi.org> on behalf of Josh > Schindehette <jschindehette@geontech.com> > *Sent:* Monday, January 14, 2019 12:51:46 PM > *To:* discuss@lists.opencpi.org > *Subject:* [Discuss OpenCPI] XML Code Generation Bug with time_demux > > I attempted to build and run the Lab5 unit test from the "answer" training > project at https://github.com/opencpi/training/tree/master/training. I > got > the following error: > > ``` > $ ocpidev run --verbose --view > make: Entering directory `./training/training/components/time_demux.test' > ======== Preparing for execution on available platforms with available > built workers and assemblies for time_demux: > Probing for available local platforms: > Local platforms are: hdl-0-xsim rcc-0-centos7 > Generating execution scripts for each platform that can run. > Generating run script for platform: centos7 > ======== Running and verifying test outputs on available platforms for > time_demux: > Performing test cases for ocpi.training.time_demux on platform centos7. > Functions are: run verify view > Executing case case00.00 using worker time_demux.rcc... > > OCPI_LIBRARY_PATH=../../../lib/rcc:../../../lib/ocl:../../gen/assemblies:$OCPI_CDK_DIR/$OCPI_TOOL_DIR/artifacts > $OCPI_CDK_DIR/$OCPI_TOOL_DIR/bin/ocpirun -d -v -mtime_demux=rcc > -wtime_demux=time_demux -Ptime_demux=centos7 > --sim-dir=case00.00.time_demux.rcc.simulation > --dump-file=case00.00.time_demux.rcc.props > -pfile_write_from_Data_Out=fileName=case00.00.time_demux.rcc.Data_Out.out > -pfile_write_from_Time_Out=fileName=case00.00.time_demux.rcc.Time_Out.out > ../../gen/applications/case00.00.xml > Simulation HDL device lsim:xsim for xsim (UUID > 7f145cbc-1823-11e9-b13d-a34c4663c689, dir > case00.00.time_demux.rcc.simulation/xsim.xsim.111335.0, ticks 100000000) > Available containers are: 0: lsim:xsim [model: hdl os: platform: xsim], > 1: rcc0 [model: rcc os: linux platform: centos7] > Exiting for exception: No viable candidates found for instance > "file_write_from_Data_Out" > > real 0m7.472s > user 0m6.677s > sys 0m0.804s > Execution FAILED(1) - see log in > run/centos7/case00.00.time_demux.rcc.log > make: *** [run] Error 1 > make: Leaving directory `./training/training/components/time_demux.test' > ``` > > The file time_demux.test/gen/applications/case00.00.xml had the following > content: > > ``` > <application done='file_write_from_Data_Out'> > <instance component='ocpi.core.file_read' connect='time_demux_ms_Mux_In'> > <property name='filename' value='../../gen/inputs/case00.00.Mux_In'/> > <property name='messagesInFile' value='true'/> > </instance> > <instance component='ocpi.core.metadata_stressor' > name='time_demux_ms_Mux_In' connect='time_demux'> > </instance> > <instance component='ocpi.training.time_demux' name='time_demux'/> > <instance component='ocpi.core.backpressure' name='bp_from_Data_Out' > connect='file_write_from_Data_Out'> > <property name='enable_select' value='true'/> > </instance> > <instance component='ocpi.core.file_write' > name='file_write_from_Data_Out'/> > <connection> > <port instance='time_demux' name='Data_Out'/> > <port instance='file_write_from_Data_Out' name='in'/> > </connection> > <instance component='ocpi.core.backpressure' name='bp_from_Time_Out' > connect='file_write_from_Time_Out'> > <property name='enable_select' value='true'/> > </instance> > <instance component='ocpi.core.file_write' > name='file_write_from_Time_Out'/> > <connection> > <port instance='time_demux' name='Time_Out'/> > <port instance='file_write_from_Time_Out' name='in'/> > </connection> > </application> > ``` > > The connections are attempting to reference "file_write_from_Data_Out" and > "file_write_from_Time_Out" which are already connected to the > "backpressure" components. These connections should instead reference the > "backpressure" components "bp_from_Data_Out" and "bp_from_Time_Out", > respectively. > > *** Side Note *** > > In Lab5, an incorrect port order for: > > <Port name="Data_Out" producer="true" > protocol="iqstream_protocol"></Port> > <Port name="Time_Out" producer="true" > protocol="iqstream_with_sync_protocol"></Port> > > Caused the unit test execution to hang. This port ordering requirement was > mentioned in the spec sheet PDF, but I missed it and spend quite a lot of > time debugging the execution hang. It would be nice to mention this port > order requirement in the lab presentation on page 6 ( > > https://github.com/opencpi/training/blob/master/PDFs/presentations/Lab5_TimeDemux.pdf > ). > > > Thanks, > Josh Schindehette >