EMAM2Cpp issueshttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues2018-08-16T17:39:48+02:00https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/25StreamTest matrix ports input value setting2018-08-16T17:39:48+02:00Sascha Niklas SchneidersStreamTest matrix ports input value settingThe "component.${portName} = ..." part was not generated correctly for matrices used in models like detection.ObjectDetector1The "component.${portName} = ..." part was not generated correctly for matrices used in models like detection.ObjectDetector1Sascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/24StreamTest Matrix output generation check not working properly2018-08-16T17:39:40+02:00Sascha Niklas SchneidersStreamTest Matrix output generation check not working properlyThe "REQUIRE(..)" part was not generated correctly for matrices used in models like detection.ObjectDetector1The "REQUIRE(..)" part was not generated correctly for matrices used in models like detection.ObjectDetector1Sascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/23Automatic stream test execution in the generator2020-07-02T19:22:47+02:00Sascha Niklas SchneidersAutomatic stream test execution in the generatorThe generator should be able to execute stream tests for an emam model to ensure that it still works.
(Enables usage of tests that check the behaviour and not that the generated source code is the same)The generator should be able to execute stream tests for an emam model to ensure that it still works.
(Enables usage of tests that check the behaviour and not that the generated source code is the same)Sascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/22Automatic stream test generation2018-08-16T17:41:34+02:00Sascha Niklas SchneidersAutomatic stream test generationThe generator should be able to generate a stream test for a given emam model.
This functionality can then be used to add tests for every component.
Together with #23 starting from the version this feature was added, it can be ensured t...The generator should be able to generate a stream test for a given emam model.
This functionality can then be used to add tests for every component.
Together with #23 starting from the version this feature was added, it can be ensured that the generator still behaves the same without comparing the generated source code directly.Sascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/21Update EMAM2Cpp in Emam2Wasm2020-07-02T19:24:35+02:00Malte HeithoffUpdate EMAM2Cpp in Emam2WasmIs someone able to include the current version of emam2cpp in emam2wasm?Is someone able to include the current version of emam2cpp in emam2wasm?https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/19C++ float division2018-08-08T15:51:32+02:00Christoph RichterC++ float divisionFloating point division delivers wrong results in C++.
`Q x = 1 / 2`;
The value of `x` should be 0.5.
The generated C++ code looks like:
`double x = 1 / 2`;
In this case C++ performs an integer division, because `1` and `2` are ha...Floating point division delivers wrong results in C++.
`Q x = 1 / 2`;
The value of `x` should be 0.5.
The generated C++ code looks like:
`double x = 1 / 2`;
In this case C++ performs an integer division, because `1` and `2` are handled as Integer values. The (wrong result is `x == 0`).Christoph RichterChristoph Richterhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/18Matrix containing variables is created as constant2018-07-27T10:42:35+02:00Christoph RichterMatrix containing variables is created as constantIf a matrix definition contains a variable it is defined as constant. This creates wrong results if the matrix was modified in any situation. Also ports are always passed as a constant value.
Example:
```
ports in Q in1,
...If a matrix definition contains a variable it is defined as constant. This creates wrong results if the matrix was modified in any situation. Also ports are always passed as a constant value.
Example:
```
ports in Q in1,
out Q out1;
implementation Math{
Q^{3} A = [0, in1, 1];
out1 = sum(A);
}
```
creates C++ code:
```
class test_portInMatrixDefinition{
public:
double in1;
double out1;
rowvec CONSTANTCONSTANTVECTOR0;
void init()
{
CONSTANTCONSTANTVECTOR0 = rowvec(3);
CONSTANTCONSTANTVECTOR0(0,0) = 0;
CONSTANTCONSTANTVECTOR0(0,1) = in1;
CONSTANTCONSTANTVECTOR0(0,2) = 1;
}
void execute()
{
colvec A = CONSTANTCONSTANTVECTOR0;
out1 = (accu(A));
}
```
https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/17Column Vector is not initialized if declared with 2 dimensions2018-08-08T13:46:26+02:00Christoph RichterColumn Vector is not initialized if declared with 2 dimensionsFor EMAM statement `Q^{n,1} a;` the following C++ code is generated: `colvec a;` This vector can be used in EMAM but is not initialized in C++.For EMAM statement `Q^{n,1} a;` the following C++ code is generated: `colvec a;` This vector can be used in EMAM but is not initialized in C++.Christoph RichterChristoph Richterhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/15Sum command for armadillo not supported2018-07-13T12:27:03+02:00Christoph RichterSum command for armadillo not supportedUntil now EMAM only supports `sum(X)` which creates `accu(X)` in armadillo.
Nevertheless armadillo and MATLAB also support `sum(X,1)` or `sum(X,2)` to only sum rows or columns. Would be nice if EMAM also supports this.Until now EMAM only supports `sum(X)` which creates `accu(X)` in armadillo.
Nevertheless armadillo and MATLAB also support `sum(X,1)` or `sum(X,2)` to only sum rows or columns. Would be nice if EMAM also supports this.Christoph RichterChristoph Richterhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/14Vector colon expression generates invalid code!2018-07-18T17:57:22+02:00Christoph RichterVector colon expression generates invalid code!Expressions:
```
Q^{1,10} A = 1:10;
Q^{1,5} B = 1:2:10;
```
generates the following invalid expression:
```
rowvec A = ;
rowvec B = ;
```Expressions:
```
Q^{1,10} A = 1:10;
Q^{1,5} B = 1:2:10;
```
generates the following invalid expression:
```
rowvec A = ;
rowvec B = ;
```Christoph RichterChristoph Richterhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/13Element-wise multiplication does not generate correct armadillo code!2018-07-18T17:56:53+02:00Christoph RichterElement-wise multiplication does not generate correct armadillo code!Math statements:
```
Q^{2,2} A = [1,1;1,1];
Q^{2,2} B = [1,2;3,4];
Q^{2,2} C = A .* B;
```
produce wrong armadillo C++ code:
`mat C = A .* B;`
Armadillo uses % for element wise multiplication.Math statements:
```
Q^{2,2} A = [1,1;1,1];
Q^{2,2} B = [1,2;3,4];
Q^{2,2} C = A .* B;
```
produce wrong armadillo C++ code:
`mat C = A .* B;`
Armadillo uses % for element wise multiplication.Christoph RichterChristoph Richterhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/12Visualisation value access hook2020-07-02T19:25:27+02:00Sascha Niklas SchneidersVisualisation value access hookAdapt generator to have a new flag, that provides access for webassembly/javascript values after current executionAdapt generator to have a new flag, that provides access for webassembly/javascript values after current executionSascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/11Structs Do not work for arrays / matrices2018-07-04T09:23:52+02:00vonWencksternStructs Do not work for arrays / matrices@sascha.schneiders can you create a test, to verify whether this bug exists@sascha.schneiders can you create a test, to verify whether this bug existsSascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/10Stream-Test für alle Modelle für EmbeddedMontiArcStudio generieren2020-07-02T19:25:40+02:00vonWencksternStream-Test für alle Modelle für EmbeddedMontiArcStudio generieren- ein JUnit-Test für Autopilot
- dieser test alle EMAM-Dateien die da sind
- ein JUnit-Test für Cluster
- ein JUnit-Test für PacMan
Zum Generieren der Tests die Version, den Compiler von EmbeddedMontiArcStudio nehmen- ein JUnit-Test für Autopilot
- dieser test alle EMAM-Dateien die da sind
- ein JUnit-Test für Cluster
- ein JUnit-Test für PacMan
Zum Generieren der Tests die Version, den Compiler von EmbeddedMontiArcStudio nehmenhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/9Compiler should generate from main.txt2020-07-02T19:26:33+02:00Ferdinand Alexander MehlanCompiler should generate from main.txthttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/utilities/EMAStudioBuilder/issues/1https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/utilities/EMAStudioBuilder/issues/1Sascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/8Refactor all conversions2018-07-01T18:20:26+02:00Sascha Niklas SchneidersRefactor all conversions# Preliminary:
The math language needs to store all relevant information in the astnodes, and not everything in different symbols, as symbols will change in the next monticore version, and the generated monticore visitor for a language ...# Preliminary:
The math language needs to store all relevant information in the astnodes, and not everything in different symbols, as symbols will change in the next monticore version, and the generated monticore visitor for a language can only be used on astnodes, not on their symbols. (astnode.getSymbol() is deprecated and will be removed soon, so no direct connection between astnode -> symbol anymore; Every symbol needs to habe a unique name for identification)
# Conversion:
The conversions should be done using the generated monticore visitor for all astnodes of a language.
This includes the optimizations, and general transformations.
As the generator currently works mostly with the Math languge symbols only, a huge refactoring is required.
# Goal:
Reduce bugs, increase robustness and readability.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/7Generics are missing when no default value is provided2018-07-01T00:03:20+02:00Sascha Niklas SchneidersGenerics are missing when no default value is providedExsample:
```
component ComponentA<N value>{
}
```
The generator does not now anything about value.
This is an issue with the EmbeddedMontiArc language and should be fixed there.
Components like:
```
component ComponentA<N value = ...Exsample:
```
component ComponentA<N value>{
}
```
The generator does not now anything about value.
This is an issue with the EmbeddedMontiArc language and should be fixed there.
Components like:
```
component ComponentA<N value = 1>{
}
```
Work as expected.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/6Generics Inistialization in SubComponents does not work correctly, when Gener...2018-07-01T00:03:51+02:00Sascha Niklas SchneidersGenerics Inistialization in SubComponents does not work correctly, when Generics of parent component are used as valueExample:
```
component ComponentA<N value = 1>{
instance ComponentB<value> compB; // in compB instance creation the default value will be used
}
```
```
component ComponentB<N value = 2>{
port in Z testPorts[value];
}
```
```
co...Example:
```
component ComponentA<N value = 1>{
instance ComponentB<value> compB; // in compB instance creation the default value will be used
}
```
```
component ComponentB<N value = 2>{
port in Z testPorts[value];
}
```
```
component ComponentC{
instance ComponentA<5> compA;
}
```
Should be fixed in Generics Resolution in EmbeddedMontiArc language.
(ExpandedComponentInstance creation should probably be changed, as the error is related to this)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/4Create many new Tests for different generator states (e.g. Optimizations)2018-07-14T06:44:03+02:00Sascha Niklas SchneidersCreate many new Tests for different generator states (e.g. Optimizations)This includes existing components with enabled and disabled optimizations,
as well as additoional test taht are derived from the usage of EMAStudio.This includes existing components with enabled and disabled optimizations,
as well as additoional test taht are derived from the usage of EMAStudio.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/3No boolen constants available2020-07-02T19:29:49+02:00Malte HeithoffNo boolen constants availableIn an "implementation Math" block you cannot write:
portA = true;
Only
portA = 1;
works.In an "implementation Math" block you cannot write:
portA = true;
Only
portA = 1;
works.Sascha Niklas SchneidersSascha Niklas Schneiders